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

New Ruin: Tesla Lab #3787

Open
wants to merge 56 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
5178acd
wrk
Erikafox Sep 24, 2024
19d5080
work
Erikafox Sep 25, 2024
3f9d823
Update icemoon_tesla_lab.dmm
Erikafox Sep 26, 2024
be1daa3
Merge remote-tracking branch 'upstream/master' into ice_ruin
Erikafox Oct 21, 2024
4f2df12
Update icemoon_tesla_lab.dmm
Erikafox Oct 21, 2024
0ca8531
Update icemoon_tesla_lab.dmm
Erikafox Oct 21, 2024
0bc61b4
Update icemoon_tesla_lab.dmm
Erikafox Oct 26, 2024
60d218d
Update icemoon_tesla_lab.dmm
Erikafox Oct 27, 2024
0fe3add
Update icemoon_tesla_lab.dmm
Erikafox Oct 27, 2024
2b998e4
Update icemoon_tesla_lab.dmm
Erikafox Oct 28, 2024
4846e19
Merge remote-tracking branch 'upstream/master' into ice_ruin
Erikafox Oct 28, 2024
49bdc9c
Update icemoon_tesla_lab.dmm
Erikafox Oct 29, 2024
91d11b8
Update tesla_lab.dm
Erikafox Oct 30, 2024
06e7ac7
wawa
Erikafox Nov 1, 2024
5ce2474
gort
Erikafox Nov 2, 2024
ffc847e
wa
Erikafox Nov 2, 2024
521d520
Merge remote-tracking branch 'upstream/master' into ice_ruin
Erikafox Nov 2, 2024
be56f69
Merge remote-tracking branch 'upstream/master' into ice_ruin
Erikafox Nov 2, 2024
1c25ffc
Update icemoon_tesla_lab.dmm
Erikafox Nov 2, 2024
1c565ac
Update icemoon_tesla_lab.dmm
Erikafox Nov 2, 2024
5150500
Update icemoon_tesla_lab.dmm
Erikafox Nov 4, 2024
85dda06
Update icemoon_tesla_lab.dmm
Erikafox Nov 4, 2024
bb6c611
Update icemoon_tesla_lab.dmm
Erikafox Nov 5, 2024
9bed30c
Update icemoon_tesla_lab.dmm
Erikafox Nov 5, 2024
19aad2d
Update tesla_lab.dm
Erikafox Nov 5, 2024
94532ee
Update icemoon_tesla_lab.dmm
Erikafox Nov 8, 2024
3eb2355
uu
Erikafox Nov 8, 2024
12013ac
blood drip randomization + ammo casings
Erikafox Nov 10, 2024
92deb7e
Update humans.dm
Erikafox Nov 10, 2024
c3b2b3f
Merge branch 'mapping-things' into ice_ruin
Erikafox Nov 11, 2024
a088bed
uu
Erikafox Nov 11, 2024
6371503
Update icemoon_tesla_lab.dmm
Erikafox Nov 11, 2024
0c86292
tgwar
Erikafox Nov 12, 2024
8cb5057
Update icemoon_tesla_lab.dmm
Erikafox Nov 13, 2024
62e9d37
Update icemoon.dm
Erikafox Nov 13, 2024
e278b85
wawa
Erikafox Nov 13, 2024
0204c11
wawa
Erikafox Nov 13, 2024
31ac89c
Update icemoon_tesla_lab.dmm
Erikafox Nov 13, 2024
ab82899
Update icemoon_tesla_lab.dmm
Erikafox Nov 13, 2024
54ab589
Update icemoon_tesla_lab.dmm
Erikafox Nov 13, 2024
0e5a397
waware
Erikafox Nov 15, 2024
90632e1
Update icemoon_tesla_lab.dmm
Erikafox Nov 16, 2024
d58f87b
Update icemoon.dm
Erikafox Nov 16, 2024
8d7a259
uu
Erikafox Nov 16, 2024
5f6d892
Update icemoon_tesla_lab.dmm
Erikafox Nov 16, 2024
152ff8a
Merge remote-tracking branch 'upstream/master' into ice_ruin
Erikafox Nov 16, 2024
7cf224c
pr time
Erikafox Nov 16, 2024
62de09e
Update icemoon_tesla_lab.dmm
Erikafox Nov 16, 2024
10af1d0
uu
Erikafox Nov 16, 2024
cd73d12
Update icemoon_tesla_lab.dmm
Erikafox Nov 16, 2024
d9c860c
Update icemoon_tesla_lab.dmm
Erikafox Nov 16, 2024
1045f76
reviewuwu
Erikafox Nov 16, 2024
19e998c
Update icemoon_tesla_lab.dmm
Erikafox Nov 16, 2024
8458eac
Update icemoon_tesla_lab.dmm
Erikafox Nov 16, 2024
927cb9f
Update frontiersmen_haymaker.dmm
Erikafox Nov 17, 2024
1c5723f
Update frontiersmen_haymaker.dmm
Erikafox Nov 17, 2024
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
15,669 changes: 15,669 additions & 0 deletions _maps/RandomRuins/IceRuins/icemoon_tesla_lab.dmm

