Skip to content

Commit

Permalink
Merge branch 'corecode-rewrite' of https://github.com/RepoStash/FD-Ne…
Browse files Browse the repository at this point in the history
…wBay into corecode-rewrite
  • Loading branch information
VoiceInYourHead committed Jun 19, 2024
2 parents 15299e2 + 03be3dd commit 8dd109a
Show file tree
Hide file tree
Showing 23 changed files with 10,444 additions and 0 deletions.
2 changes: 2 additions & 0 deletions maps/torch_fd/fd_torch.dm
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,7 @@
#include "../../mods/_fd/old_space_cannons/_old_space_cannons.dme"
#include "../../mods/_fd/random_rooms/_random_rooms.dme"
#include "../../mods/_fd/structure_storage/_structure_storage.dme"
#include "../../mods/_fd/chem_furniture/_furniture.dme"

#include "../../mods/_fd/_maps/airfield/_airfield.dme"
#include "../../mods/_fd/_maps/ares/_ares.dme"
Expand All @@ -287,6 +288,7 @@
#include "../../mods/_fd/_maps/snow_cage/_snow_cage.dme"
#include "../../mods/_fd/_maps/trader_ship/_trader_ship.dme"
#include "../../mods/_fd/_maps/yacht/_yacht.dme"
#include "../../mods/_fd/_maps/gccv_ulyanovsk/_ulyanovsk.dme"

// ~EXOPLANET RUINS~ //

Expand Down
76 changes: 76 additions & 0 deletions mods/_fd/_maps/gccv_ulyanovsk/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@

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

<!--
Ссылки на PRы, связанные с модом:
- Создание
- Большие изменения
-->

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

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

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

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

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

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

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

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

### Дефайны

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

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

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

### Авторы:

ChemistryOneLove
<!--
Здесь находится твой никнейм
Если работал совместно - никнеймы тех, кто помогал.
В случае порта чего-либо должна быть ссылка на источник.
-->
4 changes: 4 additions & 0 deletions mods/_fd/_maps/gccv_ulyanovsk/_ulyanovsk.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/singleton/modpack/gccv_ulyanovsk
name = "Корабль ГКК 'Ульяновск'"
desc = "Добавляет в игру корабль ГКК."
author = "ChemistryOneLove"
16 changes: 16 additions & 0 deletions mods/_fd/_maps/gccv_ulyanovsk/_ulyanovsk.dme
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#ifndef MODPACK_GCCV_ULYANOVSK
#define MODPACK_GCCV_ULYANOVSK

#include "_ulyanovsk.dm"

#include "code/gccv_ulyanovsk.dm"
#include "code/gccv_ulyanovsk_areas.dm"
#include "code/gccv_ulyanovsk_jobs.dm"
#include "code/gccv_ulyanovsk_radio.dm"
#include "code/gccv_ulyanovsk_shuttles.dm"
#include "code/armor.dm"
#include "code/landmine.dm"
#include "code/reactor.dm"
#include "code/fabricator.dm"

#endif
180 changes: 180 additions & 0 deletions mods/_fd/_maps/gccv_ulyanovsk/code/armor.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
/*
/
"REACTIVE" ARMOR UNITS FOR EXPLOSION PROTECTION (actually absorbing)
/
*/
#define ARMORED_RESIST 30
/obj/structure/armor
name = "absorbing armor"
icon = 'mods/_fd/_maps/gccv_ulyanovsk/icons/ulyanovsk.dmi'
icon_state = "armor_empty"
anchored = TRUE
density = TRUE
layer = BELOW_OBJ_LAYER
health_max = 400
explosion_resistance = 15
/// Our armor has outer layer?
var/armored = 0
/// How much cover against projectiles.
var/cover = 25

/obj/structure/armor/Initialize()
set_extension(src, /datum/extension/penetration/simple, 100)
. = ..()

/obj/structure/armor/full
icon_state = "armor"
cover = 99
health_max = 800
armored = 1
explosion_resistance = 15 * ARMORED_RESIST

/obj/structure/armor/get_explosion_resistance()
if(armored)
return health_current * explosion_resistance
else
return initial(explosion_resistance)

/obj/structure/armor/examine(mob/user)
. = ..()
if(armored)
to_chat(user, "<span class='notice'>There is an outer layer of armor on the [src].</span>")
else
to_chat(user, "<span class='notice'>The outer layer of the [src] is empty.</span>")

