Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

радары #1138

Open
wants to merge 4 commits into
base: beta-dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion code/modules/overmap/helm.dm
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@
switch(action) // Universal topics
// [CELADON-ADD] - OVERMAP STUFF - Это вагабонд насрал
if("sensor_increase")
current_ship.sensor_range = min(5, current_ship.sensor_range+1)
current_ship.sensor_range = min(10, current_ship.sensor_range+1)
update_static_data(usr, ui)
current_ship.token.update_screen()
return
Expand Down
17 changes: 15 additions & 2 deletions code/modules/overmap/overmap_token.dm
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,10 @@
var/list/visible_turfs = list()
// [CELADON-EDIT] - OVERMAP SENSOR - Это вагабонд насрал
// for(var/turf/T in view(4, get_turf(src)))
for(var/turf/T in view(parent.sensor_range, get_turf(src)))
if(istype(parent, /datum/overmap/ship/controlled))
var/datum/overmap/ship/controlled/C = parent
C.recalculate_radars()
for(var/turf/T in view(min(max(1, parent.max_sensor), parent.sensor_range), get_turf(src)))
// [/CELADON-EDIT]
visible_turfs += T

Expand All @@ -134,6 +137,16 @@
var/size_y = bbox[4] - bbox[2] + 1

cam_screen?.vis_contents = visible_turfs
cam_background.icon_state = "clear"
//[CELADON-EDIT] - RADAR
//cam_background.icon_state = "clear"
if(parent.sensor_range > parent.max_sensor)
cam_background.icon = 'icons/effects/effects.dmi'
cam_background.icon_state = "static_base"
cam_screen.alpha = max(0, 255-abs(parent.max_sensor-parent.sensor_range)*128)
else
cam_background.icon_state = "clear"
cam_background.icon = initial(cam_background.icon)
cam_screen.alpha = 255
//[/CELADON-EDIT]
cam_background.fill_rect(1, 1, size_x, size_y)
return TRUE
1 change: 1 addition & 0 deletions mod_celadon/mod_celadon.dme
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
#include "tajara/_tajara.dme"
#include "turrets/_turrets.dme"
#include "weapons/_weapons.dme"
#include "radar/_radar.dme"

// --- MOBS --- //
#include "drakeborgs/_drakeborgs.dme"
Expand Down
97 changes: 97 additions & 0 deletions mod_celadon/radar/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@

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

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

<!-- Название мода. Не важно на русском или на английском. -->
## НАЗВАНИЕ_МОДА

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

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

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

### Используется в других проектах?
- Нет
<!--
ВНИМАНИЕ!
Заполняется другими авторами, кто использует этот модпак или
его часть в других модпаках! Для Автора модпака внимательно
отслеживать данный пункт при изменении своего кода!
Пример заполнения: `Используется часть кода для модпака EXAMP_EXAM`
-->

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

- code\modules\overmap\overmap_token.dm
<!--
Если вы редактировали какие-либо процедуры или переменные в кор коде,
они должны быть указаны здесь.
Нужно указать и файл, и процедуры/переменные.

Изменений нет - напиши "Отсутствуют"
Примеры: `code/modules/mob/living.dm`: `proc/overriden_proc`, `var/overriden_var`
-->

### Оверрайды

- Отсутствуют
<!--
Если ты добавлял новый модульный оверрайд, его нужно указать здесь.
Здесь указываются оверрайды в твоём моде и папке `_master_files`

Изменений нет - напиши "Отсутствуют"
Примеры:
- `mods/_master_files/sound/my_cool_sound.ogg`
- `mods/_master_files/code/my_modular_override.dm`: `proc/overriden_proc`, `var/overriden_var`
-->

### Дефайны

- Отсутствуют
<!--
Если требовалось добавить какие-либо дефайны, укажи файлы,
в которые ты их добавил, а также перечисли имена.
И то же самое, если ты используешь дефайны, определённые другим модом.

Не используешь - напиши "Отсутствуют"
Примеры: `code/__defines/~mod_celadon/example.dm`: `EXAMPLE_SPEED_MULTIPLIER`, `EXAMPLE_SPEED_BASE`
-->

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

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

### Авторы

Vagabond05
<!--
Здесь находится твой никнейм
Если работал совместно - никнеймы тех, кто помогал.
В случае порта чего-либо должна быть ссылка на источник.
-->
27 changes: 27 additions & 0 deletions mod_celadon/radar/_radar.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/// name - название модпака. Используется для поиска других модпаков в init.
/// desc - описание для модпака. Может использоваться для списка глаголов модпака в качестве описания.
/// author - автор(ы) этого модпака.

/datum/modpack/radar
name = "RADAR"
desc = "Радары."
author = "Vagabond05"

/// Эти проки нужны, для того чтобы инициализировать датумы в определенный момент времени
/// сборки билда. Инициализация обновляет данные в билде повторно, перезаписывая новыми значениями
/// из модпака. Но иногда, сама инциализация есть и вызывается в кор коде в определенный момент, и
/// тогда такие проки не нужны и вовсе. Также проки не нужны если в модпаке только объекты находятся.
/// Если эти конструкции не нужны, просто закоментируй их!
/// (можешь использовать все три, но запуск билда увеличится на 0.1 сек, за каждый датум в модпаке)