Large diffs are not rendered by default.

686 changes: 686 additions & 0 deletions _maps/shuttles/subshuttles/frontiersmen_haymaker.dmm

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions code/datums/ruins/icemoon.dm
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,10 @@
suffix = "icemoon_ice_lodge.dmm"
ruin_tags = list(RUIN_TAG_HARD_COMBAT, RUIN_TAG_MAJOR_LOOT, RUIN_TAG_SHELTER, RUIN_TAG_HAZARDOUS)

/datum/map_template/ruin/icemoon/tesla_lab
name = "CLIP Research Lab"
id = "tesla_lab"
description = "Records show this settlement as belonging to the SRM, but no one has heard from them as of late. I wonder what happened?"
suffix = "icemoon_tesla_lab.dmm"
ruin_tags = list(RUIN_TAG_BOSS_COMBAT, RUIN_TAG_MAJOR_LOOT, RUIN_TAG_SHELTER, RUIN_TAG_HAZARDOUS)

61 changes: 61 additions & 0 deletions code/game/area/areas/ruins/icemoon.dm
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,64 @@
/area/ruin/powered/icemoon/lodge/gear_room
name = "Gear Room"
icon_state = "security"

// teslalab

/area/ruin/icemoon/tesla_lab
name = "CLIP Lab Complex"
icon_state = "hallC"

/area/ruin/icemoon/tesla_lab/lab_a
name = "Lab Zone One"
icon_state = "yellow"

/area/ruin/icemoon/tesla_lab/containment
name = "Specimen Containment"
icon_state = "purple"

/area/ruin/icemoon/tesla_lab/engineering
name = "Engineering"
icon_state = "engine"

/area/ruin/icemoon/tesla_lab/cargo
name = "Cargo Warehouse"
icon_state = "storage"

/area/ruin/icemoon/tesla_lab/lobby
name = "Lobby"
icon_state = "green"

/area/ruin/icemoon/tesla_lab/dorms
name = "Dormitories"
icon_state = "crew_quarters"

/area/ruin/icemoon/tesla_lab/office
name = "Office"
icon_state = "bridge"

/area/ruin/icemoon/tesla_lab/haymaker
name = "Haymaker Pod"
icon_state = "shuttle"

/area/ruin/icemoon/tesla_lab/medbay
name = "Medical Bay"

/area/ruin/icemoon/tesla_lab/office_two
name = "Director Office"

/area/ruin/icemoon/tesla_lab/central_hall
name = "Central Halls"

/area/ruin/icemoon/tesla_lab/lab_halls
name = "Lab Zone Hallway"

/area/ruin/icemoon/tesla_lab/cargo_hall
name = "Cargo Access Hall"

/area/ruin/icemoon/tesla_lab/turrets
name = "Turret Lean-To"
icon_state = "security"

/area/ruin/icemoon/tesla_lab/armory
name = "Armory"
icon_state = "armory"
5 changes: 5 additions & 0 deletions code/game/machinery/doors/firedoor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -468,6 +468,11 @@
assemblytype = /obj/structure/firelock_frame/heavy
max_integrity = 550

/obj/machinery/door/firedoor/heavy/closed
icon_state = "door_closed"
opacity = TRUE
density = TRUE

