From 4acf5e2e679bf7e66b818535795f54e0c6b1d792 Mon Sep 17 00:00:00 2001 From: VirgoBot <39653486+VirgoBot@users.noreply.github.com> Date: Thu, 22 Sep 2022 21:03:19 -0400 Subject: [PATCH 1/9] [MIRROR] conk rete (ABLE TO BE MERGED) --- code/__defines/materials.dm | 2 + code/datums/supplypacks/materials.dm | 9 +- .../game/objects/effects/spawners/graffiti.dm | 2 +- code/game/turfs/flooring/flooring.dm | 10 +- code/game/turfs/flooring/flooring_premade.dm | 6 + code/game/turfs/simulated/wall_icon.dm | 7 +- code/game/turfs/simulated/wall_types.dm | 24 +- code/modules/materials/fifty_spawner_mats.dm | 8 + .../modules/materials/materials/_materials.dm | 5 +- .../materials/materials/metals/plasteel.dm | 11 +- .../materials/materials/metals/steel.dm | 2 +- code/modules/materials/materials/stone.dm | 27 + code/modules/materials/sheets/metals/metal.dm | 13 + code/modules/materials/sheets/stone.dm | 11 + .../reagents/reactions/instant/instant.dm | 11 +- icons/turf/concrete.dmi | Bin 0 -> 2776 bytes icons/turf/wall_masks.dmi | Bin 120551 -> 121222 bytes icons/turf/wall_texture.dmi | Bin 0 -> 1635 bytes maps/cynosure/cynosure_shuttles.dm | 8 +- maps/cynosure/submaps/10x9/Shop.dmm | 541 +++++++++++++ maps/cynosure/submaps/10x9/TreasureHoard.dmm | 528 +++++++++++++ maps/cynosure/submaps/10x9/Warehouse1.dmm | 548 +++++++++++++ maps/cynosure/submaps/10x9/Warehouse2.dmm | 525 +++++++++++++ maps/cynosure/submaps/10x9/Warehouse3.dmm | 512 +++++++++++++ maps/cynosure/submaps/16x11/LaserTag.dmm | 495 ++++++++++++ maps/cynosure/submaps/16x11/Nightclub.dmm | 718 ++++++++++++++++++ .../cynosure/submaps/5x7/MedicalBreakRoom.dmm | 179 +++++ .../submaps/5x7/MedicalWasteStorage.dmm | 285 +++++++ .../submaps/5x7/SurgeryTrainingRoom.dmm | 286 +++++++ maps/cynosure/submaps/7x7/JanitorCloset.dmm | 381 ++++++++++ maps/cynosure/submaps/7x7/PartyRoom.dmm | 234 ++++++ maps/cynosure/submaps/8x5/GrowersDen.dmm | 154 ++++ maps/cynosure/submaps/8x5/HiddenBar.dmm | 160 ++++ maps/cynosure/submaps/8x5/Restroom.dmm | 148 ++++ maps/cynosure/submaps/8x5/SquattersDen.dmm | 156 ++++ maps/cynosure/submaps/8x9/MeetingRoom.dmm | 312 ++++++++ maps/cynosure/submaps/8x9/RitualRoom.dmm | 273 +++++++ .../cynosure/submaps/9x10/PressureChamber.dmm | 215 ++++++ maps/cynosure/submaps/9x10/Sauna.dmm | 219 ++++++ maps/cynosure/submaps/9x10/ShootingRange.dmm | 341 +++++++++ maps/cynosure/submaps/9x10/Theater.dmm | 278 +++++++ maps/cynosure/submaps/9x8/GamesRoom.dmm | 308 ++++++++ maps/cynosure/submaps/9x8/ServerRoom.dmm | 272 +++++++ maps/cynosure/turfs/outdoors.dm | 181 +++++ .../surface_submaps/mountains/Rockb1.dmm | 5 + maps/submaps/surface_submaps/plains/Diner.dmm | 10 + .../surface_submaps/wilderness/borglab.dmm | 230 ++++++ 47 files changed, 8634 insertions(+), 16 deletions(-) create mode 100644 icons/turf/concrete.dmi create mode 100644 icons/turf/wall_texture.dmi create mode 100644 maps/cynosure/submaps/10x9/Shop.dmm create mode 100644 maps/cynosure/submaps/10x9/TreasureHoard.dmm create mode 100644 maps/cynosure/submaps/10x9/Warehouse1.dmm create mode 100644 maps/cynosure/submaps/10x9/Warehouse2.dmm create mode 100644 maps/cynosure/submaps/10x9/Warehouse3.dmm create mode 100644 maps/cynosure/submaps/16x11/LaserTag.dmm create mode 100644 maps/cynosure/submaps/16x11/Nightclub.dmm create mode 100644 maps/cynosure/submaps/5x7/MedicalBreakRoom.dmm create mode 100644 maps/cynosure/submaps/5x7/MedicalWasteStorage.dmm create mode 100644 maps/cynosure/submaps/5x7/SurgeryTrainingRoom.dmm create mode 100644 maps/cynosure/submaps/7x7/JanitorCloset.dmm create mode 100644 maps/cynosure/submaps/7x7/PartyRoom.dmm create mode 100644 maps/cynosure/submaps/8x5/GrowersDen.dmm create mode 100644 maps/cynosure/submaps/8x5/HiddenBar.dmm create mode 100644 maps/cynosure/submaps/8x5/Restroom.dmm create mode 100644 maps/cynosure/submaps/8x5/SquattersDen.dmm create mode 100644 maps/cynosure/submaps/8x9/MeetingRoom.dmm create mode 100644 maps/cynosure/submaps/8x9/RitualRoom.dmm create mode 100644 maps/cynosure/submaps/9x10/PressureChamber.dmm create mode 100644 maps/cynosure/submaps/9x10/Sauna.dmm create mode 100644 maps/cynosure/submaps/9x10/ShootingRange.dmm create mode 100644 maps/cynosure/submaps/9x10/Theater.dmm create mode 100644 maps/cynosure/submaps/9x8/GamesRoom.dmm create mode 100644 maps/cynosure/submaps/9x8/ServerRoom.dmm create mode 100644 maps/cynosure/turfs/outdoors.dm diff --git a/code/__defines/materials.dm b/code/__defines/materials.dm index 9536547c1d..e9ec7a357a 100644 --- a/code/__defines/materials.dm +++ b/code/__defines/materials.dm @@ -54,6 +54,8 @@ #define MAT_PLATINUM "platinum" #define MAT_TRITIUM "tritium" #define MAT_DEUTERIUM "deuterium" +#define MAT_CONCRETE "concrete" +#define MAT_PLASTEELREBAR "plasteel rebar" #define DEFAULT_TABLE_MATERIAL MAT_PLASTIC diff --git a/code/datums/supplypacks/materials.dm b/code/datums/supplypacks/materials.dm index 3268d05a46..d06238dc41 100644 --- a/code/datums/supplypacks/materials.dm +++ b/code/datums/supplypacks/materials.dm @@ -83,4 +83,11 @@ containertype = /obj/structure/closet/crate/grayson containername = "Linoleum crate" cost = 15 - contains = list(/obj/fiftyspawner/linoleum) \ No newline at end of file + contains = list(/obj/fiftyspawner/linoleum) + +/datum/supply_pack/materials/concrete + name = "Concrete" + cost = 10 + containertype = /obj/structure/closet/crate/grayson + contains = list(/obj/fiftyspawner/concrete) + containername = "Concrete bricks crate" \ No newline at end of file diff --git a/code/game/objects/effects/spawners/graffiti.dm b/code/game/objects/effects/spawners/graffiti.dm index afac11f4f1..9450c90206 100644 --- a/code/game/objects/effects/spawners/graffiti.dm +++ b/code/game/objects/effects/spawners/graffiti.dm @@ -25,4 +25,4 @@ C.name = name - qdel(src) + return INITIALIZE_HINT_QDEL diff --git a/code/game/turfs/flooring/flooring.dm b/code/game/turfs/flooring/flooring.dm index 4b9686a25e..b037db4362 100644 --- a/code/game/turfs/flooring/flooring.dm +++ b/code/game/turfs/flooring/flooring.dm @@ -615,4 +615,12 @@ var/list/flooring_types footstep_sounds = list("human" = list( 'sound/effects/footstep/lava1.ogg', 'sound/effects/footstep/lava2.ogg', - 'sound/effects/footstep/lava3.ogg')) \ No newline at end of file + 'sound/effects/footstep/lava3.ogg')) + +/decl/flooring/concrete + name = "concrete" + desc = "A flat area of concrete flooring." + icon = 'icons/turf/concrete.dmi' + icon_base = "concrete" + is_plating = TRUE + plating_type = /decl/flooring/concrete \ No newline at end of file diff --git a/code/game/turfs/flooring/flooring_premade.dm b/code/game/turfs/flooring/flooring_premade.dm index 5793c761bc..ff735044db 100644 --- a/code/game/turfs/flooring/flooring_premade.dm +++ b/code/game/turfs/flooring/flooring_premade.dm @@ -527,3 +527,9 @@ add_overlay(image(icon = 'icons/turf/outdoors.dmi', icon_state = "snow_footprints", dir = text2num(d))) //**** Here ends snow **** + +/turf/simulated/floor/concrete + name = "concrete" + icon = 'icons/turf/concrete.dmi' + icon_state = "concrete" + initial_flooring = /decl/flooring/concrete diff --git a/code/game/turfs/simulated/wall_icon.dm b/code/game/turfs/simulated/wall_icon.dm index 788f6c5452..7abc69e3b2 100644 --- a/code/game/turfs/simulated/wall_icon.dm +++ b/code/game/turfs/simulated/wall_icon.dm @@ -16,10 +16,10 @@ if(reinf_material) name = "reinforced [material.display_name] wall" - desc = "It seems to be a section of hull reinforced with [reinf_material.display_name] and plated with [material.display_name]." + desc = "It seems to be a section of wall reinforced with [reinf_material.display_name] and plated with [material.display_name]." else name = "[material.display_name] wall" - desc = "It seems to be a section of hull plated with [material.display_name]." + desc = "It seems to be a section of wall plated with [material.display_name]." if(material.opacity > 0.5 && !opacity) set_light(1) @@ -77,6 +77,9 @@ I = image(wall_masks, reinf_material.icon_reinf) I.color = reinf_material.icon_colour add_overlay(I) + var/image/texture = material.get_wall_texture() + if(texture) + add_overlay(texture) if(damage != 0) var/integrity = material.integrity diff --git a/code/game/turfs/simulated/wall_types.dm b/code/game/turfs/simulated/wall_types.dm index 52b2c30ab0..34408d5cfc 100644 --- a/code/game/turfs/simulated/wall_types.dm +++ b/code/game/turfs/simulated/wall_types.dm @@ -78,6 +78,18 @@ /turf/simulated/wall/resin/Initialize(mapload) . = ..(mapload, "resin",null,"resin") +/turf/simulated/wall/concrete + desc = "A wall made out of concrete bricks" + material = MAT_CONCRETE + icon_state = "brick" + + +/turf/simulated/wall/r_concrete + desc = "A sturdy wall made of concrete and reinforced with plasteel rebar" + material = MAT_CONCRETE + reinf_material = MAT_PLASTEELREBAR + icon_state = "rbrick" + // Kind of wondering if this is going to bite me in the butt. /turf/simulated/wall/skipjack/Initialize(mapload) . = ..(mapload, "alienalloy") @@ -325,10 +337,9 @@ /obj/structure/hull_corner name = "hull corner" plane = OBJ_PLANE - 1 - icon = 'icons/turf/wall_masks.dmi' icon_state = "hull_corner" - + anchored = TRUE density = TRUE breakable = TRUE @@ -344,6 +355,11 @@ return list(dir, turn(dir,90)) /obj/structure/hull_corner/proc/update_look() +<<<<<<< HEAD +======= + cut_overlays() + +>>>>>>> 1a8f1760fa... [MIRROR] conk rete (ABLE TO BE MERGED) (#13467) var/turf/simulated/wall/T for(var/direction in get_dirs_to_test()) T = get_step(src, direction) @@ -363,7 +379,7 @@ I.color = R.icon_colour add_overlay(I) break - + if(!T) warning("Hull corner at [x],[y] not placed adjacent to a hull it can find.") @@ -744,4 +760,4 @@ wall_base_state = "darkwall_rwindow" #undef WINDOW_GLASS -#undef WINDOW_RGLASS \ No newline at end of file +#undef WINDOW_RGLASS diff --git a/code/modules/materials/fifty_spawner_mats.dm b/code/modules/materials/fifty_spawner_mats.dm index 6ba191522f..e7e850a916 100644 --- a/code/modules/materials/fifty_spawner_mats.dm +++ b/code/modules/materials/fifty_spawner_mats.dm @@ -12,6 +12,10 @@ name = "stack of marble" type_to_spawn = /obj/item/stack/material/marble +/obj/fiftyspawner/concrete + name = "stack of concrete" + type_to_spawn = /obj/item/stack/material/concrete + /obj/fiftyspawner/diamond name = "stack of diamond" type_to_spawn = /obj/item/stack/material/diamond @@ -72,6 +76,10 @@ name = "stack of plasteel" type_to_spawn = /obj/item/stack/material/plasteel +/obj/fiftyspawner/plasteel/rebar + name = "stack of plasteel rebars" + type_to_spawn = /obj/item/stack/material/plasteel/rebar + /obj/fiftyspawner/plasteel/hull name = "stack of plasteel hull" type_to_spawn = /obj/item/stack/material/plasteel/hull diff --git a/code/modules/materials/materials/_materials.dm b/code/modules/materials/materials/_materials.dm index 168fd67938..99027a8de7 100644 --- a/code/modules/materials/materials/_materials.dm +++ b/code/modules/materials/materials/_materials.dm @@ -373,4 +373,7 @@ var/list/name_to_material new /datum/stack_recipe("[display_name] knife", /obj/item/weapon/material/knife/plastic, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), new /datum/stack_recipe("[display_name] blade", /obj/item/weapon/material/butterflyblade, 6, time = 20, one_per_turf = 0, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), new /datum/stack_recipe("[display_name] defense wire", /obj/item/weapon/material/barbedwire, 10, time = 1 MINUTE, one_per_turf = 0, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - ) \ No newline at end of file + ) + +/datum/material/proc/get_wall_texture() + return diff --git a/code/modules/materials/materials/metals/plasteel.dm b/code/modules/materials/materials/metals/plasteel.dm index 8146980057..8ec47e84f2 100644 --- a/code/modules/materials/materials/metals/plasteel.dm +++ b/code/modules/materials/materials/metals/plasteel.dm @@ -24,8 +24,17 @@ new /datum/stack_recipe("dark floor tile", /obj/item/stack/tile/floor/dark, 1, 4, 20, recycle_material = "[name]"), new /datum/stack_recipe("roller bed", /obj/item/roller, 5, time = 30, on_floor = 1, recycle_material = "[name]"), new /datum/stack_recipe("whetstone", /obj/item/weapon/whetstone, 2, time = 10, recycle_material = "[name]"), + new /datum/stack_recipe("plasteel rebar", /obj/item/stack/material/plasteel/rebar, 1, time = 5, recycle_material = "[name]"), new /datum/stack_recipe_list("reinforced low walls",list( new /datum/stack_recipe("reinforced low wall (bay style)", /obj/structure/low_wall/bay/reinforced, 3, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", recycle_material = "[name]"), new /datum/stack_recipe("reinforced low wall (eris style)", /obj/structure/low_wall/eris/reinforced, 3, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", recycle_material = "[name]") )), - ) \ No newline at end of file + ) + +/datum/material/plasteel/rebar //to give a different reinforced overlay + name = MAT_PLASTEELREBAR + icon_reinf = "reinf_metal" + icon_colour = "#6A6A6A" + stack_type = /obj/item/stack/material/plasteel/rebar + sheet_singular_name = "rod" + sheet_plural_name = "rods" diff --git a/code/modules/materials/materials/metals/steel.dm b/code/modules/materials/materials/metals/steel.dm index cc6a58792a..0ecee553ab 100644 --- a/code/modules/materials/materials/metals/steel.dm +++ b/code/modules/materials/materials/metals/steel.dm @@ -86,4 +86,4 @@ new /datum/stack_recipe("apc frame", /obj/item/frame/apc, 2, recycle_material = "[name]"), new /datum/stack_recipe("desk bell", /obj/item/weapon/deskbell, 1, on_floor = 1, supplied_material = "[name]"), new /datum/stack_recipe("tanning rack", /obj/structure/tanning_rack, 3, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]") - ) \ No newline at end of file + ) diff --git a/code/modules/materials/materials/stone.dm b/code/modules/materials/materials/stone.dm index 340f7d0dec..6bbfb12e4c 100644 --- a/code/modules/materials/materials/stone.dm +++ b/code/modules/materials/materials/stone.dm @@ -47,4 +47,31 @@ /datum/material/stone/flint/generate_recipes() return +<<<<<<< HEAD //VOREStation Addition End +======= +//VOREStation Addition End + +/datum/material/stone/concrete + name = MAT_CONCRETE + stack_type = /obj/item/stack/material/concrete + icon_base = "brick" + icon_colour = COLOR_GRAY + integrity = 150 + melting_point = 1550 + protectiveness = 10 + weight = 27 + hardness = 60 + var/image/texture + +/datum/material/stone/concrete/generate_recipes() + ..() + +/datum/material/stone/concrete/New() + . = ..() + texture = image('icons/turf/wall_texture.dmi', "concrete") + texture.blend_mode = BLEND_MULTIPLY + +/datum/material/stone/concrete/get_wall_texture() + return texture +>>>>>>> 1a8f1760fa... [MIRROR] conk rete (ABLE TO BE MERGED) (#13467) diff --git a/code/modules/materials/sheets/metals/metal.dm b/code/modules/materials/sheets/metals/metal.dm index 256f80696b..9c999f73f0 100644 --- a/code/modules/materials/sheets/metals/metal.dm +++ b/code/modules/materials/sheets/metals/metal.dm @@ -12,6 +12,19 @@ no_variants = FALSE apply_colour = TRUE +/obj/item/stack/material/plasteel/rebar + name = MAT_PLASTEELREBAR + icon_state = "rods" + default_type = MAT_PLASTEELREBAR + apply_colour = 1 + +/obj/item/stack/material/plasteel/rebar/update_icon() + var/amount = get_amount() + if((amount <= 5) && (amount > 0)) + icon_state = "rods-[amount]" + else + icon_state = "rods" + /obj/item/stack/material/durasteel name = "durasteel" icon_state = "sheet-durasteel" //CHOMPedit - replace materials update diff --git a/code/modules/materials/sheets/stone.dm b/code/modules/materials/sheets/stone.dm index e7c5593f67..4da4093cc8 100644 --- a/code/modules/materials/sheets/stone.dm +++ b/code/modules/materials/sheets/stone.dm @@ -22,4 +22,15 @@ drop_sound = 'sound/items/drop/boots.ogg' pickup_sound = 'sound/items/pickup/boots.ogg' pass_color = TRUE +<<<<<<< HEAD apply_colour = TRUE +======= + apply_colour = TRUE + +/obj/item/stack/material/concrete + name = "concrete brick" + icon_state = "brick" + default_type = "concrete" + no_variants = FALSE + apply_colour = 1 +>>>>>>> 1a8f1760fa... [MIRROR] conk rete (ABLE TO BE MERGED) (#13467) diff --git a/code/modules/reagents/reactions/instant/instant.dm b/code/modules/reagents/reactions/instant/instant.dm index 2bb809ccef..299ec6d448 100644 --- a/code/modules/reagents/reactions/instant/instant.dm +++ b/code/modules/reagents/reactions/instant/instant.dm @@ -689,6 +689,15 @@ required_reagents = list("liquidcarpeto" = 2, "plasticide" = 1) carpet_type = /obj/item/stack/tile/carpet/oracarpet +/decl/chemical_reaction/instant/concrete + name = "Concrete" + id = "concretereagent" + required_reagents = list("calcium" = 2, "silicate" = 2, "water" = 2) + result_amount = 1 + +/decl/chemical_reaction/instant/concrete/on_reaction(var/datum/reagents/holder, var/created_volume) + new /obj/item/stack/material/concrete(get_turf(holder.my_atom), created_volume) + return /* Grenade reactions */ @@ -1232,4 +1241,4 @@ id = "spidertoxin_neutral" result = "protein" required_reagents = list("enzyme" = 1, "spidertoxin" = 1, "sifsap" = 1) - result_amount = 1 \ No newline at end of file + result_amount = 1 diff --git a/icons/turf/concrete.dmi b/icons/turf/concrete.dmi new file mode 100644 index 0000000000000000000000000000000000000000..eacd59ad134fcaeb1fe125c393159127ffc28523 GIT binary patch literal 2776 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 e2_D}b1o$t!M54hwjnJY10000 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 diff --git a/icons/turf/wall_texture.dmi b/icons/turf/wall_texture.dmi new file mode 100644 index 0000000000000000000000000000000000000000..265e997b93263d63a661abe5aace5d73f50a451c GIT binary patch literal 1635 zcmW+%3se+U7+%ddVp<&!nWYAS7$T;ysc33PgA7Spb_jb3LGjso$GynI0|M!3QOrb4p*|;$e zkFi)R<5HeYT1D50;5GU#dQbX(|0RoMq-J~0o=gZCblxGzB!FO(K4A!mq$)Ht3F_>= zEqGaiX$*;p?%WyFG=(09VPJy$`}-k;m=KT0W17U!jUlHq_$@XOCbv6p0RUNsBS3e# zTm;dRqCkM4i8WvVO*dsl^*U*;2?=OzYnLQR2=D~bS_Wl=5djeBhCVdl#+U%p1OU+2 zq9hBFsA)RS^E8uS9bkiHnPK;^C`o>iqnRwnK@~#9^mx3otWZ+G(0h9Sr2uY^Ti0|# zbQM8WQ8_<@kQwj?WKkjrX}Zd@9D&&9ce{N)ObeT|SIn_ICQ#F~VV_smbyW>gVHq!N zh@nmLqG^!6J_kV%y|kQfNC?2yaJ@c{@C1!G0d&~;u2 zV2li1Qxy>sb=ScYLRB&?s2WXa)hAOb~2)D@M^Syg0eC8TKt>1;qS z0Rjdx4Bf=IufI=`6u+Ml1i|m~28|Z1#d|pqA(Ws70pwVgASxs1P;4kvqG)Oo$kU?fkdb<#uy)WOOzfkX02T>Kmj%EiNL z$}5hJ$(%8x5j1_YBE)huZqh5I$3O3&Tklj#(h_@O$%-#_tP5Lt|K*m*n!R7e)c;u1 zmGN7_SJheBneXh5{B@thvA?Ref-W?0IN0#E-bK$3ONYA;_g{NI_stRG2d0(%*_fSD zkdksTf9h`M+*L6hUzDfqjea2i-OXu5H#hyWB(yqM5Z z_OZC{`ROe;Y}20Y-Z*{PyHTTK?R%En@BK9PY{BI8x|Pk(jGj~S^6_MLfk!>7XjDdTo1Tb+cgK zd!Wiwzhgul7q_Ig?g?u}&hio_t=w1W?*8ueS%toFA9#98@yO)(3&pwY!g;oYiD7f| z_br%`P@efrsXP!h_4L?7Emupzc4mhixL#cx-_TIpacR;^7d)Y}S4Jm>R?keF+IzJ% zK6+PdN5vyo#=f?Hekyl#(O#STY{*lkvr8vdw2zFRupsN0oXk}}zNRfY?t!La*NObK zkIx-kQ~UP);g7BjJte zcYolY>z&t_+uzW^b2oN=xo1)B-@BV(f*Af*LzDfCjd^f!9&fANwtn}$ntgLmdDOCj zilqnYemim@G%>U$ZS(7GKMRxlhVMTA%{HN|r*-kAOfz9!Q*7&;t`ojn8}>cvoK$lt z%Jyhy?h8XXtsm|v>J7zt%OX-=