/obj/structure/armor/bullet_act(obj/item/projectile/Proj)
if(Proj.original != src && !prob(cover))
if(prob(50))
return PROJECTILE_CONTINUE
else return
. = ..()

/obj/structure/armor/on_death()
dismantle()
..()

/obj/structure/armor/CanFluidPass(coming_from)
return TRUE

/obj/structure/armor/proc/reset_armor()
anchored = TRUE
cover = initial(cover)
revive_health()
icon_state = initial(icon_state)
if(armored)
add_armor()

/obj/structure/armor/use_tool(obj/item/W, mob/user)
if (user.a_intent == I_HURT)
..()
return

if(isWrench(W))
if(!armored)
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
to_chat(user, "<span class='notice'>Now disassembling the armor...</span>")
if(do_after(user, 80,src))
to_chat(user, "<span class='notice'>You dissasembled the armor!</span>")
dismantle()
else
to_chat(user, "<span class='notice'>You must first remove the armor before disassemble.</span>")
return

if(istype(W, /obj/item/gun/energy/plasmacutter) || istype(W, /obj/item/psychic_power/psiblade/master/grand/paramount))
if(istype(W, /obj/item/gun/energy/plasmacutter))
var/obj/item/gun/energy/plasmacutter/cutter = W
if(!cutter.slice(user))
return
playsound(src.loc, 'sound/items/Welder.ogg', 100, 1)
to_chat(user, "<span class='notice'>Now slicing apart the armor...</span>")
if(do_after(user,armored ? 40: 20,src))
to_chat(user, "<span class='notice'>You slice apart the armor!</span>")
if(armored)
new /obj/item/stack/material/plasteel(get_turf(user), 2)
dismantle()
return

if(isCrowbar(W) && armored)
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
to_chat(user, "<span class='notice'>Now removing the outer layer of armor...</span>")
if(do_after(user, 40,src))
to_chat(user, "<span class='notice'>You removed the outer layer of armor!</span>")
remove_armor()
return

if(istype(W, /obj/item/stack/material/plasteel))
if(!armored)
if(!reinforce(W, user))
return ..()

if(isWelder(W))
while(health_damaged())
var/obj/item/weldingtool/F = W
if(istype(W, /obj/item/weldingtool) && !F.isOn())
return
if(!health_damaged())
to_chat(user, "<span class='warning'>\The [src] does not need repairs.</span>")
return
playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
if(do_after(user, 20, src))
if(!health_damaged())
return
user.visible_message("<span class='notice'>\The [user] repairs some damage to \the [src].</span>", "<span class='notice'>You repair some damage to \the [src].</span>")
restore_health(health_max / 4)
return

..()

/obj/structure/armor/proc/reinforce(obj/item/stack/material/plasteel/S, mob/user)
if(armored)
to_chat(user, "<span class='notice'>\The [src] is already have outer armor.</span>")
return 0

if(S.get_amount() < 2)
to_chat(user, "<span class='notice'>There isn't enough material here to add armor.</span>")
return 0

to_chat(user, "<span class='notice'>Now adding the outer layer of armor...</span>")
if (!do_after(user, 40,src) || !S.use(2))
return 1
to_chat(user, "<span class='notice'>You added armor!</span>")

add_armor()
return 1

/obj/structure/armor/proc/add_armor()
cover = 99
armored = 1
health_max = 800
explosion_resistance += ARMORED_RESIST
icon_state = "armor"
if(health_current == initial(health_max))
revive_health()

/obj/structure/armor/proc/remove_armor()
cover = 25
armored = 0
health_max = 400
explosion_resistance -= ARMORED_RESIST
icon_state = "armor_empty"
if(health_current > health_max)
health_current = health_max

/obj/structure/armor/proc/dismantle()
new /obj/item/stack/material/plasteel(get_turf(src), 2)
qdel(src)

/obj/structure/armor/CanPass()
return 0

/material/plasteel/generate_recipes(reinforce_material)
. = ..()
. += new/datum/stack_recipe/armor(src)

/datum/stack_recipe/armor
title = "Absorbing Armor Frame"
result_type = /obj/structure/armor
req_amount = 4
time = 80
on_floor = 1
difficulty = 2
Loading

0 comments on commit 8dd109a

Please sign in to comment.