// Инициализация ДО
/datum/modpack/radar/pre_initialize()
. = ..()

// Инициализация ВОВРЕМЯ
/datum/modpack/radar/initialize()
. = ..()

// Инициализация ПОСЛЕ
/datum/modpack/radar/post_initialize()
. = ..()
17 changes: 17 additions & 0 deletions mod_celadon/radar/_radar.dme
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#ifndef MODPACK_CELADON_EXAMPLE
#define MODPACK_CELADON_EXAMPLE

#include "_radar.dm"

#include "code/radar.dm"

#endif
// BEGIN_INTERNALS
// END_INTERNALS
// BEGIN_FILE_DIR
#define FILE_DIR .
// END_FILE_DIR
// BEGIN_PREFERENCES
// END_PREFERENCES
// BEGIN_INCLUDE
// END_INCLUDE
124 changes: 124 additions & 0 deletions mod_celadon/radar/code/radar.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
/datum/overmap
var/max_sensor = 4

/datum/overmap/ship/controlled
var/list/radars = list()

/datum/overmap/ship/controlled/Initialize()
. = ..()
recalculate_radars()

/datum/overmap/ship/controlled/proc/recalculate_radars()
if(length(radars))
var/overall_sensor = -4
for(var/obj/machinery/space_radar/R in radars)
if(R)
if(R.is_operational && R.check_outside())
if(R.efficiency > overall_sensor)
overall_sensor = R.efficiency
max_sensor = overall_sensor
else
max_sensor = -4

/datum/looping_sound/space_radar
start_sound = 'mod_celadon/radar/sounds/radar.ogg'
start_length = 150
mid_sounds = list('mod_celadon/radar/sounds/radar.ogg'=10)
mid_length = 150
end_sound = 'mod_celadon/radar/sounds/radar.ogg'
volume = 90
var/started = FALSE

/obj/item/circuitboard/machine/space_radar
name = "RADAR (Machine Board)"
icon_state = "security"
build_path = /obj/machinery/space_radar
req_components = list(
/obj/item/stock_parts/scanning_module = 1,
/obj/item/stock_parts/manipulator = 1,
/obj/item/stock_parts/micro_laser = 1,
/obj/item/stack/cable_coil = 2)
needs_anchored = TRUE

/obj/machinery/space_radar
name = "RADAR"
desc = "Views everything with rays."
icon = 'mod_celadon/radar/icons/radar.dmi'
icon_state = "radar-off"
layer = BELOW_OBJ_LAYER
density = TRUE
use_power = ACTIVE_POWER_USE
idle_power_usage = IDLE_DRAW_MINIMAL
active_power_usage = ACTIVE_DRAW_MEDIUM
circuit = /obj/item/circuitboard/machine/space_radar
var/efficiency = 0
var/datum/looping_sound/space_radar/soundloop
var/datum/overmap/ship/controlled/current_ship

/obj/machinery/space_radar/proc/check_outside()
for(var/turf/T in range(1, get_turf(src)))
if(get_area(T) != get_area(src))
return TRUE
return FALSE

/obj/machinery/space_radar/proc/reload_ship()
var/obj/docking_port/mobile/port = SSshuttle.get_containing_shuttle(src)
if(port?.current_ship)
if(current_ship && current_ship != port.current_ship)
current_ship.radars -= src
current_ship = port.current_ship
current_ship.radars |= src

/obj/machinery/space_radar/Initialize()
. = ..()
soundloop = new(list(src), FALSE)
reload_ship()
if(current_ship)
current_ship.recalculate_radars()

/obj/machinery/space_radar/Destroy()
QDEL_NULL(soundloop)
if(current_ship)
current_ship.radars -= src
current_ship.recalculate_radars()
. = ..()

/obj/machinery/space_radar/RefreshParts()
efficiency = 0
for(var/obj/item/stock_parts/M in component_parts)
efficiency += M.rating
update_icon_state()
..()

/obj/machinery/space_radar/update_icon_state()
if(panel_open)
icon_state = "radar-open"
efficiency = -4
if(soundloop.started)
soundloop.started = FALSE
soundloop.stop()
current_ship.recalculate_radars()
return ..()
else if(is_operational && check_outside())
icon_state = "radar-on"
if(!soundloop.started)
soundloop.started = TRUE
soundloop.start()
current_ship.recalculate_radars()
return ..()
else
icon_state = "radar-off"
efficiency = -4
if(soundloop.started)
soundloop.started = FALSE
soundloop.stop()
current_ship.recalculate_radars()
return ..()

/obj/machinery/space_radar/attackby(obj/item/I, mob/user, params)
if(default_deconstruction_screwdriver(user, icon_state, icon_state, I))
update_appearance()
return ..()
if(default_deconstruction_crowbar(I))
return ..()
update_appearance()
Binary file added mod_celadon/radar/icons/radar.dmi
Binary file not shown.
Binary file added mod_celadon/radar/sounds/radar.ogg
Binary file not shown.
Loading