mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 20:48:56 +01:00
museum away mission (#81208)
## About The Pull Request adds a new gateway map, the Nanotrasen Museum it is filled with """"Mannequins"""" and Common Core lore im not putting the preview here because you really should explore it yourself but if youre that curious i think the Checks tab in mapdiffbot would have it this gateway map contains no combat unless you count falling into chasms because you did not carry a light or going into the boarded room with no loot or any incentive with obvious signs that there is the sole enemy on the map in there the loot is the lore ok thanks also makes mines detonate if theyre detonated by a non-mob im pretty sure this couldnt have been intentional trams stop chasms and also the relevant items <details> <summary>on second thought if you want spoilers check this</summary>  </details> ## Why It's Good For The Game more gateway maps = good ## Changelog 🆑 add: nanotrasen museum gateway map /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
This commit is contained in:
@@ -23,6 +23,18 @@ Unused icons for new areas are "awaycontent1" ~ "awaycontent30"
|
||||
has_gravity = STANDARD_GRAVITY
|
||||
ambientsounds = list('sound/ambience/shore.ogg', 'sound/ambience/seag1.ogg','sound/ambience/seag2.ogg','sound/ambience/seag2.ogg','sound/ambience/ambiodd.ogg','sound/ambience/ambinice.ogg')
|
||||
|
||||
/area/awaymission/museum
|
||||
name = "Nanotrasen Museum"
|
||||
icon_state = "awaycontent28"
|
||||
sound_environment = SOUND_ENVIRONMENT_CONCERT_HALL
|
||||
|
||||
/area/awaymission/museum/mothroachvoid
|
||||
static_lighting = FALSE
|
||||
base_lighting_alpha = 200
|
||||
base_lighting_color = "#FFF4AA"
|
||||
sound_environment = SOUND_ENVIRONMENT_PLAIN
|
||||
ambientsounds = list('sound/ambience/shore.ogg', 'sound/ambience/ambiodd.ogg','sound/ambience/ambinice.ogg')
|
||||
|
||||
/area/awaymission/errorroom
|
||||
name = "Super Secret Room"
|
||||
static_lighting = FALSE
|
||||
|
||||
@@ -66,3 +66,12 @@
|
||||
/obj/machinery/door/poddoor/shutters/window/preopen
|
||||
icon_state = "open"
|
||||
density = FALSE
|
||||
|
||||
/obj/machinery/door/poddoor/shutters/window/indestructible
|
||||
name = "hardened windowed shutters"
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
|
||||
/obj/machinery/door/poddoor/shutters/window/indestructible/preopen
|
||||
icon_state = "open"
|
||||
density = FALSE
|
||||
opacity = FALSE
|
||||
|
||||
@@ -545,6 +545,19 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/status_display/ai, 32)
|
||||
|
||||
connected_display.receive_signal(status_signal)
|
||||
|
||||
/obj/machinery/status_display/random_message
|
||||
current_mode = SD_MESSAGE
|
||||
/// list to pick the first line from
|
||||
var/list/firstline_to_secondline = list()
|
||||
|
||||
/obj/machinery/status_display/random_message/Initialize(mapload, ndir, building)
|
||||
if(firstline_to_secondline?.len)
|
||||
message1 = pick(firstline_to_secondline)
|
||||
message2 = firstline_to_secondline[message1]
|
||||
return ..() // status displays call update appearance on init so i suppose we should set the messages before calling parent as to not call it twice
|
||||
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/status_display/random_message, 32)
|
||||
|
||||
#undef MAX_STATIC_WIDTH
|
||||
#undef FONT_STYLE
|
||||
#undef SCROLL_RATE
|
||||
|
||||
@@ -486,6 +486,9 @@
|
||||
ignite()
|
||||
return ..()
|
||||
|
||||
/obj/effect/decal/cleanable/fuel_pool/hivis
|
||||
icon_state = "fuel_pool_hivis"
|
||||
|
||||
/obj/effect/decal/cleanable/rubble
|
||||
name = "rubble"
|
||||
desc = "A pile of rubble."
|
||||
|
||||
@@ -117,8 +117,7 @@
|
||||
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
if(ismob(triggerer))
|
||||
mineEffect(triggerer)
|
||||
mineEffect(triggerer)
|
||||
triggered = TRUE
|
||||
SEND_SIGNAL(src, COMSIG_MINE_TRIGGERED, triggerer)
|
||||
qdel(src)
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
/obj/effect/step_trigger/proc/on_entered(datum/source, H as mob|obj)
|
||||
SIGNAL_HANDLER
|
||||
if(!H)
|
||||
if(!H || H == src)
|
||||
return
|
||||
if(isobserver(H) && !affect_ghosts)
|
||||
return
|
||||
@@ -138,6 +138,26 @@
|
||||
if (T)
|
||||
A.forceMove(T)
|
||||
|
||||
/* Teleports atoms directly to an offset, no randomness, looping hallways! */
|
||||
|
||||
/obj/effect/step_trigger/teleporter/offset
|
||||
var/teleport_x_offset = 0
|
||||
var/teleport_y_offset = 0
|
||||
|
||||
/obj/effect/step_trigger/teleporter/offset/on_entered(datum/source, H as mob|obj, atom/old_loc)
|
||||
if(!old_loc?.Adjacent(loc)) // prevents looping, if we were teleported into this then the old loc is usually not adjacent
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/effect/step_trigger/teleporter/offset/Trigger(atom/movable/poor_soul)
|
||||
var/turf/destination = locate(x + teleport_x_offset, y + teleport_y_offset, z)
|
||||
if(!destination)
|
||||
return
|
||||
poor_soul.forceMove(destination)
|
||||
var/mob/living/living_soul = poor_soul
|
||||
if(istype(living_soul) && living_soul.client)
|
||||
living_soul.client.move_delay = 0
|
||||
|
||||
/* Fancy teleporter, creates sparks and smokes when used */
|
||||
|
||||
/obj/effect/step_trigger/teleport_fancy
|
||||
|
||||
@@ -403,3 +403,61 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/puzzle_keycardpad, 32)
|
||||
playsound(src, SFX_SPARKS, 100, vary = TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
|
||||
do_sparks(3, cardinal_only = FALSE, source = src)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/puzzle_blockade/oneway
|
||||
name = "one-way gate"
|
||||
desc = "A wall of solid light, likely defending something important. Virtually indestructible."
|
||||
icon = 'icons/obj/structures.dmi'
|
||||
icon_state = "oneway"
|
||||
base_icon_state = "oneway"
|
||||
light_color = COLOR_BIOLUMINESCENCE_BLUE
|
||||
light_range = 1
|
||||
density = FALSE
|
||||
|
||||
/obj/structure/puzzle_blockade/oneway/update_icon_state()
|
||||
icon_state = "[base_icon_state][density ? "" : "-off"]"
|
||||
return ..()
|
||||
|
||||
/obj/structure/puzzle_blockade/oneway/CanAllowThrough(atom/movable/mover, border_dir)
|
||||
return ..() && (REVERSE_DIR(border_dir) == dir || get_turf(mover) == get_turf(src))
|
||||
|
||||
/obj/structure/puzzle_blockade/oneway/CanAStarPass(border_dir, datum/can_pass_info/pass_info)
|
||||
return REVERSE_DIR(border_dir) == dir
|
||||
|
||||
/obj/structure/puzzle_blockade/oneway/try_signal(datum/source)
|
||||
density = FALSE
|
||||
update_appearance(UPDATE_ICON)
|
||||
|
||||
/obj/effect/puzzle_poddoor_open
|
||||
name = "puzzle-poddoor relay"
|
||||
desc = "activates poddoors if activated with a puzzle signal."
|
||||
icon = 'icons/effects/mapping_helpers.dmi'
|
||||
icon_state = ""
|
||||
anchored = TRUE
|
||||
invisibility = INVISIBILITY_MAXIMUM
|
||||
/// if we receive a puzzle signal with this we do our thing
|
||||
var/queue_id
|
||||
/// door id
|
||||
var/id
|
||||
|
||||
/obj/effect/puzzle_poddoor_open/Initialize(mapload)
|
||||
. = ..()
|
||||
if(isnull(id) || isnull(queue_id))
|
||||
log_mapping("[src] id:[id] has no id or door id and has been deleted")
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
SSqueuelinks.add_to_queue(src, queue_id)
|
||||
|
||||
/obj/effect/puzzle_poddoor_open/MatchedLinks(id, list/partners)
|
||||
for(var/partner in partners)
|
||||
RegisterSignal(partner, COMSIG_PUZZLE_COMPLETED, PROC_REF(try_signal))
|
||||
|
||||
/obj/effect/puzzle_poddoor_open/proc/try_signal(datum/source)
|
||||
SIGNAL_HANDLER
|
||||
var/openclose
|
||||
for(var/obj/machinery/door/poddoor/door as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/door/poddoor))
|
||||
if(door.id != id)
|
||||
continue
|
||||
if(isnull(openclose))
|
||||
openclose = door.density
|
||||
INVOKE_ASYNC(door, openclose ? TYPE_PROC_REF(/obj/machinery/door/poddoor, open) : TYPE_PROC_REF(/obj/machinery/door/poddoor, close))
|
||||
|
||||
@@ -305,3 +305,12 @@
|
||||
anchored = FALSE
|
||||
density = TRUE
|
||||
deconstructible = TRUE
|
||||
|
||||
/obj/structure/fluff/wallsign
|
||||
name = "direction sign"
|
||||
desc = "Now, where to go?"
|
||||
density = FALSE
|
||||
icon = 'icons/obj/fluff/general.dmi'
|
||||
icon_state = "wallsign"
|
||||
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fluff/wallsign, 32)
|
||||
|
||||
@@ -932,6 +932,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/reinforced/tinted/frosted/spaw
|
||||
icon_state = "clockwork_window-single"
|
||||
glass_type = /obj/item/stack/sheet/bronze
|
||||
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/bronze/spawner, 0)
|
||||
|
||||
/obj/structure/window/bronze/unanchored
|
||||
anchored = FALSE
|
||||
|
||||
|
||||
@@ -116,6 +116,16 @@ INITIALIZE_IMMEDIATE(/turf/closed/indestructible/splashscreen)
|
||||
smoothing_groups = SMOOTH_GROUP_WALLS + SMOOTH_GROUP_CLOSED_TURFS
|
||||
canSmoothWith = SMOOTH_GROUP_WALLS
|
||||
|
||||
/turf/closed/indestructible/reinforced/titanium
|
||||
name = "reinforced titanium imitation wall"
|
||||
desc = "A huge chunk of reinforced metal used to separate rooms. Naturally, to cut down on costs, this is just a really good paint job to resemble titanium. Effectively impervious to conventional methods of destruction."
|
||||
icon = 'icons/turf/walls/shuttle_wall.dmi'
|
||||
icon_state = "shuttle_wall-0"
|
||||
base_icon_state = "shuttle_wall"
|
||||
|
||||
/turf/closed/indestructible/reinforced/titanium/nodiagonal
|
||||
icon_state = "shuttle_wall-15"
|
||||
smoothing_flags = SMOOTH_BITMASK
|
||||
|
||||
/turf/closed/indestructible/riveted
|
||||
icon = 'icons/turf/walls/riveted.dmi'
|
||||
|
||||
@@ -119,3 +119,19 @@
|
||||
|
||||
/turf/open/chasm/true/apply_components(mapload)
|
||||
AddComponent(/datum/component/chasm, null, mapload) //Don't pass anything for below_turf.
|
||||
|
||||
/turf/open/chasm/true/no_smooth
|
||||
smoothing_flags = NONE
|
||||
|
||||
/turf/open/chasm/true/no_smooth/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd)
|
||||
return FALSE
|
||||
|
||||
/turf/open/chasm/true/no_smooth/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, list/rcd_data)
|
||||
return FALSE
|
||||
|
||||
/turf/open/chasm/true/no_smooth/attackby(obj/item/item, mob/user, params, area/area_restriction)
|
||||
if(istype(item, /obj/item/stack/rods))
|
||||
return
|
||||
else if(istype(item, /obj/item/stack/tile/iron))
|
||||
return
|
||||
return ..()
|
||||
|
||||
Reference in New Issue
Block a user