mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
Fixed holodeck hard dels (#27415)
* Fixed holodeck hard dels, MURDERED VARIABLE COPYING * air but differently * Add return type hint
This commit is contained in:
@@ -184,6 +184,7 @@
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
/turf/return_air()
|
/turf/return_air()
|
||||||
|
RETURN_TYPE(/datum/gas_mixture)
|
||||||
//Create gas mixture to hold data for passing
|
//Create gas mixture to hold data for passing
|
||||||
var/datum/gas_mixture/unsimulated/GM = new
|
var/datum/gas_mixture/unsimulated/GM = new
|
||||||
|
|
||||||
|
|||||||
@@ -961,22 +961,20 @@ proc/GaussRandRound(var/sigma,var/roundto)
|
|||||||
var/datum/coords/CR = new(x_pos+C.x_pos,y_pos+C.y_pos,z_pos+C.z_pos)
|
var/datum/coords/CR = new(x_pos+C.x_pos,y_pos+C.y_pos,z_pos+C.z_pos)
|
||||||
return CR
|
return CR
|
||||||
|
|
||||||
proc/DuplicateObject(obj/original, var/perfectcopy = 0 , var/sameloc = 0)
|
// If you're looking at this proc and thinking "that's exactly what I need!"
|
||||||
if(!original)
|
// then you're wrong and you need to take a step back and reconsider.
|
||||||
return null
|
/atom/movable/proc/DuplicateObject(var/location)
|
||||||
|
var/atom/movable/duplicate = new src.type(location)
|
||||||
var/obj/O = null
|
duplicate.change_dir(dir)
|
||||||
|
duplicate.plane = plane
|
||||||
if(sameloc)
|
duplicate.layer = layer
|
||||||
O=new original.type(original.loc)
|
duplicate.name = name
|
||||||
else
|
duplicate.desc = desc
|
||||||
O=new original.type(locate(0,0,0))
|
duplicate.pixel_x = pixel_x
|
||||||
|
duplicate.pixel_y = pixel_y
|
||||||
if(perfectcopy)
|
duplicate.pixel_w = pixel_w
|
||||||
if((O) && (original))
|
duplicate.pixel_z = pixel_z
|
||||||
for(var/V in original.vars - variables_not_to_be_copied)
|
return duplicate
|
||||||
O.vars[V] = original.vars[V]
|
|
||||||
return O
|
|
||||||
|
|
||||||
|
|
||||||
/area/proc/copy_contents_to(var/area/A , var/platingRequired = 0 )
|
/area/proc/copy_contents_to(var/area/A , var/platingRequired = 0 )
|
||||||
@@ -1035,6 +1033,7 @@ proc/DuplicateObject(obj/original, var/perfectcopy = 0 , var/sameloc = 0)
|
|||||||
var/datum/coords/C_trg = refined_trg[B]
|
var/datum/coords/C_trg = refined_trg[B]
|
||||||
if(C_src.x_pos == C_trg.x_pos && C_src.y_pos == C_trg.y_pos)
|
if(C_src.x_pos == C_trg.x_pos && C_src.y_pos == C_trg.y_pos)
|
||||||
|
|
||||||
|
var/old_name = T.name
|
||||||
var/old_dir1 = T.dir
|
var/old_dir1 = T.dir
|
||||||
var/old_icon_state1 = T.icon_state
|
var/old_icon_state1 = T.icon_state
|
||||||
var/old_icon1 = T.icon
|
var/old_icon1 = T.icon
|
||||||
@@ -1044,10 +1043,13 @@ proc/DuplicateObject(obj/original, var/perfectcopy = 0 , var/sameloc = 0)
|
|||||||
continue moving
|
continue moving
|
||||||
|
|
||||||
var/turf/X = B.ChangeTurf(T.type)
|
var/turf/X = B.ChangeTurf(T.type)
|
||||||
|
X.name = old_name
|
||||||
X.dir = old_dir1
|
X.dir = old_dir1
|
||||||
X.icon_state = old_icon_state1
|
X.icon_state = old_icon_state1
|
||||||
X.icon = old_icon1 //Shuttle floors are in shuttle.dmi while the defaults are floors.dmi
|
X.icon = old_icon1 //Shuttle floors are in shuttle.dmi while the defaults are floors.dmi
|
||||||
|
|
||||||
|
X.return_air().copy_from(T.return_air())
|
||||||
|
|
||||||
var/list/objs = new/list()
|
var/list/objs = new/list()
|
||||||
var/list/newobjs = new/list()
|
var/list/newobjs = new/list()
|
||||||
var/list/mobs = new/list()
|
var/list/mobs = new/list()
|
||||||
@@ -1062,11 +1064,7 @@ proc/DuplicateObject(obj/original, var/perfectcopy = 0 , var/sameloc = 0)
|
|||||||
|
|
||||||
|
|
||||||
for(var/obj/O in objs)
|
for(var/obj/O in objs)
|
||||||
newobjs += DuplicateObject(O , 1)
|
newobjs += O.DuplicateObject(X)
|
||||||
|
|
||||||
|
|
||||||
for(var/obj/O in newobjs)
|
|
||||||
O.forceMove(X)
|
|
||||||
|
|
||||||
for(var/mob/M in T)
|
for(var/mob/M in T)
|
||||||
|
|
||||||
@@ -1075,25 +1073,11 @@ proc/DuplicateObject(obj/original, var/perfectcopy = 0 , var/sameloc = 0)
|
|||||||
mobs += M
|
mobs += M
|
||||||
|
|
||||||
for(var/mob/M in mobs)
|
for(var/mob/M in mobs)
|
||||||
newmobs += DuplicateObject(M , 1)
|
newmobs += M.DuplicateObject(X)
|
||||||
|
|
||||||
for(var/mob/M in newmobs)
|
|
||||||
M.forceMove(X)
|
|
||||||
|
|
||||||
copiedobjs += newobjs
|
copiedobjs += newobjs
|
||||||
copiedobjs += newmobs
|
copiedobjs += newmobs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for(var/V in T.vars - variables_not_to_be_copied)
|
|
||||||
X.vars[V] = T.vars[V]
|
|
||||||
|
|
||||||
// var/area/AR = X.loc
|
|
||||||
|
|
||||||
// if(AR.dynamic_lighting)
|
|
||||||
// X.opacity = !X.opacity
|
|
||||||
// X.sd_SetOpacity(!X.opacity) //TODO: rewrite this code so it's not messed by lighting ~Carn
|
|
||||||
|
|
||||||
toupdate += X
|
toupdate += X
|
||||||
|
|
||||||
refined_src -= T
|
refined_src -= T
|
||||||
|
|||||||
@@ -313,6 +313,14 @@
|
|||||||
</ul>"}
|
</ul>"}
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/conveyor/DuplicateObject(var/location)
|
||||||
|
var/obj/machinery/conveyor/duplicate = ..()
|
||||||
|
duplicate.in_reverse = in_reverse
|
||||||
|
duplicate.backwards = backwards
|
||||||
|
duplicate.forwards = forwards
|
||||||
|
duplicate.movedir = movedir
|
||||||
|
return duplicate
|
||||||
|
|
||||||
/obj/machinery/conveyor/multitool_topic(var/mob/user,var/list/href_list,var/obj/O)
|
/obj/machinery/conveyor/multitool_topic(var/mob/user,var/list/href_list,var/obj/O)
|
||||||
. = ..()
|
. = ..()
|
||||||
if(.)
|
if(.)
|
||||||
|
|||||||
Reference in New Issue
Block a user