mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-09 07:57:50 +00:00
@@ -370,6 +370,21 @@
|
||||
return
|
||||
for(var/atom/movable/AA in linked_area)
|
||||
INVOKE_EVENT(AA, /event/z_transition, "user" = AA, "to_z" = D.z, "from_z" = linked_port.z)
|
||||
if(istype(AA, /mob/living))
|
||||
var/mob/living/LL = AA
|
||||
if(istype(D,/obj/docking_port/destination/planet_surface))
|
||||
if(istype(linked_port,/obj/docking_port/destination/planet_surface))
|
||||
INVOKE_EVENT(LL, /event/planet_entered, LL, D.planet)
|
||||
INVOKE_EVENT(LL, /event/planet_exited, LL, linked_port.planet)
|
||||
continue
|
||||
LL.register_event(/event/planet_entered, D.planet, "on_mob_entered")
|
||||
LL.register_event(/event/planet_exited, D.planet, "on_mob_exited")
|
||||
INVOKE_EVENT(LL, /event/planet_entered, LL, D.planet)
|
||||
else if(istype(linked_port,/obj/docking_port/destination/planet_surface))
|
||||
INVOKE_EVENT(LL, /event/planet_exited, LL, linked_port.planet)
|
||||
LL.unregister_event(/event/planet_entered, linked_port.planet, "on_mob_entered")
|
||||
LL.unregister_event(/event/planet_exited, linked_port.planet, "on_mob_exited")
|
||||
|
||||
|
||||
if(transit_port && get_transit_delay())
|
||||
if(broadcast)
|
||||
@@ -391,14 +406,19 @@
|
||||
return
|
||||
|
||||
if(transit_port && get_transit_delay())
|
||||
if(use_transit == TRANSIT_ALWAYS || (use_transit == TRANSIT_ACROSS_Z_LEVELS && (linked_area.z != destination_port.z)))
|
||||
if(use_transit == TRANSIT_ALWAYS || (use_transit == TRANSIT_ACROSS_Z_LEVELS && (linked_area.z != destination_port.z)) || (istype(destination_port,/obj/docking_port/destination/planet_surface) || istype(linked_port,/obj/docking_port/destination/planet_surface)))
|
||||
close_all_doors()
|
||||
move_to_dock(transit_port)
|
||||
spawn(max(1,get_transit_delay()-5))
|
||||
for(var/obj/structure/shuttle/engine/propulsion/P in linked_area)
|
||||
spawn()
|
||||
P.shoot_exhaust()
|
||||
animate_transit()
|
||||
for(var/atom/A in linked_area.contents)
|
||||
animate(A)
|
||||
A.pixel_y = initial(A.pixel_y)
|
||||
if(istype(A,/mob/living))
|
||||
var/mob/living/M = A
|
||||
M << sound("sound/machines/hyperspace_progress.ogg", repeat = 0, wait = 1, channel = CHANNEL_AMBIENCE, volume = 75)
|
||||
sleep(get_transit_delay())
|
||||
|
||||
if(destination_port)
|
||||
@@ -415,9 +435,9 @@
|
||||
if(istype(A,/obj/structure/shuttle/engine/heater))
|
||||
var/obj/structure/shuttle/engine/heater/H = A
|
||||
H.activate()
|
||||
if(istype(A,/mob))
|
||||
var/mob/M = A
|
||||
M << sound("sound/machines/hyperspace_begin.ogg", repeat = 0, wait = 0, channel = CHANNEL_AMBIENCE, volume = 75)
|
||||
if(istype(A,/mob/living))
|
||||
var/mob/living/M = A
|
||||
M << sound("sound/machines/hyperspace_begin.ogg", repeat = 0, wait = 0, channel = CHANNEL_AMBIENCE, volume = 50)
|
||||
if(istype(A,/turf))
|
||||
var/turf/T = A
|
||||
for(var/obj/O in T.contents)
|
||||
@@ -431,33 +451,12 @@
|
||||
animate(pixel_y = base_y + variation, time = 10, easing = SINE_EASING, loop = -1)
|
||||
animate(pixel_y = base_y - variation, time = 10, easing = SINE_EASING)
|
||||
|
||||
/datum/shuttle/proc/animate_transit()
|
||||
var/variation = rand(1,2)
|
||||
for(var/atom/A in linked_area.contents)
|
||||
var/skip = FALSE
|
||||
A.pixel_y = initial(A.pixel_y)
|
||||
if(istype(A,/mob))
|
||||
var/mob/M = A
|
||||
M << sound("sound/machines/hyperspace_progress.ogg", repeat = 0, wait = 1, channel = CHANNEL_AMBIENCE, volume = 75)
|
||||
if(istype(A,/turf))
|
||||
var/turf/T = A
|
||||
for(var/obj/O in T.contents)
|
||||
if(istype(O,/obj/structure/shuttle/diag_wall))
|
||||
skip = TRUE
|
||||
break
|
||||
if(skip)
|
||||
continue
|
||||
var/base_y = initial(A.pixel_y)
|
||||
animate(A, pixel_y = base_y , time = 10, easing = SINE_EASING|EASE_OUT, loop = -1)
|
||||
animate(pixel_y = base_y - variation, time = 10, easing = SINE_EASING)
|
||||
animate(pixel_y = base_y + variation, time = 10, easing = SINE_EASING)
|
||||
|
||||
/datum/shuttle/proc/animate_landing()
|
||||
for(var/atom/A in linked_area.contents)
|
||||
var/skip = FALSE
|
||||
if(istype(A,/mob))
|
||||
var/mob/M = A
|
||||
M << sound("sound/machines/hyperspace_end.ogg", repeat = 0, wait = 0, channel = CHANNEL_AMBIENCE, volume = 75)
|
||||
if(istype(A,/mob/living))
|
||||
var/mob/living/M = A
|
||||
M << sound("sound/machines/hyperspace_end.ogg", repeat = 0, wait = 0, channel = CHANNEL_AMBIENCE, volume = 50)
|
||||
if(istype(A,/turf))
|
||||
var/turf/T = A
|
||||
for(var/obj/O in T.contents)
|
||||
@@ -1222,6 +1221,7 @@
|
||||
docking_port = new(port_turf)
|
||||
docking_port.dir = port_dir
|
||||
docking_port.areaname = "[planet.planet_name] surface"
|
||||
docking_port.planet = planet
|
||||
|
||||
if(planet.default_baseturf)
|
||||
docking_port.base_turf_type = planet.default_baseturf
|
||||
@@ -1289,7 +1289,7 @@
|
||||
for(var/rel_x = safe_x_min; rel_x <= safe_x_max; rel_x++)
|
||||
for(var/rel_y = safe_y_min; rel_y <= safe_y_max; rel_y++)
|
||||
var/turf/T = turf_matrix[rel_x][rel_y]
|
||||
if(T && !iswall(T) && !istype(T, /turf/unsimulated/mineral))
|
||||
if(T && !iswall(T) && !istype(T, /turf/unsimulated/mineral) && istype(T.loc, /area/planet) && !istype(T, /turf/unsimulated/beach/water) && !istype(T,/turf/unsimulated/floor/planetary/lava))
|
||||
search_positions += T
|
||||
|
||||
// Shuffle the search positions for randomization
|
||||
|
||||
@@ -202,6 +202,7 @@ var/global/list/adminbusteleportlocs = list()
|
||||
|
||||
/area/shuttle/Exited(atom/movable/Obj)
|
||||
..()
|
||||
animate(Obj)
|
||||
Obj.pixel_y = initial(Obj.pixel_y)
|
||||
|
||||
/area/shuttle/arrival
|
||||
|
||||
@@ -136,7 +136,8 @@
|
||||
break
|
||||
if(climate_added)
|
||||
break
|
||||
var/datum/climate/Cnew = SSweather.get_climate(T.z)
|
||||
var/datum/allocation/A = SSmapping.get_allocation(trf = T)
|
||||
var/datum/climate/Cnew = SSweather.get_climate(T.z,A)
|
||||
if(climate_added && Cnew)
|
||||
Cnew.register_weather_turf(T, TRUE)
|
||||
plane = EFFECTS_PLANE
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/turf/unsimulated/beach
|
||||
name = "Beach"
|
||||
icon = 'icons/misc/beach.dmi'
|
||||
plane = PLATING_PLANE
|
||||
|
||||
/turf/unsimulated/beach/New()
|
||||
..()
|
||||
|
||||
@@ -296,18 +296,12 @@ var/global/datum/shuttle/exploration/exploration_shuttle = new(starting_area = /
|
||||
can_link_to_computer = LINK_PASSWORD_ONLY
|
||||
password = TRUE
|
||||
stable = 1 //Don't stun everyone and don't throw anything when moving
|
||||
can_rotate = 0 //Sleepers, body scanners and multi-tile airlocks aren't rotated properly
|
||||
can_rotate = 1
|
||||
|
||||
/datum/shuttle/exploration/initialize()
|
||||
.=..()
|
||||
add_dock(/obj/docking_port/destination/exploration/station)
|
||||
add_dock(/obj/docking_port/destination/salvage/arrivals)
|
||||
add_dock(/obj/docking_port/destination/salvage/north)
|
||||
add_dock(/obj/docking_port/destination/salvage/east)
|
||||
add_dock(/obj/docking_port/destination/salvage/south)
|
||||
add_dock(/obj/docking_port/destination/salvage/mining)
|
||||
add_dock(/obj/docking_port/destination/salvage/trading_post)
|
||||
add_dock(/obj/docking_port/destination/salvage/derelict)
|
||||
add_dock(/obj/docking_port/destination/salvage/dj)
|
||||
|
||||
/datum/shuttle/exploration/after_flight()
|
||||
..()
|
||||
|
||||
@@ -116,7 +116,7 @@ export const PlanetScanner = (props) => {
|
||||
</Stack.Item>
|
||||
)}
|
||||
|
||||
{!powered && anchored && (
|
||||
{!powered && !!anchored && (
|
||||
<Stack.Item>
|
||||
<Section>
|
||||
<Box color="bad">No power</Box>
|
||||
@@ -124,7 +124,7 @@ export const PlanetScanner = (props) => {
|
||||
</Stack.Item>
|
||||
)}
|
||||
|
||||
{scanning_disabled && powered && anchored && (
|
||||
{!!scanning_disabled && !!powered && !!anchored && (
|
||||
<Stack.Item grow>
|
||||
<Section fill>
|
||||
<Stack fill vertical justify="center" align="center">
|
||||
@@ -180,7 +180,7 @@ export const PlanetScanner = (props) => {
|
||||
</Stack.Item>
|
||||
)}
|
||||
|
||||
{!!powered && anchored && !scanning_disabled && (
|
||||
{!!powered && !!anchored && !scanning_disabled && (
|
||||
<>
|
||||
<Stack.Item>
|
||||
<Section title="Scanner Status">
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user