Adds New PoI Features + Bonus PoI (#5796)
* Adds cliffs. * Finishes lava and polishes the other things. * Hopefully finished with all the new shinies.
@@ -290,6 +290,10 @@
|
||||
icon_rotation = new_rotation
|
||||
update_transform()
|
||||
|
||||
// Called when touching a lava tile.
|
||||
/atom/movable/proc/lava_act()
|
||||
fire_act(null, 10000, 1000)
|
||||
|
||||
// Called when something changes z-levels.
|
||||
/atom/movable/proc/on_z_change(old_z, new_z)
|
||||
GLOB.z_moved_event.raise_event(src, old_z, new_z)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/effect/map_effect/interval/effect_emitter/proc/configure_effects()
|
||||
effect_system.set_up(effect_amount, effect_cardinals_only, usr.loc, effect_forced_dir)
|
||||
effect_system.set_up(effect_amount, effect_cardinals_only, src.loc, effect_forced_dir)
|
||||
|
||||
/obj/effect/map_effect/interval/effect_emitter/trigger()
|
||||
configure_effects() // We do this every interval in case it changes.
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
spawn(retry_delay) // Maybe someday we'll have fancy TG timers/schedulers.
|
||||
if(!QDELETED(src))
|
||||
.()
|
||||
return
|
||||
|
||||
var/next_interval = rand(interval_lower_bound, interval_upper_bound)
|
||||
spawn(next_interval)
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
var/mineitemtype = /obj/item/weapon/mine
|
||||
var/panel_open = 0
|
||||
var/datum/wires/mines/wires = null
|
||||
register_as_dangerous_object = TRUE
|
||||
|
||||
/obj/effect/mine/New()
|
||||
icon_state = "uglyminearmed"
|
||||
@@ -271,4 +272,10 @@
|
||||
/obj/item/weapon/mine/incendiary
|
||||
name = "incendiary mine"
|
||||
desc = "A small explosive mine with a fire symbol on the side."
|
||||
minetype = /obj/effect/mine/incendiary
|
||||
minetype = /obj/effect/mine/incendiary
|
||||
|
||||
// This tells AI mobs to not be dumb and step on mines willingly.
|
||||
/obj/item/weapon/mine/is_safe_to_step(mob/living/L)
|
||||
if(!L.hovering)
|
||||
return FALSE
|
||||
return ..()
|
||||
@@ -3,7 +3,8 @@
|
||||
/obj/effect/step_trigger
|
||||
var/affect_ghosts = 0
|
||||
var/stopper = 1 // stops throwers
|
||||
invisibility = 101 // nope cant see this shit
|
||||
invisibility = 99 // nope cant see this shit
|
||||
plane = ABOVE_PLANE
|
||||
anchored = 1
|
||||
|
||||
/obj/effect/step_trigger/proc/Trigger(var/atom/movable/A)
|
||||
@@ -93,21 +94,56 @@
|
||||
var/teleport_y = 0
|
||||
var/teleport_z = 0
|
||||
|
||||
Trigger(var/atom/movable/A)
|
||||
if(teleport_x && teleport_y && teleport_z)
|
||||
var/turf/T = locate(teleport_x, teleport_y, teleport_z)
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
if(L.pulling)
|
||||
var/atom/movable/P = L.pulling
|
||||
L.stop_pulling()
|
||||
P.forceMove(T)
|
||||
L.forceMove(T)
|
||||
L.start_pulling(P)
|
||||
else
|
||||
A.forceMove(T)
|
||||
else
|
||||
A.forceMove(T)
|
||||
/obj/effect/step_trigger/teleporter/Trigger(atom/movable/AM)
|
||||
if(teleport_x && teleport_y && teleport_z)
|
||||
var/turf/T = locate(teleport_x, teleport_y, teleport_z)
|
||||
move_object(AM, T)
|
||||
|
||||
|
||||
/obj/effect/step_trigger/teleporter/proc/move_object(atom/movable/AM, turf/T)
|
||||
if(AM.anchored)
|
||||
return
|
||||
|
||||
if(isliving(AM))
|
||||
var/mob/living/L = AM
|
||||
if(L.pulling)
|
||||
var/atom/movable/P = L.pulling
|
||||
L.stop_pulling()
|
||||
P.forceMove(T)
|
||||
L.forceMove(T)
|
||||
L.start_pulling(P)
|
||||
else
|
||||
L.forceMove(T)
|
||||
else
|
||||
AM.forceMove(T)
|
||||
|
||||
/* Moves things by an offset, useful for 'Bridges'. Uses dir and a distance var to work with maploader direction changes. */
|
||||
/obj/effect/step_trigger/teleporter/offset
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "arrow"
|
||||
var/distance = 3
|
||||
|
||||
/obj/effect/step_trigger/teleporter/offset/north
|
||||
dir = NORTH
|
||||
|
||||
/obj/effect/step_trigger/teleporter/offset/south
|
||||
dir = SOUTH
|
||||
|
||||
/obj/effect/step_trigger/teleporter/offset/east
|
||||
dir = EAST
|
||||
|
||||
/obj/effect/step_trigger/teleporter/offset/west
|
||||
dir = WEST
|
||||
|
||||
/obj/effect/step_trigger/teleporter/offset/Trigger(atom/movable/AM)
|
||||
var/turf/T = get_turf(src)
|
||||
for(var/i = 1 to distance)
|
||||
T = get_step(T, dir)
|
||||
if(!istype(T))
|
||||
return
|
||||
move_object(AM, T)
|
||||
|
||||
|
||||
|
||||
/* Random teleporter, teleports atoms to locations ranging from teleport_x - teleport_x_offset, etc */
|
||||
|
||||
|
||||
@@ -18,11 +18,29 @@
|
||||
var/can_speak = 0 //For MMIs and admin trickery. If an object has a brainmob in its contents, set this to 1 to allow it to speak.
|
||||
|
||||
var/show_examine = TRUE // Does this pop up on a mob when the mob is examined?
|
||||
var/register_as_dangerous_object = FALSE // Should this tell its turf that it is dangerous automatically?
|
||||
|
||||
/obj/Initialize()
|
||||
if(register_as_dangerous_object)
|
||||
register_dangerous_to_step()
|
||||
return ..()
|
||||
|
||||
/obj/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
if(register_as_dangerous_object)
|
||||
unregister_dangerous_to_step()
|
||||
return ..()
|
||||
|
||||
/obj/Moved(atom/oldloc)
|
||||
. = ..()
|
||||
if(register_as_dangerous_object)
|
||||
var/turf/old_turf = get_turf(oldloc)
|
||||
var/turf/new_turf = get_turf(src)
|
||||
|
||||
if(old_turf != new_turf)
|
||||
old_turf.unregister_dangerous_object(src)
|
||||
new_turf.register_dangerous_object(src)
|
||||
|
||||
/obj/Topic(href, href_list, var/datum/topic_state/state = default_state)
|
||||
if(usr && ..())
|
||||
return 1
|
||||
@@ -161,4 +179,19 @@
|
||||
return
|
||||
|
||||
/obj/proc/get_cell()
|
||||
return
|
||||
return
|
||||
|
||||
// Used to mark a turf as containing objects that are dangerous to step onto.
|
||||
/obj/proc/register_dangerous_to_step()
|
||||
var/turf/T = get_turf(src)
|
||||
if(T)
|
||||
T.register_dangerous_object(src)
|
||||
|
||||
/obj/proc/unregister_dangerous_to_step()
|
||||
var/turf/T = get_turf(src)
|
||||
if(T)
|
||||
T.unregister_dangerous_object(src)
|
||||
|
||||
// Test for if stepping on a tile containing this obj is safe to do, used for things like landmines and cliffs.
|
||||
/obj/proc/is_safe_to_step(mob/living/L)
|
||||
return TRUE
|
||||
@@ -15,7 +15,7 @@ much more likely to show up. This is done for several purposes;
|
||||
name = "unidentified medicine"
|
||||
desc = "This will make a random hypo."
|
||||
icon = 'icons/obj/syringe.dmi'
|
||||
item_state = "hypo"
|
||||
icon_state = "autoinjector1"
|
||||
|
||||
/obj/random/unidentified_medicine/item_to_spawn()
|
||||
return pick(
|
||||
|
||||
@@ -3,9 +3,11 @@
|
||||
w_class = ITEMSIZE_NO_CONTAINER
|
||||
|
||||
var/climbable
|
||||
var/climb_delay = 3.5 SECONDS
|
||||
var/breakable
|
||||
var/parts
|
||||
var/list/climbers = list()
|
||||
var/block_turf_edges = FALSE // If true, turf edge icons will not be made on the turf this occupies.
|
||||
|
||||
/obj/structure/Destroy()
|
||||
if(parts)
|
||||
@@ -99,7 +101,7 @@
|
||||
usr.visible_message("<span class='warning'>[user] starts climbing onto \the [src]!</span>")
|
||||
climbers |= user
|
||||
|
||||
if(!do_after(user,(issmall(user) ? 20 : 34)))
|
||||
if(!do_after(user,(issmall(user) ? climb_delay * 0.6 : climb_delay)))
|
||||
climbers -= user
|
||||
return
|
||||
|
||||
|
||||
@@ -0,0 +1,239 @@
|
||||
GLOBAL_LIST_EMPTY(cliff_icon_cache)
|
||||
|
||||
/*
|
||||
Cliffs give a visual illusion of depth by seperating two places while presenting a 'top' and 'bottom' side.
|
||||
|
||||
Mobs moving into a cliff from the bottom side will simply bump into it and be denied moving into the tile,
|
||||
where as mobs moving into a cliff from the top side will 'fall' off the cliff, forcing them to the bottom, causing significant damage and stunning them.
|
||||
|
||||
Mobs can climb this while wearing climbing equipment by clickdragging themselves onto a cliff, as if it were a table.
|
||||
|
||||
Flying mobs can pass over all cliffs with no risk of falling.
|
||||
|
||||
Projectiles and thrown objects can pass, however if moving upwards, there is a chance for it to be stopped by the cliff.
|
||||
This makes fighting something that is on top of a cliff more challenging.
|
||||
|
||||
As a note, dir points upwards, e.g. pointing WEST means the left side is 'up', and the right side is 'down'.
|
||||
|
||||
When mapping these in, be sure to give at least a one tile clearance, as NORTH facing cliffs expand to
|
||||
two tiles on initialization, and which way a cliff is facing may change during maploading.
|
||||
*/
|
||||
|
||||
/obj/structure/cliff
|
||||
name = "cliff"
|
||||
desc = "A steep rock ledge. You might be able to climb it if you feel bold enough."
|
||||
description_info = "Walking off the edge of a cliff while on top will cause you to fall off, causing severe injury.<br>\
|
||||
You can climb this cliff if wearing special climbing equipment, by click-dragging yourself onto the cliff.<br>\
|
||||
Projectiles traveling up a cliff may hit the cliff instead, making it more difficult to fight something \
|
||||
on top."
|
||||
icon = 'icons/obj/flora/rocks.dmi'
|
||||
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
opacity = FALSE
|
||||
climbable = TRUE
|
||||
climb_delay = 10 SECONDS
|
||||
block_turf_edges = TRUE // Don't want turf edges popping up from the cliff edge.
|
||||
register_as_dangerous_object = TRUE
|
||||
|
||||
var/icon_variant = null // Used to make cliffs less repeative by having a selection of sprites to display.
|
||||
var/corner = FALSE // Used for icon things.
|
||||
var/ramp = FALSE // Ditto.
|
||||
var/bottom = FALSE // Used for 'bottom' typed cliffs, to avoid infinite cliffs, and for icons.
|
||||
|
||||
var/is_double_cliff = FALSE // Set to true when making the two-tile cliffs, used for projectile checks.
|
||||
var/uphill_penalty = 30 // Odds of a projectile not making it up the cliff.
|
||||
|
||||
// These arrange their sprites at runtime, as opposed to being statically placed in the map file.
|
||||
/obj/structure/cliff/automatic
|
||||
icon_state = "cliffbuilder"
|
||||
dir = NORTH
|
||||
|
||||
/obj/structure/cliff/automatic/corner
|
||||
icon_state = "cliffbuilder-corner"
|
||||
dir = NORTHEAST
|
||||
corner = TRUE
|
||||
|
||||
// Tiny part that doesn't block, used for making 'ramps'.
|
||||
/obj/structure/cliff/automatic/ramp
|
||||
icon_state = "cliffbuilder-ramp"
|
||||
dir = NORTHEAST
|
||||
density = FALSE
|
||||
ramp = TRUE
|
||||
|
||||
// Made automatically as needed by automatic cliffs.
|
||||
/obj/structure/cliff/bottom
|
||||
bottom = TRUE
|
||||
|
||||
/obj/structure/cliff/automatic/Initialize()
|
||||
..()
|
||||
return INITIALIZE_HINT_LATELOAD
|
||||
|
||||
// Paranoid about the maploader, direction is very important to cliffs, since they may get bigger if initialized while facing NORTH.
|
||||
/obj/structure/cliff/automatic/LateInitialize()
|
||||
if(dir in GLOB.cardinal)
|
||||
icon_variant = pick("a", "b", "c")
|
||||
|
||||
if(dir & NORTH && !bottom) // North-facing cliffs require more cliffs to be made.
|
||||
make_bottom()
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/structure/cliff/proc/make_bottom()
|
||||
// First, make sure there's room to put the bottom side.
|
||||
var/turf/T = locate(x, y - 1, z)
|
||||
if(!istype(T))
|
||||
return FALSE
|
||||
|
||||
// Now make the bottom cliff have mostly the same variables.
|
||||
var/obj/structure/cliff/bottom/bottom = new(T)
|
||||
is_double_cliff = TRUE
|
||||
climb_delay /= 2 // Since there are two cliffs to climb when going north, both take half the time.
|
||||
|
||||
bottom.dir = dir
|
||||
bottom.is_double_cliff = TRUE
|
||||
bottom.climb_delay = climb_delay
|
||||
bottom.icon_variant = icon_variant
|
||||
bottom.corner = corner
|
||||
bottom.ramp = ramp
|
||||
bottom.layer = layer - 0.1
|
||||
bottom.density = density
|
||||
bottom.update_icon()
|
||||
|
||||
/obj/structure/cliff/set_dir(new_dir)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/structure/cliff/update_icon()
|
||||
icon_state = "cliff-[dir][icon_variant][bottom ? "-bottom" : ""][corner ? "-corner" : ""][ramp ? "-ramp" : ""]"
|
||||
|
||||
// Now for making the top-side look like a different turf.
|
||||
var/turf/T = get_step(src, dir)
|
||||
if(!istype(T))
|
||||
return
|
||||
|
||||
var/subtraction_icon_state = "[icon_state]-subtract"
|
||||
var/cache_string = "[icon_state]_[T.icon]_[T.icon_state]"
|
||||
if(T && subtraction_icon_state in icon_states(icon))
|
||||
cut_overlays()
|
||||
// If we've made the same icon before, just recycle it.
|
||||
if(cache_string in GLOB.cliff_icon_cache)
|
||||
add_overlay(GLOB.cliff_icon_cache[cache_string])
|
||||
|
||||
else // Otherwise make a new one, but only once.
|
||||
var/icon/underlying_ground = icon(T.icon, T.icon_state, T.dir)
|
||||
var/icon/subtract = icon(icon, subtraction_icon_state)
|
||||
underlying_ground.Blend(subtract, ICON_SUBTRACT)
|
||||
var/image/final = image(underlying_ground)
|
||||
final.layer = src.layer - 0.2
|
||||
GLOB.cliff_icon_cache[cache_string] = final
|
||||
add_overlay(final)
|
||||
|
||||
|
||||
// Movement-related code.
|
||||
|
||||
/obj/structure/cliff/CanPass(atom/movable/mover, turf/target, height = 0, air_group = 0)
|
||||
if(air_group || height == 0)
|
||||
return TRUE // Airflow can always pass.
|
||||
|
||||
else if(isliving(mover))
|
||||
var/mob/living/L = mover
|
||||
if(L.hovering) // Flying mobs can always pass.
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
// Projectiles and objects flying 'upward' have a chance to hit the cliff instead, wasting the shot.
|
||||
else if(istype(mover, /obj))
|
||||
var/obj/O = mover
|
||||
if(check_shield_arc(src, dir, O)) // This is actually for mobs but it will work for our purposes as well.
|
||||
if(prob(uphill_penalty / (1 + is_double_cliff) )) // Firing upwards facing NORTH means it will likely have to pass through two cliffs, so the chance is halved.
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/structure/cliff/Bumped(atom/A)
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
if(should_fall(L))
|
||||
fall_off_cliff(L)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/structure/cliff/proc/should_fall(mob/living/L)
|
||||
if(L.hovering)
|
||||
return FALSE
|
||||
|
||||
var/turf/T = get_turf(L)
|
||||
if(T && get_dir(T, loc) & reverse_dir[dir]) // dir points 'up' the cliff, e.g. cliff pointing NORTH will cause someone to fall if moving SOUTH into it.
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/structure/cliff/proc/fall_off_cliff(mob/living/L)
|
||||
if(!istype(L))
|
||||
return FALSE
|
||||
var/turf/T = get_step(src, reverse_dir[dir])
|
||||
var/displaced = FALSE
|
||||
|
||||
if(dir in list(EAST, WEST)) // Apply an offset if flying sideways, to help maintain the illusion of depth.
|
||||
for(var/i = 1 to 2)
|
||||
var/turf/new_T = locate(T.x, T.y - i, T.z)
|
||||
if(!new_T || locate(/obj/structure/cliff) in new_T)
|
||||
break
|
||||
T = new_T
|
||||
displaced = TRUE
|
||||
|
||||
if(istype(T))
|
||||
visible_message(span("danger", "\The [L] falls off \the [src]!"))
|
||||
L.forceMove(T)
|
||||
|
||||
// Do the actual hurting. Double cliffs do halved damage due to them most likely hitting twice.
|
||||
var/harm = !is_double_cliff ? 1 : 0.5
|
||||
if(istype(L.buckled, /obj/vehicle)) // People falling off in vehicles will take less damage, but will damage the vehicle severely.
|
||||
var/obj/vehicle/vehicle = L.buckled
|
||||
vehicle.adjust_health(40 * harm)
|
||||
to_chat(L, span("warning", "\The [vehicle] absorbs some of the impact, damaging it."))
|
||||
harm /= 2
|
||||
|
||||
playsound(L, 'sound/effects/break_stone.ogg', 70, 1)
|
||||
L.Weaken(5 * harm)
|
||||
var/fall_time = 3
|
||||
if(displaced) // Make the fall look more natural when falling sideways.
|
||||
L.pixel_z = 32 * 2
|
||||
animate(L, pixel_z = 0, time = fall_time)
|
||||
sleep(fall_time) // A brief delay inbetween the two sounds helps sell the 'ouch' effect.
|
||||
playsound(L, "punch", 70, 1)
|
||||
shake_camera(L, 1, 1)
|
||||
visible_message(span("danger", "\The [L] hits the ground!"))
|
||||
|
||||
// The bigger they are, the harder they fall.
|
||||
// They will take at least 20 damage at the minimum, and tries to scale up to 40% of their max health.
|
||||
// This scaling is capped at 100 total damage, which occurs if the thing that fell has more than 250 health.
|
||||
var/damage = between(20, L.getMaxHealth() * 0.4, 100)
|
||||
var/target_zone = ran_zone()
|
||||
var/blocked = L.run_armor_check(target_zone, "melee") * harm
|
||||
var/soaked = L.get_armor_soak(target_zone, "melee") * harm
|
||||
|
||||
L.apply_damage(damage * harm, BRUTE, target_zone, blocked, soaked, used_weapon=src)
|
||||
|
||||
// Now fall off more cliffs below this one if they exist.
|
||||
var/obj/structure/cliff/bottom_cliff = locate() in T
|
||||
if(bottom_cliff)
|
||||
visible_message(span("danger", "\The [L] rolls down towards \the [bottom_cliff]!"))
|
||||
sleep(5)
|
||||
bottom_cliff.fall_off_cliff(L)
|
||||
|
||||
/obj/structure/cliff/can_climb(mob/living/user, post_climb_check = FALSE)
|
||||
// Cliff climbing requires climbing gear.
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
var/obj/item/clothing/shoes/shoes = H.shoes
|
||||
if(shoes && shoes.rock_climbing)
|
||||
return ..() // Do the other checks too.
|
||||
|
||||
to_chat(user, span("warning", "\The [src] is too steep to climb unassisted."))
|
||||
return FALSE
|
||||
|
||||
// This tells AI mobs to not be dumb and step off cliffs willingly.
|
||||
/obj/structure/cliff/is_safe_to_step(mob/living/L)
|
||||
if(should_fall(L))
|
||||
return FALSE
|
||||
return ..()
|
||||
@@ -0,0 +1,179 @@
|
||||
//Chain link fences
|
||||
//Sprites ported from /VG/
|
||||
|
||||
#define CUT_TIME 10 SECONDS
|
||||
#define CLIMB_TIME 5 SECONDS
|
||||
|
||||
#define NO_HOLE 0 //section is intact
|
||||
#define MEDIUM_HOLE 1 //medium hole in the section - can climb through
|
||||
#define LARGE_HOLE 2 //large hole in the section - can walk through
|
||||
#define MAX_HOLE_SIZE LARGE_HOLE
|
||||
|
||||
/obj/structure/fence
|
||||
name = "fence"
|
||||
desc = "A chain link fence. Not as effective as a wall, but generally it keeps people out."
|
||||
description_info = "Projectiles can freely pass fences."
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
|
||||
icon = 'icons/obj/fence.dmi'
|
||||
icon_state = "straight"
|
||||
|
||||
var/cuttable = TRUE
|
||||
var/hole_size= NO_HOLE
|
||||
var/invulnerable = FALSE
|
||||
|
||||
/obj/structure/fence/Initialize()
|
||||
update_cut_status()
|
||||
return ..()
|
||||
|
||||
/obj/structure/fence/examine(mob/user)
|
||||
. = ..()
|
||||
|
||||
switch(hole_size)
|
||||
if(MEDIUM_HOLE)
|
||||
user.show_message("There is a large hole in \the [src].")
|
||||
if(LARGE_HOLE)
|
||||
user.show_message("\The [src] has been completely cut through.")
|
||||
|
||||
/obj/structure/fence/get_description_interaction()
|
||||
var/list/results = list()
|
||||
if(cuttable && !invulnerable && hole_size < MAX_HOLE_SIZE)
|
||||
results += "[desc_panel_image("wirecutters")]to [hole_size > NO_HOLE ? "expand the":"cut a"] hole into the fence, allowing passage."
|
||||
return results
|
||||
|
||||
/obj/structure/fence/end
|
||||
icon_state = "end"
|
||||
cuttable = FALSE
|
||||
|
||||
/obj/structure/fence/corner
|
||||
icon_state = "corner"
|
||||
cuttable = FALSE
|
||||
|
||||
/obj/structure/fence/post
|
||||
icon_state = "post"
|
||||
cuttable = FALSE
|
||||
|
||||
/obj/structure/fence/cut/medium
|
||||
icon_state = "straight_cut2"
|
||||
hole_size = MEDIUM_HOLE
|
||||
|
||||
/obj/structure/fence/cut/large
|
||||
icon_state = "straight_cut3"
|
||||
hole_size = LARGE_HOLE
|
||||
|
||||
// Projectiles can pass through fences.
|
||||
/obj/structure/fence/CanPass(atom/movable/mover, turf/target, height = 0, air_group = 0)
|
||||
if(istype(mover, /obj/item/projectile))
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/obj/structure/fence/attackby(obj/item/W, mob/user)
|
||||
if(W.is_wirecutter())
|
||||
if(!cuttable)
|
||||
to_chat(user, span("warning", "This section of the fence can't be cut."))
|
||||
return
|
||||
if(invulnerable)
|
||||
to_chat(user, span("warning", "This fence is too strong to cut through."))
|
||||
return
|
||||
var/current_stage = hole_size
|
||||
if(current_stage >= MAX_HOLE_SIZE)
|
||||
to_chat(user, span("notice", "This fence has too much cut out of it already."))
|
||||
return
|
||||
|
||||
user.visible_message(span("danger", "\The [user] starts cutting through \the [src] with \the [W]."),\
|
||||
span("danger", "You start cutting through \the [src] with \the [W]."))
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
|
||||
if(do_after(user, CUT_TIME * W.toolspeed, target = src))
|
||||
if(current_stage == hole_size)
|
||||
switch(++hole_size)
|
||||
if(MEDIUM_HOLE)
|
||||
visible_message(span("notice", "\The [user] cuts into \the [src] some more."))
|
||||
to_chat(user, span("notice", "You could probably fit yourself through that hole now. Although climbing through would be much faster if you made it even bigger."))
|
||||
climbable = TRUE
|
||||
if(LARGE_HOLE)
|
||||
visible_message(span("notice", "\The [user] completely cuts through \the [src]."))
|
||||
to_chat(user, span("notice", "The hole in \the [src] is now big enough to walk through."))
|
||||
climbable = FALSE
|
||||
update_cut_status()
|
||||
return TRUE
|
||||
|
||||
/obj/structure/fence/proc/update_cut_status()
|
||||
if(!cuttable)
|
||||
return
|
||||
density = TRUE
|
||||
|
||||
switch(hole_size)
|
||||
if(NO_HOLE)
|
||||
icon_state = initial(icon_state)
|
||||
if(MEDIUM_HOLE)
|
||||
icon_state = "straight_cut2"
|
||||
if(LARGE_HOLE)
|
||||
icon_state = "straight_cut3"
|
||||
density = FALSE
|
||||
|
||||
//FENCE DOORS
|
||||
|
||||
/obj/structure/fence/door
|
||||
name = "fence door"
|
||||
desc = "Not very useful without a real lock."
|
||||
icon_state = "door_closed"
|
||||
cuttable = FALSE
|
||||
var/open = FALSE
|
||||
var/locked = FALSE
|
||||
|
||||
/obj/structure/fence/door/Initialize()
|
||||
update_door_status()
|
||||
return ..()
|
||||
|
||||
/obj/structure/fence/door/opened
|
||||
icon_state = "door_opened"
|
||||
open = TRUE
|
||||
density = TRUE
|
||||
|
||||
/obj/structure/fence/door/locked
|
||||
desc = "It looks like it has a strong padlock attached."
|
||||
locked = TRUE
|
||||
|
||||
/obj/structure/fence/door/attack_hand(mob/user)
|
||||
if(can_open(user))
|
||||
toggle(user)
|
||||
else
|
||||
to_chat(user, span("warning", "\The [src] is [!open ? "locked" : "stuck open"]."))
|
||||
|
||||
return TRUE
|
||||
|
||||
/obj/structure/fence/door/proc/toggle(mob/user)
|
||||
switch(open)
|
||||
if(FALSE)
|
||||
visible_message(span("notice", "\The [user] opens \the [src]."))
|
||||
open = TRUE
|
||||
if(TRUE)
|
||||
visible_message(span("notice", "\The [user] closes \the [src]."))
|
||||
open = FALSE
|
||||
|
||||
update_door_status()
|
||||
playsound(src, 'sound/machines/click.ogg', 100, 1)
|
||||
|
||||
/obj/structure/fence/door/proc/update_door_status()
|
||||
switch(open)
|
||||
if(FALSE)
|
||||
density = TRUE
|
||||
icon_state = "door_closed"
|
||||
if(TRUE)
|
||||
density = FALSE
|
||||
icon_state = "door_opened"
|
||||
|
||||
/obj/structure/fence/door/proc/can_open(mob/user)
|
||||
if(locked)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
#undef CUT_TIME
|
||||
#undef CLIMB_TIME
|
||||
|
||||
#undef NO_HOLE
|
||||
#undef MEDIUM_HOLE
|
||||
#undef LARGE_HOLE
|
||||
#undef MAX_HOLE_SIZE
|
||||
@@ -238,6 +238,18 @@
|
||||
name = "\improper EMERGENT INTELLIGENCE DETAILS"
|
||||
icon_state = "rogueai"
|
||||
|
||||
/obj/structure/sign/warning/falling
|
||||
name = "\improper FALL HAZARD"
|
||||
icon_state = "falling"
|
||||
|
||||
/obj/structure/sign/warning/lava
|
||||
name = "\improper MOLTEN SURFACE"
|
||||
icon_state = "lava"
|
||||
|
||||
/obj/structure/sign/warning/acid
|
||||
name = "\improper ACIDIC SURFACE"
|
||||
icon_state = "acid"
|
||||
|
||||
/obj/structure/sign/redcross
|
||||
name = "medbay"
|
||||
desc = "The Intergalactic symbol of Medical institutions. You'll probably get help here."
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
/turf/simulated/floor/lava
|
||||
name = "lava"
|
||||
desc = "A pool of molten rock."
|
||||
description_info = "Molten rock is extremly dangerous, as it will cause massive harm to anything that touches it.<br>\
|
||||
A firesuit cannot fully protect from contact with molten rock."
|
||||
gender = PLURAL // So it says "That's some lava." on examine.
|
||||
icon = 'icons/turf/outdoors.dmi'
|
||||
icon_state = "lava"
|
||||
edge_blending_priority = -1
|
||||
light_range = 2
|
||||
light_power = 0.75
|
||||
light_color = LIGHT_COLOR_LAVA
|
||||
movement_cost = 2
|
||||
can_build_into_floor = TRUE
|
||||
can_dirty = FALSE
|
||||
|
||||
/turf/simulated/floor/lava/outdoors
|
||||
outdoors = TRUE
|
||||
|
||||
// For maximum pedantry.
|
||||
/turf/simulated/floor/lava/Initialize()
|
||||
if(!outdoors)
|
||||
name = "magma"
|
||||
update_icon()
|
||||
return ..()
|
||||
|
||||
/turf/simulated/floor/lava/make_outdoors()
|
||||
..()
|
||||
name = "lava"
|
||||
|
||||
/turf/simulated/floor/lava/make_indoors()
|
||||
..()
|
||||
name = "magma"
|
||||
|
||||
/turf/simulated/floor/lava/update_icon()
|
||||
cut_overlays()
|
||||
..()
|
||||
update_icon_edge()
|
||||
|
||||
/turf/simulated/floor/lava/Entered(atom/movable/AM)
|
||||
if(burn_stuff(AM))
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/turf/simulated/floor/lava/hitby(atom/movable/AM)
|
||||
if(burn_stuff(AM))
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/turf/simulated/floor/lava/process()
|
||||
if(!burn_stuff())
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
|
||||
/turf/simulated/floor/lava/proc/is_safe()
|
||||
//if anything matching this typecache is found in the lava, we don't burn things
|
||||
var/static/list/lava_safeties_typecache = typecacheof(list(/obj/structure/catwalk))
|
||||
var/list/found_safeties = typecache_filter_list(contents, lava_safeties_typecache)
|
||||
return LAZYLEN(found_safeties)
|
||||
|
||||
/turf/simulated/floor/lava/proc/burn_stuff(atom/movable/AM)
|
||||
. = FALSE
|
||||
|
||||
if(is_safe())
|
||||
return FALSE
|
||||
|
||||
var/thing_to_check = src
|
||||
if(AM)
|
||||
thing_to_check = list(AM)
|
||||
|
||||
for(var/thing in thing_to_check)
|
||||
if(isobj(thing))
|
||||
var/obj/O = thing
|
||||
if(O.throwing)
|
||||
continue
|
||||
. = TRUE
|
||||
O.lava_act()
|
||||
|
||||
else if(isliving(thing))
|
||||
var/mob/living/L = thing
|
||||
if(L.hovering || L.throwing) // Flying over the lava. We're just gonna pretend convection doesn't exist.
|
||||
continue
|
||||
. = TRUE
|
||||
L.lava_act()
|
||||
|
||||
// Lava that does nothing at all.
|
||||
/turf/simulated/floor/lava/harmless/burn_stuff(atom/movable/AM)
|
||||
return FALSE
|
||||
|
||||
// Tells AI mobs to not suicide by pathing into lava if it would hurt them.
|
||||
/turf/simulated/floor/lava/is_safe_to_enter(mob/living/L)
|
||||
if(!is_safe() && !L.hovering)
|
||||
return FALSE
|
||||
return ..()
|
||||
@@ -30,7 +30,7 @@ var/list/grass_types = list(
|
||||
)
|
||||
|
||||
/turf/simulated/floor/outdoors/grass/sif/Initialize()
|
||||
if(tree_chance && prob(tree_chance))
|
||||
if(tree_chance && prob(tree_chance) && !check_density())
|
||||
new /obj/structure/flora/tree/sif(src)
|
||||
. = ..()
|
||||
|
||||
@@ -39,7 +39,7 @@ var/list/grass_types = list(
|
||||
icon_state = "[initial(icon_state)]2"
|
||||
//edge_blending_priority++
|
||||
|
||||
if(grass_chance && prob(grass_chance))
|
||||
if(grass_chance && prob(grass_chance) && !check_density())
|
||||
var/grass_type = pick(grass_types)
|
||||
new grass_type(src)
|
||||
. = ..()
|
||||
|
||||
@@ -51,10 +51,10 @@ var/list/turf_edge_cache = list()
|
||||
make_indoors()
|
||||
|
||||
/turf/simulated/proc/update_icon_edge()
|
||||
if(edge_blending_priority)
|
||||
if(edge_blending_priority && !forbid_turf_edge())
|
||||
for(var/checkdir in cardinal)
|
||||
var/turf/simulated/T = get_step(src, checkdir)
|
||||
if(istype(T) && T.edge_blending_priority && edge_blending_priority < T.edge_blending_priority && icon_state != T.icon_state)
|
||||
if(istype(T) && T.edge_blending_priority && edge_blending_priority < T.edge_blending_priority && icon_state != T.icon_state && !T.forbid_turf_edge())
|
||||
var/cache_key = "[T.get_edge_icon_state()]-[checkdir]"
|
||||
if(!turf_edge_cache[cache_key])
|
||||
var/image/I = image(icon = 'icons/turf/outdoors_edge.dmi', icon_state = "[T.get_edge_icon_state()]-edge", dir = checkdir, layer = ABOVE_TURF_LAYER)
|
||||
@@ -65,6 +65,14 @@ var/list/turf_edge_cache = list()
|
||||
/turf/simulated/proc/get_edge_icon_state()
|
||||
return icon_state
|
||||
|
||||
// Tests if we shouldn't apply a turf edge.
|
||||
// Returns the blocker if one exists.
|
||||
/turf/simulated/proc/forbid_turf_edge()
|
||||
for(var/obj/structure/S in contents)
|
||||
if(S.block_turf_edges)
|
||||
return S
|
||||
return null
|
||||
|
||||
/turf/simulated/floor/outdoors/update_icon()
|
||||
..()
|
||||
update_icon_edge()
|
||||
@@ -80,6 +88,8 @@ var/list/turf_edge_cache = list()
|
||||
icon_state = "rock"
|
||||
edge_blending_priority = 1
|
||||
|
||||
/turf/simulated/floor/outdoors/rocks/caves
|
||||
outdoors = FALSE
|
||||
|
||||
// This proc adds a 'layer' on top of the turf.
|
||||
/turf/simulated/floor/outdoors/proc/promote(var/new_turf_type)
|
||||
|
||||
@@ -108,6 +108,8 @@
|
||||
return 0
|
||||
if(hovering)
|
||||
return 0
|
||||
if(locate(/obj/structure/catwalk) in loc)
|
||||
return 0
|
||||
var/turf/simulated/floor/water/T = loc
|
||||
if(istype(T))
|
||||
return T.depth
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
|
||||
var/block_tele = FALSE // If true, most forms of teleporting to or from this turf tile will fail.
|
||||
var/can_build_into_floor = FALSE // Used for things like RCDs (and maybe lattices/floor tiles in the future), to see if a floor should replace it.
|
||||
var/list/dangerous_objects // List of 'dangerous' objs that the turf holds that can cause something bad to happen when stepped on, used for AI mobs.
|
||||
|
||||
/turf/New()
|
||||
..()
|
||||
@@ -319,8 +320,28 @@ var/const/enterloopsanity = 100
|
||||
|
||||
// Returns false if stepping into a tile would cause harm (e.g. open space while unable to fly, water tile while a slime, lava, etc).
|
||||
/turf/proc/is_safe_to_enter(mob/living/L)
|
||||
if(LAZYLEN(dangerous_objects))
|
||||
for(var/obj/O in dangerous_objects)
|
||||
if(!O.is_safe_to_step(L))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
// Tells the turf that it currently contains something that automated movement should consider if planning to enter the tile.
|
||||
// This uses lazy list macros to reduce memory footprint, since for 99% of turfs the list would've been empty anyways.
|
||||
/turf/proc/register_dangerous_object(obj/O)
|
||||
if(!istype(O))
|
||||
return FALSE
|
||||
LAZYADD(dangerous_objects, O)
|
||||
// color = "#FF0000"
|
||||
|
||||
// Similar to above, for when the dangerous object stops being dangerous/gets deleted/moved/etc.
|
||||
/turf/proc/unregister_dangerous_object(obj/O)
|
||||
if(!istype(O))
|
||||
return FALSE
|
||||
LAZYREMOVE(dangerous_objects, O)
|
||||
UNSETEMPTY(dangerous_objects) // This nulls the list var if it's empty.
|
||||
// color = "#00FF00"
|
||||
|
||||
// This is all the way up here since its the common ancestor for things that need to get replaced with a floor when an RCD is used on them.
|
||||
// More specialized turfs like walls should instead override this.
|
||||
// The code for applying lattices/floor tiles onto lattices could also utilize something similar in the future.
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
var/old_lighting_overlay = lighting_overlay
|
||||
var/old_corners = corners
|
||||
var/old_outdoors = outdoors
|
||||
var/old_dangerous_objects = dangerous_objects
|
||||
|
||||
//world << "Replacing [src.type] with [N]"
|
||||
|
||||
@@ -95,6 +96,8 @@
|
||||
|
||||
recalc_atom_opacity()
|
||||
|
||||
dangerous_objects = old_dangerous_objects
|
||||
|
||||
if(lighting_overlays_initialised)
|
||||
lighting_overlay = old_lighting_overlay
|
||||
affecting_lights = old_affecting_lights
|
||||
|
||||
@@ -473,6 +473,7 @@
|
||||
|
||||
var/water_speed = 0 //Speed boost/decrease in water, lower/negative values mean more speed
|
||||
var/snow_speed = 0 //Speed boost/decrease on snow, lower/negative values mean more speed
|
||||
var/rock_climbing = FALSE // If true, allows climbing cliffs with clickdrag.
|
||||
|
||||
var/step_volume_mod = 1 //How quiet or loud footsteps in this shoe are
|
||||
|
||||
|
||||
@@ -114,6 +114,13 @@
|
||||
icon_state = "explorer"
|
||||
armor = list(melee = 30, bullet = 10, laser = 10, energy = 15, bomb = 20, bio = 0, rad = 0)
|
||||
|
||||
// Allows the wearer to climb cliffs, which could allow for shortcuts or sequence-breaking.
|
||||
/obj/item/clothing/shoes/boots/winter/climbing
|
||||
name = "climbing winter boots"
|
||||
desc = "A pair of winter boots, with metal bracing attached to assist in climbing rocky terrain."
|
||||
icon_state = "climbing_boots"
|
||||
rock_climbing = TRUE
|
||||
|
||||
/obj/item/clothing/shoes/boots/tactical
|
||||
name = "tactical boots"
|
||||
desc = "Tan boots with extra padding and armor."
|
||||
|
||||
@@ -213,6 +213,10 @@ the artifact triggers the rage.
|
||||
stacks = MODIFIER_STACK_ALLOWED // Multiple instances will hurt a lot.
|
||||
var/damage_per_tick = 5
|
||||
|
||||
/datum/modifier/fire/intense
|
||||
mob_overlay_state = "on_fire_intense"
|
||||
damage_per_tick = 10
|
||||
|
||||
/datum/modifier/fire/tick()
|
||||
holder.inflict_heat_damage(damage_per_tick)
|
||||
|
||||
|
||||
@@ -452,6 +452,13 @@
|
||||
emp_act(1)
|
||||
to_chat(src, span("critical", "You've been struck by lightning!"))
|
||||
|
||||
// Called when touching a lava tile.
|
||||
// Does roughly 100 damage to unprotected mobs, and 20 to fully protected mobs.
|
||||
/mob/living/lava_act()
|
||||
add_modifier(/datum/modifier/fire/intense, 8 SECONDS) // Around 40 total if left to burn and without fire protection per stack.
|
||||
inflict_heat_damage(40) // Another 40, however this is instantly applied to unprotected mobs.
|
||||
adjustFireLoss(20) // Lava cannot be 100% resisted with fire protection.
|
||||
|
||||
/mob/living/proc/reagent_permeability()
|
||||
return 1
|
||||
return round(FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE*(fire_stacks/FIRE_MAX_FIRESUIT_STACKS)**2)
|
||||
|
||||
@@ -216,6 +216,17 @@
|
||||
ash()
|
||||
return // No point deafening something that wont exist.
|
||||
|
||||
// Lava
|
||||
/mob/living/simple_mob/lava_act()
|
||||
..()
|
||||
// Similar to lightning, the mob is turned to ash if the lava tick was fatal and it isn't a player.
|
||||
// Unlike lightning, we don't add an additional damage spike (since lava already hurts a lot).
|
||||
if(!client)
|
||||
updatehealth()
|
||||
if(health <= 0)
|
||||
visible_message(span("critical", "\The [src] flashes into ash as the lava consumes them!"))
|
||||
ash()
|
||||
|
||||
// Injections.
|
||||
/mob/living/simple_mob/can_inject(mob/user, error_msg, target_zone, ignore_thickness)
|
||||
if(ignore_thickness)
|
||||
|
||||
@@ -164,6 +164,10 @@
|
||||
..()
|
||||
healthcheck()
|
||||
|
||||
/obj/vehicle/proc/adjust_health(amount)
|
||||
health = between(0, health + amount, maxhealth)
|
||||
healthcheck()
|
||||
|
||||
/obj/vehicle/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
|
||||
@@ -3,13 +3,18 @@
|
||||
|
||||
//legacy crystal
|
||||
/obj/machinery/crystal
|
||||
name = "Crystal"
|
||||
name = "crystal"
|
||||
desc = "A shiny looking crystal formation."
|
||||
icon = 'icons/obj/mining.dmi'
|
||||
icon_state = "crystal"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
|
||||
/obj/machinery/crystal/New()
|
||||
/obj/machinery/crystal/Initialize()
|
||||
randomize_color()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/crystal/proc/randomize_color()
|
||||
if(prob(30))
|
||||
icon_state = "crystal2"
|
||||
set_light(3, 3, "#CC00CC")
|
||||
@@ -21,18 +26,25 @@
|
||||
desc = "A large crystalline ice formation."
|
||||
icon_state = "icecrystal2"
|
||||
|
||||
/obj/machinery/crystal/ice/New()
|
||||
if(prob(10))
|
||||
icon_state = "crystal"
|
||||
set_light(5, 5, "#33CC33")
|
||||
if(prob(10))
|
||||
icon_state = "crystal2"
|
||||
set_light(5, 5, "#CC00CC")
|
||||
/obj/machinery/crystal/ice/randomize_color()
|
||||
if(prob(30))
|
||||
icon_state = "icecrystal1"
|
||||
set_light(5, 5, "#C4FFFF")
|
||||
else
|
||||
set_light(5, 5, "#C4FFFF")
|
||||
set_light(3, 3, "#C4FFFF")
|
||||
|
||||
/obj/machinery/crystal/lava
|
||||
name = "lava crystal"
|
||||
desc = "A large crystalline formation found near extreme heat."
|
||||
icon_state = "grey_crystal"
|
||||
color = "#FCCF64"
|
||||
|
||||
/obj/machinery/crystal/lava/randomize_color()
|
||||
if(prob(50))
|
||||
icon_state = "grey_crystal2"
|
||||
|
||||
if(prob(30))
|
||||
color = "#E03131"
|
||||
|
||||
set_light(3, 3, color)
|
||||
|
||||
//large finds
|
||||
/*
|
||||
|
||||
|
Before Width: | Height: | Size: 406 KiB After Width: | Height: | Size: 406 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 197 KiB After Width: | Height: | Size: 203 KiB |
@@ -1,71 +1,71 @@
|
||||
"a" = (/turf/unsimulated/wall/planetary/sif,/area/plane_ground)
|
||||
"b" = (/turf/simulated/floor/outdoors/dirt,/area/plane_ground)
|
||||
"c" = (/obj/effect/landmark/start,/turf/simulated/floor/outdoors/dirt,/area/plane_ground)
|
||||
"d" = (/obj/effect/landmark{name = "JoinLate"},/turf/simulated/floor/outdoors/dirt,/area/plane_ground)
|
||||
|
||||
(1,1,1) = {"
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbdddbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbdddbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbdddbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
"}
|
||||
"a" = (/turf/unsimulated/wall/planetary/sif,/area/plane_ground)
|
||||
"b" = (/turf/simulated/floor/outdoors/dirt,/area/plane_ground)
|
||||
"c" = (/obj/effect/landmark{name = "JoinLate"},/turf/simulated/floor/outdoors/dirt,/area/plane_ground)
|
||||
"d" = (/obj/effect/landmark/start,/turf/simulated/floor/outdoors/dirt,/area/plane_ground)
|
||||
|
||||
(1,1,1) = {"
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbdbcccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
"}
|
||||
|
||||
@@ -213,46 +213,49 @@
|
||||
teleport_y = world.maxy - 1
|
||||
teleport_z = Z_LEVEL_SURFACE_MINE
|
||||
|
||||
/datum/planet/sif
|
||||
expected_z_levels = list(
|
||||
Z_LEVEL_SURFACE,
|
||||
Z_LEVEL_SURFACE_MINE,
|
||||
Z_LEVEL_SURFACE_WILD,
|
||||
Z_LEVEL_TRANSIT
|
||||
)
|
||||
|
||||
/obj/effect/step_trigger/teleporter/bridge/east_to_west/New()
|
||||
..()
|
||||
/obj/effect/step_trigger/teleporter/bridge/east_to_west/Initialize()
|
||||
teleport_x = src.x - 4
|
||||
teleport_y = src.y
|
||||
teleport_z = src.z
|
||||
return ..()
|
||||
|
||||
/obj/effect/step_trigger/teleporter/bridge/east_to_west/small/New()
|
||||
..()
|
||||
/obj/effect/step_trigger/teleporter/bridge/east_to_west/small/Initialize()
|
||||
teleport_x = src.x - 3
|
||||
teleport_y = src.y
|
||||
teleport_z = src.z
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/effect/step_trigger/teleporter/bridge/west_to_east/New()
|
||||
..()
|
||||
/obj/effect/step_trigger/teleporter/bridge/west_to_east/Initialize()
|
||||
teleport_x = src.x + 4
|
||||
teleport_y = src.y
|
||||
teleport_z = src.z
|
||||
return ..()
|
||||
|
||||
/obj/effect/step_trigger/teleporter/bridge/west_to_east/small/New()
|
||||
..()
|
||||
/obj/effect/step_trigger/teleporter/bridge/west_to_east/small/Initialize()
|
||||
teleport_x = src.x + 3
|
||||
teleport_y = src.y
|
||||
teleport_z = src.z
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/effect/step_trigger/teleporter/bridge/north_to_south/New()
|
||||
..()
|
||||
/obj/effect/step_trigger/teleporter/bridge/north_to_south/Initialize()
|
||||
teleport_x = src.x
|
||||
teleport_y = src.y - 4
|
||||
teleport_z = src.z
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/effect/step_trigger/teleporter/bridge/south_to_north/New()
|
||||
..()
|
||||
/obj/effect/step_trigger/teleporter/bridge/south_to_north/Initialize()
|
||||
teleport_x = src.x
|
||||
teleport_y = src.y + 4
|
||||
teleport_z = src.z
|
||||
|
||||
return ..()
|
||||
|
||||
/datum/planet/sif
|
||||
expected_z_levels = list(
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
"aa" = (/turf/template_noop,/area/template_noop)
|
||||
"ab" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 9},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"ac" = (/obj/structure/cliff/automatic,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"ad" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 5},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"ae" = (/obj/structure/cliff/automatic/corner{icon_state = "cliffbuilder-corner"; dir = 9},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"af" = (/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"ag" = (/obj/structure/cliff/automatic/corner,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"ah" = (/obj/structure/fence/end{icon_state = "end"; dir = 4},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"ai" = (/obj/structure/fence/post{icon_state = "post"; dir = 4},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"aj" = (/obj/structure/fence/door/opened,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"ak" = (/obj/structure/fence/end{icon_state = "end"; dir = 8},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"al" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 8},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"am" = (/obj/structure/fence/end{icon_state = "end"; dir = 1},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"an" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 9},/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"ao" = (/obj/structure/cliff/automatic,/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"ap" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 5},/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"aq" = (/obj/structure/sign/warning/lava,/turf/simulated/wall,/area/submap/lava_trench)
|
||||
"ar" = (/obj/structure/fence/post,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"as" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 6},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"at" = (/obj/structure/cliff/automatic/corner{icon_state = "cliffbuilder-corner"; dir = 9},/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"au" = (/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"av" = (/obj/structure/cliff/automatic/corner,/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"aw" = (/obj/structure/railing{icon_state = "railing0"; dir = 4},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"ax" = (/obj/structure/catwalk,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"ay" = (/obj/structure/railing{icon_state = "railing0"; dir = 8},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"az" = (/obj/structure/fence/door/opened{icon_state = "door_opened"; dir = 8},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"aA" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 8},/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"aB" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/template_noop)
|
||||
"aC" = (/turf/simulated/floor/outdoors/rocks/caves,/area/template_noop)
|
||||
"aD" = (/obj/structure/cliff/automatic,/obj/structure/railing{icon_state = "railing0"; dir = 4},/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"aE" = (/obj/structure/cliff/automatic,/obj/structure/railing{icon_state = "railing0"; dir = 8},/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"aF" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 10},/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"aG" = (/obj/structure/cliff/automatic/corner{icon_state = "cliffbuilder-corner"; dir = 10},/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"aH" = (/obj/structure/railing{icon_state = "railing0"; dir = 4},/obj/effect/step_trigger/teleporter/offset/east,/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"aI" = (/obj/structure/catwalk,/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"aJ" = (/obj/structure/ore_box,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench)
|
||||
"aK" = (/obj/structure/railing{icon_state = "railing0"; dir = 8},/obj/effect/step_trigger/teleporter/offset/west,/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"aL" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 4},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"aM" = (/obj/machinery/light/small/flicker{icon_state = "bulb1"; dir = 4},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"aN" = (/obj/machinery/door/airlock/hatch{normalspeed = 0; safe = 0},/obj/effect/map_effect/interval/effect_emitter/sparks,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"aO" = (/turf/simulated/wall/rshull,/area/submap/lava_trench/outpost)
|
||||
"aP" = (/obj/machinery/door/airlock/hatch{normalspeed = 0; safe = 0},/obj/effect/map_effect/interval/effect_emitter/sparks,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"aQ" = (/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"aR" = (/obj/effect/floor_decal/corner_oldtile/blue/full{icon_state = "corner_oldtile_full"; dir = 8},/obj/machinery/microscope,/obj/structure/table/standard,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"aS" = (/obj/effect/floor_decal/corner_oldtile/blue/full{icon_state = "corner_oldtile_full"; dir = 8},/obj/structure/table/standard,/obj/random/unidentified_medicine/scientific,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"aT" = (/obj/structure/fence/end,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"aU" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 2},/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"aV" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 10},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"aW" = (/obj/structure/cliff/automatic/corner{icon_state = "cliffbuilder-corner"; dir = 10},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"aX" = (/obj/structure/cliff/automatic/corner{icon_state = "cliffbuilder-corner"; dir = 6},/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"aY" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 2},/obj/structure/railing{icon_state = "railing0"; dir = 4},/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"aZ" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 2},/obj/structure/railing{icon_state = "railing0"; dir = 8},/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"ba" = (/obj/machinery/crystal/lava,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"bb" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 4},/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"bc" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 6},/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"bd" = (/obj/structure/table/steel,/obj/item/weapon/storage/excavation,/obj/item/device/measuring_tape,/obj/effect/floor_decal/corner_oldtile/purple{icon_state = "corner_oldtile"; dir = 4},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"be" = (/turf/simulated/mineral/ignore_mapgen,/area/template_noop)
|
||||
"bf" = (/obj/structure/railing,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"bg" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 10},/obj/structure/railing,/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"bh" = (/obj/structure/cliff/automatic/corner{icon_state = "cliffbuilder-corner"; dir = 10},/obj/structure/railing,/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"bi" = (/obj/structure/railing,/obj/effect/step_trigger/teleporter/offset/south,/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"bj" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 4},/obj/structure/railing,/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"bk" = (/obj/structure/catwalk,/obj/structure/railing,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"bl" = (/obj/structure/catwalk,/obj/structure/railing,/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"bm" = (/obj/structure/fence/door/opened{icon_state = "door_opened"; dir = 4},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"bn" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 2},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"bo" = (/obj/effect/floor_decal/corner_oldtile/purple/full{icon_state = "corner_oldtile_full"; dir = 1},/obj/machinery/space_heater,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"bp" = (/obj/machinery/floodlight,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"bq" = (/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/light/small/flicker{icon_state = "bulb1"; dir = 1},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"br" = (/obj/effect/floor_decal/corner_oldtile/blue{icon_state = "corner_oldtile"; dir = 1},/obj/structure/bed/chair/office/light{icon_state = "officechair_white"; dir = 4},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"bs" = (/turf/simulated/floor/tiled/old_tile/gray,/area/submap/lava_trench/outpost)
|
||||
"bt" = (/obj/effect/floor_decal/corner_oldtile/purple{icon_state = "corner_oldtile"; dir = 4},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"bu" = (/obj/structure/cliff/automatic/corner{icon_state = "cliffbuilder-corner"; dir = 6},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"bv" = (/obj/item/slime_crystal,/obj/item/slime_crystal,/obj/item/slime_crystal,/obj/effect/floor_decal/corner_oldtile/blue{icon_state = "corner_oldtile"; dir = 9},/obj/structure/table/standard,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"bw" = (/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench)
|
||||
"bx" = (/obj/machinery/crystal/ice,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench)
|
||||
"by" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/machinery/light/small/flicker{icon_state = "bulb1"; dir = 1},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"bz" = (/obj/effect/floor_decal/corner_oldtile{icon_state = "corner_oldtile"; dir = 1},/turf/simulated/floor/tiled/old_tile/gray,/area/submap/lava_trench/outpost)
|
||||
"bA" = (/obj/effect/floor_decal/corner_oldtile{icon_state = "corner_oldtile"; dir = 4},/turf/simulated/floor/tiled/old_tile/gray,/area/submap/lava_trench/outpost)
|
||||
"bB" = (/obj/effect/floor_decal/corner_oldtile/blue{icon_state = "corner_oldtile"; dir = 8},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"bC" = (/obj/structure/table/rack,/obj/item/weapon/shovel,/obj/effect/floor_decal/corner_oldtile/purple/full{icon_state = "corner_oldtile_full"; dir = 1},/obj/item/weapon/pickaxe/drill,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"bD" = (/obj/effect/step_trigger/teleporter/offset/north,/turf/simulated/floor/lava,/area/submap/lava_trench)
|
||||
"bE" = (/obj/machinery/crystal/lava,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench)
|
||||
"bF" = (/obj/structure/table/rack,/obj/random/tool/powermaint,/obj/random/tool/powermaint,/obj/effect/floor_decal/corner_oldtile/purple{icon_state = "corner_oldtile"; dir = 6},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"bG" = (/obj/effect/floor_decal/corner_oldtile/purple,/obj/structure/table/steel,/obj/item/device/xenoarch_multi_tool,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"bH" = (/obj/effect/floor_decal/corner_oldtile/purple,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"bI" = (/obj/item/device/gps/science{gps_tag = "CRYSTALS"},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"bK" = (/obj/effect/floor_decal/corner_oldtile/blue/full,/obj/random/drinkbottle,/obj/random/maintenance/research,/obj/structure/table/standard,/obj/machinery/light/small/flicker{icon_state = "bulb1"; dir = 8},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"bL" = (/obj/structure/flora/pottedplant/crystal,/obj/effect/floor_decal/corner_oldtile/blue{icon_state = "corner_oldtile"; dir = 8},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"bM" = (/obj/structure/cult/pylon,/obj/effect/floor_decal/industrial/outline,/turf/simulated/floor/tiled/old_tile/gray,/area/submap/lava_trench/outpost)
|
||||
"bN" = (/obj/structure/anomaly_container,/obj/machinery/artifact,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"bO" = (/obj/machinery/light/small/flicker{icon_state = "bulb1"; dir = 4},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"bP" = (/obj/effect/floor_decal/corner_oldtile/purple/full{icon_state = "corner_oldtile_full"; dir = 4},/obj/structure/table/steel,/obj/machinery/recharger,/obj/machinery/light/small/flicker{icon_state = "bulb1"; dir = 4},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"bQ" = (/obj/machinery/light/small/flicker{icon_state = "bulb1"; dir = 8},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"bR" = (/obj/machinery/light/small/flicker{icon_state = "bulb1"; dir = 1},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"bS" = (/obj/effect/floor_decal/corner_oldtile/blue{icon_state = "corner_oldtile"; dir = 1},/obj/structure/loot_pile/surface/medicine_cabinet{pixel_y = 28},/obj/structure/table/standard,/obj/item/device/healthanalyzer/improved,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"bT" = (/obj/machinery/suspension_gen{anchored = 1},/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"bU" = (/obj/machinery/light/small/flicker,/obj/structure/ore_box,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench)
|
||||
"bW" = (/obj/structure/anomaly_container,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"bX" = (/obj/effect/floor_decal/corner_oldtile/purple/full{icon_state = "corner_oldtile_full"; dir = 4},/obj/item/weapon/storage/box/samplebags,/obj/structure/table/steel,/obj/item/stack/flag/red,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"bY" = (/obj/machinery/crystal,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench)
|
||||
"bZ" = (/obj/structure/table/steel,/obj/item/weapon/stock_parts/subspace/crystal,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench)
|
||||
"ca" = (/obj/structure/table/steel,/obj/item/stack/material/diamond,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench)
|
||||
"cb" = (/obj/structure/loot_pile/surface/bones,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"ce" = (/obj/effect/floor_decal/corner_oldtile/blue/full,/obj/structure/table/standard,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"ch" = (/obj/structure/loot_pile/maint/trash,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
"cj" = (/obj/item/clothing/head/bio_hood/anomaly,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"ck" = (/obj/item/clothing/suit/bio_suit/anomaly,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost)
|
||||
"co" = (/obj/machinery/floodlight,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench)
|
||||
"cp" = (/obj/machinery/light/small/flicker,/obj/structure/closet/crate/secure/loot,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench)
|
||||
"cq" = (/obj/item/weapon/banner/nt,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench)
|
||||
"cr" = (/obj/structure/table/steel,/obj/item/weapon/material/shard/phoron,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench)
|
||||
"cs" = (/obj/item/weapon/banner/nt,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench)
|
||||
|
||||
(1,1,1) = {"
|
||||
aBaBabacacacacacacacacacacadaBaBaBaBaBaCaCaCaBaBaBaBaBaBaBaBaBaBaBaBbebebeaaaaaaaaaaaaaaaaaaaaaa
|
||||
aBabaeafafafafafafafafafafagacacacacahaiajaiakacadaBaBaBaBaBaBaBaBaBaBbebebeaaaaaaaaaaaaaaaaaaaa
|
||||
aBalafafafafafafafafafafafafafafafafafafafafafafagacacacacacacacadaBaBaBbebebeaaaaaaaaaaaaaaaaaa
|
||||
aBamafafbaanaoaoaoaoapafafafafafafafafafafafafaqafafafafafafafafagadaBaBaBbebebeaaaaaaaaaaaaaaaa
|
||||
afarafafanatauauauauavaoaoaoaoaoaoaoapawaxayafafafafafafafafafafafagadaBaBaBbebebeaaaaaaaaaaaaaa
|
||||
afazafafaAauauauauauauauauauauauauauavaDaxaEaoaoaoaoaoaoaoapafafafafagadaBaBbebebebebebebebeaaaa
|
||||
afarafafaFaGauauauauauauauauauauauauauaHaxaKauauauauauauauavapafafafafaLaBaBaBaBbebebebebebebeaa
|
||||
aBaTafafafaFaUaGauauauauauauauafauauauaHaIaKauauauauauauauauavapafafafaLaBaBaBaBaBaBaBaBaBbebeaa
|
||||
aBalafafafafafaFaGauafauauauauauauauauaHaIaKauauafauauafafauauavapafafagacacadaBaBaBaBaBaBbebeaa
|
||||
aBaVaWafafaqafafaFaUafaUaGauauauauauaXaYaIaZaGauauauauauafbaauaubbafafafafafagacacacadaBaBaBaBaB
|
||||
aBaBaVaWafafafafafafafafaFaUaUaUaUaUbcawaxayaFaUaUaGauauauauauaubbafafafafafafafafafamaBaBaBaBaB
|
||||
aBaBaBalafafafafafafafafafafafafafafafafbwafafafbfbgbhbibibibibibjbfbfafafbaafafafafarafaBaBaBaB
|
||||
beaBaBalafafafafbwbwbwbwbwafafafafafafafbwbwbwbwbkbkblblblblblblblbkbkafafafafafafafbmafaBaBaBaB
|
||||
beaBaBalafafafafbwbxbEbYbwbwbwbwbwbwbwbwbwbwbwafafafaAbDbDbDbDbDavapafafafafafafafafarafaBaBaBaB
|
||||
beaBaBalafafafafbwbZcacrbwbwbwcqbUaJaOaNaOcocpcsafaqaAauauauauauaubbafafafafafafafafaTafaBaBaBaB
|
||||
beaBaBalafafafafbwbwbwbwbwbwaJaOaOaOaObOaOaOaOaOafafaFaGauauafauaubbafafaqbpafafafafaLafaBaBaBaB
|
||||
beaBaBaVbnbnaWafafbwbwbwbwbwaOaOaSbSaOaPaObdboaOaOafafaAauauauauauavapafafafafafafafaLaBaBaBaBaB
|
||||
beaBaBaBaBaBalafafafafafafafaOaRbraQbqaQbycjbtbCaOafafaAauauauauauauavapafafafbaafafaLaBaBbeaBaB
|
||||
beaBaBaBaBaBalafafafafafafaMaObvaQaQaQaQaQcbbIbFaObQafaFaGauauauauauaubbafafafafafafaLaBaBbebebe
|
||||
bebebebeaBaBaVbnbnbnbnaWafafaOcebBaQaQbTckaQbHbXaOafafafaAauauafauauaubbafafafafafafaLaBaBbebeaa
|
||||
bebebebeaBaBaBaBaBaBaBalafafaOaObKbLbzbsbAbGbPaOaOafafafaAauauafbaauaubbafafbaafafafaLaBaBbebeaa
|
||||
aaaabebebeaBaBaBaBaBaBalafafafaOaOaObsbMbsaOaOaObNafafafafafauafafauaubbafafafafafbuasaBaBbebeaa
|
||||
aaaaaabebebebebebeaBaBaVbnaWafafchaOaOaOaOaObNbWafafafafaAauauauafauaubbafafafbubnasaBaBaBbebeaa
|
||||
aaaaaaaabebebebebeaBaBaBaBalafafafafafbRafafafafafafafafaAauauauauauauavapafafaLaBaBaBaBbebebeaa
|
||||
aaaaaaaaaaaaaabebebeaBaBaBalafafafafafafafafafafafafafafaFaGauauauauauaubbafafaLaBaBaBbebebeaaaa
|
||||
aaaaaaaaaaaaaaaabebebebeaBaVbnbnbnbnbnbnbnbnbnbnbnaWafafafaFaGauauauauaubbafafaLaBaBbebebeaaaaaa
|
||||
aaaaaaaaaaaaaaaaaabebebeaBaBaBaBaBaBaBaBaBaBaBaBaBalafafafafaFaUaUaUaUaUbcafafaLaBaBbebeaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaabebebeaBaBaBaBaBaBaBaBaBaBaBaBaVbnaWafafafafafafafafafafafaLaBaBbebeaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaabebebebebebebebebebebebeaBaBaBaBaVaWafafafafafafafafafafaLaBaBbebeaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaabebebebebebebebebebebebeaBaBaBaBaVbnbnbnbnahaiajaiakbnasaBaBbebeaaaaaaaa
|
||||
"}
|
||||
@@ -32,6 +32,7 @@
|
||||
#include "BlastMine1.dmm"
|
||||
#include "crashedcontainmentshuttle.dmm"
|
||||
#include "deadspy.dmm"
|
||||
#include "lava_trench.dmm"
|
||||
#endif
|
||||
|
||||
// The 'mountains' is the mining z-level, and has a lot of caves.
|
||||
@@ -272,3 +273,10 @@
|
||||
desc = "An abandoned blast mining site, seems that local wildlife has moved in."
|
||||
mappath = 'maps/submaps/surface_submaps/mountains/BlastMine1.dmm'
|
||||
cost = 20
|
||||
|
||||
/datum/map_template/surface/mountains/deep/lava_trench
|
||||
name = "lava trench"
|
||||
desc = "A long stretch of lava underground, almost river-like, with a small crystal research outpost on the side."
|
||||
mappath = 'maps/submaps/surface_submaps/mountains/lava_trench.dmm'
|
||||
cost = 20
|
||||
fixed_orientation = TRUE
|
||||
@@ -120,4 +120,13 @@
|
||||
|
||||
/area/submap/deadspy
|
||||
name = "Dead Spy"
|
||||
ambience = AMBIENCE_FOREBODING
|
||||
ambience = AMBIENCE_FOREBODING
|
||||
|
||||
/area/submap/lava_trench
|
||||
name = "Lava Trench"
|
||||
ambience = AMBIENCE_LAVA
|
||||
|
||||
/area/submap/lava_trench/outpost
|
||||
name = "Trench Outpost"
|
||||
requires_power = FALSE
|
||||
icon_state = "submap2"
|
||||
@@ -1075,6 +1075,7 @@
|
||||
#include "code\game\objects\structures\bedsheet_bin.dm"
|
||||
#include "code\game\objects\structures\bonfire.dm"
|
||||
#include "code\game\objects\structures\catwalk.dm"
|
||||
#include "code\game\objects\structures\cliff.dm"
|
||||
#include "code\game\objects\structures\coathanger.dm"
|
||||
#include "code\game\objects\structures\curtains.dm"
|
||||
#include "code\game\objects\structures\displaycase.dm"
|
||||
@@ -1082,6 +1083,7 @@
|
||||
#include "code\game\objects\structures\door_assembly.dm"
|
||||
#include "code\game\objects\structures\electricchair.dm"
|
||||
#include "code\game\objects\structures\extinguisher.dm"
|
||||
#include "code\game\objects\structures\fence.dm"
|
||||
#include "code\game\objects\structures\fitness.dm"
|
||||
#include "code\game\objects\structures\flora.dm"
|
||||
#include "code\game\objects\structures\girders.dm"
|
||||
@@ -1174,6 +1176,7 @@
|
||||
#include "code\game\turfs\simulated\floor_icon.dm"
|
||||
#include "code\game\turfs\simulated\floor_static.dm"
|
||||
#include "code\game\turfs\simulated\floor_types.dm"
|
||||
#include "code\game\turfs\simulated\lava.dm"
|
||||
#include "code\game\turfs\simulated\wall_attacks.dm"
|
||||
#include "code\game\turfs\simulated\wall_icon.dm"
|
||||
#include "code\game\turfs\simulated\wall_types.dm"
|
||||
|
||||