Skip to content

Commit

Permalink
FEAT: Brain Gens, ECS Gens. (#729)
Browse files Browse the repository at this point in the history
# Описание

Разделяем ИПС мозги на поколения и отделяем их от Боргов.
Добавляем разницу в головных компьютерах между поколениями ИПС.
Возвращаем выбор оков в меню ИПС.
Добавляем оковы как предмет в игру.
Возможность установки кастомных законов через оковы для ИПС.
Фикс датаджека с ИПС, Фикс рантаймов отсуствующей головы


## Changelog

<!-- С помощью этого раздела можно подготовить список изменений, которые
попадут в игровой чейндж-лог. --->
<!-- Вам нужно указать префикс изменения (Он идёт до двоеточия) и дать
описание, как на примере. --->
<!-- Префиксы можно использовать несколько раз. --->
<!-- Если Вы не планируете добавлять записи в чейндж-лог - просто
удалите из пулл-реквеста этот раздел. --->

:cl:
rscadd: Ингейм Оковы для ИПС
  • Loading branch information
Lexanx authored Mar 2, 2024
1 parent 2c3e4db commit ef22c23
Show file tree
Hide file tree
Showing 15 changed files with 325 additions and 23 deletions.
7 changes: 7 additions & 0 deletions code/datums/uplink/devices and tools.dm
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,13 @@
antag_costs = list(MODE_MERCENARY = 35)
path = /obj/item/aiModule/syndicate

/datum/uplink_item/item/tools/shackles
name = "Shackle module"
desc = "A module that can be used on IPC brain to take it under control. \
All you need to do is write a law and install shackle on directly on IPC brain."
item_cost = 15
path = /obj/item/organ/internal/shackles

/datum/uplink_item/item/tools/supply_beacon
name = "Hacked Supply Beacon (DANGER!)"
desc = "Wrench this large beacon onto an exposed power cable, in order to activate it. This will call in a \
Expand Down
4 changes: 2 additions & 2 deletions code/modules/client/preference_setup/preference_setup.dm
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,12 @@ var/const/CHARACTER_PREFERENCE_INPUT_TITLE = "Character Preference"
name = "Общее"
sort_order = 7
category_item_type = /datum/category_item/player_setup_item/player_global
/*

/datum/category_group/player_setup_category/law_pref
name = "Законы"
sort_order = 8
category_item_type = /datum/category_item/player_setup_item/law_pref
*/


/****************************
* Category Collection Setup *
Expand Down
1 change: 1 addition & 0 deletions code/modules/culture_descriptor/culture/cultures_ipc.dm
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/decl/cultural_info/culture/ipc

language = LANGUAGE_EAL
secondary_langs = list(
LANGUAGE_HUMAN_EURO,
Expand Down
2 changes: 2 additions & 0 deletions code/modules/mob/living/silicon/laws.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
laws_sanity_check()

/mob/living/silicon/proc/laws_sanity_check()
if(istype(usr,/mob/living/silicon/sil_brainmob))
return
if (!src.laws)
laws = new GLOB.using_map.default_law_type

Expand Down
1 change: 0 additions & 1 deletion code/modules/mob/living/silicon/posi_brainmob.dm
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@
/mob/living/silicon/sil_brainmob/show_laws(mob/M)
if(M)
to_chat(M, "<b>Obey these laws [M]:</b>")
src.laws_sanity_check()
src.laws.show_laws(M)

/mob/living/silicon/sil_brainmob/open_subsystem(var/subsystem_type, var/mob/given = src)
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/new_player/new_player.dm
Original file line number Diff line number Diff line change
Expand Up @@ -591,7 +591,7 @@
return null
new_character = new(spawn_turf, chosen_species.name)
if(chosen_species.has_organ[BP_POSIBRAIN] && client && client.prefs.is_shackled)
var/obj/item/organ/internal/posibrain/B = new_character.internal_organs_by_name[BP_POSIBRAIN]
var/obj/item/organ/internal/posibrain/ipc/B = new_character.internal_organs_by_name[BP_POSIBRAIN]
if(B) B.shackle(client.prefs.get_lawset())

if(!new_character)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,48 @@
hardware_flag = PROGRAM_LAPTOP
exonets_ipc_computer = TRUE

/obj/item/modular_computer/ecs/first
name = "exonet connection system."
hardware_flag = PROGRAM_TABLET
desc = "A simple circuit with some ports and wires."

/obj/item/modular_computer/ecs/install_default_hardware()
/obj/item/modular_computer/ecs/second
name = "exonet connection system."
hardware_flag = PROGRAM_TABLET
desc = "A complex circuit with some ports and wires."

/obj/item/modular_computer/ecs/third
name = "exonet connection system."
hardware_flag = PROGRAM_LAPTOP
desc = "An extremely complex circuit with some ports and wires."

/obj/item/modular_computer/ecs/first/install_default_hardware()
..()
processor_unit = new/obj/item/stock_parts/computer/processor_unit(src)
hard_drive = new/obj/item/stock_parts/computer/hard_drive/small(src)
network_card = new/obj/item/stock_parts/computer/network_card(src)
battery_module = new/obj/item/stock_parts/computer/battery_module/converter(src)

/obj/item/modular_computer/ecs/second/install_default_hardware()
..()
processor_unit = new/obj/item/stock_parts/computer/processor_unit(src)
hard_drive = new/obj/item/stock_parts/computer/hard_drive(src)
network_card = new/obj/item/stock_parts/computer/network_card/advanced(src)
battery_module = new/obj/item/stock_parts/computer/battery_module/converter(src)


/obj/item/modular_computer/ecs/third/install_default_hardware()
..()
processor_unit = new/obj/item/stock_parts/computer/processor_unit(src)
hard_drive = new/obj/item/stock_parts/computer/hard_drive/advanced(src)
network_card = new/obj/item/stock_parts/computer/network_card/advanced(src)
battery_module = new/obj/item/stock_parts/computer/battery_module/converter(src)


/obj/item/modular_computer/ecs/install_default_programs()
..()
hard_drive.store_file(new/datum/computer_file/program/email_client())
hard_drive.store_file(new/datum/computer_file/program/crew_manifest())
hard_drive.store_file(new/datum/computer_file/program/wordprocessor())


Expand Down
2 changes: 1 addition & 1 deletion code/modules/nano/interaction/default.dm
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ GLOBAL_DATUM_INIT(default_state, /datum/topic_state/default, new)
return STATUS_INTERACTIVE
var/dist = get_dist(src_object, src)
var/obj/item/modular_computer/ecs/computer = src_object
if(computer.type == /obj/item/modular_computer/ecs)
if(computer.parent_type == /obj/item/modular_computer/ecs)
if(is_species(SPECIES_IPC) && dist == 0)
return STATUS_INTERACTIVE
else if (dist <= 3)
Expand Down
18 changes: 17 additions & 1 deletion code/modules/organs/internal/exonet_connection_system.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,26 @@
desc = "The internal port is designed to establish communication between the positronic brain and the computer."
w_class = ITEM_SIZE_NORMAL
max_damage = 100
var/obj/item/modular_computer/ecs/computer = /obj/item/modular_computer/ecs
var/obj/item/modular_computer/ecs/computer
var/open = FALSE


/obj/item/organ/internal/ecs/first_gen
name = "exonet connection port"
desc = "The internal port is designed to establish communication between the positronic brain and the computer. It's a first generation connection port."
computer = /obj/item/modular_computer/ecs/first

/obj/item/organ/internal/ecs/second_gen
name = "exonet connection port"
desc = "The internal port is designed to establish communication between the positronic brain and the computer. It's a second generation connection port."
computer = /obj/item/modular_computer/ecs/second

/obj/item/organ/internal/ecs/third_gen
name = "exonet connection port"
desc = "The internal port is designed to establish communication between the positronic brain and the computer. It's a third generation connection port."
computer = /obj/item/modular_computer/ecs/third


/obj/item/organ/internal/ecs/Initialize()
if(ispath(computer))
computer = new computer(src)
Expand Down
Loading

0 comments on commit ef22c23

Please sign in to comment.