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

Hivemind tipo W.I.P. #3297

Draft
wants to merge 36 commits into
base: dev-sierra
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
5112fa6
Тест тест?
Lexanx Jul 26, 2024
50afd59
Revert "Тест тест?"
Lexanx Jul 26, 2024
55d7781
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Jul 26, 2024
bfadba6
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Aug 1, 2024
241e17f
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Aug 5, 2024
0bb7584
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Aug 22, 2024
a886e10
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Sep 29, 2024
bbcd6be
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Oct 17, 2024
56dd013
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Oct 22, 2024
4609819
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 3, 2024
2a937b7
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 3, 2024
0ce5434
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 5, 2024
27b4bc1
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 6, 2024
0cc34b0
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 9, 2024
3c4bc5b
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 10, 2024
ca46a3a
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 12, 2024
643a403
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 14, 2024
75bf4a8
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 24, 2024
2cf9df9
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 24, 2024
44cf246
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 28, 2024
992dcac
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Dec 1, 2024
02a640d
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Dec 1, 2024
2ad6b98
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Dec 19, 2024
c3d0502
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Dec 21, 2024
5fc193d
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Jan 4, 2025
10a8e43
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Jan 5, 2025
b5aa102
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Jan 10, 2025
f62c0dd
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Jan 19, 2025
e4f3dd9
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Jan 30, 2025
aa8e45a
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Feb 1, 2025
eeff875
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Feb 8, 2025
3541b87
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Feb 21, 2025
da37942
Попытка порта Хаймена
Lexanx Feb 22, 2025
ecb4294
Merge branch 'dev-sierra' into hivemand_tipo
Lexanx Feb 22, 2025
22b32e6
little fixes (not at all)
LordNest Feb 23, 2025
00cc265
Second wave
LordNest Feb 23, 2025
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
3 changes: 3 additions & 0 deletions code/modules/events/event_container.dm
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,9 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT
available_events = list(
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 1320),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 0, list(ASSIGNMENT_ENGINEER = 40), 1),
// [SIERRA-ADD],
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/hivemind, 0, list(ASSIGNMENT_ENGINEER = 20,ASSIGNMENT_MEDICAL = 20,ASSIGNMENT_SECURITY = 20), 1),
// [/SIERRA-ADD],
new /datum/event_meta/no_overmap(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/mob_spawning/carp, 0, list(ASSIGNMENT_SECURITY = 5), 1),
new /datum/event_meta/no_overmap(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 0, list(ASSIGNMENT_ENGINEER = 10), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 0, list(ASSIGNMENT_ENGINEER = 15), 1),
Expand Down
1 change: 1 addition & 0 deletions mods/global_modpacks.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#include "ntnet/_ntnet_includes.dm"
#include "virusology/_virusology_includes.dm"
#include "RnD/_RnD_includes.dm"
#include "hivemind/_hivemind_includes.dm"
#include "nyc_posters/_nyc_posters_includes.dm"
#include "pixelshift/_pixelshift_includes.dm"
#include "ssinput/_ssinput_includes.dm"
Expand Down
79 changes: 79 additions & 0 deletions mods/hivemind/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@

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

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

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

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

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

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

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

- `code/modules/mob/living.dm`: `proc/overriden_proc`, `var/overriden_var`
<!--
Если вы редактировали какие-либо процедуры или переменные в кор коде,
они должны быть указаны здесь.
Нужно указать и файл, и процедуры/переменные.

Изменений нет - напиши "Отсутствуют"
-->

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

- `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/example.dm`: `EXAMPLE_SPEED_MULTIPLIER`, `EXAMPLE_SPEED_BASE`
<!--
Если требовалось добавить какие-либо дефайны, укажи файлы,
в которые ты их добавил, а также перечисли имена.
И то же самое, если ты используешь дефайны, определённые другим модом.

Не используешь - напиши "Отсутствуют"
-->

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

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

### Авторы:

Твой никнейм
<!--
Здесь находится твой никнейм
Если работал совместно - никнеймы тех, кто помогал.
В случае порта чего-либо должна быть ссылка на источник.
-->
4 changes: 4 additions & 0 deletions mods/hivemind/_hivemind.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/singleton/modpack/example
name = "Мод-пример"
desc = "Мод, который является примером и ни в коем случае не должен быть использован."
author = "Твой никнейм"
13 changes: 13 additions & 0 deletions mods/hivemind/_hivemind_includes.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef MODPACK_HIVEMIND
#define MODPACK_HIVEMIND

#include "code\core.dm"
#include "code\hivemind_invasion.dm"
#include "code\machines.dm"
#include "code\mobs.dm"
#include "code\objects.dm"
#include "code\wires.dm"
#include "code\overrides.dm"


#endif
57 changes: 57 additions & 0 deletions mods/hivemind/code/core.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
//The Hivemind is a rogue AI using nanites.
//The objective of this AI is to spread across the ship and destroy as much as possible.


var/datum/hivemind/hive_mind_ai

/datum/hivemind
var/name
var/surname
var/evo_points = 0
var/evo_points_max = 1000
var/failure_chance = 55 //failure chance is lowers each 10 EP
var/list/hives = list() //all functional hives stored here
//i know, whitelist is bad, but it's required here
var/list/restricted_machineries = list( /obj/machinery/light, /obj/machinery/atmospherics,
/obj/machinery/portable_atmospherics, /obj/machinery/door,
/obj/machinery/camera, /obj/machinery/light_switch,
/obj/machinery/disposal, /obj/machinery/firealarm,
/obj/machinery/alarm, /obj/machinery/recharger,
/obj/machinery/hologram, /obj/machinery/hivemind_machine,
/obj/machinery/button, /obj/machinery/ai_status_display,
/obj/machinery/status_display, /obj/machinery/requests_console,
/obj/machinery/newscaster, /obj/machinery/floor_light,
/obj/machinery/nuclearbomb, /obj/machinery/flasher)

//internals
var/list/global_abilities_cooldown = list()
var/list/EP_price_list = list()

/datum/hivemind/New()
..()
name = pick("Reclaimer", "Shaper", "Executor", "Assimilator",
"Exploiter", "Builder", "Creator",
"Connector", "Splicer", "Propagator")

surname = pick("ALPHA", "BETA", "GAMMA", "DELTA", "OMEGA", "UTOPIA",
"SALVATION-X", "CHORUS", "ICARUS", "HEGEMONY", "HARMONY")
var/list/all_machines = subtypesof(/obj/machinery/hivemind_machine) - /obj/machinery/hivemind_machine/node
//price list building
//here we create list with EP price to compare it at annihilation proc
for(var/machine_path in all_machines)
var/obj/machinery/hivemind_machine/temporary_machine = new machine_path
EP_price_list[machine_path] = temporary_machine.evo_points_required
qdel(temporary_machine)
message_admins("Hivemind [name] [surname] has been created.")


/datum/hivemind/proc/die()
message_admins("Hivemind [name] [surname] is destroyed.")
hive_mind_ai = null
qdel(src)

/datum/hivemind/proc/get_points()
if(evo_points < evo_points_max)
evo_points++
if(failure_chance > 10 && (evo_points % 10 == 0))
failure_chance -= 1
29 changes: 29 additions & 0 deletions mods/hivemind/code/hivemind_invasion.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
//Hivemind is rogue AI that uses unknown nanotech to follow some strange objective
//In fact, it's just hostile structures, wireweeds spreading event with some mobs
//Requires hard teamwork at late stages, but easily can be handled at the beginning

//All code stored in modules/hivemind
//============================================

/datum/event/hivemind
announceWhen = 300


/datum/event/hivemind/announce()
level_seven_announcement()


/datum/event/hivemind/start()
var/turf/start_location
for(var/i=1 to 100)
var/turf/T = pick_subarea_turf(/area/maintenance, list(GLOBAL_PROC_REF(is_station_turf), GLOBAL_PROC_REF(not_turf_contains_dense_objects)))
start_location = T
if(!start_location && i == 100)
log_and_message_admins("Hivemind failed to find a viable turf.")
kill()
return
if(start_location)
break

log_and_message_admins("Hivemind spawned in \the [get_area(start_location)]", location = start_location)
new /obj/machinery/hivemind_machine/node(start_location)
Loading
Loading