/obj/machinery/door/firedoor/window
name = "firelock window shutter"
icon = 'icons/obj/doors/doorfirewindow.dmi'
Expand Down
27 changes: 18 additions & 9 deletions code/game/objects/effects/anomalies/anomalies_static.dm
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,25 @@ GLOBAL_LIST_INIT(tvstatic_sayings, list(
verb_whisper = "whimpers"
verb_yell = "screams"
speech_span = SPAN_ITALICS
///The mob we are holding *right* now
var/mob/living/carbon/stored_mob = null
///The path for the spawner if we want to have a custom guy inside the static.
var/stored_mob_spawner = null

/obj/effect/anomaly/tvstatic/planetary/Initialize(mapload)
if(ispath(stored_mob_spawner))
var/obj/effect/mob_spawn/vicspawner = new stored_mob_spawner(src)
var/mob/living/carbon/victim = (vicspawner.spawned_mob_ref)?.resolve()
src.stored_mob = victim
victim.setOrganLoss(ORGAN_SLOT_BRAIN, 200)
victim.forceMove(src)
if(prob(25) & !stored_mob)
var/obj/effect/mob_spawn/human/corpse/damaged/legioninfested/vicspawner = new (src)
var/mob/living/carbon/victim = (vicspawner.spawned_mob_ref)?.resolve()
src.stored_mob = victim
victim.forceMove(src)
. = ..()


/obj/effect/anomaly/tvstatic/examine(mob/user)
. = ..()
Expand Down Expand Up @@ -106,19 +124,10 @@ GLOBAL_LIST_INIT(tvstatic_sayings, list(
stored_mob = null
. = ..()


/obj/effect/anomaly/tvstatic/planetary
immortal = TRUE
immobile = TRUE

/obj/effect/anomaly/tvstatic/planetary/Initialize(mapload)
if(prob(25) & !stored_mob)
var/obj/effect/mob_spawn/human/corpse/damaged/legioninfested/vicspawner = new (src)
var/mob/living/carbon/victim = (vicspawner.spawned_mob_ref)?.resolve()
src.stored_mob = victim
victim.forceMove(src)
. = ..()

/obj/effect/particle_effect/staticball
name = "static blob"
desc = "An unsettling mass of free floating static"
Expand Down
10 changes: 10 additions & 0 deletions code/game/objects/effects/decals/cleanable/humans.dm
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,16 @@
var/drips = 1
dryname = "drips of blood"
drydesc = "It's red."
var/move_on_init = TRUE

/obj/effect/decal/cleanable/blood/drip/Initialize(mapload, list/datum/disease/diseases)
. = ..()
dry()
add_blood_DNA(list("Non-human DNA" = random_blood_type()))
if(move_on_init)
pixel_x = rand(-16,16)
pixel_y = rand(-16, 16)


/obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in()
return TRUE
Expand Down
7 changes: 5 additions & 2 deletions code/game/objects/items/devices/desynchronizer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
var/next_use = 0
var/obj/effect/abstract/sync_holder/sync_holder
var/resync_timer
var/desync_effect = /obj/effect/temp_visual/desynchronizer
var/resync_effect = /obj/effect/temp_visual/desynchronizer


/obj/item/desynchronizer/attack_self(mob/living/user)
if(world.time < next_use)
Expand Down Expand Up @@ -46,7 +49,7 @@
if(sync_holder)
return
sync_holder = new(drop_location())
new /obj/effect/temp_visual/desynchronizer(drop_location())
new desync_effect(drop_location())
to_chat(user, "<span class='notice'>You activate [src], desynchronizing yourself from the present. You can still see your surroundings, but you feel eerily dissociated from reality.</span>")
user.forceMove(sync_holder)
SEND_SIGNAL(user, COMSIG_MOVABLE_SECLUDED_LOCATION)
Expand All @@ -58,7 +61,7 @@
resync_timer = addtimer(CALLBACK(src, PROC_REF(resync)), duration , TIMER_STOPPABLE)

/obj/item/desynchronizer/proc/resync()
new /obj/effect/temp_visual/desynchronizer(sync_holder.drop_location())
new resync_effect(sync_holder.drop_location())
QDEL_NULL(sync_holder)
if(resync_timer)
deltimer(resync_timer)
Expand Down
29 changes: 29 additions & 0 deletions code/modules/mapping/mapping_helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -489,3 +489,32 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava)
var/icon/I = new(file_name)
icon_cache[url] = I
return I

/obj/effect/mapping_helpers/chair
name = "chair helper"

/obj/effect/mapping_helpers/chair/tim_buckley
name = "chair buckler 12000"
desc = "buckles a guy into the chair if theres a guy and a chair."

/obj/effect/mapping_helpers/chair/tim_buckley/LateInitialize()
var/turf/turf = get_turf(src)
if(locate(/obj/structure/chair) in turf && locate(/mob/living/carbon) in turf)
var/obj/structure/chair/idiot_throne = locate(/obj/structure/chair) in turf
var/mob/living/carbon/idiot = locate(/mob/living/carbon)
idiot_throne.buckle_mob(idiot, TRUE)
qdel(src)
log_mapping("[src] at [x],[y] could not find a chair and guy on current turf.")
qdel(src)

/obj/effect/mapping_helpers/turf
name = "turf helper"

/obj/effect/mapping_helpers/turf/burnt
name = "turf_burner"
desc = "burns the everliving shit out of the turf its on."

/obj/effect/mapping_helpers/turf/burnt/LateInitialize()
var/turf/our_turf = loc
our_turf.burn_tile()
qdel(src)
45 changes: 41 additions & 4 deletions code/modules/projectiles/ammunition/_ammo_casing.dm
Original file line number Diff line number Diff line change
Expand Up @@ -153,10 +153,6 @@
ammo_stack.update_ammo_count()
return ammo_stack

/obj/item/ammo_casing/spent
name = "spent bullet casing"
BB = null

/obj/item/ammo_casing/Initialize()
. = ..()
if(projectile_type)
Expand Down Expand Up @@ -216,3 +212,44 @@

else if(location.bullet_bounce_sound)
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), src, pick(location.bullet_bounce_sound), 20, 1), bounce_delay) //Soft / non-solid turfs that shouldn't make a sound when a shell casing is ejected over them.

