Fixed holodeck hard dels (#27415)

* Fixed holodeck hard dels, MURDERED VARIABLE COPYING

* air but differently

* Add return type hint
This commit is contained in:
DamianX
2020-08-09 15:21:10 +02:00
committed by GitHub
parent d4f19be152
commit 9efa3f14f2
3 changed files with 29 additions and 36 deletions

View File

@@ -184,6 +184,7 @@
return 0
/turf/return_air()
RETURN_TYPE(/datum/gas_mixture)
//Create gas mixture to hold data for passing
var/datum/gas_mixture/unsimulated/GM = new

View File

@@ -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)
return CR
proc/DuplicateObject(obj/original, var/perfectcopy = 0 , var/sameloc = 0)
if(!original)
return null
var/obj/O = null
if(sameloc)
O=new original.type(original.loc)
else
O=new original.type(locate(0,0,0))
if(perfectcopy)
if((O) && (original))
for(var/V in original.vars - variables_not_to_be_copied)
O.vars[V] = original.vars[V]
return O
// If you're looking at this proc and thinking "that's exactly what I need!"
// then you're wrong and you need to take a step back and reconsider.
/atom/movable/proc/DuplicateObject(var/location)
var/atom/movable/duplicate = new src.type(location)
duplicate.change_dir(dir)
duplicate.plane = plane
duplicate.layer = layer
duplicate.name = name
duplicate.desc = desc
duplicate.pixel_x = pixel_x
duplicate.pixel_y = pixel_y
duplicate.pixel_w = pixel_w
duplicate.pixel_z = pixel_z
return duplicate
/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]
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_icon_state1 = T.icon_state
var/old_icon1 = T.icon
@@ -1044,10 +1043,13 @@ proc/DuplicateObject(obj/original, var/perfectcopy = 0 , var/sameloc = 0)
continue moving
var/turf/X = B.ChangeTurf(T.type)
X.name = old_name
X.dir = old_dir1
X.icon_state = old_icon_state1
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/newobjs = 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)
newobjs += DuplicateObject(O , 1)
for(var/obj/O in newobjs)
O.forceMove(X)
newobjs += O.DuplicateObject(X)
for(var/mob/M in T)
@@ -1075,25 +1073,11 @@ proc/DuplicateObject(obj/original, var/perfectcopy = 0 , var/sameloc = 0)
mobs += M
for(var/mob/M in mobs)
newmobs += DuplicateObject(M , 1)
for(var/mob/M in newmobs)
M.forceMove(X)
newmobs += M.DuplicateObject(X)
copiedobjs += newobjs
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
refined_src -= T

View File

@@ -313,6 +313,14 @@
</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)
. = ..()
if(.)