Skip to content

Commit

Permalink
Feat: Delta SM Space Drop (ss220club#685)
Browse files Browse the repository at this point in the history
<!-- Пишите **НИЖЕ** заголовков и **ВЫШЕ** комментариев, иначе что то
может пойти не так. -->
<!-- Вы можете прочитать Contributing.MD, если хотите узнать больше. -->

## Что этот PR делает

1. Добавляет механику сброса СМ в космос, а именно под солярами на край
карты при взрыве которого он даже их не задевает. Так же добавляет
кнопку сброса и инструкцию по ее использованию.

2. Переделка зоны содержания СМ и прибытия под систему сброса.

<!-- Вкратце опишите изменения, которые вносите. -->
<!-- Опишите **все** изменения, так как противное может сказаться на
рассмотрении этого PR'а! -->
<!-- Если вы исправляете Issue, добавьте "Fixes ss220club#1234" (где 1234 - номер
Issue) где-нибудь в описании PR'а. Это автоматически закроет Issue после
принятия PR'а. -->

## Почему это хорошо для игры
<!-- Опишите, почему, по вашему, следует добавить эти изменения в игру.
-->

Позволяет в критической ситуации, а именно когда целостность СМ доходит
до 10 или менее процентов, сбросить его в космос да бы не разносить весь
атмос и не ебать с ним голову остаток раунда инженерам. Тем более
большинство Капитанов после взрыва СМ сразу вызывают шатл хотя при
взрыве СМ спокойно можно продолжать раунд.

## Изображения изменений
<!-- Если вы не меняли карту или спрайты, можете опустить эту секцию.
Если хотите, можете вставить видео. -->

![image](https://github.com/ss220club/Paradise-SS220/assets/100868342/d9e2cfe6-b0b1-4c31-b9cb-08a633ddcc3c)

![2023-11-14 18 23
31](https://github.com/ss220club/Paradise-SS220/assets/100868342/6e858fd1-8166-4a61-a529-6e71f40dc923)



https://github.com/ss220club/Paradise-SS220/assets/100868342/89648046-19e7-45e7-a8ef-d4660b7dba67



https://github.com/ss220club/Paradise-SS220/assets/100868342/d84b8622-c032-4029-82c7-dcb8b3fe61f5



## Тестирование
<!-- Как вы тестировали свой PR, если делали это вовсе? -->
Сотню раз запускал на локалке и тестил все начиная от пути запуска до
взрыва

## Changelog

:cl:
add: Систему сброса СМ
imageadd: Иконка кнопки сброса СМ
/:cl:

<!-- Оба :cl:'а должны быть на месте, что-бы чейнджлог работал! Вы
можете написать свой ник справа от первого :cl:, если хотите. Иначе
будет использован ваш ник на ГитХабе. -->
<!-- Вы можете использовать несколько записей с одинаковым префиксом
(Они используются только для иконки в игре) и удалить ненужные. Помните,
что чейнджлог должен быть понятен обычным игроком. -->
<!-- Если чейнджлог не влияет на игроков(например, это рефактор), вы
можете исключить всю секцию. -->

---------

Co-authored-by: Aylong <[email protected]>
  • Loading branch information
GREG-MAP and AyIong committed Nov 14, 2023
1 parent d5f161c commit ec837b6
Show file tree
Hide file tree
Showing 14 changed files with 472 additions and 314 deletions.
637 changes: 323 additions & 314 deletions _maps/map_files220/delta/delta.dmm

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions modular_ss220/modular_ss220.dme
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@
#include "radio_sound/radio_sound.dme"
#include "screentip_change/_screentip_change.dme"
#include "smart_equip_targeted/_smart_equip_targeted.dme"
#include "sm_space_drop/sm_space_drop.dme"
#include "text_to_speech/_tts.dme"
#include "title_screen/_title_screen.dme"
#include "whitelist/_whitelist.dme"
Expand Down
23 changes: 23 additions & 0 deletions modular_ss220/sm_space_drop/code/paper_sm_info.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// Инструкция пользование системы сброса СМ

/obj/item/paper/sm_paper
name = "\improper инструкция по использованию СБСКС"
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "paper"
info = {"<center><h1>Инструкция по использованию Системы Быстрого Сброса Кристалла Суперматерии</h1></center>
<br>1. Ни при каких обстоятельствах не нажимать на кнопку ради проверки ее работоспособности.<br>

<br>2. Решение о сбросе кристалла может принимать СЕ, или его ВРиО и выше.<br>

<br>3. Если целостность кристалла равна 10 или менее процентов, должен быть произведен сброс кристалла в кратчайшее время.<br>

<br>4. В случае отсутствия СЕ и до назначения его ВРиО, решение о сбросе кристалла принимает капитан.<br>

<br>5. Создание помехи при необходимости сброса кристалла квалифицируется статьей 400 Космического Закона.<br>

<br>Поздравляю! Теперь в случае вероятности взрыва кристалла Супер Материи, вы в состоянии сохранить целостность станции.<br>

<br>ПРИМЕЧАНИЕ: Кнопка сброса СМ находится в его буферной зоне на стене возле правого вента.<br>
<hr>
<center><h1><div style='text-align:center;'><img src='ntlogo.png'></h1></center>
"}
97 changes: 97 additions & 0 deletions modular_ss220/sm_space_drop/code/sm_button_NEW.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@

//////////////////////////////////////
// СБССМ Кнопки //
//////////////////////////////////////

/obj/machinery/driver_button/sm_drop_button
name = "supermatter launch trigger"
desc = "<font color='red'>ВНИМАНИЕ:</font>Сброс кристала суперматерии. Неправомерное использование может привести к тюремному заключению."
icon = 'modular_ss220/sm_space_drop/icons/sm_buttons.dmi'
icon_state = "button"
anchored = TRUE
armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 10, rad = 100, fire = 90, acid = 70)
idle_power_consumption = 2
active_power_consumption = 4
resistance_flags = LAVA_PROOF | FIRE_PROOF
id_tag = "SpaceDropSM"
req_access = list(ACCESS_CE)

var/glass = TRUE
var/launched = FALSE

// In case we're annihilated by a meteor
/obj/machinery/driver_button/sm_drop_button/Destroy()
if(!launched)
launch_sequence()
return ..()


/obj/machinery/driver_button/sm_drop_button/update_icon()
if(launched)
icon_state = "[initial(icon_state)]_launched"
else if(!glass)
icon_state = "[initial(icon_state)]_open"
else
icon_state = "[initial(icon_state)]"
..()

/obj/machinery/driver_button/sm_drop_button/attack_hand(mob/user)
if(stat & (NOPOWER|BROKEN))
return

if(active)
return

add_fingerprint(user)

if(!allowed(usr))
return

use_power(5)

// Already launched
if(launched)
to_chat(user, span_warning("Кнопку уже нажали"))

// Glass present
else if(glass)
if(user.a_intent == INTENT_HARM)
user.custom_emote(EMOTE_VISIBLE, "разбивает стекло [src.name]!")
glass = FALSE
playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 100, 1)
update_icon()
else
user.custom_emote(EMOTE_VISIBLE, "дружески похлопывает по [src.name].")
to_chat(user, span_warning("Если вы пытаетесь разбить стекло, вам придется ударить по нему сильнее..."))
// Must be !glass and !launched
else
user.custom_emote(EMOTE_VISIBLE, "нажимает кнопку сброса [src.name]!")
visible_message(span_notice("Кнопка громко щелкает."))
launch_sequence()
playsound(src, pick('modular_ss220/sm_space_drop/sound/button.ogg','modular_ss220/sm_space_drop/sound/button1.ogg','modular_ss220/sm_space_drop/sound/button2.ogg','modular_ss220/sm_space_drop/sound/button3.ogg','modular_ss220/sm_space_drop/sound/button4.ogg'), 100, 1)
update_icon()

if(SSticker && SSticker.current_state == GAME_STATE_PLAYING)
var/area/area = get_area(src)
if(area)
message_admins("Supermatter Crystal has been launched to space by [key_name_admin(user)] [ADMIN_JMP(src)].")
investigate_log("has been launched to space at ([area.name]) by [key_name(user)].","supermatter")

/obj/machinery/driver_button/sm_drop_button/launch_sequence()
if(launched)
return
launched = TRUE
update_icon()

for(var/obj/machinery/atmospherics/supermatter_crystal/engine/crystal in SSair.atmos_machinery)
if(crystal.id_tag == id_tag)
crystal.anchored = FALSE
break

..()

/obj/machinery/driver_button/sm_drop_button/rearm()
active = FALSE

/obj/machinery/driver_button/drop_sm/multitool_act(mob/user, obj/item/I)
return FALSE
14 changes: 14 additions & 0 deletions modular_ss220/sm_space_drop/code/sm_mass_driver.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/obj/machinery/mass_driver/sm_mass_driver
name = "\improper пусковая установка СМ"
desc = "Запускает СМ бороздить просторы космоса."
icon = 'icons/obj/objects.dmi'
icon_state = "mass_driver"
anchored = TRUE
idle_power_consumption = 2
active_power_consumption = 50
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF

id_tag = "SpaceDropSM"

/obj/machinery/sm_mass_driver/multitool_act(mob/user, obj/item/I)
return FALSE
4 changes: 4 additions & 0 deletions modular_ss220/sm_space_drop/code/sm_space_drop.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/obj/machinery/atmospherics/supermatter_crystal/engine
is_main_engine = TRUE
anchored = TRUE
var/id_tag = "SpaceDropSM"
Binary file added modular_ss220/sm_space_drop/icons/sm_buttons.dmi
Binary file not shown.
4 changes: 4 additions & 0 deletions modular_ss220/sm_space_drop/sm_space_drop.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/datum/modpack/sm_space_drop
name = "Система сброса СМ"
desc = "Позволяет сбросить СМ в критической ситуации."
author = "GREG"
6 changes: 6 additions & 0 deletions modular_ss220/sm_space_drop/sm_space_drop.dme
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#include "sm_space_drop.dm"

#include "code/sm_button_NEW.dm"
#include "code/sm_space_drop.dm"
#include "code/sm_mass_driver.dm"
#include "code/paper_sm_info.dm"
Binary file added modular_ss220/sm_space_drop/sound/button.ogg
Binary file not shown.
Binary file added modular_ss220/sm_space_drop/sound/button1.ogg
Binary file not shown.
Binary file added modular_ss220/sm_space_drop/sound/button2.ogg
Binary file not shown.
Binary file added modular_ss220/sm_space_drop/sound/button3.ogg
Binary file not shown.
Binary file added modular_ss220/sm_space_drop/sound/button4.ogg
Binary file not shown.

0 comments on commit ec837b6

Please sign in to comment.