/obj/item/ammo_casing/spent
name = "spent bullet casing"
projectile_type = null
BB = null

/obj/item/ammo_casing/spent/pistol_brass
icon_state = "pistol-brass"

/obj/item/ammo_casing/spent/pistol_steel
icon_state = "pistol-steel"

/obj/item/ammo_casing/spent/magnum_brass
icon_state = "magnum-brass"

/obj/item/ammo_casing/spent/magnum_steel
icon_state = "magnum-steel"

/obj/item/ammo_casing/spent/rifle_brass
icon_state = "rifle-brass"

/obj/item/ammo_casing/spent/rifle_steel
icon_state = "rifle-steel"

/obj/item/ammo_casing/spent/big_brass
icon_state = "big-brass"

/obj/item/ammo_casing/spent/big_steel
icon_state = "big-steel" //balls

/obj/item/ammo_casing/spent/slug
icon_state = "slug"

/obj/item/ammo_casing/spent/slug/buck
icon_state = "buckshot"

/obj/item/ammo_casing/spent/slug/beanbag
icon_state = "beanbag"

/obj/item/ammo_casing/spent/slug/rubber
icon_state = "rubber"
114 changes: 114 additions & 0 deletions code/modules/ruins/icemoonruin_code/tesla_lab.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
/obj/item/tape/random/preset/tesla_lab/one/Initialize()
. = ..()
storedinfo = list(
"\[00:00\] Recording started.",
"\[00:02\] [span_name("scared human woman")] whispers \"My n-name is Alyssa Salata- Ident 4070591. CLIP Minutemen-\"",
"\[00:08\] [span_name("scared human woman")] whispers \"T-The base I was assigned to has come under attack from the Frontiersmen.\"",
"\[00:12\] [span_name("scared human woman")] whispers \"From- what I heard on the radio before it turned to screaming-.\"",
"\[00:15\] [span_name("scared human woman")] whispers \"They landed by pretending to be one of our supply shuttles - and when the bays were open...\"",
"\[00:20\] [span_name("scared human woman")] whispers \"It was just a hail of gunfire and flames-\"",
"\[00:24\] [span_name("scared human woman")] whispers \"I ran- I'm- sorry but I couldn't fight |that|-\"",
"\[00:28\] [span_name("scared human woman")] whispers \"I'm in the - panic hole in the armory now.\"",
"\[00:33\] [span_name("scared human woman")] whispers \"I have a CM-23 and some pills that the doc had. But. There's not enough food back here.\"",
"\[00:37\] [span_name("scared human woman")] whispers \"...I don't want to die but I think this is it for me...\"",
"\[00:43\] [span_name("scared human woman")] whispers \"There was way too many of them and there's - not going to be help coming fast enough.\"",
"\[00:50\] [span_name("scared human woman")] gulps something down, a stressed sigh coming from her as she does.",
"\[00:55\] [span_name("scared human woman")] whimpers \"I'll- see if they leave- I- I'll make it-.\"",
)
timestamp = list(
0,
2,
8,
12,
15,
20,
24,
28,
33,
37,
43,
50,
55
)

