Skip to content

Commit

Permalink
Баунти, описание сцп
Browse files Browse the repository at this point in the history
  • Loading branch information
xhankaishi committed May 8, 2024
1 parent 925dc32 commit 1a1eb20
Show file tree
Hide file tree
Showing 6 changed files with 201 additions and 40 deletions.
79 changes: 40 additions & 39 deletions code/modules/mob/observer/ghost/ghost.dm
Original file line number Diff line number Diff line change
Expand Up @@ -594,45 +594,46 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
log_and_message_staff("has respawned.", M)
qdel(src)

/mob/observer/ghost/verb/become_scp()
set category = "Ghost"
set name = "Become an SCP"
set desc = "Take control of a clientless SCP."

if(!MayRespawn(TRUE, SCP_SPAWN_DELAY))
return

var/list/scp_type_ref_list = list()

for(var/atom/PossibleSCP in GLOB.SCP_list)
if(!canBecomeSCP(PossibleSCP))
continue
var/datum/scp/PSCP = PossibleSCP.SCP
var/select_string = "SCP-[PSCP.designation] | [PSCP.classification][(PSCP.metaFlags & SCP_ROLEPLAY) ? " | Roleplay" : ""]"

var/new_select_string = select_string
var/count = 1
while(scp_type_ref_list[new_select_string])
new_select_string = "[select_string] ([count])"
count++

scp_type_ref_list[new_select_string] = PossibleSCP

if(LAZYLEN(scp_type_ref_list))
var/selected_scp_string = tgui_input_list(src, "Which SCP do you want to take control of?", "SCP Select", scp_type_ref_list)
if(!LAZYLEN(selected_scp_string))
return

var/mob/living/selected_scp = scp_type_ref_list[selected_scp_string]
var/agreement = tgui_alert(src, "Warning! SCPs are likley to spend a long amount of time within their containment chamber and are not guaranteed to be let out![(selected_scp.SCP.metaFlags & SCP_ROLEPLAY) ? " Additionally, this is a roleplay oriented SCP. That means you are expected to behave like the SCP would in lore, and failing to do so would result in ban from playing roleplay SCPs." : ""]", "Are you sure?", list("Yes","No"))
if(!LAZYLEN(agreement) || (agreement == "No"))
return
if(!canBecomeSCP(selected_scp)) //This is incase something changes while we are waiting for a response from the ghost
to_chat(src, SPAN_WARNING("SCP-[selected_scp.SCP.designation] is no longer avalible!"))
return
selected_scp.do_possession(src)
else
to_chat(src, SPAN_WARNING("There are no SCPs avalible yet! Keep in mind that not all SCPs are avalible round start and more may become avalible as the round goes on!"))
// [CELADON-EDIT OPISANIE_SCP]
// /mob/observer/ghost/verb/become_scp()
// set category = "Ghost"
// set name = "Become an SCP"
// set desc = "Take control of a clientless SCP."

// if(!MayRespawn(TRUE, SCP_SPAWN_DELAY))
// return

// var/list/scp_type_ref_list = list()

// for(var/atom/PossibleSCP in GLOB.SCP_list)
// if(!canBecomeSCP(PossibleSCP))
// continue
// var/datum/scp/PSCP = PossibleSCP.SCP
// var/select_string = "SCP-[PSCP.designation] | [PSCP.classification][(PSCP.metaFlags & SCP_ROLEPLAY) ? " | Roleplay" : ""]"

// var/new_select_string = select_string
// var/count = 1
// while(scp_type_ref_list[new_select_string])
// new_select_string = "[select_string] ([count])"
// count++

// scp_type_ref_list[new_select_string] = PossibleSCP

// if(LAZYLEN(scp_type_ref_list))
// var/selected_scp_string = tgui_input_list(src, "Which SCP do you want to take control of?", "SCP Select", scp_type_ref_list)
// if(!LAZYLEN(selected_scp_string))
// return

// var/mob/living/selected_scp = scp_type_ref_list[selected_scp_string]
// var/agreement = tgui_alert(src, "Warning! SCPs are likley to spend a long amount of time within their containment chamber and are not guaranteed to be let out![(selected_scp.SCP.metaFlags & SCP_ROLEPLAY) ? " Additionally, this is a roleplay oriented SCP. That means you are expected to behave like the SCP would in lore, and failing to do so would result in ban from playing roleplay SCPs." : ""]", "Are you sure?", list("Yes","No"))
// if(!LAZYLEN(agreement) || (agreement == "No"))
// return
// if(!canBecomeSCP(selected_scp)) //This is incase something changes while we are waiting for a response from the ghost
// to_chat(src, SPAN_WARNING("SCP-[selected_scp.SCP.designation] is no longer avalible!"))
// return
// selected_scp.do_possession(src)
// else
// to_chat(src, SPAN_WARNING("There are no SCPs avalible yet! Keep in mind that not all SCPs are avalible round start and more may become avalible as the round goes on!"))

