turns the baseturf var into a part time list (#33705)
This commit is contained in:
committed by
CitadelStationBot
parent
6205268f7e
commit
9d0a4722e5
@@ -0,0 +1,3 @@
|
||||
#define CHANGETURF_DEFER_CHANGE 1
|
||||
#define CHANGETURF_IGNORE_AIR 2
|
||||
#define CHANGETURF_FORCEOP 4
|
||||
@@ -63,7 +63,7 @@
|
||||
|
||||
if(amount >= 50)
|
||||
var/burning_time = max(100, 100-amount)
|
||||
master = master.ChangeTurf(master.baseturf)
|
||||
master = master.ScrapeAway()
|
||||
master.burn_tile()
|
||||
if(user)
|
||||
master.add_hiddenprint(user)
|
||||
|
||||
@@ -59,9 +59,9 @@
|
||||
brass_floor = TRUE
|
||||
if(W.use(2 - brass_floor))
|
||||
if(anchored)
|
||||
T.ChangeTurf(/turf/closed/wall/clockwork)
|
||||
T.PlaceOnTop(/turf/closed/wall/clockwork)
|
||||
else
|
||||
T.ChangeTurf(/turf/open/floor/clockwork)
|
||||
T.PlaceOnTop(/turf/open/floor/clockwork)
|
||||
new /obj/structure/falsewall/brass(T)
|
||||
qdel(src)
|
||||
else
|
||||
|
||||
@@ -528,7 +528,7 @@
|
||||
playsound(loc, 'sound/effects/bang.ogg', 100, 1)
|
||||
var/turf/open/floor/F
|
||||
for(F in orange(1, src))
|
||||
F.ChangeTurf(F.baseturf)
|
||||
F.ScrapeAway()
|
||||
say("Something slams into the floor around [src], exposing it to space!")
|
||||
if(hull)
|
||||
sleep(10)
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
for(var/turf/closed/T in range(2, src))
|
||||
here.ChangeTurf(T.type)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
here.ChangeTurf(/turf/closed/wall)
|
||||
here.PlaceOnTop(/turf/closed/wall)
|
||||
if(9 to 11)
|
||||
lights = FALSE
|
||||
locked = TRUE
|
||||
|
||||
@@ -222,14 +222,14 @@
|
||||
occupant_message("Deconstructing [W]...")
|
||||
if(do_after_cooldown(W))
|
||||
chassis.spark_system.start()
|
||||
W.ChangeTurf(/turf/open/floor/plating)
|
||||
W.ScrapeAway()
|
||||
playsound(W, 'sound/items/deconstruct.ogg', 50, 1)
|
||||
else if(isfloorturf(target))
|
||||
var/turf/open/floor/F = target
|
||||
occupant_message("Deconstructing [F]...")
|
||||
if(do_after_cooldown(target))
|
||||
chassis.spark_system.start()
|
||||
F.ChangeTurf(F.baseturf)
|
||||
F.ScrapeAway()
|
||||
playsound(F, 'sound/items/deconstruct.ogg', 50, 1)
|
||||
else if (istype(target, /obj/machinery/door/airlock))
|
||||
occupant_message("Deconstructing [target]...")
|
||||
@@ -242,14 +242,14 @@
|
||||
var/turf/open/space/S = target
|
||||
occupant_message("Building Floor...")
|
||||
if(do_after_cooldown(S))
|
||||
S.ChangeTurf(/turf/open/floor/plating)
|
||||
S.PlaceOnTop(/turf/open/floor/plating)
|
||||
playsound(S, 'sound/items/deconstruct.ogg', 50, 1)
|
||||
chassis.spark_system.start()
|
||||
else if(isfloorturf(target))
|
||||
var/turf/open/floor/F = target
|
||||
occupant_message("Building Wall...")
|
||||
if(do_after_cooldown(F))
|
||||
F.ChangeTurf(/turf/closed/wall)
|
||||
F.PlaceOnTop(/turf/closed/wall)
|
||||
playsound(F, 'sound/items/deconstruct.ogg', 50, 1)
|
||||
chassis.spark_system.start()
|
||||
if(2)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "recharge_floor" // Some people just want to watch the world burn i guess
|
||||
|
||||
/turf/open/floor/mech_bay_recharge_floor/break_tile()
|
||||
src.ChangeTurf(/turf/open/floor/plating)
|
||||
ScrapeAway()
|
||||
|
||||
/turf/open/floor/mech_bay_recharge_floor/airless
|
||||
icon_state = "recharge_floor_asteroid"
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
if(metal)
|
||||
var/turf/T = get_turf(src)
|
||||
if(isspaceturf(T)) //Block up any exposed space
|
||||
T.ChangeTurf(/turf/open/floor/plating/foam)
|
||||
T.PlaceOnTop(/turf/open/floor/plating/foam)
|
||||
for(var/direction in GLOB.cardinals)
|
||||
var/turf/cardinal_turf = get_step(T, direction)
|
||||
if(get_area(cardinal_turf) != get_area(T)) //We're at an area boundary, so let's block off this turf!
|
||||
|
||||
@@ -20,9 +20,9 @@
|
||||
for(var/j = lowBoundY,j<=hiBoundY,j++)
|
||||
var/turf/T = locate(i,j,z)
|
||||
if(i == lowBoundX || i == hiBoundX || j == lowBoundY || j == hiBoundY)
|
||||
T.ChangeTurf(/turf/closed/wall/vault)
|
||||
T.PlaceOnTop(/turf/closed/wall/vault)
|
||||
else
|
||||
T.ChangeTurf(/turf/open/floor/vault)
|
||||
T.PlaceOnTop(/turf/open/floor/vault)
|
||||
T.icon_state = "[type]vault"
|
||||
|
||||
qdel(src)
|
||||
|
||||
@@ -275,13 +275,14 @@
|
||||
consume_turf(target)
|
||||
|
||||
/obj/item/melee/supermatter_sword/proc/consume_turf(turf/T)
|
||||
if(istype(T, T.baseturf))
|
||||
return //Can't void the void, baby!
|
||||
var/oldtype = T.type
|
||||
var/turf/newT = T.ScrapeAway()
|
||||
if(newT.type == oldtype)
|
||||
return
|
||||
playsound(T, 'sound/effects/supermatter.ogg', 50, 1)
|
||||
T.visible_message("<span class='danger'>[T] smacks into [src] and rapidly flashes to ash.</span>",\
|
||||
"<span class='italics'>You hear a loud crack as you are washed with a wave of heat.</span>")
|
||||
shard.Consume()
|
||||
T.ChangeTurf(T.baseturf)
|
||||
T.CalculateAdjacentTurfs()
|
||||
|
||||
/obj/item/melee/supermatter_sword/add_blood(list/blood_dna)
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
|
||||
/obj/structure/falsewall/proc/ChangeToWall(delete = 1)
|
||||
var/turf/T = get_turf(src)
|
||||
T.ChangeTurf(walltype)
|
||||
T.PlaceOnTop(walltype)
|
||||
if(delete)
|
||||
qdel(src)
|
||||
return T
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
S.use(5)
|
||||
to_chat(user, "<span class='notice'>You add the plating.</span>")
|
||||
var/turf/T = get_turf(src)
|
||||
T.ChangeTurf(/turf/closed/wall/mineral/iron)
|
||||
T.PlaceOnTop(/turf/closed/wall/mineral/iron)
|
||||
transfer_fingerprints_to(T)
|
||||
qdel(src)
|
||||
return
|
||||
@@ -120,7 +120,7 @@
|
||||
S.use(2)
|
||||
to_chat(user, "<span class='notice'>You add the plating.</span>")
|
||||
var/turf/T = get_turf(src)
|
||||
T.ChangeTurf(/turf/closed/wall)
|
||||
T.PlaceOnTop(/turf/closed/wall)
|
||||
transfer_fingerprints_to(T)
|
||||
qdel(src)
|
||||
return
|
||||
@@ -150,7 +150,7 @@
|
||||
S.use(1)
|
||||
to_chat(user, "<span class='notice'>You fully reinforce the wall.</span>")
|
||||
var/turf/T = get_turf(src)
|
||||
T.ChangeTurf(/turf/closed/wall/r_wall)
|
||||
T.PlaceOnTop(/turf/closed/wall/r_wall)
|
||||
transfer_fingerprints_to(T)
|
||||
qdel(src)
|
||||
return
|
||||
@@ -194,7 +194,7 @@
|
||||
S.use(2)
|
||||
to_chat(user, "<span class='notice'>You add the plating.</span>")
|
||||
var/turf/T = get_turf(src)
|
||||
T.ChangeTurf(text2path("/turf/closed/wall/mineral/[M]"))
|
||||
T.PlaceOnTop(text2path("/turf/closed/wall/mineral/[M]"))
|
||||
transfer_fingerprints_to(T)
|
||||
qdel(src)
|
||||
return
|
||||
@@ -397,7 +397,7 @@
|
||||
user.visible_message("<span class='notice'>[user] plates [src] with runed metal.</span>", "<span class='notice'>You construct a runed wall.</span>")
|
||||
R.use(1)
|
||||
var/turf/T = get_turf(src)
|
||||
T.ChangeTurf(/turf/closed/wall/mineral/cult)
|
||||
T.PlaceOnTop(/turf/closed/wall/mineral/cult)
|
||||
qdel(src)
|
||||
|
||||
else
|
||||
@@ -424,7 +424,7 @@
|
||||
switch(passed_mode)
|
||||
if(RCD_FLOORWALL)
|
||||
to_chat(user, "<span class='notice'>You finish a wall.</span>")
|
||||
T.ChangeTurf(/turf/closed/wall)
|
||||
T.PlaceOnTop(/turf/closed/wall)
|
||||
qdel(src)
|
||||
return TRUE
|
||||
if(RCD_DECONSTRUCT)
|
||||
|
||||
@@ -0,0 +1,217 @@
|
||||
/turf/proc/empty(turf_type=/turf/open/space, baseturf_type, list/ignore_typecache, flags)
|
||||
// Remove all atoms except observers, landmarks, docking ports
|
||||
var/static/list/ignored_atoms = typecacheof(list(/mob/dead, /obj/effect/landmark, /obj/docking_port, /atom/movable/lighting_object))
|
||||
var/list/allowed_contents = typecache_filter_list_reverse(GetAllContentsIgnoring(ignore_typecache), ignored_atoms)
|
||||
allowed_contents -= src
|
||||
for(var/i in 1 to allowed_contents.len)
|
||||
var/thing = allowed_contents[i]
|
||||
qdel(thing, force=TRUE)
|
||||
|
||||
var/turf/newT = ChangeTurf(turf_type, baseturf_type, flags)
|
||||
|
||||
SSair.remove_from_active(newT)
|
||||
newT.CalculateAdjacentTurfs()
|
||||
SSair.add_to_active(newT,1)
|
||||
|
||||
/turf/proc/copyTurf(turf/T)
|
||||
if(T.type != type)
|
||||
var/obj/O
|
||||
if(underlays.len) //we have underlays, which implies some sort of transparency, so we want to a snapshot of the previous turf as an underlay
|
||||
O = new()
|
||||
O.underlays.Add(T)
|
||||
T.ChangeTurf(type)
|
||||
for(var/group in decals)
|
||||
T.add_decal(decals[group],group)
|
||||
if(underlays.len)
|
||||
T.underlays = O.underlays
|
||||
if(T.icon_state != icon_state)
|
||||
T.icon_state = icon_state
|
||||
if(T.icon != icon)
|
||||
T.icon = icon
|
||||
if(color)
|
||||
T.atom_colours = atom_colours.Copy()
|
||||
T.update_atom_colour()
|
||||
if(T.dir != dir)
|
||||
T.setDir(dir)
|
||||
return T
|
||||
|
||||
//wrapper for ChangeTurf()s that you want to prevent/affect without overriding ChangeTurf() itself
|
||||
/turf/proc/TerraformTurf(path, new_baseturf, flags)
|
||||
return ChangeTurf(path, new_baseturf, flags)
|
||||
|
||||
// Creates a new turf
|
||||
// new_baseturfs can be either a single type or list of types, formated the same as baseturfs. see turf.dm
|
||||
/turf/proc/ChangeTurf(path, list/new_baseturfs, flags)
|
||||
if(!path)
|
||||
return
|
||||
if(!GLOB.use_preloader && path == type && !(flags & CHANGETURF_FORCEOP)) // Don't no-op if the map loader requires it to be reconstructed
|
||||
return src
|
||||
|
||||
var/old_opacity = opacity
|
||||
var/old_dynamic_lighting = dynamic_lighting
|
||||
var/old_affecting_lights = affecting_lights
|
||||
var/old_lighting_object = lighting_object
|
||||
var/old_corners = corners
|
||||
|
||||
var/old_exl = explosion_level
|
||||
var/old_exi = explosion_id
|
||||
var/old_bp = blueprint_data
|
||||
blueprint_data = null
|
||||
|
||||
var/list/old_baseturfs = baseturfs
|
||||
changing_turf = TRUE
|
||||
|
||||
qdel(src) //Just get the side effects and call Destroy
|
||||
var/turf/W = new path(src)
|
||||
|
||||
if(new_baseturfs)
|
||||
W.baseturfs = new_baseturfs
|
||||
else
|
||||
W.baseturfs = old_baseturfs
|
||||
|
||||
W.explosion_id = old_exi
|
||||
W.explosion_level = old_exl
|
||||
|
||||
if(!(flags & CHANGETURF_DEFER_CHANGE))
|
||||
W.AfterChange(flags)
|
||||
|
||||
W.blueprint_data = old_bp
|
||||
|
||||
if(SSlighting.initialized)
|
||||
recalc_atom_opacity()
|
||||
lighting_object = old_lighting_object
|
||||
affecting_lights = old_affecting_lights
|
||||
corners = old_corners
|
||||
if (old_opacity != opacity || dynamic_lighting != old_dynamic_lighting)
|
||||
reconsider_lights()
|
||||
|
||||
if (dynamic_lighting != old_dynamic_lighting)
|
||||
if (IS_DYNAMIC_LIGHTING(src))
|
||||
lighting_build_overlay()
|
||||
else
|
||||
lighting_clear_overlay()
|
||||
|
||||
for(var/turf/open/space/S in RANGE_TURFS(1, src)) //RANGE_TURFS is in code\__HELPERS\game.dm
|
||||
S.update_starlight()
|
||||
|
||||
return W
|
||||
|
||||
// Take off the top layer turf and replace it with the next baseturf down
|
||||
/turf/proc/ScrapeAway()
|
||||
if(length(baseturfs))
|
||||
var/list/new_baseturfs = baseturfs
|
||||
var/turf_type = new_baseturfs[new_baseturfs.len]
|
||||
new_baseturfs.len--
|
||||
switch(new_baseturfs.len)
|
||||
if(1)
|
||||
new_baseturfs = new_baseturfs[1]
|
||||
if(0)
|
||||
new_baseturfs = turf_type
|
||||
// We must never end up with a situation where there is no baseturf
|
||||
WARNING("turf of type [type] had a baseturfs length 1 still in list form.")
|
||||
return ChangeTurf(turf_type, new_baseturfs)
|
||||
|
||||
if(baseturfs == type)
|
||||
return src
|
||||
|
||||
return ChangeTurf(baseturfs, baseturfs) // The bottom baseturf will never go away
|
||||
|
||||
// Take the input as baseturfs and put it underneath the current baseturfs
|
||||
// If fake_turf_type is provided and new_baseturfs is not the baseturfs list will be created identical to the turf type's
|
||||
// If both or just new_baseturfs is provided they will be inserted below the existing baseturfs
|
||||
/turf/proc/PlaceOnBottom(turf/fake_turf_type, list/new_baseturfs)
|
||||
if(fake_turf_type)
|
||||
if(!new_baseturfs)
|
||||
var/list/old_baseturfs = baseturfs.Copy()
|
||||
assemble_baseturfs(fake_turf_type)
|
||||
baseturfs += old_baseturfs
|
||||
return
|
||||
else if(!length(new_baseturfs))
|
||||
new_baseturfs = list(new_baseturfs, fake_turf_type)
|
||||
else
|
||||
new_baseturfs += fake_turf_type
|
||||
baseturfs.Insert(1, new_baseturfs)
|
||||
|
||||
// Make a new turf and put it on top
|
||||
/turf/proc/PlaceOnTop(turf/fake_turf_type, list/new_baseturfs)
|
||||
var/list/temp_baseturfs = list()
|
||||
temp_baseturfs += baseturfs // Doesn't matter if baseturfs is a list or single item, either will get added correctly
|
||||
temp_baseturfs += type
|
||||
if(new_baseturfs)
|
||||
temp_baseturfs += new_baseturfs
|
||||
return ChangeTurf(fake_turf_type, temp_baseturfs)
|
||||
|
||||
// Copy an existing turf and put it on top
|
||||
/turf/proc/CopyOnTop(turf/copytarget, ignore_bottom=1, depth=INFINITY) // x, 1, 0
|
||||
var/list/new_baseturfs = list()
|
||||
new_baseturfs += baseturfs
|
||||
new_baseturfs += type
|
||||
|
||||
if(depth)
|
||||
var/list/target_baseturfs = copytarget.baseturfs
|
||||
var/base_len = length(target_baseturfs)
|
||||
if(!base_len)
|
||||
if(!ignore_bottom)
|
||||
new_baseturfs += target_baseturfs
|
||||
else if(base_len > ignore_bottom)
|
||||
if(base_len - ignore_bottom <= depth)
|
||||
new_baseturfs += target_baseturfs.Copy(ignore_bottom + 1)
|
||||
else
|
||||
new_baseturfs += target_baseturfs.Copy(base_len - depth)
|
||||
|
||||
var/turf/newT = copytarget.copyTurf(src)
|
||||
newT.baseturfs = new_baseturfs
|
||||
return newT
|
||||
|
||||
/turf/proc/AfterChange(flags) //called after a turf has been replaced in ChangeTurf()
|
||||
levelupdate()
|
||||
CalculateAdjacentTurfs()
|
||||
|
||||
//update firedoor adjacency
|
||||
var/list/turfs_to_check = get_adjacent_open_turfs(src) | src
|
||||
for(var/I in turfs_to_check)
|
||||
var/turf/T = I
|
||||
for(var/obj/machinery/door/firedoor/FD in T)
|
||||
FD.CalculateAffectingAreas()
|
||||
|
||||
queue_smooth_neighbors(src)
|
||||
|
||||
HandleTurfChange(src)
|
||||
|
||||
/turf/open/AfterChange(flags)
|
||||
..()
|
||||
RemoveLattice()
|
||||
if(!(flags & CHANGETURF_IGNORE_AIR))
|
||||
Assimilate_Air()
|
||||
|
||||
//////Assimilate Air//////
|
||||
/turf/open/proc/Assimilate_Air()
|
||||
var/turf_count = LAZYLEN(atmos_adjacent_turfs)
|
||||
if(blocks_air || !turf_count) //if there weren't any open turfs, no need to update.
|
||||
return
|
||||
|
||||
var/datum/gas_mixture/total = new//Holders to assimilate air from nearby turfs
|
||||
var/list/total_gases = total.gases
|
||||
|
||||
for(var/T in atmos_adjacent_turfs)
|
||||
var/turf/open/S = T
|
||||
if(!S.air)
|
||||
continue
|
||||
var/list/S_gases = S.air.gases
|
||||
for(var/id in S_gases)
|
||||
ASSERT_GAS(id, total)
|
||||
total_gases[id][MOLES] += S_gases[id][MOLES]
|
||||
total.temperature += S.air.temperature
|
||||
|
||||
air.copy_from(total)
|
||||
|
||||
var/list/air_gases = air.gases
|
||||
for(var/id in air_gases)
|
||||
air_gases[id][MOLES] /= turf_count //Averages contents of the turfs, ignoring walls and the like
|
||||
|
||||
air.temperature /= turf_count
|
||||
SSair.add_to_active(src)
|
||||
|
||||
/turf/proc/ReplaceWithLattice()
|
||||
ScrapeAway()
|
||||
new /obj/structure/lattice(locate(x, y, z))
|
||||
@@ -137,7 +137,7 @@
|
||||
icon = 'icons/turf/walls.dmi'
|
||||
icon_state = "necro"
|
||||
explosion_block = 50
|
||||
baseturf = /turf/closed/indestructible/necropolis
|
||||
baseturfs = /turf/closed/indestructible/necropolis
|
||||
|
||||
/turf/closed/indestructible/necropolis/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir)
|
||||
underlay_appearance.icon = 'icons/turf/floors.dmi'
|
||||
@@ -151,7 +151,7 @@
|
||||
icon_state = "wall"
|
||||
canSmoothWith = list(/turf/closed/indestructible/riveted/boss, /turf/closed/indestructible/riveted/boss/see_through)
|
||||
explosion_block = 50
|
||||
baseturf = /turf/closed/indestructible/riveted/boss
|
||||
baseturfs = /turf/closed/indestructible/riveted/boss
|
||||
|
||||
/turf/closed/indestructible/riveted/boss/see_through
|
||||
opacity = FALSE
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
desc = "It's regarding you suspiciously."
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
icon_state = "necro1"
|
||||
baseturf = /turf/open/indestructible/necropolis
|
||||
baseturfs = /turf/open/indestructible/necropolis
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
|
||||
/turf/open/indestructible/necropolis/Initialize()
|
||||
@@ -45,7 +45,7 @@
|
||||
name = "necropolis floor"
|
||||
icon = 'icons/turf/boss_floors.dmi'
|
||||
icon_state = "boss"
|
||||
baseturf = /turf/open/indestructible/boss
|
||||
baseturfs = /turf/open/indestructible/boss
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
|
||||
/turf/open/indestructible/boss/air
|
||||
@@ -54,7 +54,7 @@
|
||||
/turf/open/indestructible/hierophant
|
||||
icon = 'icons/turf/floors/hierophant_floor.dmi'
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
baseturf = /turf/open/indestructible/hierophant
|
||||
baseturfs = /turf/open/indestructible/hierophant
|
||||
smooth = SMOOTH_TRUE
|
||||
|
||||
/turf/open/indestructible/hierophant/two
|
||||
@@ -71,7 +71,7 @@
|
||||
name = "cogmetal"
|
||||
desc = "Brass plating that gently radiates heat. For some reason, it reminds you of blood."
|
||||
icon_state = "reebe"
|
||||
baseturf = /turf/open/indestructible/clock_spawn_room
|
||||
baseturfs = /turf/open/indestructible/clock_spawn_room
|
||||
|
||||
/turf/open/indestructible/clock_spawn_room/Entered()
|
||||
..()
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/turf/open/chasm
|
||||
name = "chasm"
|
||||
desc = "Watch your step."
|
||||
baseturf = /turf/open/chasm
|
||||
baseturfs = /turf/open/chasm
|
||||
smooth = SMOOTH_TRUE | SMOOTH_BORDER | SMOOTH_MORE
|
||||
icon = 'icons/turf/floors/chasms.dmi'
|
||||
icon_state = "smooth"
|
||||
@@ -55,7 +55,7 @@
|
||||
playsound(src, 'sound/weapons/genhit.ogg', 50, 1)
|
||||
to_chat(user, "<span class='notice'>You build a floor.</span>")
|
||||
// Create a floor, which has this chasm underneath it
|
||||
ChangeTurf(/turf/open/floor/plating, type)
|
||||
PlaceOnTop(/turf/open/floor/plating)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need one floor tile to build a floor!</span>")
|
||||
else
|
||||
@@ -67,7 +67,7 @@
|
||||
|
||||
// Naive "down" which just subtracts a z-level
|
||||
/turf/open/chasm/straight_down
|
||||
baseturf = /turf/open/chasm/straight_down
|
||||
baseturfs = /turf/open/chasm/straight_down
|
||||
|
||||
/turf/open/chasm/straight_down/Initialize()
|
||||
. = ..()
|
||||
@@ -78,7 +78,7 @@
|
||||
/turf/open/chasm/lavaland
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
planetary_atmos = TRUE
|
||||
baseturf = /turf/open/chasm/lavaland
|
||||
baseturfs = /turf/open/chasm/lavaland
|
||||
light_range = 1.9 //slightly less range than lava
|
||||
light_power = 0.65 //less bright, too
|
||||
light_color = LIGHT_COLOR_LAVA //let's just say you're falling into lava, that makes sense right
|
||||
@@ -89,7 +89,7 @@
|
||||
icon = 'icons/turf/floors/junglechasm.dmi'
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
planetary_atmos = TRUE
|
||||
baseturf = /turf/open/chasm/jungle
|
||||
baseturfs = /turf/open/chasm/jungle
|
||||
|
||||
/turf/open/chasm/jungle/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir)
|
||||
underlay_appearance.icon = 'icons/turf/floors.dmi'
|
||||
@@ -97,7 +97,7 @@
|
||||
return TRUE
|
||||
|
||||
/turf/open/chasm/jungle/straight_down
|
||||
baseturf = /turf/open/chasm/jungle/straight_down
|
||||
baseturfs = /turf/open/chasm/jungle/straight_down
|
||||
|
||||
/turf/open/chasm/jungle/straight_down/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -51,13 +51,13 @@
|
||||
if(severity != 1 && shielded && target != src)
|
||||
return
|
||||
if(target == src)
|
||||
src.ChangeTurf(src.baseturf)
|
||||
ScrapeAway()
|
||||
if(target != null)
|
||||
severity = 3
|
||||
|
||||
switch(severity)
|
||||
if(1)
|
||||
src.ChangeTurf(src.baseturf)
|
||||
ScrapeAway()
|
||||
if(2)
|
||||
switch(pick(1,2;75,3))
|
||||
if(1)
|
||||
@@ -65,7 +65,7 @@
|
||||
if(prob(33))
|
||||
new /obj/item/stack/sheet/metal(src)
|
||||
if(2)
|
||||
src.ChangeTurf(src.baseturf)
|
||||
ScrapeAway()
|
||||
if(3)
|
||||
if(prob(80))
|
||||
src.break_tile_to_plating()
|
||||
@@ -119,7 +119,7 @@
|
||||
/turf/open/floor/proc/make_plating()
|
||||
return ChangeTurf(/turf/open/floor/plating)
|
||||
|
||||
/turf/open/floor/ChangeTurf(path, new_baseturf, defer_change = FALSE, ignore_air = FALSE, forceop = FALSE)
|
||||
/turf/open/floor/ChangeTurf(path, new_baseturf, flags)
|
||||
if(!isfloorturf(src))
|
||||
return ..() //fucking turfs switch the fucking src of the fucking running procs
|
||||
if(!ispath(path, /turf/open/floor))
|
||||
@@ -202,7 +202,7 @@
|
||||
ChangeTurf(/turf/open/floor/clockwork)
|
||||
|
||||
/turf/open/floor/acid_melt()
|
||||
ChangeTurf(baseturf)
|
||||
ScrapeAway()
|
||||
|
||||
/turf/open/floor/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd)
|
||||
switch(the_rcd.mode)
|
||||
@@ -223,7 +223,7 @@
|
||||
switch(passed_mode)
|
||||
if(RCD_FLOORWALL)
|
||||
to_chat(user, "<span class='notice'>You build a wall.</span>")
|
||||
ChangeTurf(/turf/closed/wall)
|
||||
PlaceOnTop(/turf/closed/wall)
|
||||
return TRUE
|
||||
if(RCD_AIRLOCK)
|
||||
if(locate(/obj/machinery/door/airlock) in src)
|
||||
@@ -244,10 +244,9 @@
|
||||
A.autoclose = TRUE
|
||||
return TRUE
|
||||
if(RCD_DECONSTRUCT)
|
||||
if(istype(src, baseturf))
|
||||
if(ScrapeAway() == src)
|
||||
return FALSE
|
||||
to_chat(user, "<span class='notice'>You deconstruct [src].</span>")
|
||||
ChangeTurf(baseturf)
|
||||
return TRUE
|
||||
if(RCD_WINDOWGRILLE)
|
||||
if(locate(/obj/structure/grille) in src)
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
icon_state = "light_off"
|
||||
|
||||
|
||||
/turf/open/floor/light/ChangeTurf(path, new_baseturf, defer_change = FALSE, ignore_air = FALSE, forceop = FALSE)
|
||||
/turf/open/floor/light/ChangeTurf(path, new_baseturf, flags)
|
||||
set_light(0)
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
name = "clockwork floor"
|
||||
desc = "Tightly-pressed brass tiles. They emit minute vibration."
|
||||
icon_state = "plating"
|
||||
baseturf = /turf/open/floor/clockwork
|
||||
baseturfs = /turf/open/floor/clockwork
|
||||
var/uses_overlay = TRUE
|
||||
var/obj/effect/clockwork/overlay/floor/realappearence
|
||||
|
||||
@@ -161,9 +161,7 @@
|
||||
return ..()
|
||||
|
||||
/turf/open/floor/clockwork/ReplaceWithLattice()
|
||||
if(baseturf == type)
|
||||
return
|
||||
..()
|
||||
. = ..()
|
||||
for(var/obj/structure/lattice/L in src)
|
||||
L.ratvar_act()
|
||||
|
||||
@@ -196,7 +194,7 @@
|
||||
L.adjustToxLoss(-3, TRUE, TRUE)
|
||||
|
||||
/turf/open/floor/clockwork/attackby(obj/item/I, mob/living/user, params)
|
||||
if(baseturf == type)
|
||||
if(baseturfs == type)
|
||||
return
|
||||
if(istype(I, /obj/item/crowbar))
|
||||
user.visible_message("<span class='notice'>[user] begins slowly prying up [src]...</span>", "<span class='notice'>You begin painstakingly prying up [src]...</span>")
|
||||
@@ -225,7 +223,7 @@
|
||||
name = "cogplate"
|
||||
desc = "Warm brass plating. You can feel it gently vibrating, as if machinery is on the other side."
|
||||
icon_state = "reebe"
|
||||
baseturf = /turf/open/floor/clockwork/reebe
|
||||
baseturfs = /turf/open/floor/clockwork/reebe
|
||||
uses_overlay = FALSE
|
||||
|
||||
/turf/open/floor/bluespace
|
||||
|
||||
@@ -109,10 +109,10 @@
|
||||
if(prob(I.force * 20 - 25))
|
||||
user.visible_message("<span class='danger'>[user] smashes through [src]!</span>", \
|
||||
"<span class='danger'>You smash through [src] with [I]!</span>")
|
||||
ChangeTurf(baseturf)
|
||||
ScrapeAway()
|
||||
else
|
||||
to_chat(user, "<span class='danger'>You hit [src], to no effect!</span>")
|
||||
|
||||
/turf/open/floor/plating/foam/ex_act()
|
||||
..()
|
||||
ChangeTurf(baseturf)
|
||||
ScrapeAway()
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
/turf/open/floor/plating/asteroid //floor piece
|
||||
name = "asteroid sand"
|
||||
baseturf = /turf/open/floor/plating/asteroid
|
||||
baseturfs = /turf/open/floor/plating/asteroid
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
icon_state = "asteroid"
|
||||
icon_plating = "asteroid"
|
||||
@@ -61,7 +61,7 @@
|
||||
/turf/open/floor/plating/asteroid/singularity_act()
|
||||
if(turf_z_is_planet(src))
|
||||
return ..()
|
||||
ChangeTurf(/turf/open/space)
|
||||
ScrapeAway()
|
||||
|
||||
/turf/open/floor/plating/asteroid/ex_act(severity, target)
|
||||
. = SendSignal(COMSIG_ATOM_EX_ACT, severity, target)
|
||||
@@ -70,7 +70,7 @@
|
||||
|
||||
/turf/open/floor/plating/asteroid/basalt
|
||||
name = "volcanic floor"
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt
|
||||
baseturfs = /turf/open/floor/plating/asteroid/basalt
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
icon_state = "basalt"
|
||||
icon_plating = "basalt"
|
||||
@@ -79,7 +79,7 @@
|
||||
floor_variance = 15
|
||||
|
||||
/turf/open/floor/plating/asteroid/basalt/lava //lava underneath
|
||||
baseturf = /turf/open/lava/smooth
|
||||
baseturfs = /turf/open/lava/smooth
|
||||
|
||||
/turf/open/floor/plating/asteroid/basalt/airless
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
@@ -103,7 +103,7 @@
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
planetary_atmos = TRUE
|
||||
baseturf = /turf/open/lava/smooth/lava_land_surface
|
||||
baseturfs = /turf/open/lava/smooth/lava_land_surface
|
||||
|
||||
|
||||
|
||||
@@ -206,7 +206,7 @@
|
||||
if(istype(tunnel))
|
||||
// Small chance to have forks in our tunnel; otherwise dig our tunnel.
|
||||
if(i > 3 && prob(20))
|
||||
var/turf/open/floor/plating/asteroid/airless/cave/C = tunnel.ChangeTurf(data_having_type,FALSE,FALSE,TRUE)
|
||||
var/turf/open/floor/plating/asteroid/airless/cave/C = tunnel.ChangeTurf(data_having_type, null, CHANGETURF_IGNORE_AIR)
|
||||
C.going_backwards = FALSE
|
||||
C.produce_tunnel_from_data(rand(10, 15), dir)
|
||||
else
|
||||
@@ -232,7 +232,7 @@
|
||||
SpawnFlora(T)
|
||||
|
||||
SpawnMonster(T)
|
||||
T.ChangeTurf(turf_type,FALSE,FALSE,TRUE)
|
||||
T.ChangeTurf(turf_type, null, CHANGETURF_IGNORE_AIR)
|
||||
|
||||
/turf/open/floor/plating/asteroid/airless/cave/proc/SpawnMonster(turf/T)
|
||||
if(prob(30))
|
||||
@@ -279,7 +279,7 @@
|
||||
name = "snow"
|
||||
desc = "Looks cold."
|
||||
icon = 'icons/turf/snow.dmi'
|
||||
baseturf = /turf/open/floor/plating/asteroid/snow
|
||||
baseturfs = /turf/open/floor/plating/asteroid/snow
|
||||
icon_state = "snow"
|
||||
icon_plating = "snow"
|
||||
initial_gas_mix = "TEMP=180"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "Upon closer examination, it's still dirt."
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
icon_state = "dirt"
|
||||
baseturf = /turf/open/chasm/jungle/straight_down
|
||||
baseturfs = /turf/open/chasm/jungle/straight_down
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
planetary_atmos = TRUE
|
||||
attachment_holes = FALSE
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
smooth = SMOOTH_MORE|SMOOTH_BORDER
|
||||
var/smooth_icon = 'icons/turf/floors/ash.dmi'
|
||||
desc = "The ground is covered in volcanic ash."
|
||||
baseturf = /turf/open/floor/plating/ashplanet/wateryrock //I assume this will be a chasm eventually, once this becomes an actual surface
|
||||
baseturfs = /turf/open/floor/plating/ashplanet/wateryrock //I assume this will be a chasm eventually, once this becomes an actual surface
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
planetary_atmos = TRUE
|
||||
attachment_holes = FALSE
|
||||
@@ -91,24 +91,24 @@
|
||||
name = "sand"
|
||||
desc = "Surf's up."
|
||||
icon_state = "sand"
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
baseturfs = /turf/open/floor/plating/beach/sand
|
||||
|
||||
/turf/open/floor/plating/beach/coastline_t
|
||||
name = "coastline"
|
||||
desc = "Tide's high tonight. Charge your batons."
|
||||
icon_state = "sandwater_t"
|
||||
baseturf = /turf/open/floor/plating/beach/coastline_t
|
||||
baseturfs = /turf/open/floor/plating/beach/coastline_t
|
||||
|
||||
/turf/open/floor/plating/beach/coastline_b
|
||||
name = "coastline"
|
||||
icon_state = "sandwater_b"
|
||||
baseturf = /turf/open/floor/plating/beach/coastline_b
|
||||
baseturfs = /turf/open/floor/plating/beach/coastline_b
|
||||
|
||||
/turf/open/floor/plating/beach/water
|
||||
name = "water"
|
||||
desc = "You get the feeling that nobody's bothered to actually make this water functional..."
|
||||
icon_state = "water"
|
||||
baseturf = /turf/open/floor/plating/beach/water
|
||||
baseturfs = /turf/open/floor/plating/beach/water
|
||||
|
||||
|
||||
/turf/open/floor/plating/ironsand
|
||||
@@ -129,7 +129,7 @@
|
||||
icon = 'icons/turf/snow.dmi'
|
||||
icon_state = "ice"
|
||||
temperature = 180
|
||||
baseturf = /turf/open/floor/plating/ice
|
||||
baseturfs = /turf/open/floor/plating/ice
|
||||
slowdown = 1
|
||||
wet = TURF_WET_PERMAFROST
|
||||
attachment_holes = FALSE
|
||||
|
||||
@@ -48,14 +48,14 @@
|
||||
if(severity != 1 && shielded && target != src)
|
||||
return
|
||||
if(target == src)
|
||||
src.ChangeTurf(src.baseturf)
|
||||
ScrapeAway()
|
||||
return
|
||||
switch(severity)
|
||||
if(1)
|
||||
if(prob(80))
|
||||
ReplaceWithLattice()
|
||||
else if(prob(50))
|
||||
ChangeTurf(src.baseturf)
|
||||
ScrapeAway()
|
||||
else
|
||||
make_plating(1)
|
||||
if(2)
|
||||
@@ -122,7 +122,7 @@
|
||||
be_removed()
|
||||
return ..()
|
||||
|
||||
/turf/open/floor/engine/cult/ChangeTurf(path, new_baseturf, defer_change = FALSE, ignore_air = FALSE, forceop = FALSE)
|
||||
/turf/open/floor/engine/cult/ChangeTurf(path, new_baseturf, flags)
|
||||
if(path != type)
|
||||
be_removed()
|
||||
return ..()
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
name = "lava"
|
||||
icon_state = "lava"
|
||||
gender = PLURAL //"That's some lava."
|
||||
baseturf = /turf/open/lava //lava all the way down
|
||||
baseturfs = /turf/open/lava //lava all the way down
|
||||
slowdown = 2
|
||||
|
||||
light_range = 2
|
||||
@@ -128,7 +128,7 @@
|
||||
|
||||
/turf/open/lava/smooth
|
||||
name = "lava"
|
||||
baseturf = /turf/open/lava/smooth
|
||||
baseturfs = /turf/open/lava/smooth
|
||||
icon = 'icons/turf/floors/lava.dmi'
|
||||
icon_state = "unsmooth"
|
||||
smooth = SMOOTH_MORE | SMOOTH_BORDER
|
||||
@@ -137,7 +137,7 @@
|
||||
/turf/open/lava/smooth/lava_land_surface
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
planetary_atmos = TRUE
|
||||
baseturf = /turf/open/chasm/lavaland
|
||||
baseturfs = /turf/open/chasm/lavaland
|
||||
|
||||
/turf/open/lava/smooth/airless
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
var/smooth_icon = 'icons/turf/smoothrocks.dmi'
|
||||
smooth = SMOOTH_MORE|SMOOTH_BORDER
|
||||
canSmoothWith
|
||||
baseturf = /turf/open/floor/plating/asteroid/airless
|
||||
baseturfs = /turf/open/floor/plating/asteroid/airless
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
opacity = 1
|
||||
density = TRUE
|
||||
@@ -78,7 +78,10 @@
|
||||
SSblackbox.record_feedback("tally", "ore_mined", 1, mineralType)
|
||||
for(var/obj/effect/temp_visual/mining_overlay/M in src)
|
||||
qdel(M)
|
||||
ChangeTurf(turf_type, FALSE, defer_change)
|
||||
var/flags = NONE
|
||||
if(defer_change) // TODO: make the defer change var a var for any changeturf flag
|
||||
flags = CHANGETURF_DEFER_CHANGE
|
||||
ChangeTurf(turf_type, null, flags)
|
||||
addtimer(CALLBACK(src, .proc/AfterChange), 1, TIMER_UNIQUE)
|
||||
playsound(src, 'sound/effects/break_stone.ogg', 50, 1) //beautiful destruction
|
||||
|
||||
@@ -111,7 +114,7 @@
|
||||
return
|
||||
|
||||
/turf/closed/mineral/acid_melt()
|
||||
ChangeTurf(baseturf)
|
||||
ScrapeAway()
|
||||
|
||||
/turf/closed/mineral/ex_act(severity, target)
|
||||
..()
|
||||
@@ -153,7 +156,7 @@
|
||||
M.mineralAmt = rand(1, 5)
|
||||
M.environment_type = src.environment_type
|
||||
M.turf_type = src.turf_type
|
||||
M.baseturf = src.baseturf
|
||||
M.baseturfs = src.baseturfs
|
||||
src = M
|
||||
M.levelupdate()
|
||||
|
||||
@@ -168,7 +171,7 @@
|
||||
/turf/closed/mineral/random/high_chance/volcanic
|
||||
environment_type = "basalt"
|
||||
turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturf = /turf/open/lava/smooth/lava_land_surface
|
||||
baseturfs = /turf/open/lava/smooth/lava_land_surface
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
defer_change = 1
|
||||
mineralSpawnChanceList = list(
|
||||
@@ -189,7 +192,7 @@
|
||||
/turf/closed/mineral/random/volcanic
|
||||
environment_type = "basalt"
|
||||
turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturf = /turf/open/lava/smooth/lava_land_surface
|
||||
baseturfs = /turf/open/lava/smooth/lava_land_surface
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
defer_change = 1
|
||||
|
||||
@@ -211,7 +214,7 @@
|
||||
/turf/closed/mineral/random/labormineral/volcanic
|
||||
environment_type = "basalt"
|
||||
turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturf = /turf/open/lava/smooth/lava_land_surface
|
||||
baseturfs = /turf/open/lava/smooth/lava_land_surface
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
defer_change = 1
|
||||
mineralSpawnChanceList = list(
|
||||
@@ -230,7 +233,7 @@
|
||||
/turf/closed/mineral/iron/volcanic
|
||||
environment_type = "basalt"
|
||||
turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturfs = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
defer_change = 1
|
||||
|
||||
@@ -244,7 +247,7 @@
|
||||
/turf/closed/mineral/uranium/volcanic
|
||||
environment_type = "basalt"
|
||||
turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturfs = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
defer_change = 1
|
||||
|
||||
@@ -258,7 +261,7 @@
|
||||
/turf/closed/mineral/diamond/volcanic
|
||||
environment_type = "basalt"
|
||||
turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturfs = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
defer_change = 1
|
||||
|
||||
@@ -272,7 +275,7 @@
|
||||
/turf/closed/mineral/gold/volcanic
|
||||
environment_type = "basalt"
|
||||
turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturfs = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
defer_change = 1
|
||||
|
||||
@@ -286,7 +289,7 @@
|
||||
/turf/closed/mineral/silver/volcanic
|
||||
environment_type = "basalt"
|
||||
turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturfs = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
defer_change = 1
|
||||
|
||||
@@ -300,7 +303,7 @@
|
||||
/turf/closed/mineral/titanium/volcanic
|
||||
environment_type = "basalt"
|
||||
turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturfs = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
defer_change = 1
|
||||
|
||||
@@ -314,7 +317,7 @@
|
||||
/turf/closed/mineral/plasma/volcanic
|
||||
environment_type = "basalt"
|
||||
turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturfs = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
defer_change = 1
|
||||
|
||||
@@ -337,7 +340,7 @@
|
||||
/turf/closed/mineral/bscrystal/volcanic
|
||||
environment_type = "basalt"
|
||||
turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturfs = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
defer_change = 1
|
||||
|
||||
@@ -345,13 +348,13 @@
|
||||
/turf/closed/mineral/volcanic
|
||||
environment_type = "basalt"
|
||||
turf_type = /turf/open/floor/plating/asteroid/basalt
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt
|
||||
baseturfs = /turf/open/floor/plating/asteroid/basalt
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
|
||||
/turf/closed/mineral/volcanic/lava_land_surface
|
||||
environment_type = "basalt"
|
||||
turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturf = /turf/open/lava/smooth/lava_land_surface
|
||||
baseturfs = /turf/open/lava/smooth/lava_land_surface
|
||||
defer_change = 1
|
||||
|
||||
/turf/closed/mineral/ash_rock //wall piece
|
||||
@@ -361,7 +364,7 @@
|
||||
icon_state = "rock2"
|
||||
smooth = SMOOTH_MORE|SMOOTH_BORDER
|
||||
canSmoothWith = list (/turf/closed)
|
||||
baseturf = /turf/open/floor/plating/ashplanet/wateryrock
|
||||
baseturfs = /turf/open/floor/plating/ashplanet/wateryrock
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
environment_type = "waste"
|
||||
turf_type = /turf/open/floor/plating/ashplanet/rocky
|
||||
@@ -459,13 +462,16 @@
|
||||
G.quality = 2
|
||||
G.icon_state = "Gibtonite ore 2"
|
||||
|
||||
ChangeTurf(turf_type, FALSE, defer_change)
|
||||
var/flags = NONE
|
||||
if(defer_change)
|
||||
flags = CHANGETURF_DEFER_CHANGE
|
||||
ChangeTurf(turf_type, null, flags)
|
||||
addtimer(CALLBACK(src, .proc/AfterChange), 1, TIMER_UNIQUE)
|
||||
|
||||
|
||||
/turf/closed/mineral/gibtonite/volcanic
|
||||
environment_type = "basalt"
|
||||
turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
baseturfs = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
defer_change = 1
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "void"
|
||||
icon_state = "reebemap"
|
||||
layer = SPACE_LAYER
|
||||
baseturf = /turf/open/indestructible/reebe_void
|
||||
baseturfs = /turf/open/indestructible/reebe_void
|
||||
planetary_atmos = TRUE
|
||||
|
||||
/turf/open/indestructible/reebe_void/Initialize(mapload)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
continue
|
||||
W.connected = 1
|
||||
var/turf/cur_turf = get_turf(W)
|
||||
cur_turf.ChangeTurf(turf_type,FALSE,FALSE,TRUE)
|
||||
cur_turf.ChangeTurf(turf_type, null, CHANGETURF_IGNORE_AIR)
|
||||
var/turf/target_turf = get_turf(pick(river_nodes - W))
|
||||
if(!target_turf)
|
||||
break
|
||||
@@ -49,7 +49,7 @@
|
||||
cur_turf = get_step(cur_turf, cur_dir)
|
||||
continue
|
||||
else
|
||||
var/turf/river_turf = cur_turf.ChangeTurf(turf_type,FALSE,FALSE,TRUE)
|
||||
var/turf/river_turf = cur_turf.ChangeTurf(turf_type, null, CHANGETURF_IGNORE_AIR)
|
||||
river_turf.Spread(25, 11, whitelist_area)
|
||||
|
||||
for(var/WP in river_nodes)
|
||||
@@ -85,16 +85,16 @@
|
||||
|
||||
for(var/F in cardinal_turfs) //cardinal turfs are always changed but don't always spread
|
||||
var/turf/T = F
|
||||
if(!istype(T, logged_turf_type) && T.ChangeTurf(type,FALSE,FALSE,TRUE) && prob(probability))
|
||||
if(!istype(T, logged_turf_type) && T.ChangeTurf(type, null, CHANGETURF_IGNORE_AIR) && prob(probability))
|
||||
T.Spread(probability - prob_loss, prob_loss, whitelisted_area)
|
||||
|
||||
for(var/F in diagonal_turfs) //diagonal turfs only sometimes change, but will always spread if changed
|
||||
var/turf/T = F
|
||||
if(!istype(T, logged_turf_type) && prob(probability) && T.ChangeTurf(type,FALSE,FALSE,TRUE))
|
||||
if(!istype(T, logged_turf_type) && prob(probability) && T.ChangeTurf(type, null, CHANGETURF_IGNORE_AIR))
|
||||
T.Spread(probability - prob_loss, prob_loss, whitelisted_area)
|
||||
else if(ismineralturf(T))
|
||||
var/turf/closed/mineral/M = T
|
||||
M.ChangeTurf(M.turf_type,FALSE,FALSE,TRUE)
|
||||
M.ChangeTurf(M.turf_type, null, CHANGETURF_IGNORE_AIR)
|
||||
|
||||
|
||||
#undef RANDOM_UPPER_X
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
sheet_type = /obj/item/stack/tile/brass
|
||||
sheet_amount = 1
|
||||
girder_type = /obj/structure/destructible/clockwork/wall_gear
|
||||
baseturf = /turf/open/floor/clockwork/reebe
|
||||
baseturfs = /turf/open/floor/clockwork/reebe
|
||||
var/heated
|
||||
var/obj/effect/clockwork/overlay/wall/realappearence
|
||||
|
||||
@@ -88,13 +88,13 @@
|
||||
/turf/closed/wall/clockwork/dismantle_wall(devastated=0, explode=0)
|
||||
if(devastated)
|
||||
devastate_wall()
|
||||
ChangeTurf(/turf/open/floor/plating)
|
||||
ScrapeAway()
|
||||
else
|
||||
playsound(src, 'sound/items/welder.ogg', 100, 1)
|
||||
var/newgirder = break_wall()
|
||||
if(newgirder) //maybe we want a gear!
|
||||
transfer_fingerprints_to(newgirder)
|
||||
ChangeTurf(/turf/open/floor/clockwork)
|
||||
ScrapeAway()
|
||||
|
||||
for(var/obj/O in src) //Eject contents!
|
||||
if(istype(O, /obj/structure/sign/poster))
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
thermal_conductivity = WALL_HEAT_TRANSFER_COEFFICIENT
|
||||
heat_capacity = 312500 //a little over 5 cm thick , 312500 for 1 m by 2.5 m by 0.25 m plasteel wall
|
||||
|
||||
baseturfs = /turf/open/floor/plating
|
||||
|
||||
var/hardness = 40 //lower numbers are harder. Used to determine the probability of a hulk smashing through.
|
||||
var/slicing_duration = 100 //default time taken to slice the wall
|
||||
var/sheet_type = /obj/item/stack/sheet/metal
|
||||
@@ -78,7 +80,7 @@
|
||||
var/obj/structure/sign/poster/P = O
|
||||
P.roll_and_drop(src)
|
||||
|
||||
ChangeTurf(/turf/open/floor/plating)
|
||||
ScrapeAway()
|
||||
|
||||
/turf/closed/wall/proc/break_wall()
|
||||
new sheet_type(src, sheet_amount)
|
||||
@@ -96,7 +98,7 @@
|
||||
switch(severity)
|
||||
if(1)
|
||||
//SN src = null
|
||||
var/turf/NT = ChangeTurf(baseturf)
|
||||
var/turf/NT = ScrapeAway()
|
||||
NT.contents_explosion(severity, target)
|
||||
return
|
||||
if(2)
|
||||
@@ -294,7 +296,7 @@
|
||||
switch(passed_mode)
|
||||
if(RCD_DECONSTRUCT)
|
||||
to_chat(user, "<span class='notice'>You deconstruct the wall.</span>")
|
||||
ChangeTurf(/turf/open/floor/plating)
|
||||
ScrapeAway()
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "Shallow water."
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
icon_state = "riverwater"
|
||||
baseturf = /turf/open/chasm/lavaland
|
||||
baseturfs = /turf/open/chasm/lavaland
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
planetary_atmos = TRUE
|
||||
slowdown = 1
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
qdel(L)
|
||||
playsound(src, 'sound/weapons/genhit.ogg', 50, 1)
|
||||
to_chat(user, "<span class='notice'>You build a floor.</span>")
|
||||
ChangeTurf(/turf/open/floor/plating)
|
||||
PlaceOnTop(/turf/open/floor/plating)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need one floor tile to build a floor!</span>")
|
||||
else
|
||||
@@ -192,7 +192,7 @@
|
||||
switch(passed_mode)
|
||||
if(RCD_FLOORWALL)
|
||||
to_chat(user, "<span class='notice'>You build a floor.</span>")
|
||||
ChangeTurf(/turf/open/floor/plating)
|
||||
PlaceOnTop(/turf/open/floor/plating)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/turf/open/space/transit
|
||||
icon_state = "black"
|
||||
dir = SOUTH
|
||||
baseturf = /turf/open/space/transit
|
||||
baseturfs = /turf/open/space/transit
|
||||
flags_1 = NOJAUNT_1 //This line goes out to every wizard that ever managed to escape the den. I'm sorry.
|
||||
explosion_block = INFINITY
|
||||
|
||||
|
||||
+59
-154
@@ -3,7 +3,13 @@
|
||||
level = 1
|
||||
|
||||
var/intact = 1
|
||||
var/turf/baseturf = /turf/open/space
|
||||
|
||||
// baseturfs can be either a list or a single turf type.
|
||||
// In class definition like here it should always be a single type.
|
||||
// A list will be created in initialization that figures out the baseturf's baseturf etc.
|
||||
// In the case of a list it is sorted from bottom layer to top.
|
||||
// This shouldn't be modified directly, use the helper procs.
|
||||
var/list/baseturfs = /turf/open/space
|
||||
|
||||
var/temperature = T20C
|
||||
var/to_be_destroyed = 0 //Used for fire, if a melting temperature was reached, it will be destroyed
|
||||
@@ -35,6 +41,8 @@
|
||||
stack_trace("Warning: [src]([type]) initialized multiple times!")
|
||||
initialized = TRUE
|
||||
|
||||
assemble_baseturfs()
|
||||
|
||||
levelupdate()
|
||||
if(smooth)
|
||||
queue_smooth(src)
|
||||
@@ -180,6 +188,55 @@
|
||||
/turf/proc/is_plasteel_floor()
|
||||
return FALSE
|
||||
|
||||
// A proc in case it needs to be recreated or badmins want to change the baseturfs
|
||||
/turf/proc/assemble_baseturfs(turf/fake_baseturf_type)
|
||||
var/static/list/created_baseturf_lists = list()
|
||||
var/turf/current_target
|
||||
if(fake_baseturf_type)
|
||||
if(length(fake_baseturf_type)) // We were given a list, just apply it and move on
|
||||
baseturfs = fake_baseturf_type
|
||||
return
|
||||
current_target = fake_baseturf_type
|
||||
else
|
||||
if(length(baseturfs))
|
||||
return // No replacement baseturf has been given and the current baseturfs value is already a list/assembled
|
||||
if(!baseturfs)
|
||||
current_target = initial(baseturfs) || type // This should never happen but just in case...
|
||||
stack_trace("baseturfs var was null for [type]. Failsafe activated and it has been given a new baseturfs value of [current_target].")
|
||||
else
|
||||
current_target = baseturfs
|
||||
|
||||
// If we've made the output before we don't need to regenerate it
|
||||
if(created_baseturf_lists[current_target])
|
||||
var/list/premade_baseturfs = created_baseturf_lists[current_target]
|
||||
if(length(premade_baseturfs))
|
||||
baseturfs = premade_baseturfs.Copy()
|
||||
else
|
||||
baseturfs = premade_baseturfs
|
||||
return baseturfs
|
||||
|
||||
var/turf/next_target = initial(current_target.baseturfs)
|
||||
//Most things only have 1 baseturf so this loop won't run in most cases
|
||||
if(current_target == next_target)
|
||||
baseturfs = current_target
|
||||
created_baseturf_lists[current_target] = current_target
|
||||
return current_target
|
||||
var/list/new_baseturfs = list(current_target)
|
||||
for(var/i=0;current_target != next_target;i++)
|
||||
if(i > 100)
|
||||
// A baseturfs list over 100 members long is silly
|
||||
// Because of how this is all structured it will only runtime/message once per type
|
||||
stack_trace("A turf <[type]> created a baseturfs list over 100 members long. This is most likely an infinite loop.")
|
||||
message_admins("A turf <[type]> created a baseturfs list over 100 members long. This is most likely an infinite loop.")
|
||||
break
|
||||
new_baseturfs.Insert(1, next_target)
|
||||
current_target = next_target
|
||||
next_target = initial(current_target.baseturfs)
|
||||
|
||||
baseturfs = new_baseturfs
|
||||
created_baseturf_lists[new_baseturfs[new_baseturfs.len]] = new_baseturfs.Copy()
|
||||
return new_baseturfs
|
||||
|
||||
/turf/proc/levelupdate()
|
||||
for(var/obj/O in src)
|
||||
if(O.level == 1)
|
||||
@@ -197,119 +254,6 @@
|
||||
if(L)
|
||||
qdel(L)
|
||||
|
||||
//wrapper for ChangeTurf()s that you want to prevent/affect without overriding ChangeTurf() itself
|
||||
/turf/proc/TerraformTurf(path, new_baseturf, defer_change = FALSE, ignore_air = FALSE, forceop = FALSE)
|
||||
return ChangeTurf(path, new_baseturf, defer_change, ignore_air, forceop)
|
||||
|
||||
//Creates a new turf
|
||||
/turf/proc/ChangeTurf(path, new_baseturf, defer_change = FALSE, ignore_air = FALSE, forceop = FALSE)
|
||||
if(!path)
|
||||
return
|
||||
if(!GLOB.use_preloader && path == type && !forceop) // Don't no-op if the map loader requires it to be reconstructed
|
||||
return src
|
||||
|
||||
var/old_opacity = opacity
|
||||
var/old_dynamic_lighting = dynamic_lighting
|
||||
var/old_affecting_lights = affecting_lights
|
||||
var/old_lighting_object = lighting_object
|
||||
var/old_corners = corners
|
||||
|
||||
var/old_exl = explosion_level
|
||||
var/old_exi = explosion_id
|
||||
var/old_bp = blueprint_data
|
||||
blueprint_data = null
|
||||
|
||||
var/old_baseturf = baseturf
|
||||
changing_turf = TRUE
|
||||
|
||||
qdel(src) //Just get the side effects and call Destroy
|
||||
var/turf/W = new path(src)
|
||||
|
||||
if(new_baseturf)
|
||||
W.baseturf = new_baseturf
|
||||
else
|
||||
W.baseturf = old_baseturf
|
||||
|
||||
W.explosion_id = old_exi
|
||||
W.explosion_level = old_exl
|
||||
|
||||
if(!defer_change)
|
||||
W.AfterChange(ignore_air)
|
||||
|
||||
W.blueprint_data = old_bp
|
||||
|
||||
if(SSlighting.initialized)
|
||||
recalc_atom_opacity()
|
||||
lighting_object = old_lighting_object
|
||||
affecting_lights = old_affecting_lights
|
||||
corners = old_corners
|
||||
if (old_opacity != opacity || dynamic_lighting != old_dynamic_lighting)
|
||||
reconsider_lights()
|
||||
|
||||
if (dynamic_lighting != old_dynamic_lighting)
|
||||
if (IS_DYNAMIC_LIGHTING(src))
|
||||
lighting_build_overlay()
|
||||
else
|
||||
lighting_clear_overlay()
|
||||
|
||||
for(var/turf/open/space/S in RANGE_TURFS(1, src)) //RANGE_TURFS is in code\__HELPERS\game.dm
|
||||
S.update_starlight()
|
||||
|
||||
return W
|
||||
|
||||
/turf/proc/AfterChange(ignore_air = FALSE) //called after a turf has been replaced in ChangeTurf()
|
||||
levelupdate()
|
||||
CalculateAdjacentTurfs()
|
||||
|
||||
//update firedoor adjacency
|
||||
var/list/turfs_to_check = get_adjacent_open_turfs(src) | src
|
||||
for(var/I in turfs_to_check)
|
||||
var/turf/T = I
|
||||
for(var/obj/machinery/door/firedoor/FD in T)
|
||||
FD.CalculateAffectingAreas()
|
||||
|
||||
queue_smooth_neighbors(src)
|
||||
|
||||
HandleTurfChange(src)
|
||||
|
||||
/turf/open/AfterChange(ignore_air)
|
||||
..()
|
||||
RemoveLattice()
|
||||
if(!ignore_air)
|
||||
Assimilate_Air()
|
||||
|
||||
//////Assimilate Air//////
|
||||
/turf/open/proc/Assimilate_Air()
|
||||
var/turf_count = LAZYLEN(atmos_adjacent_turfs)
|
||||
if(blocks_air || !turf_count) //if there weren't any open turfs, no need to update.
|
||||
return
|
||||
|
||||
var/datum/gas_mixture/total = new//Holders to assimilate air from nearby turfs
|
||||
var/list/total_gases = total.gases
|
||||
|
||||
for(var/T in atmos_adjacent_turfs)
|
||||
var/turf/open/S = T
|
||||
if(!S.air)
|
||||
continue
|
||||
var/list/S_gases = S.air.gases
|
||||
for(var/id in S_gases)
|
||||
ASSERT_GAS(id, total)
|
||||
total_gases[id][MOLES] += S_gases[id][MOLES]
|
||||
total.temperature += S.air.temperature
|
||||
|
||||
air.copy_from(total)
|
||||
|
||||
var/list/air_gases = air.gases
|
||||
for(var/id in air_gases)
|
||||
air_gases[id][MOLES] /= turf_count //Averages contents of the turfs, ignoring walls and the like
|
||||
|
||||
air.temperature /= turf_count
|
||||
SSair.add_to_active(src)
|
||||
|
||||
/turf/proc/ReplaceWithLattice()
|
||||
ChangeTurf(baseturf)
|
||||
new /obj/structure/lattice(locate(x, y, z))
|
||||
|
||||
/turf/proc/phase_damage_creatures(damage,mob/U = null)//>Ninja Code. Hurts and knocks out creatures on this turf //NINJACODE
|
||||
for(var/mob/living/M in src)
|
||||
if(M==U)
|
||||
@@ -361,7 +305,7 @@
|
||||
continue
|
||||
if(O.invisibility == INVISIBILITY_MAXIMUM)
|
||||
O.singularity_act()
|
||||
ChangeTurf(src.baseturf)
|
||||
ScrapeAway()
|
||||
return(2)
|
||||
|
||||
/turf/proc/can_have_cabling()
|
||||
@@ -437,21 +381,6 @@
|
||||
if(!SSticker.HasRoundStarted())
|
||||
add_blueprints(AM)
|
||||
|
||||
/turf/proc/empty(turf_type=/turf/open/space, baseturf_type, list/ignore_typecache, forceop = FALSE)
|
||||
// Remove all atoms except observers, landmarks, docking ports
|
||||
var/static/list/ignored_atoms = typecacheof(list(/mob/dead, /obj/effect/landmark, /obj/docking_port, /atom/movable/lighting_object))
|
||||
var/list/allowed_contents = typecache_filter_list_reverse(GetAllContentsIgnoring(ignore_typecache), ignored_atoms)
|
||||
allowed_contents -= src
|
||||
for(var/i in 1 to allowed_contents.len)
|
||||
var/thing = allowed_contents[i]
|
||||
qdel(thing, force=TRUE)
|
||||
|
||||
var/turf/newT = ChangeTurf(turf_type, baseturf_type, FALSE, FALSE, forceop)
|
||||
|
||||
SSair.remove_from_active(newT)
|
||||
newT.CalculateAdjacentTurfs()
|
||||
SSair.add_to_active(newT,1)
|
||||
|
||||
/turf/proc/is_transition_turf()
|
||||
return
|
||||
|
||||
@@ -473,33 +402,9 @@
|
||||
if(!has_acid_effect)
|
||||
new acid_type(src, acidpwr, acid_volume)
|
||||
|
||||
|
||||
/turf/proc/acid_melt()
|
||||
return
|
||||
|
||||
|
||||
/turf/proc/copyTurf(turf/T)
|
||||
if(T.type != type)
|
||||
var/obj/O
|
||||
if(underlays.len) //we have underlays, which implies some sort of transparency, so we want to a snapshot of the previous turf as an underlay
|
||||
O = new()
|
||||
O.underlays.Add(T)
|
||||
T.ChangeTurf(type)
|
||||
for(var/group in decals)
|
||||
T.add_decal(decals[group],group)
|
||||
if(underlays.len)
|
||||
T.underlays = O.underlays
|
||||
if(T.icon_state != icon_state)
|
||||
T.icon_state = icon_state
|
||||
if(T.icon != icon)
|
||||
T.icon = icon
|
||||
if(color)
|
||||
T.atom_colours = atom_colours.Copy()
|
||||
T.update_atom_colour()
|
||||
if(T.dir != dir)
|
||||
T.setDir(dir)
|
||||
return T
|
||||
|
||||
/turf/handle_fall(mob/faller, forced)
|
||||
faller.lying = pick(90, 270)
|
||||
if(!forced)
|
||||
|
||||
@@ -523,7 +523,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
SSblackbox.record_feedback("tally", "admin_verb", 1, "Delete") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
if(isturf(D))
|
||||
var/turf/T = D
|
||||
T.ChangeTurf(T.baseturf)
|
||||
T.ScrapeAway()
|
||||
else
|
||||
qdel(D)
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
else
|
||||
chance_of_deletion = 100
|
||||
if(prob(chance_of_deletion))
|
||||
T.ChangeTurf(T.baseturf)
|
||||
T.ScrapeAway()
|
||||
else
|
||||
T.to_be_destroyed = FALSE
|
||||
T.max_fire_temperature_sustained = 0
|
||||
|
||||
@@ -13,11 +13,15 @@
|
||||
. = ..()
|
||||
var/area/thearea = get_area(src)
|
||||
for(var/turf/T in get_area_turfs(thearea, z))
|
||||
if(T.baseturf != T.type) //Don't break indestructible walls and the like
|
||||
T.baseturf = baseturf
|
||||
if(T.baseturfs != T.type) //Don't break indestructible walls and the like
|
||||
T.baseturfs = baseturf
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
|
||||
/obj/effect/baseturf_helper/space
|
||||
name = "space baseturf editor"
|
||||
baseturf = /turf/open/space
|
||||
|
||||
/obj/effect/baseturf_helper/asteroid
|
||||
name = "asteroid baseturf editor"
|
||||
baseturf = /turf/open/floor/plating/asteroid
|
||||
|
||||
@@ -339,7 +339,7 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new)
|
||||
|
||||
if(crds)
|
||||
if(!no_changeturf && ispath(path, /turf))
|
||||
. = crds.ChangeTurf(path, FALSE, TRUE)
|
||||
. = crds.ChangeTurf(path, null, CHANGETURF_DEFER_CHANGE)
|
||||
else
|
||||
. = create_atom(path, crds)//first preloader pass
|
||||
|
||||
|
||||
@@ -321,9 +321,9 @@
|
||||
sleep(50)
|
||||
if(mode == BOT_REPAIRING && src.loc == target_turf)
|
||||
if(autotile) //Build the floor and include a tile.
|
||||
target_turf.ChangeTurf(/turf/open/floor/plasteel)
|
||||
target_turf.PlaceOnTop(/turf/open/floor/plasteel)
|
||||
else //Build a hull plating without a floor tile.
|
||||
target_turf.ChangeTurf(/turf/open/floor/plating)
|
||||
target_turf.PlaceOnTop(/turf/open/floor/plating)
|
||||
|
||||
else
|
||||
var/turf/open/floor/F = target_turf
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
for(var/F in RANGE_TURFS(1, src))
|
||||
if(ismineralturf(F))
|
||||
var/turf/closed/mineral/M = F
|
||||
M.ChangeTurf(M.turf_type,FALSE,FALSE,TRUE)
|
||||
M.ChangeTurf(M.turf_type, null, CHANGETURF_IGNORE_AIR)
|
||||
gps = new /obj/item/device/gps/internal(src)
|
||||
|
||||
/mob/living/simple_animal/hostile/spawner/lavaland/Destroy()
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
if(isplatingturf(T))
|
||||
var/turf/open/floor/plating/F = T
|
||||
if(prob(10 + F.burnt + 5*F.broken)) //broken or burnt plating is more susceptible to being destroyed
|
||||
F.ChangeTurf(F.baseturf)
|
||||
F.ScrapeAway()
|
||||
if(isfloorturf(T))
|
||||
var/turf/open/floor/F = T
|
||||
if(prob(reac_volume))
|
||||
@@ -65,7 +65,7 @@
|
||||
if(iswallturf(T))
|
||||
var/turf/closed/wall/W = T
|
||||
if(prob(reac_volume))
|
||||
W.ChangeTurf(/turf/open/floor/plating)
|
||||
W.ScrapeAway()
|
||||
|
||||
/datum/reagent/clf3/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
|
||||
if(istype(M))
|
||||
|
||||
@@ -7,8 +7,15 @@ All ShuttleMove procs go here
|
||||
// Called on every turf in the shuttle region, returns a bitflag for allowed movements of that turf
|
||||
// returns the new move_mode (based on the old)
|
||||
/turf/proc/fromShuttleMove(turf/newT, turf_type, list/baseturf_cache, move_mode)
|
||||
if(!(move_mode & MOVE_AREA) || (istype(src, turf_type) && baseturf_cache[baseturf]))
|
||||
if(!(move_mode & MOVE_AREA))
|
||||
return move_mode
|
||||
if(istype(src, turf_type))
|
||||
if(length(baseturfs))
|
||||
if(baseturf_cache[baseturfs[1]])
|
||||
return move_mode
|
||||
else if(baseturf_cache[baseturfs])
|
||||
return move_mode
|
||||
|
||||
return move_mode | MOVE_TURF | MOVE_CONTENTS
|
||||
|
||||
// Called from the new turf before anything has been moved
|
||||
@@ -45,9 +52,7 @@ All ShuttleMove procs go here
|
||||
if(newT == src) // In case of in place shuttle rotation shenanigans.
|
||||
return
|
||||
//Destination turf changes
|
||||
var/destination_turf_type = newT.type
|
||||
newT = copyTurf(newT)
|
||||
newT.baseturf = destination_turf_type
|
||||
newT.CopyOnTop(src, 1, 0) // We only want a surface copy
|
||||
//Air stuff
|
||||
newT.blocks_air = TRUE
|
||||
newT.air_update_turf(TRUE)
|
||||
@@ -63,9 +68,8 @@ All ShuttleMove procs go here
|
||||
/turf/proc/afterShuttleMove(turf/oldT, turf_type, baseturf_type, rotation)
|
||||
//Dealing with the turf we left behind
|
||||
oldT.TransferComponents(src)
|
||||
oldT.ChangeTurf(turf_type, baseturf_type, FALSE, TRUE)
|
||||
oldT.ChangeTurf(turf_type, baseturf_type, CHANGETURF_IGNORE_AIR) // TODO: make this oldT.ScrapeAway() which requires templating all shuttles
|
||||
|
||||
// Rotate and let the air move again
|
||||
if(rotation)
|
||||
shuttleRotate(rotation) //see shuttle_rotate.dm
|
||||
|
||||
|
||||
@@ -465,7 +465,7 @@
|
||||
var/turf/T1 = L1[i]
|
||||
if(!T1)
|
||||
continue
|
||||
if(T0.type != T0.baseturf)
|
||||
if(T0.type != T0.baseturfs)
|
||||
ripple_turfs += T1
|
||||
|
||||
return ripple_turfs
|
||||
|
||||
Reference in New Issue
Block a user