/obj/item/tape/random/preset/tesla_lab/two/Initialize()
. = ..()
storedinfo = list(
"\[00:00\] Recording started.",
"\[00:03\] [span_name("scared human woman")] whispers \"My n-name is Alyssa Salata- Ident 4070591. CLIP Minutemen-\"",
"\[00:06\] [span_name("scared human woman")] whispers \"Its been - 4 hours since my last log entry-.\"",
"\[00:10\] [span_name("scared human woman")] whispers \"The radio has been dead for 3. At least. \"",
"\[00:15\] [span_name("scared human woman")] whispers \"The last thing I heard was someone else holing up in - Lab one-\"",
"\[00:20\] [span_name("scared human woman")] whispers \"...That's on the other side of the corridor. I don't think I'd- make it-\"",
"\[00:23\] [span_name("scared human woman")] whispers \"The voices I keep hearing aren't |right| either. It's. They're. Barely human-\"",
"\[00:27\] [span_name("scared human woman")] whispers \"...I know they're outside...\"",
"\[00:30\] [span_name("scared human woman")] chokes \"I- miss my mom-.\"",
"\[00:33\] [span_name("scared human woman")] chokes out another whisper \"-I want to go home.....\"",
)

timestamp = list(
0,
3,
6,
10,
15,
20,
23,
27,
30,
33
)

#define CHLORINATED_ATMOS "o2=22;n2=82;cl2=24;TEMP=293.15"

/turf/open/floor/plasteel/dark/tesla_lab
initial_gas_mix = CHLORINATED_ATMOS

/obj/item/desynchronizer/tvstatic
name = "\improper static synchronizer"
desc = "An experimental device built around the hissing core of an anomaly. It radiates fear. There is a button on the front that says 'ENGAGE', surrounded by scrawled warnings."
desync_effect = /obj/effect/temp_visual/phase_out
resync_effect = /obj/effect/temp_visual/phase_in

/obj/item/desynchronizer/tvstatic/resync()
. = ..()
var/braim_bamage = (world.time - last_use) * 0.02
playsound(src, 'sound/effects/glassbr1.ogg', 75)
if(braim_bamage > 100)
new /obj/effect/anomaly/tvstatic(loc)
for(var/mob/living/carbon/human/looking in range(4, src.loc))
if(HAS_TRAIT(looking, TRAIT_MINDSHIELD) || looking.stat == DEAD || looking.research_scanner)
continue
looking.adjustOrganLoss(ORGAN_SLOT_BRAIN, braim_bamage, 200)

/obj/effect/temp_visual/phase_in
name = "anomalous field"
icon_state = "phasein"
layer = 4
duration = 5

/obj/effect/temp_visual/phase_out
name = "anomalous field"
icon_state = "phaseout"
layer = 4
duration = 5

/obj/effect/mob_spawn/human/corpse/clip
name = "CLIP corpse spawner"

/obj/effect/mob_spawn/human/corpse/clip/researcher
name = "CLIP Researcher Spawner"
outfit = /datum/outfit/job/clip/scientist

/obj/effect/mob_spawn/human/corpse/clip/vc
name = "CLIP VC Spawner"
outfit = /datum/outfit/job/clip/minutemen/vehicle_pilot

/obj/effect/mob_spawn/human/corpse/clip/minuteman
name = "CLIP Minuteman Spawner"
outfit = /datum/outfit/job/clip/minutemen/grunt/dressed

/obj/effect/mob_spawn/human/corpse/clip/minuteman/forcefem
name = "CLIP Minuteman Spawner"
outfit = /datum/outfit/job/clip/minutemen/grunt/dressed
mob_gender = FEMALE
1 change: 1 addition & 0 deletions shiptest.dme
Original file line number Diff line number Diff line change
Expand Up @@ -3278,6 +3278,7 @@
#include "code\modules\ruins\rockplanet_ruin_code.dm"
#include "code\modules\ruins\icemoonruin_code\hydroponicslab.dm"
#include "code\modules\ruins\icemoonruin_code\library.dm"
#include "code\modules\ruins\icemoonruin_code\tesla_lab.dm"
#include "code\modules\ruins\icemoonruin_code\wrath.dm"
#include "code\modules\ruins\lavalandruin_code\biodome_winter.dm"
#include "code\modules\ruins\lavalandruin_code\puzzle.dm"
Expand Down
Loading