/mob/observer/ghost/proc/canBecomeSCP(mob/PossibleSCP)
var/datum/scp/PSCP = PossibleSCP.SCP
Expand Down
2 changes: 1 addition & 1 deletion mod_celadon/mod_celadon.dme
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#include "outfits/_outfits.dme"
#include "human_examine/_human_examine.dme"
#include "laptop_rotate/_laptop_rotate.dme"

#include "opisanie_scp/_opisanies_scp.dme"

// --- OBJECTS --- //
#include "objects/_objects.dme"
Expand Down
79 changes: 79 additions & 0 deletions mod_celadon/opisanie_scp/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@


#### Список PRов:

- https://github.com/MysticalFaceLesS/Foundation-19/pulls/#####
<!--
Ссылки на PRы, связанные с модом:
- Создание
- Большие изменения
-->

<!-- Название мода. Не важно на русском или на английском. -->
## OPISANIE_SCP

ID мода: OPISANIE_SCP
<!--
Название модпака прописными буквами, СОЕДИНЁННЫМИ_ПОДЧЁРКИВАНИЕМ,
которое ты будешь использовать для обозначения файлов.
-->

### Описание мода

Добавлено описание для сцп при выборе их
<!--
Что он делает, что добавляет: что, куда, зачем и почему - всё здесь.
А также любая полезная информация.
-->

### Изменения *кор кода*

- `/mob/observer/ghost`: `verb/become_scp`
<!--
Если вы редактировали какие-либо процедуры или переменные в кор коде,
они должны быть указаны здесь.
Нужно указать и файл, и процедуры/переменные.
Изменений нет - напиши "Отсутствуют"
-->

### Оверрайды
Отсутствуют
- `mods/_master_files/sound/my_cool_sound.ogg`
- `mods/_master_files/code/my_modular_override.dm`: `proc/overriden_proc`, `var/overriden_var`
<!--
Если ты добавлял новый модульный оверрайд, его нужно указать здесь.
Здесь указываются оверрайды в твоём моде и папке `_master_files`
Изменений нет - напиши "Отсутствуют"
-->

### Дефайны
Отсутствуют
- `code/__defines/~mods/opisanie_scp.dm`: `OPISANIE_SCP_SPEED_MULTIPLIER`, `OPISANIE_SCP_SPEED_BASE`
<!--
Если требовалось добавить какие-либо дефайны, укажи файлы,
в которые ты их добавил, а также перечисли имена.
И то же самое, если ты используешь дефайны, определённые другим модом.
Не используешь - напиши "Отсутствуют"
-->

### Используемые файлы, не содержащиеся в модпаке

- `mods/_master_files/icons/obj/alien.dmi`
<!--
Будь то немодульный файл или модульный файл, который не содержится в папке,
принадлежащей этому конкретному моду, он должен быть упомянут здесь.
Хорошими примерами являются иконки или звуки, которые используются одновременно
несколькими модулями, или что-либо подобное.
-->

### Авторы:

XAH
<!--
Здесь находится твой никнейм
Если работал совместно - никнеймы тех, кто помогал.
В случае порта чего-либо должна быть ссылка на источник.
-->
18 changes: 18 additions & 0 deletions mod_celadon/opisanie_scp/_opisanie_scp.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/datum/modpack/opisanie_scp
/// Строковое имя модпака. Используется для поиска других модпаков в init.
name = "Описание сцп"
/// Строковое описание для модпака. Может использоваться для списка глаголов модпака в качестве описания.
desc = "Описание сцп при выборе его через become an SCP. Баунти"
/// Строка с авторами этого модпака.
author = "XAH"

///**********************************************************************///

/datum/modpack/opisanie_scp/pre_initialize() /// Эти конструкции нужны, для того чтобы в вашем модпаке что-то инициализировалось, до, после или вместе с модпаком.
. = ..()

/datum/modpack/opisanie_scp/initialize() /// Если эти три конструкции не нужны, просто удалите их!
. = ..()

