Update shuttle.dm
This commit is contained in:
@@ -474,200 +474,6 @@
|
||||
for(var/obj/machinery/door/poddoor/shuttledock/pod in GLOB.airlocks)
|
||||
pod.check()
|
||||
|
||||
<<<<<<< HEAD
|
||||
//this is the main proc. It instantly moves our mobile port to stationary port new_dock
|
||||
/obj/docking_port/mobile/proc/dock(obj/docking_port/stationary/new_dock, movement_direction, force=FALSE)
|
||||
// Crashing this ship with NO SURVIVORS
|
||||
|
||||
if(new_dock.get_docked() == src)
|
||||
remove_ripples()
|
||||
return DOCKING_SUCCESS
|
||||
|
||||
if(!force)
|
||||
if(!check_dock(new_dock))
|
||||
return DOCKING_BLOCKED
|
||||
if(!canMove())
|
||||
return DOCKING_IMMOBILIZED
|
||||
|
||||
var/obj/docking_port/stationary/old_dock = get_docked()
|
||||
|
||||
// The turf that gets placed under where the shuttle moved from
|
||||
var/underlying_turf_type = /turf/open/space
|
||||
|
||||
// The baseturf that the gets assigned to the turf_type above
|
||||
var/underlying_baseturf_type = /turf/open/space
|
||||
|
||||
// The area that gets placed under where the shuttle moved from
|
||||
var/underlying_area_type = /area/space
|
||||
|
||||
// The baseturf cache is a typecache of what counts as a baseturf to be left behind
|
||||
var/list/baseturf_cache
|
||||
if(old_dock) //Dock overwrites
|
||||
if(old_dock.turf_type)
|
||||
underlying_turf_type = old_dock.turf_type
|
||||
if(old_dock.baseturf_type)
|
||||
underlying_baseturf_type = old_dock.baseturf_type
|
||||
if(old_dock.area_type)
|
||||
underlying_area_type = old_dock.area_type
|
||||
if(old_dock.baseturf_cache)
|
||||
baseturf_cache = old_dock.baseturf_cache
|
||||
if(!baseturf_cache)
|
||||
baseturf_cache = typecacheof(underlying_baseturf_type)
|
||||
|
||||
/**************************************************************************************************************
|
||||
old_turfs is an associative list with a turf:bitflag structure
|
||||
new_turfs is a standard list composed of turf instances
|
||||
The bitflag contains the data for what inhabitants of that coordinate should be moved to the new location
|
||||
The bitflags can be found in __DEFINES/shuttles.dm
|
||||
*/
|
||||
var/list/old_turfs = return_ordered_turfs(x, y, z, dir)
|
||||
var/list/new_turfs = return_ordered_turfs(new_dock.x, new_dock.y, new_dock.z, new_dock.dir)
|
||||
/**************************************************************************************************************/
|
||||
|
||||
// The underlying old area is the area assumed to be under the shuttle's starting location
|
||||
// If it no longer/has never existed it will be created
|
||||
var/area/underlying_old_area = locate(underlying_area_type) in GLOB.sortedAreas
|
||||
if(!underlying_old_area)
|
||||
underlying_old_area = new underlying_area_type(null)
|
||||
|
||||
var/rotation = 0
|
||||
if(new_dock.dir != dir) //Even when the dirs are the same rotation is coming out as not 0 for some reason
|
||||
rotation = dir2angle(new_dock.dir)-dir2angle(dir)
|
||||
if ((rotation % 90) != 0)
|
||||
rotation += (rotation % 90) //diagonal rotations not allowed, round up
|
||||
rotation = SimplifyDegrees(rotation)
|
||||
|
||||
if(!movement_direction)
|
||||
movement_direction = turn(preferred_direction, 180)
|
||||
|
||||
remove_ripples()
|
||||
|
||||
var/list/moved_atoms = list() //Everything not a turf that gets moved in the shuttle
|
||||
var/list/areas_to_move = list() //unique assoc list of areas on turfs being moved
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
/****************************************All beforeShuttleMove procs*****************************************/
|
||||
|
||||
for(var/i in 1 to old_turfs.len)
|
||||
CHECK_TICK
|
||||
var/turf/oldT = old_turfs[i]
|
||||
var/turf/newT = new_turfs[i]
|
||||
if(!newT)
|
||||
return DOCKING_NULL_DESTINATION
|
||||
if(!oldT)
|
||||
return DOCKING_NULL_SOURCE
|
||||
|
||||
var/area/old_area = oldT.loc
|
||||
var/move_mode = old_area.beforeShuttleMove(shuttle_areas) //areas
|
||||
|
||||
var/list/old_contents = oldT.contents
|
||||
for(var/k in 1 to old_contents.len)
|
||||
CHECK_TICK
|
||||
var/atom/movable/moving_atom = old_contents[k]
|
||||
if(moving_atom.loc != oldT) //fix for multi-tile objects
|
||||
continue
|
||||
move_mode = moving_atom.beforeShuttleMove(newT, rotation, move_mode) //atoms
|
||||
|
||||
move_mode = oldT.fromShuttleMove(newT, underlying_turf_type, baseturf_cache, move_mode) //turfs
|
||||
move_mode = newT.toShuttleMove(oldT, move_mode , src) //turfs
|
||||
|
||||
if(move_mode & MOVE_AREA)
|
||||
areas_to_move[old_area] = TRUE
|
||||
|
||||
old_turfs[oldT] = move_mode
|
||||
|
||||
/*******************************************Hiding turfs if necessary*******************************************/
|
||||
|
||||
var/list/new_hidden_turfs
|
||||
if(hidden)
|
||||
new_hidden_turfs = list()
|
||||
for(var/i in 1 to old_turfs.len)
|
||||
CHECK_TICK
|
||||
var/turf/oldT = old_turfs[i]
|
||||
if(old_turfs[oldT] & MOVE_TURF)
|
||||
new_hidden_turfs += new_turfs[i]
|
||||
SSshuttle.update_hidden_docking_ports(null, new_hidden_turfs)
|
||||
|
||||
/*******************************************All onShuttleMove procs******************************************/
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
for(var/i in 1 to old_turfs.len)
|
||||
var/turf/oldT = old_turfs[i]
|
||||
var/turf/newT = new_turfs[i]
|
||||
var/move_mode = old_turfs[oldT]
|
||||
if(move_mode & MOVE_CONTENTS)
|
||||
for(var/k in oldT)
|
||||
var/atom/movable/moving_atom = k
|
||||
if(moving_atom.loc != oldT) //fix for multi-tile objects
|
||||
continue
|
||||
moving_atom.onShuttleMove(newT, oldT, movement_force, movement_direction, old_dock, src) //atoms
|
||||
moved_atoms[moving_atom] = oldT
|
||||
|
||||
if(move_mode & MOVE_TURF)
|
||||
oldT.onShuttleMove(newT, movement_force, movement_direction) //turfs
|
||||
|
||||
if(move_mode & MOVE_AREA)
|
||||
var/area/shuttle_area = oldT.loc
|
||||
shuttle_area.onShuttleMove(oldT, newT, underlying_old_area) //areas
|
||||
|
||||
/******************************************All afterShuttleMove procs****************************************/
|
||||
|
||||
underlying_old_area.afterShuttleMove()
|
||||
|
||||
// Parallax handling
|
||||
// This needs to be done before the atom after move
|
||||
var/new_parallax_dir = FALSE
|
||||
if(istype(new_dock, /obj/docking_port/stationary/transit))
|
||||
new_parallax_dir = preferred_direction
|
||||
for(var/i in 1 to areas_to_move.len)
|
||||
CHECK_TICK
|
||||
var/area/internal_area = areas_to_move[i]
|
||||
internal_area.afterShuttleMove(new_parallax_dir) //areas
|
||||
|
||||
for(var/i in 1 to old_turfs.len)
|
||||
CHECK_TICK
|
||||
if(!(old_turfs[old_turfs[i]] & MOVE_TURF))
|
||||
continue
|
||||
var/turf/oldT = old_turfs[i]
|
||||
var/turf/newT = new_turfs[i]
|
||||
newT.afterShuttleMove(oldT, underlying_turf_type, underlying_baseturf_type, rotation) //turfs
|
||||
|
||||
for(var/i in 1 to moved_atoms.len)
|
||||
CHECK_TICK
|
||||
var/atom/movable/moved_object = moved_atoms[i]
|
||||
if(QDELETED(moved_object))
|
||||
continue
|
||||
var/turf/oldT = moved_atoms[moved_object]
|
||||
moved_object.afterShuttleMove(oldT, movement_force, dir, preferred_direction, movement_direction, rotation)//atoms
|
||||
|
||||
for(var/i in 1 to old_turfs.len)
|
||||
CHECK_TICK
|
||||
// Objects can block air so either turf or content changes means an air update is needed
|
||||
if(!(old_turfs[old_turfs[i]] & MOVE_CONTENTS | MOVE_TURF))
|
||||
continue
|
||||
var/turf/oldT = old_turfs[i]
|
||||
var/turf/newT = new_turfs[i]
|
||||
oldT.blocks_air = initial(oldT.blocks_air)
|
||||
oldT.air_update_turf(TRUE)
|
||||
newT.blocks_air = initial(newT.blocks_air)
|
||||
newT.air_update_turf(TRUE)
|
||||
|
||||
/*******************************************Unhiding turfs if necessary******************************************/
|
||||
|
||||
if(new_hidden_turfs)
|
||||
SSshuttle.update_hidden_docking_ports(hidden_turfs, null)
|
||||
hidden_turfs = new_hidden_turfs
|
||||
|
||||
check_poddoors()
|
||||
new_dock.last_dock_time = world.time
|
||||
setDir(new_dock.dir)
|
||||
|
||||
return DOCKING_SUCCESS
|
||||
|
||||
=======
|
||||
>>>>>>> ca603a6... a new file for dock and its new fractured existence (#33627)
|
||||
/obj/docking_port/mobile/proc/findRoundstartDock()
|
||||
return SSshuttle.getDock(roundstart_move)
|
||||
|
||||
@@ -940,4 +746,4 @@
|
||||
mode = SHUTTLE_ENDGAME
|
||||
|
||||
/obj/docking_port/mobile/emergency/on_emergency_dock()
|
||||
return
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user