/datum/modpack/opisanie_scp/post_initialize()
. = ..()
8 changes: 8 additions & 0 deletions mod_celadon/opisanie_scp/_opisanie_scp.dme
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#ifndef MODPACK_CELADON_OPISANIE_SCP
#define MODPACK_CELADON_OPISANIE_SCP

#include "_opisanie_scp.dm"

#include "code/opisanie_scp.dm"

#endif
55 changes: 55 additions & 0 deletions mod_celadon/opisanie_scp/code/opisanie_scp.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/mob/observer/ghost/verb/become_scp()
set category = "Ghost"
set name = "Become an SCP"
set desc = "Take control of a clientless SCP."

if(!MayRespawn(TRUE, SCP_SPAWN_DELAY))
return

var/list/scp_type_ref_list = list()

for(var/atom/PossibleSCP in GLOB.SCP_list)
if(!canBecomeSCP(PossibleSCP))
continue
var/datum/scp/PSCP = PossibleSCP.SCP
var/select_string = "SCP-[PSCP.designation] | [PSCP.classification][(PSCP.metaFlags & SCP_ROLEPLAY) ? " | Roleplay" : ""]"

var/new_select_string = select_string
var/count = 1
while(scp_type_ref_list[new_select_string])
new_select_string = "[select_string] ([count])"
count++

scp_type_ref_list[new_select_string] = PossibleSCP

if(LAZYLEN(scp_type_ref_list))
var/selected_scp_string = tgui_input_list(src, "Which SCP do you want to take control of?", "SCP Select", scp_type_ref_list)
if(!LAZYLEN(selected_scp_string))
return

var/mob/living/selected_scp = scp_type_ref_list[selected_scp_string]
var/agreement = tgui_alert(src, (selected_scp.opisanie ? selected_scp.opisanie : ""), "Are you sure?", list("Yes","No"))
if(!LAZYLEN(agreement) || (agreement == "No"))
return
if(!canBecomeSCP(selected_scp)) //This is incase something changes while we are waiting for a response from the ghost
to_chat(src, SPAN_WARNING("SCP-[selected_scp.SCP.designation] is no longer avalible!"))
return
selected_scp.do_possession(src)
else
to_chat(src, SPAN_WARNING("There are no SCPs avalible yet! Keep in mind that not all SCPs are avalible round start and more may become avalible as the round goes on!"))


/// создание описания для всех сцп
/mob/living
var/opisanie = ""

// дальше идет описание для всех сцп, добавлять или изменять по возможности
/mob/living/scp173
opisanie = "ОПИСАНИЕ: Статуя, построенная из бетона и арматуры со следами аэрозольной краски марки КРИЛОН. ВАША ЦЕЛЬ: Уничтожить весь персонал, свернуть им шеи. ОСОБЕННОСТИ: Избегайте зрительного контакта, иначе вы будете лишены возможности передвижения. СТАНДАРТНЫЕ ДЕЙСТВИЯ: Раз в определённое время вы создаёте отходы под собой. Если ваша камера будет очень сильно загрязнена и не очищена вовремя - будет сломана система дверей, что даст вам возможность к побегу."

/mob/living/simple_animal/hostile/scp457
opisanie = "ОПИСАНИЕ: Горящий столб огня в форме взрослого человека. ВАША ЦЕЛЬ: Найти как можно больше топлива и употреблять его. ОСОБЕННОСТИ: Вы неуязвимы от физического урона и крайне уязвимы к воде, огнетушителям, а так-же к низким температурам. Вы можете сжигать гуманоидов в качестве топлива это повышает ваше здоровье. СТАНДАРТНЫЕ ДЕЙСТВИЯ: Ищите как можно больше топлива, потребляйте его. Сжигайте персонал! БОЙТЕСЬ ВОДЫ."

/mob/living/carbon/human/scp106
opisanie = "ОПИСАНИЕ: Пожилой мужчина что весь покрыт чёрной липкой жидкостью неизвестного происхождения, на его лице видна безумна широкая улыбка. ВАША ЦЕЛЬ: Ловить персонал в своё измерение. ОСОБЕННОСТИ: Вы можете проходить сквозь стены и другие твёрдые объекты. Ваше касание не даст вашей жертве убежать. Вас могут поймать приманив с помощью приманки. СТАНДАРТНЫЕ ДЕЙСТВИЯ: Искать своих будущих жертв."

0 comments on commit 1a1eb20

Please sign in to comment.