/atom New() => Initialize() [MDB IGNORE] (#8298)

* Find and replace argless atom New() to Initialize().

* Manual replacement of no-arg New() to Initialize().

* Manually replacing remaining New() overrides.

* Fixing linter issues with now-removed New() args.

* Tidying area init overrides.

* Porting Neb's atom subsystem.

* Trying to isolate init problems.

* Adjusting Init code post-test.

* Merging duplicate Initialize() procs.

* Merge resolution.
This commit is contained in:
MistakeNot4892
2021-11-14 19:09:14 +11:00
committed by GitHub
parent 0051b29ead
commit 2f0a618d45
589 changed files with 2903 additions and 3005 deletions

View File

@@ -34,8 +34,8 @@ Pipelines + Other Objects -> Pipe network
var/obj/machinery/atmospherics/node1
var/obj/machinery/atmospherics/node2
/obj/machinery/atmospherics/New(loc, newdir)
..()
/obj/machinery/atmospherics/Initialize(var/ml, newdir)
. = ..()
if(!icon_manager)
icon_manager = new()
if(!isnull(newdir))

View File

@@ -9,8 +9,8 @@
var/datum/pipe_network/network1
var/datum/pipe_network/network2
/obj/machinery/atmospherics/binary/New()
..()
/obj/machinery/atmospherics/binary/Initialize()
. = ..()
air1 = new
air2 = new

View File

@@ -23,8 +23,8 @@
density = 1
/obj/machinery/atmospherics/binary/circulator/New()
..()
/obj/machinery/atmospherics/binary/circulator/Initialize()
. = ..()
desc = initial(desc) + " Its outlet port is to the [dir2text(dir)]."
air1.volume = 400

View File

@@ -42,8 +42,10 @@
//2: Do not pass input_pressure_min
//4: Do not pass output_pressure_max
/obj/machinery/atmospherics/binary/dp_vent_pump/New()
..()
/obj/machinery/atmospherics/binary/dp_vent_pump/Initialize()
. = ..()
if(frequency)
set_frequency(frequency)
air1.volume = ATMOS_DEFAULT_VOLUME_PUMP
air2.volume = ATMOS_DEFAULT_VOLUME_PUMP
icon = null
@@ -55,8 +57,8 @@
/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume
name = "Large Dual Port Air Vent"
/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume/New()
..()
/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume/Initialize()
. = ..()
air1.volume = ATMOS_DEFAULT_VOLUME_PUMP + 800
air2.volume = ATMOS_DEFAULT_VOLUME_PUMP + 800
@@ -194,11 +196,6 @@
return 1
/obj/machinery/atmospherics/binary/dp_vent_pump/Initialize()
. = ..()
if(frequency)
set_frequency(frequency)
/obj/machinery/atmospherics/binary/dp_vent_pump/examine(mob/user)
. = ..()
if(Adjacent(user))

View File

@@ -27,10 +27,12 @@
var/id = null
var/datum/radio_frequency/radio_connection
/obj/machinery/atmospherics/binary/passive_gate/New()
..()
/obj/machinery/atmospherics/binary/passive_gate/Initialize()
. = ..()
air1.volume = ATMOS_DEFAULT_VOLUME_PUMP * 2.5
air2.volume = ATMOS_DEFAULT_VOLUME_PUMP * 2.5
if(frequency)
set_frequency(frequency)
/obj/machinery/atmospherics/binary/passive_gate/Destroy()
unregister_radio(src, frequency)
@@ -166,14 +168,8 @@
)
radio_connection.post_signal(src, signal, radio_filter = RADIO_ATMOSIA)
return 1
/obj/machinery/atmospherics/binary/passive_gate/Initialize()
. = ..()
if(frequency)
set_frequency(frequency)
/obj/machinery/atmospherics/binary/passive_gate/receive_signal(datum/signal/signal)
if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command"))
return 0

View File

@@ -37,10 +37,12 @@ Thus, the two variables affect pump operation are set in New():
var/id = null
var/datum/radio_frequency/radio_connection
/obj/machinery/atmospherics/binary/pump/New()
..()
/obj/machinery/atmospherics/binary/pump/Initialize()
. = ..()
air1.volume = ATMOS_DEFAULT_VOLUME_PUMP
air2.volume = ATMOS_DEFAULT_VOLUME_PUMP
if(frequency)
set_frequency(frequency)
/obj/machinery/atmospherics/binary/pump/Destroy()
unregister_radio(src, frequency)
@@ -166,11 +168,6 @@ Thus, the two variables affect pump operation are set in New():
return data
/obj/machinery/atmospherics/binary/pump/Initialize()
. = ..()
if(frequency)
set_frequency(frequency)
/obj/machinery/atmospherics/binary/pump/receive_signal(datum/signal/signal)
if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command"))
return 0

View File

@@ -20,8 +20,8 @@
var/list/filtering_outputs = list() //maps gasids to gas_mixtures
/obj/machinery/atmospherics/omni/atmos_filter/New()
..()
/obj/machinery/atmospherics/omni/atmos_filter/Initialize()
. = ..()
rebuild_filtering_list()
for(var/datum/omni_port/P in ports)
P.air.volume = ATMOS_DEFAULT_VOLUME_FILTER

View File

@@ -24,8 +24,8 @@
var/list/mixing_inputs = list()
/obj/machinery/atmospherics/omni/mixer/New()
..()
/obj/machinery/atmospherics/omni/mixer/Initialize()
. = ..()
if(mapper_set())
var/con = 0
for(var/datum/omni_port/P in ports)

View File

@@ -25,8 +25,8 @@
var/list/ports = new()
/obj/machinery/atmospherics/omni/New()
..()
/obj/machinery/atmospherics/omni/Initialize()
. = ..()
icon_state = "base"
ports = new()

View File

@@ -39,8 +39,8 @@
if(frequency)
radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA)
/obj/machinery/atmospherics/trinary/atmos_filter/New()
..()
/obj/machinery/atmospherics/trinary/atmos_filter/Initialize()
. = ..()
switch(filter_type)
if(0) //removing hydrocarbons
filtered_out = list("phoron")
@@ -56,6 +56,8 @@
air1.volume = ATMOS_DEFAULT_VOLUME_FILTER
air2.volume = ATMOS_DEFAULT_VOLUME_FILTER
air3.volume = ATMOS_DEFAULT_VOLUME_FILTER
if(frequency)
set_frequency(frequency)
/obj/machinery/atmospherics/trinary/atmos_filter/Destroy()
unregister_radio(src, frequency)
@@ -106,11 +108,6 @@
return 1
/obj/machinery/atmospherics/trinary/atmos_filter/Initialize()
. = ..()
if(frequency)
set_frequency(frequency)
/obj/machinery/atmospherics/trinary/atmos_filter/attack_hand(user) // -- TLE
if(..())
return

View File

@@ -37,8 +37,8 @@
icon_state += "off"
update_use_power(USE_POWER_OFF)
/obj/machinery/atmospherics/trinary/mixer/New()
..()
/obj/machinery/atmospherics/trinary/mixer/Initialize()
. = ..()
air1.volume = ATMOS_DEFAULT_VOLUME_MIXER
air2.volume = ATMOS_DEFAULT_VOLUME_MIXER
air3.volume = ATMOS_DEFAULT_VOLUME_MIXER * 1.5

View File

@@ -17,8 +17,8 @@
var/datum/pipe_network/network2
var/datum/pipe_network/network3
/obj/machinery/atmospherics/trinary/New()
..()
/obj/machinery/atmospherics/trinary/Initialize()
. = ..()
air1 = new
air2 = new

View File

@@ -24,9 +24,11 @@
level = 1
/obj/machinery/atmospherics/unary/outlet_injector/New()
..()
/obj/machinery/atmospherics/unary/outlet_injector/Initialize()
. = ..()
air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP + 500 //Give it a small reservoir for injecting. Also allows it to have a higher flow rate limit than vent pumps, to differentiate injectors a bit more.
if(frequency)
set_frequency(frequency)
/obj/machinery/atmospherics/unary/outlet_injector/Destroy()
unregister_radio(src, frequency)
@@ -122,11 +124,6 @@
return 1
/obj/machinery/atmospherics/unary/outlet_injector/Initialize()
. = ..()
if(frequency)
set_frequency(frequency)
/obj/machinery/atmospherics/unary/outlet_injector/receive_signal(datum/signal/signal)
if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command"))
return 0

View File

@@ -13,8 +13,8 @@
var/welded = 0 //defining this here for ventcrawl stuff
/obj/machinery/atmospherics/unary/New()
..()
/obj/machinery/atmospherics/unary/Initialize()
. = ..()
air_contents = new
air_contents.volume = 200

View File

@@ -78,9 +78,6 @@
/obj/machinery/atmospherics/unary/vent_pump/Initialize()
. = ..()
soundloop = new(list(src), FALSE)
/obj/machinery/atmospherics/unary/vent_pump/New()
..()
air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP
icon = null
@@ -108,8 +105,8 @@
icon_connect_type = "-aux"
connect_types = CONNECT_TYPE_AUX //connects to aux pipes
/obj/machinery/atmospherics/unary/vent_pump/high_volume/New()
..()
/obj/machinery/atmospherics/unary/vent_pump/high_volume/Initialize()
. = ..()
air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP + 800
/obj/machinery/atmospherics/unary/vent_pump/engine
@@ -117,8 +114,8 @@
power_channel = ENVIRON
power_rating = 30000 //15 kW ~ 20 HP
/obj/machinery/atmospherics/unary/vent_pump/engine/New()
..()
/obj/machinery/atmospherics/unary/vent_pump/engine/Initialize()
. = ..()
air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP + 500 //meant to match air injector
/obj/machinery/atmospherics/unary/vent_pump/update_icon(var/safety = 0)

View File

@@ -32,8 +32,8 @@
use_power = USE_POWER_IDLE
icon_state = "map_scrubber_on"
/obj/machinery/atmospherics/unary/vent_scrubber/New()
..()
/obj/machinery/atmospherics/unary/vent_scrubber/Initialize()
. = ..()
air_contents.volume = ATMOS_DEFAULT_VOLUME_FILTER
icon = null

View File

@@ -23,8 +23,8 @@
buckle_lying = 1
// BubbleWrap
/obj/machinery/atmospherics/pipe/simple/heat_exchanging/New()
..()
/obj/machinery/atmospherics/pipe/simple/heat_exchanging/Initialize()
. = ..()
// BubbleWrap END
color = "#404040" //we don't make use of the fancy overlay system for colours, use this to set the default.

View File

@@ -19,8 +19,8 @@
level = 1
/obj/machinery/atmospherics/pipe/manifold/New()
..()
/obj/machinery/atmospherics/pipe/manifold/Initialize()
. = ..()
alpha = 255
icon = null

View File

@@ -20,8 +20,8 @@
level = 1
/obj/machinery/atmospherics/pipe/manifold4w/New()
..()
/obj/machinery/atmospherics/pipe/manifold4w/Initialize()
. = ..()
alpha = 255
icon = null

View File

@@ -24,10 +24,10 @@
/obj/machinery/atmospherics/pipe/drain_power()
return -1
/obj/machinery/atmospherics/pipe/New()
/obj/machinery/atmospherics/pipe/Initialize()
if(istype(get_turf(src), /turf/simulated/wall) || istype(get_turf(src), /turf/simulated/shuttle/wall) || istype(get_turf(src), /turf/unsimulated/wall))
level = 1
..()
. = ..()
/obj/machinery/atmospherics/pipe/hides_under_flooring()
return level != 2

View File

@@ -26,8 +26,8 @@
level = 1
/obj/machinery/atmospherics/pipe/simple/New()
..()
/obj/machinery/atmospherics/pipe/simple/Initialize()
. = ..()
// Pipe colors and icon states are handled by an image cache - so color and icon should
// be null. For mapping purposes color is defined in the object definitions.

View File

@@ -18,9 +18,9 @@
pipe_flags = PIPING_DEFAULT_LAYER_ONLY
density = 1
/obj/machinery/atmospherics/pipe/tank/New()
/obj/machinery/atmospherics/pipe/tank/Initialize()
icon_state = "air"
..()
. = ..()
/obj/machinery/atmospherics/pipe/tank/init_dir()
initialize_directions = dir
@@ -74,58 +74,49 @@
name = "Pressure Tank (Air)"
icon_state = "air_map"
/obj/machinery/atmospherics/pipe/tank/air/New()
/obj/machinery/atmospherics/pipe/tank/air/Initialize()
air_temporary = new
air_temporary.volume = volume
air_temporary.temperature = T20C
air_temporary.adjust_multi("oxygen", (start_pressure*O2STANDARD)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature), \
"nitrogen",(start_pressure*N2STANDARD)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature))
..()
. = ..()
icon_state = "air"
/obj/machinery/atmospherics/pipe/tank/oxygen
name = "Pressure Tank (Oxygen)"
icon_state = "o2_map"
/obj/machinery/atmospherics/pipe/tank/oxygen/New()
/obj/machinery/atmospherics/pipe/tank/oxygen/Initialize()
air_temporary = new
air_temporary.volume = volume
air_temporary.temperature = T20C
air_temporary.adjust_gas("oxygen", (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature))
..()
. = ..()
icon_state = "o2"
/obj/machinery/atmospherics/pipe/tank/nitrogen
name = "Pressure Tank (Nitrogen)"
icon_state = "n2_map"
/obj/machinery/atmospherics/pipe/tank/nitrogen/New()
/obj/machinery/atmospherics/pipe/tank/nitrogen/Initialize()
air_temporary = new
air_temporary.volume = volume
air_temporary.temperature = T20C
air_temporary.adjust_gas("nitrogen", (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature))
..()
. = ..()
icon_state = "n2"
/obj/machinery/atmospherics/pipe/tank/carbon_dioxide
name = "Pressure Tank (Carbon Dioxide)"
icon_state = "co2_map"
/obj/machinery/atmospherics/pipe/tank/carbon_dioxide/New()
/obj/machinery/atmospherics/pipe/tank/carbon_dioxide/Initialize()
air_temporary = new
air_temporary.volume = volume
air_temporary.temperature = T20C
air_temporary.adjust_gas("carbon_dioxide", (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature))
..()
. = ..()
icon_state = "co2"
/obj/machinery/atmospherics/pipe/tank/phoron
@@ -133,26 +124,22 @@
icon_state = "phoron_map"
connect_types = CONNECT_TYPE_REGULAR|CONNECT_TYPE_FUEL
/obj/machinery/atmospherics/pipe/tank/phoron/New()
/obj/machinery/atmospherics/pipe/tank/phoron/Initialize()
air_temporary = new
air_temporary.volume = volume
air_temporary.temperature = T20C
air_temporary.adjust_gas("phoron", (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature))
..()
. = ..()
icon_state = "phoron"
/obj/machinery/atmospherics/pipe/tank/nitrous_oxide
name = "Pressure Tank (Nitrous Oxide)"
icon_state = "n2o_map"
/obj/machinery/atmospherics/pipe/tank/nitrous_oxide/New()
/obj/machinery/atmospherics/pipe/tank/nitrous_oxide/Initialize()
air_temporary = new
air_temporary.volume = volume
air_temporary.temperature = T0C
air_temporary.adjust_gas("nitrous_oxide", (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature))
..()
. = ..()
icon_state = "n2o"

View File

@@ -180,8 +180,8 @@ If it gains pressure too slowly, it may leak or just rupture instead of explodin
animate(src, color = fire_color(air_contents.temperature), 5)
set_light(l_color = color)
/obj/fire/New(newLoc,fl)
..()
/obj/fire/Initialize(var/ml, fl)
. = ..()
if(!istype(loc, /turf))
qdel(src)

View File

@@ -20,8 +20,9 @@
#define TIMER_ID_NULL -1
#define INITIALIZATION_INSSATOMS 0 //New should not call Initialize
#define INITIALIZATION_INNEW_MAPLOAD 1 //New should call Initialize(TRUE)
#define INITIALIZATION_INNEW_REGULAR 2 //New should call Initialize(FALSE)
#define INITIALIZATION_INSSATOMS_LATE 1 //New should not call Initialize; after the first pass is complete (handled differently)
#define INITIALIZATION_INNEW_MAPLOAD 2 //New should call Initialize(TRUE)
#define INITIALIZATION_INNEW_REGULAR 3 //New should call Initialize(FALSE)
#define INITIALIZE_HINT_NORMAL 0 //Nothing happens
#define INITIALIZE_HINT_LATELOAD 1 //Call LateInitialize

View File

@@ -108,7 +108,7 @@
if(istype(T,/turf/simulated/shuttle))
shuttlework = 1
var/turf/simulated/shuttle/SS = T
if(!SS.landed_holder) SS.landed_holder = new(turf = SS)
if(!SS.landed_holder) SS.landed_holder = new(SS)
X = SS.landed_holder.land_on(B)
//Generic non-shuttle turf move.

View File

@@ -803,7 +803,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
if(istype(T,/turf/simulated/shuttle))
shuttlework = 1
var/turf/simulated/shuttle/SS = T
if(!SS.landed_holder) SS.landed_holder = new(turf = SS)
if(!SS.landed_holder) SS.landed_holder = new(SS)
X = SS.landed_holder.land_on(B)
//Generic non-shuttle turf move.
@@ -1310,8 +1310,9 @@ var/mob/dview/dview_mob = new
color = origin.color
set_light(origin.light_range, origin.light_power, origin.light_color)
/mob/dview/New()
..()
INITIALIZE_IMMEDIATE(/mob/dview)
/mob/dview/Initialize()
. = ..()
// We don't want to be in any mob lists; we're a dummy not a mob.
mob_list -= src
if(stat == DEAD)

View File

@@ -12,12 +12,13 @@
var/mob/my_mob = null // The mob that possesses this hud object.
/obj/screen/movable/ability_master/New(owner)
/obj/screen/movable/ability_master/Initialize(ml, owner)
. = ..()
if(owner)
my_mob = owner
update_abilities(0, owner)
else
message_admins("ERROR: ability_master's New() was not given an owner argument. This is a bug.")
message_admins("ERROR: ability_master's Initialize() was not given an owner argument. This is a bug.")
/obj/screen/movable/ability_master/Destroy()
. = ..()
@@ -178,9 +179,9 @@
ability_master.toggle_open(1)
client.screen -= ability_master
/mob/New()
..()
ability_master = new /obj/screen/movable/ability_master(src)
/mob/Initialize()
. = ..()
ability_master = new /obj/screen/movable/ability_master(null, src)
///////////ACTUAL ABILITIES////////////
//This is what you click to do things//

View File

@@ -622,8 +622,9 @@
plane = PLANE_PLAYER_HUD_ABOVE
var/client/holder
/obj/screen/splash/New(client/C, visible)
. = ..()
INITIALIZE_IMMEDIATE(/obj/screen/splash)
/obj/screen/splash/Initialize(var/ml, client/C, visible)
. = ..(ml)
holder = C
@@ -691,6 +692,9 @@
var/obj/screen/mapper/extras_holder/extras_holder
/obj/screen/movable/mapper_holder/Initialize(mapload, newowner)
. = ..()
owner = newowner
mask_full = new(src) // Full white square mask
@@ -778,8 +782,8 @@
mouse_opacity = 0
var/obj/screen/movable/mapper_holder/parent
/obj/screen/mapper/New()
..()
/obj/screen/mapper/Initialize()
. = ..()
parent = loc
/obj/screen/mapper/Destroy()

View File

@@ -251,8 +251,8 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle = new
layer = TURF_LAYER
plane = TURF_PLANE
/obj/effect/bgstar/New()
..()
/obj/effect/bgstar/Initialize()
. = ..()
pixel_x += rand(-2,30)
pixel_y += rand(-2,30)
var/starnum = pick("1", "1", "1", "2", "3", "4")

View File

@@ -8,70 +8,66 @@ SUBSYSTEM_DEF(atoms)
init_order = INIT_ORDER_ATOMS
flags = SS_NO_FIRE
var/static/initialized = INITIALIZATION_INSSATOMS
// var/list/created_atoms // This is never used, so don't bother. ~Leshana
var/static/old_initialized
// override and GetArguments() exists for mod-override/downstream hook functionality.
// Useful for total-overhaul type modifications.
var/adjust_init_arguments = FALSE
var/atom_init_stage = INITIALIZATION_INSSATOMS
var/old_init_stage
var/list/late_loaders
var/list/created_atoms
var/list/BadInitializeCalls = list()
/datum/controller/subsystem/atoms/Initialize(timeofday)
if(!plant_controller) // Initialize seed repo for /obj/item/seed and /obj/item/weapon/grown
plant_controller = new
setupgenetics() //to set the mutations' place in structural enzymes, so initializers know where to put mutations.
initialized = INITIALIZATION_INNEW_MAPLOAD
to_world_log("Initializing objects")
admin_notice("<span class='danger'>Initializing objects</span>", R_DEBUG)
atom_init_stage = INITIALIZATION_INNEW_MAPLOAD
InitializeAtoms()
return ..()
/datum/controller/subsystem/atoms/proc/InitializeAtoms(list/atoms)
if(initialized == INITIALIZATION_INSSATOMS)
/datum/controller/subsystem/atoms/proc/InitializeAtoms(var/list/supplied_atoms)
if(atom_init_stage <= INITIALIZATION_INSSATOMS_LATE)
return
initialized = INITIALIZATION_INNEW_MAPLOAD
atom_init_stage = INITIALIZATION_INNEW_MAPLOAD
LAZYINITLIST(late_loaders)
var/count
var/list/mapload_arg = list(TRUE)
if(atoms)
created_atoms = list()
count = atoms.len
for(var/I in atoms)
var/atom/A = I
var/count = LAZYLEN(supplied_atoms)
if(count)
while(supplied_atoms.len)
var/atom/A = supplied_atoms[supplied_atoms.len]
supplied_atoms.len--
if(!A.initialized)
if(InitAtom(I, mapload_arg))
atoms -= I
InitAtom(A, GetArguments(A, mapload_arg))
CHECK_TICK
else
count = 0
for(var/atom/A in world) // This must be world, since this operation adds all the atoms to their specific lists.
else if(!subsystem_initialized)
// If wondering why not just store all atoms in a list and use the block above: that turns out unbearably expensive.
// Instead, atoms without extra arguments in New created on server start are fished out of world directly.
// We do this exactly once.
for(var/atom/A in world)
if(!A.initialized)
InitAtom(A, mapload_arg)
InitAtom(A, GetArguments(A, mapload_arg, FALSE))
++count
CHECK_TICK
log_world("Initialized [count] atoms")
report_progress("Initialized [count] atom\s")
initialized = INITIALIZATION_INNEW_REGULAR
atom_init_stage = INITIALIZATION_INNEW_REGULAR
if(late_loaders.len)
for(var/I in late_loaders)
var/atom/A = I
A.LateInitialize()
CHECK_TICK
testing("Late initialized [late_loaders.len] atoms")
A.LateInitialize(arglist(late_loaders[A]))
report_progress("Late initialized [late_loaders.len] atom\s")
late_loaders.Cut()
// Nothing ever checks return value of this proc, so don't bother. If this ever changes fix code in /atom/New() ~Leshana
// if(atoms)
// . = created_atoms + atoms
// created_atoms = null
/datum/controller/subsystem/atoms/proc/InitAtom(atom/A, list/arguments)
LAZYREMOVE(global.pre_init_created_atoms, A)
var/the_type = A.type
if(QDELING(A))
BadInitializeCalls[the_type] |= BAD_INIT_QDEL_BEFORE
@@ -90,9 +86,9 @@ SUBSYSTEM_DEF(atoms)
switch(result)
if(INITIALIZE_HINT_LATELOAD)
if(arguments[1]) //mapload
late_loaders += A
late_loaders[A] = arguments
else
A.LateInitialize()
A.LateInitialize(arglist(arguments))
if(INITIALIZE_HINT_QDEL)
qdel(A)
qdeleted = TRUE
@@ -106,18 +102,37 @@ SUBSYSTEM_DEF(atoms)
return qdeleted || QDELING(A)
// override and GetArguments() exists for mod-override/downstream hook functionality.
// Useful for total-overhaul type modifications.
/atom/proc/AdjustInitializeArguments(list/arguments)
// Lists are passed by reference so can simply modify the arguments list without returning it
/datum/controller/subsystem/atoms/proc/GetArguments(atom/A, list/mapload_arg, created=TRUE)
if(!created && !adjust_init_arguments)
return mapload_arg // Performance optimization. Nothing to do.
var/list/arguments = mapload_arg.Copy()
var/extra_args = LAZYACCESS(global.pre_init_created_atoms, A)
if(created && extra_args)
arguments += extra_args
if(adjust_init_arguments)
A.AdjustInitializeArguments(arguments)
return arguments
/datum/controller/subsystem/atoms/stat_entry(msg)
..("Bad Initialize Calls:[BadInitializeCalls.len]")
/datum/controller/subsystem/atoms/proc/map_loader_begin()
old_initialized = initialized
initialized = INITIALIZATION_INSSATOMS
old_init_stage = atom_init_stage
atom_init_stage = INITIALIZATION_INSSATOMS_LATE
/datum/controller/subsystem/atoms/proc/map_loader_stop()
initialized = old_initialized
atom_init_stage = old_init_stage
/datum/controller/subsystem/atoms/Recover()
initialized = SSatoms.initialized
if(initialized == INITIALIZATION_INNEW_MAPLOAD)
atom_init_stage = SSatoms.atom_init_stage
if(atom_init_stage == INITIALIZATION_INNEW_MAPLOAD)
InitializeAtoms()
old_initialized = SSatoms.old_initialized
old_init_stage = SSatoms.old_init_stage
BadInitializeCalls = SSatoms.BadInitializeCalls
/datum/controller/subsystem/atoms/proc/InitLog()

View File

@@ -87,17 +87,6 @@ SUBSYSTEM_DEF(open_space)
// log_debug("[T] ([T.x],[T.y],[T.z]) queued for update for [src].update_icon()")
SSopen_space.add_turf(T, 1)
// Ouch... this is painful. But is there any other way?
/* - No for now
/obj/New()
. = ..()
if(open_space_initialised && !invisibility)
var/turf/T = GetAbove(src)
if(isopenspace(T))
// log_debug("[T] ([T.x],[T.y],[T.z]) queued for update for [src]New()")
OS_controller.add_turf(T, 1)
*/
// We probably should hook Destroy() If we can think of something more efficient, lets hear it.
/obj/Destroy()
if(GLOB.open_space_initialised && !invisibility && isturf(loc))

View File

@@ -425,7 +425,7 @@ var/global/datum/controller/subsystem/ticker/ticker
if(new_char)
qdel(player)
if(new_char.client)
var/obj/screen/splash/S = new(new_char.client, TRUE)
var/obj/screen/splash/S = new(null, new_char.client, TRUE)
S.Fade(TRUE)
// If they're a carbon, they can get manifested

View File

@@ -6,8 +6,9 @@
name = "Initializing..."
var/target
/obj/effect/statclick/New(loc, text, target) //Don't port this to Initialize it's too critical
..()
INITIALIZE_IMMEDIATE(/obj/effect/statclick)
/obj/effect/statclick/Initialize(ml, text, target)
. = ..(ml)
name = text
src.target = target

View File

@@ -47,9 +47,9 @@
/obj/item/weapon/soap/deluxe
icon_state = "soapdeluxe"
/obj/item/weapon/soap/deluxe/New()
/obj/item/weapon/soap/deluxe/Initialize()
desc = "A deluxe Waffle Co. brand bar of soap. Smells of [pick("lavender", "vanilla", "strawberry", "chocolate" ,"space")]."
..()
. = ..()
/obj/item/weapon/soap/syndie
desc = "An untrustworthy bar of soap. Smells of fear."
@@ -363,10 +363,10 @@
drop_sound = 'sound/items/drop/component.ogg'
pickup_sound = 'sound/items/pickup/component.ogg'
/obj/item/weapon/stock_parts/New()
/obj/item/weapon/stock_parts/Initialize()
src.pixel_x = rand(-5.0, 5)
src.pixel_y = rand(-5.0, 5)
..()
. = ..()
/obj/item/weapon/stock_parts/get_rating()
return rating
@@ -390,7 +390,7 @@
var/charge = 0
var/max_charge = 1000
/obj/item/weapon/stock_parts/capacitor/New()
/obj/item/weapon/stock_parts/capacitor/Initialize()
. = ..()
max_charge *= rating

View File

@@ -1831,24 +1831,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
icon_state = "Tactical"
ambience = AMBIENCE_HIGHSEC
/*
New()
..()
spawn(10) //let objects set up first
for(var/turf/turfToGrayscale in src)
if(turfToGrayscale.icon)
var/icon/newIcon = icon(turfToGrayscale.icon)
newIcon.GrayScale()
turfToGrayscale.icon = newIcon
for(var/obj/objectToGrayscale in turfToGrayscale) //1 level deep, means tables, apcs, locker, etc, but not locker contents
if(objectToGrayscale.icon)
var/icon/newIcon = icon(objectToGrayscale.icon)
newIcon.GrayScale()
objectToGrayscale.icon = newIcon
*/
/area/security/nuke_storage
name = "\improper Vault"
icon_state = "nuke_storage"

View File

@@ -2,17 +2,12 @@
name = "AI Monitored Area"
var/obj/machinery/camera/motioncamera = null
/area/ai_monitored/New()
..()
// locate and store the motioncamera
spawn (20) // spawn on a delay to let turfs/objs load
for (var/obj/machinery/camera/M in src)
/area/ai_monitored/LateInitialize()
. = ..()
for(var/obj/machinery/camera/M in src)
if(M.isMotion())
motioncamera = M
M.area_motion = src
return
return
/area/ai_monitored/Entered(atom/movable/O)
..()
@@ -22,5 +17,3 @@
/area/ai_monitored/Exited(atom/movable/O)
if (ismob(O) && motioncamera)
motioncamera.lostTarget(O)

View File

@@ -19,7 +19,7 @@
var/debug = 0
var/requires_power = 1
var/always_unpowered = 0 //this gets overriden to 1 for space in area/New()
var/always_unpowered = 0 //this gets overriden to 1 for space in area/Initialize()
// Power channel status - Is it currently energized?
var/power_equip = TRUE
@@ -52,10 +52,13 @@
var/no_spoilers = FALSE // If true, makes it much more difficult to see what is inside an area with things like mesons.
var/soundproofed = FALSE // If true, blocks sounds from other areas and prevents hearers on other areas from hearing the sounds within.
/area/New()
icon_state = ""
luminosity = !dynamic_lighting
..()
/area/Initialize()
. = ..()
luminosity = !(dynamic_lighting)
icon_state = ""
return INITIALIZE_HINT_LATELOAD // Areas tradiationally are initialized AFTER other atoms.
/area/LateInitialize()
@@ -67,6 +70,10 @@
if(no_spoilers)
set_spoiler_obfuscation(TRUE)
icon = 'icons/turf/areas.dmi'
icon_state = "white"
blend_mode = BLEND_MULTIPLY
// Changes the area of T to A. Do not do this manually.
// Area is expected to be a non-null instance.
/proc/ChangeArea(var/turf/T, var/area/A)

View File

@@ -43,27 +43,22 @@
/// The chat color var, without alpha.
var/chat_color_hover
var/global/list/pre_init_created_atoms // atom creation ordering means some stuff is trying to init before SSatoms exists, temp workaround
/atom/New(loc, ...)
// Don't call ..() unless /datum/New() ever exists
//atom creation method that preloads variables at creation
if(global.use_preloader && (src.type == global._preloader.target_path))//in case the instanciated atom is creating other atoms in New()
global._preloader.load(src)
// During dynamic mapload (reader.dm) this assigns the var overrides from the .dmm file
// Native BYOND maploading sets those vars before invoking New(), by doing this FIRST we come as close to that behavior as we can.
if(use_preloader && (src.type == _preloader.target_path))//in case the instanciated atom is creating other atoms in New()
_preloader.load(src)
// Pass our arguments to InitAtom so they can be passed to initialize(), but replace 1st with if-we're-during-mapload.
var/do_initialize = SSatoms.initialized
if(do_initialize > INITIALIZATION_INSSATOMS)
args[1] = (do_initialize == INITIALIZATION_INNEW_MAPLOAD)
if(SSatoms.InitAtom(src, args))
// We were deleted. No sense continuing
return
// Uncomment if anything ever uses the return value of SSatoms.InitializeAtoms ~Leshana
// If a map is being loaded, it might want to know about newly created objects so they can be handled.
// var/list/created = SSatoms.created_atoms
// if(created)
// created += src
var/do_initialize = SSatoms?.atom_init_stage
if(do_initialize > INITIALIZATION_INSSATOMS_LATE)
args[1] = do_initialize == INITIALIZATION_INNEW_MAPLOAD
SSatoms.InitAtom(src, args)
else
var/list/argument_list
if(length(args) > 1)
argument_list = args.Copy(2)
if(length(argument_list))
LAZYSET(global.pre_init_created_atoms, src, argument_list)
// Note: I removed "auto_init" feature (letting types disable auto-init) since it shouldn't be needed anymore.
// You can replicate the same by checking the value of the first parameter to initialize() ~Leshana
@@ -75,6 +70,8 @@
// Other parameters are passed from New (excluding loc), this does not happen if mapload is TRUE
// Must return an Initialize hint. Defined in code/__defines/subsystems.dm
/atom/proc/Initialize(mapload, ...)
SHOULD_CALL_PARENT(TRUE)
SHOULD_NOT_SLEEP(TRUE)
if(QDELETED(src))
crash_with("GC: -- [type] had initialize() called after qdel() --")
if(initialized)

View File

@@ -413,6 +413,7 @@
src.throw_impact(A,speed)
/atom/movable/proc/throw_at(atom/target, range, speed, thrower)
set waitfor = FALSE
if(!target || !src)
return 0
if(target.z != src.z)
@@ -504,10 +505,10 @@
var/atom/master = null
anchored = 1
/atom/movable/overlay/New()
/atom/movable/overlay/Initialize()
for(var/x in src.verbs)
src.verbs -= x
..()
. = ..()
/atom/movable/overlay/attackby(a, b)
if (src.master)

View File

@@ -88,7 +88,7 @@ var/global/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","E
verbs.Add(P.verbpath)
if(P.make_hud_button)
if(!src.ability_master)
src.ability_master = new /obj/screen/movable/ability_master(src)
src.ability_master = new /obj/screen/movable/ability_master(null, src)
src.ability_master.add_ling_ability(
object_given = src,
verb_given = P.verbpath,

View File

@@ -344,7 +344,7 @@ var/list/datum/power/changeling/powerinstances = list()
if(Thepower.make_hud_button && Thepower.isVerb)
if(!M.current.ability_master)
M.current.ability_master = new /obj/screen/movable/ability_master(M.current)
M.current.ability_master = new /obj/screen/movable/ability_master(null, M.current)
M.current.ability_master.add_ling_ability(
object_given = M.current,
verb_given = Thepower.verbpath,

View File

@@ -65,8 +65,8 @@
defend_chance = 40 // The base chance for the weapon to parry.
projectile_parry_chance = 15 // The base chance for a projectile to be deflected.
/obj/item/weapon/melee/changeling/New(location)
..()
/obj/item/weapon/melee/changeling/Initialize()
. = ..()
START_PROCESSING(SSobj, src)
if(ismob(loc))
visible_message("<span class='warning'>A grotesque weapon forms around [loc.name]\'s arm!</span>",

View File

@@ -41,8 +41,8 @@
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) //No armor at all.
canremove = 0
/obj/item/clothing/suit/space/changeling/New()
..()
/obj/item/clothing/suit/space/changeling/Initialize()
. = ..()
if(ismob(loc))
loc.visible_message("<span class='warning'>[loc.name]\'s flesh rapidly inflates, forming a bloated mass around their body!</span>",
"<span class='warning'>We inflate our flesh, creating a spaceproof suit!</span>",
@@ -105,8 +105,8 @@
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
slowdown = 1.5
/obj/item/clothing/suit/space/changeling/armored/New()
..()
/obj/item/clothing/suit/space/changeling/armored/Initialize()
. = ..()
if(ismob(loc))
loc.visible_message("<span class='warning'>[loc.name]\'s flesh turns black, quickly transforming into a hard, chitinous mass!</span>",
"<span class='warning'>We harden our flesh, creating a suit of armor!</span>",

View File

@@ -113,7 +113,8 @@
agony_amount = 80
electrocute_amount = 20
/obj/item/weapon/electric_hand/New()
/obj/item/weapon/electric_hand/Initialize()
. = ..()
if(ismob(loc))
visible_message("<span class='warning'>Electrical arcs form around [loc.name]\'s hand!</span>",
"<span class='warning'>We store a charge of electricity in our hand.</span>",

View File

@@ -32,7 +32,8 @@
icon_state = "electric_hand"
show_examine = FALSE
/obj/item/weapon/finger_lockpick/New()
/obj/item/weapon/finger_lockpick/Initialize()
. = ..()
if(ismob(loc))
to_chat(loc, "<span class='notice'>We shape our finger to fit inside electronics, and are ready to force them open.</span>")

View File

@@ -264,12 +264,10 @@ var/global/list/changeling_fabricated_clothing = list(
access = null
canremove = 0
/obj/item/weapon/card/id/syndicate/changeling/New(mob/user as mob)
..()
registered_user = user
/obj/item/weapon/card/id/syndicate/changeling/Initialize()
. = ..()
if(ismob(loc))
registered_user = loc
access = null
/obj/item/weapon/card/id/syndicate/changeling/verb/shred()

View File

@@ -439,16 +439,9 @@
toggled = 0 // Mainly used for overlays.
cooldown = 0 // If set, will add a cooldown overlay and adjust click delay. Must be a multiple of 5 for overlays.
cast_sound = null // Sound file played when this is used.
needs_core = FALSE // Does not need a core.
var/last_castcheck = null // The last time this spell was cast.
/obj/item/weapon/spell/construct/New()
//..() //This kills the spell, because super on this calls the default spell's New, which checks for a core. Can't have that.
if(isliving(loc))
owner = loc
if(!owner)
qdel(src)
update_icon()
/obj/item/weapon/spell/construct/adjust_instability(var/amount) //The only drawback to the boons of the geometer is the use of a mortal's blood as fuel. Constructs have already paid that price long ago.
return

View File

@@ -154,6 +154,7 @@
return
/obj/effect/gateway/active/Initialize()
. = ..()
addtimer(CALLBACK(src, .proc/spawn_and_qdel), rand(30, 60) SECONDS)
/obj/effect/gateway/active/proc/spawn_and_qdel()

View File

@@ -16,8 +16,8 @@ var/global/list/narsie_list = list()
consume_range = 3 //How many tiles out do we eat
/obj/singularity/narsie/New()
..()
/obj/singularity/narsie/Initialize()
. = ..()
narsie_list.Add(src)
/obj/singularity/narsie/Destroy()
@@ -40,8 +40,8 @@ var/global/list/narsie_list = list()
var/announce=1
var/cause_hell = 1
/obj/singularity/narsie/large/New()
..()
/obj/singularity/narsie/large/Initialize()
. = ..()
if(announce)
to_world("<font size='15' color='red'><b>[uppertext(name)] HAS RISEN</b></font>")
world << sound('sound/effects/weather/wind/wind_5_1.ogg')
@@ -358,6 +358,7 @@ var/global/list/narsie_list = list()
consume(T)
/obj/singularity/narsie/proc/narsie_spawn_animation()
set waitfor = FALSE
icon = 'icons/obj/narsie_spawn_anim.dmi'
dir = SOUTH
move_self = 0

View File

@@ -14,8 +14,8 @@
consume_range = 6
/obj/singularity/narsie/large/exit/New()
..()
/obj/singularity/narsie/large/exit/Initialize()
. = ..()
START_PROCESSING(SSobj, src)
/obj/singularity/narsie/large/exit/update_icon()

View File

@@ -8,9 +8,9 @@
density = 0
anchored = 1
/obj/effect/bhole/New()
spawn(4)
controller()
/obj/effect/bhole/Initialize()
. = ..()
addtimer(CALLBACK(src, .proc/controller), 4)
/obj/effect/bhole/proc/controller()
while(src)

View File

@@ -23,9 +23,6 @@
desc = "Directions for use: Requires two people, one to pull each end."
var/cracked = 0
/obj/item/weapon/toy/xmas_cracker/New()
..()
/obj/item/weapon/toy/xmas_cracker/attack(mob/target, mob/user)
if( !cracked && (istype(target,/mob/living/silicon) || (istype(target,/mob/living/carbon/human) && !target.get_active_hand())) && target.stat == CONSCIOUS)
target.visible_message("<span class='notice'>[user] and [target] pop \an [src]! *pop*</span>", "<span class='notice'>You pull \an [src] with [target]! *pop*</span>", "<span class='notice'>You hear a *pop*.</span>")

View File

@@ -130,6 +130,7 @@
. = ..()
z_original = z
GLOB.meteor_list += src
SpinAnimation()
/obj/effect/meteor/Move()
if(z != z_original || loc == dest)
@@ -151,10 +152,6 @@
GLOB.meteor_list -= src
return ..()
/obj/effect/meteor/New()
..()
SpinAnimation()
/obj/effect/meteor/Bump(atom/A)
if(A)
if(A.handle_meteor_impact(src)) // Used for special behaviour when getting hit specifically by a meteor, like a shield.

View File

@@ -62,8 +62,8 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) -
// Proc: New()
// Parameters: 0
// Description: Sets up the catalog, as shown below.
/obj/item/weapon/technomancer_catalog/New()
..()
/obj/item/weapon/technomancer_catalog/Initialize()
. = ..()
set_up()
// Proc: set_up()

View File

@@ -36,8 +36,8 @@
var/list/wards_in_use = list() // Wards don't count against the cap for other summons.
var/max_summons = 10 // Maximum allowed summoned entities. Some cores will have different caps.
/obj/item/weapon/technomancer_core/New()
..()
/obj/item/weapon/technomancer_core/Initialize()
. = ..()
START_PROCESSING(SSobj, src)
/obj/item/weapon/technomancer_core/Destroy()
@@ -141,9 +141,10 @@
var/obj/item/weapon/technomancer_core/core = null
var/ability_icon_state = null
/obj/spellbutton/New(loc, var/path, var/new_name, var/new_icon_state)
/obj/spellbutton/Initialize(var/ml, var/path, var/new_name, var/new_icon_state)
. = ..()
if(!path || !ispath(path))
message_admins("ERROR: /obj/spellbutton/New() was not given a proper path!")
message_admins("ERROR: /obj/spellbutton/Initialize() was not given a proper path!")
qdel(src)
src.name = new_name
src.spellpath = path

View File

@@ -36,9 +36,9 @@
wearer.custom_pain("Your hands hurt like hell!",1)
wearer = null
/obj/item/clothing/gloves/regen/New()
/obj/item/clothing/gloves/regen/Initialize()
START_PROCESSING(SSobj, src)
..()
. = ..()
/obj/item/clothing/gloves/regen/Destroy()
wearer = null

View File

@@ -24,8 +24,8 @@
var/datum/effect/effect/system/spark_spread/spark_system = null
var/block_percentage = 75
/obj/item/clothing/suit/armor/shield/New()
..()
/obj/item/clothing/suit/armor/shield/Initialize()
. = ..()
spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src)

View File

@@ -108,7 +108,7 @@
name = "hypo belt"
desc = "A medical belt designed to carry autoinjectors and other medical equipment."
/obj/item/weapon/storage/belt/medical/technomancer/New()
/obj/item/weapon/storage/belt/medical/technomancer/Initialize()
new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute(src)
new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn(src)
new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/toxin(src)
@@ -117,7 +117,7 @@
new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/pain(src)
new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/organ(src)
new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/combat(src)
..()
. = ..()
/datum/technomancer/equipment/belt_of_holding
name = "Belt of Holding"

View File

@@ -18,6 +18,7 @@
var/toggled = 0 // Mainly used for overlays.
var/cooldown = 0 // If set, will add a cooldown overlay and adjust click delay. Must be a multiple of 5 for overlays.
var/cast_sound = null // Sound file played when this is used.
var/needs_core = TRUE // Does this spell need a core to be usable?
// Proc: on_use_cast()
// Parameters: 1 (user - the technomancer casting the spell)
@@ -110,18 +111,18 @@
// Proc: New()
// Parameters: 0
// Description: Sets owner to equal its loc, links to the owner's core, then applies overlays if needed.
/obj/item/weapon/spell/New()
..()
/obj/item/weapon/spell/Initialize()
. = ..()
if(isliving(loc))
owner = loc
if(owner)
core = owner.get_technomancer_core()
if(!core)
if(!core && needs_core)
to_chat(owner, "<span class='warning'>You need a Core to do that.</span>")
qdel(src)
return
// if(istype(/obj/item/weapon/technomancer_core, owner.back))
// core = owner.back
return INITIALIZE_HINT_QDEL
else
return INITIALIZE_HINT_QDEL
update_icon()
// Proc: Destroy()

View File

@@ -41,8 +41,8 @@
aspect = ASPECT_CHROMATIC
var/glow_color = "#FFFFFF"
/obj/item/weapon/spell/aura/New()
..()
/obj/item/weapon/spell/aura/Initialize()
. = ..()
set_light(7, 4, l_color = glow_color)
START_PROCESSING(SSobj, src)

View File

@@ -6,8 +6,8 @@
aspect = null
var/glow_color = "#FFFFFF"
/obj/item/weapon/spell/aura/New()
..()
/obj/item/weapon/spell/aura/Initialize()
. = ..()
set_light(calculate_spell_power(7), calculate_spell_power(4), l_color = glow_color)
START_PROCESSING(SSobj, src)
log_and_message_admins("has started casting [src].")

View File

@@ -14,8 +14,8 @@
aspect = ASPECT_LIGHT
var/color_to_use = "#FFFFFF"
/obj/item/weapon/spell/chroma/New()
..()
/obj/item/weapon/spell/chroma/Initialize()
. = ..()
set_light(6, 5, l_color = color_to_use)
/obj/effect/temporary_effect/chroma

View File

@@ -20,8 +20,8 @@
var/list/things_to_siphon = list() //Things which are actually drained as a result of the above not being null.
var/flow_rate = 1000 // Limits how much electricity can be drained per second. Measured by default in god knows what.
/obj/item/weapon/spell/energy_siphon/New()
..()
/obj/item/weapon/spell/energy_siphon/Initialize()
. = ..()
START_PROCESSING(SSobj, src)
/obj/item/weapon/spell/energy_siphon/Destroy()

View File

@@ -14,8 +14,8 @@
aspect = ASPECT_FIRE
var/obj/item/weapon/weldingtool/spell/welder = null
/obj/item/weapon/spell/flame_tongue/New()
..()
/obj/item/weapon/spell/flame_tongue/Initialize()
. = ..()
set_light(3, 2, l_color = "#FF6A00")
visible_message("<span class='warning'>\The [loc]'s hand begins to emit a flame.</span>")
welder = new /obj/item/weapon/weldingtool/spell(src)

View File

@@ -11,8 +11,8 @@
var/obj/item/weapon/inserted_spell/inserting = null
var/allow_stacking = 0
/obj/item/weapon/spell/insert/New()
..()
/obj/item/weapon/spell/insert/Initialize()
. = ..()
set_light(spell_light_range, spell_light_intensity, l_color = light_color)
/obj/item/weapon/inserted_spell
@@ -20,9 +20,9 @@
var/mob/living/host = null
var/spell_power_at_creation = 1.0 // This is here because the spell object that made this object probably won't exist.
/obj/item/weapon/inserted_spell/New(var/newloc, var/user, var/obj/item/weapon/spell/insert/inserter)
..(newloc)
host = newloc
/obj/item/weapon/inserted_spell/Initialize(var/ml, var/user, var/obj/item/weapon/spell/insert/inserter)
. = ..()
host = loc
origin = user
if(light_color)
spawn(1)

View File

@@ -14,8 +14,8 @@
cast_methods = CAST_USE
aspect = ASPECT_UNSTABLE
/obj/item/weapon/spell/instability_tap/New()
..()
/obj/item/weapon/spell/instability_tap/Initialize()
. = ..()
set_light(3, 2, l_color = "#FA58F4")
/obj/item/weapon/spell/instability_tap/on_use_cast(mob/user)

View File

@@ -9,8 +9,8 @@
var/spell_light_intensity = 2
var/spell_light_range = 3
/obj/item/weapon/spell/modifier/New()
..()
/obj/item/weapon/spell/modifier/Initialize()
. = ..()
set_light(spell_light_range, spell_light_intensity, l_color = light_color)
/obj/item/weapon/spell/modifier/on_melee_cast(atom/hit_atom, mob/user)

View File

@@ -15,8 +15,8 @@
cast_methods = CAST_USE
aspect = ASPECT_TELE
/obj/item/weapon/spell/phase_shift/New()
..()
/obj/item/weapon/spell/phase_shift/Initialize()
. = ..()
set_light(3, 2, l_color = "#FA58F4")
/obj/effect/phase_shift
@@ -28,8 +28,8 @@
/obj/effect/phase_shift/ex_act()
return
/obj/effect/phase_shift/New()
..()
/obj/effect/phase_shift/Initialize()
. = ..()
set_light(3, 5, l_color = "#FA58F4")
START_PROCESSING(SSobj, src)

View File

@@ -16,8 +16,8 @@
var/power = 250
toggled = 1
/obj/item/weapon/spell/radiance/New()
..()
/obj/item/weapon/spell/radiance/Initialize()
. = ..()
set_light(7, 4, l_color = "#D9D900")
START_PROCESSING(SSobj, src)
log_and_message_admins("has casted [src].")

View File

@@ -16,8 +16,8 @@
var/damage_to_energy_multiplier = 60.0 //Determines how much energy to charge for blocking, e.g. 20 damage attack = 1200 energy cost
var/datum/effect/effect/system/spark_spread/spark_system = null
/obj/item/weapon/spell/reflect/New()
..()
/obj/item/weapon/spell/reflect/Initialize()
. = ..()
set_light(3, 2, l_color = "#006AFF")
spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src)

View File

@@ -18,8 +18,8 @@
var/damage_to_energy_multiplier = 30.0 //Determines how much energy to charge for blocking, e.g. 20 damage attack = 600 energy cost
var/datum/effect/effect/system/spark_spread/spark_system = null
/obj/item/weapon/spell/shield/New()
..()
/obj/item/weapon/spell/shield/Initialize()
. = ..()
set_light(3, 2, l_color = "#006AFF")
spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src)

View File

@@ -18,8 +18,8 @@
adjust_instability(4)
..()
/obj/item/weapon/spell/spawner/darkness/New()
..()
/obj/item/weapon/spell/spawner/darkness/Initialize()
. = ..()
set_light(6, -20, l_color = "#FFFFFF")
/obj/effect/temporary_effect/darkness

View File

@@ -14,8 +14,8 @@
aspect = ASPECT_UNSTABLE
spawner_type = /obj/effect/temporary_effect/destablize
/obj/item/weapon/spell/spawner/destablize/New()
..()
/obj/item/weapon/spell/spawner/destablize/Initialize()
. = ..()
set_light(3, 2, l_color = "#C26DDE")
/obj/item/weapon/spell/spawner/destablize/on_ranged_cast(atom/hit_atom, mob/user)

View File

@@ -13,8 +13,8 @@
aspect = ASPECT_EMP
spawner_type = /obj/effect/temporary_effect/pulse/pulsar
/obj/item/weapon/spell/spawner/pulsar/New()
..()
/obj/item/weapon/spell/spawner/pulsar/Initialize()
. = ..()
set_light(3, 2, l_color = "#2ECCFA")
/obj/item/weapon/spell/spawner/pulsar/on_ranged_cast(atom/hit_atom, mob/user)

View File

@@ -14,8 +14,8 @@
aspect = ASPECT_TELE
var/datum/effect/effect/system/spark_spread/sparks
/obj/item/weapon/spell/warp_strike/New()
..()
/obj/item/weapon/spell/warp_strike/Initialize()
. = ..()
sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(5, 0, src)
sparks.attach(loc)

View File

@@ -10,8 +10,8 @@
idle_power_usage = 0
var/obj/item/device/radio/beacon/Beacon
/obj/machinery/bluespace_beacon/New()
..()
/obj/machinery/bluespace_beacon/Initialize()
. = ..()
var/turf/T = src.loc
Beacon = new /obj/item/device/radio/beacon
Beacon.invisibility = INVISIBILITY_MAXIMUM

View File

@@ -8,10 +8,10 @@
var/max_cable = 100
var/on = 0
/obj/machinery/cablelayer/New()
/obj/machinery/cablelayer/Initialize()
cable = new(src)
cable.amount = 100
..()
. = ..()
/obj/machinery/cablelayer/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()

View File

@@ -14,8 +14,8 @@
var/strapped = 0.0
var/obj/machinery/computer/operating/computer = null
/obj/machinery/optable/New()
..()
/obj/machinery/optable/Initialize()
. = ..()
for(var/direction in list(NORTH,EAST,SOUTH,WEST))
computer = locate(/obj/machinery/computer/operating, get_step(src, direction))
if(computer)

View File

@@ -539,8 +539,8 @@
circuit = /obj/item/weapon/circuitboard/scanner_console
var/printing = null
/obj/machinery/body_scanconsole/New()
..()
/obj/machinery/body_scanconsole/Initialize()
. = ..()
findscanner()
/obj/machinery/body_scanconsole/Destroy()

View File

@@ -14,8 +14,8 @@
var/cooldown_on = 0
req_access = list(access_ai_upload)
/obj/machinery/ai_slipper/New()
..()
/obj/machinery/ai_slipper/Initialize()
. = ..()
update_icon()
/obj/machinery/ai_slipper/power_change()

View File

@@ -103,6 +103,9 @@
/obj/machinery/alarm/Initialize(mapload)
. = ..()
first_run()
set_frequency(frequency)
if(!master_is_operating())
elect_master()
/obj/machinery/alarm/Destroy()
unregister_radio(src, frequency)
@@ -131,12 +134,6 @@
TLV["pressure"] = list(ONE_ATMOSPHERE * 0.80, ONE_ATMOSPHERE * 0.90, ONE_ATMOSPHERE * 1.10, ONE_ATMOSPHERE * 1.20) /* kpa */
TLV["temperature"] = list(T0C - 26, T0C, T0C + 40, T0C + 66) // K
/obj/machinery/alarm/Initialize()
. = ..()
set_frequency(frequency)
if(!master_is_operating())
elect_master()
/obj/machinery/alarm/process()
if((stat & (NOPOWER|BROKEN)) || shorted)
return

View File

@@ -14,7 +14,7 @@
//Simple variable to prevent me from doing attack_hand in both this and the child computer
var/zone = "This computer is working on a wireless range, the range is currently limited to "
/obj/machinery/computer/area_atmos/Initialize()
/obj/machinery/computer/area_atmos/LateInitialize()
. = ..()
scanscrubbers()

View File

@@ -368,30 +368,30 @@ update_flag
add_fingerprint(usr)
update_icon()
/obj/machinery/portable_atmospherics/canister/phoron/New()
..()
/obj/machinery/portable_atmospherics/canister/phoron/Initialize()
. = ..()
src.air_contents.adjust_gas("phoron", MolesForPressure())
src.update_icon()
return 1
/obj/machinery/portable_atmospherics/canister/oxygen/New()
..()
/obj/machinery/portable_atmospherics/canister/oxygen/Initialize()
. = ..()
src.air_contents.adjust_gas("oxygen", MolesForPressure())
src.update_icon()
return 1
/obj/machinery/portable_atmospherics/canister/oxygen/prechilled/New()
..()
/obj/machinery/portable_atmospherics/canister/oxygen/prechilled/Initialize()
. = ..()
src.air_contents.adjust_gas("oxygen", MolesForPressure())
src.air_contents.temperature = 80
src.update_icon()
return 1
/obj/machinery/portable_atmospherics/canister/nitrous_oxide/New()
..()
/obj/machinery/portable_atmospherics/canister/nitrous_oxide/Initialize()
. = ..()
air_contents.adjust_gas("nitrous_oxide", MolesForPressure())
src.update_icon()
@@ -407,23 +407,20 @@ update_flag
air_contents = new
return 1
/obj/machinery/portable_atmospherics/canister/nitrogen/New()
..()
/obj/machinery/portable_atmospherics/canister/nitrogen/Initialize()
. = ..()
src.air_contents.adjust_gas("nitrogen", MolesForPressure())
src.update_icon()
return 1
/obj/machinery/portable_atmospherics/canister/carbon_dioxide/New()
..()
/obj/machinery/portable_atmospherics/canister/carbon_dioxide/Initialize()
. = ..()
src.air_contents.adjust_gas("carbon_dioxide", MolesForPressure())
src.update_icon()
return 1
/obj/machinery/portable_atmospherics/canister/air/New()
..()
/obj/machinery/portable_atmospherics/canister/air/Initialize()
. = ..()
var/list/air_mix = StandardAirMix()
src.air_contents.adjust_multi("oxygen", air_mix["oxygen"], "nitrogen", air_mix["nitrogen"])
@@ -432,20 +429,20 @@ update_flag
//R-UST port
// Special types used for engine setup admin verb, they contain double amount of that of normal canister.
/obj/machinery/portable_atmospherics/canister/nitrogen/engine_setup/New()
..()
/obj/machinery/portable_atmospherics/canister/nitrogen/engine_setup/Initialize()
. = ..()
src.air_contents.adjust_gas("nitrogen", MolesForPressure())
src.update_icon()
return 1
/obj/machinery/portable_atmospherics/canister/carbon_dioxide/engine_setup/New()
..()
/obj/machinery/portable_atmospherics/canister/carbon_dioxide/engine_setup/Initialize()
. = ..()
src.air_contents.adjust_gas("carbon_dioxide", MolesForPressure())
src.update_icon()
return 1
/obj/machinery/portable_atmospherics/canister/phoron/engine_setup/New()
..()
/obj/machinery/portable_atmospherics/canister/phoron/engine_setup/Initialize()
. = ..()
src.air_contents.adjust_gas("phoron", MolesForPressure())
src.update_icon()
return 1

View File

@@ -14,8 +14,8 @@
var/datum/pipe_network/network_node1
var/datum/pipe_network/network_node2
/obj/machinery/clamp/New(loc, var/obj/machinery/atmospherics/pipe/simple/to_attach = null)
..()
/obj/machinery/clamp/Initialize(var/ml, var/obj/machinery/atmospherics/pipe/simple/to_attach = null)
. = ..()
if(istype(to_attach))
target = to_attach
else
@@ -23,7 +23,6 @@
if(target)
update_networks()
dir = target.dir
return 1
/obj/machinery/clamp/proc/update_networks()
if(!target)

View File

@@ -13,16 +13,10 @@
var/start_pressure = ONE_ATMOSPHERE
var/maximum_pressure = 90 * ONE_ATMOSPHERE
/obj/machinery/portable_atmospherics/New()
..()
air_contents.volume = volume
air_contents.temperature = T20C
return 1
/obj/machinery/portable_atmospherics/Initialize()
..()
air_contents.volume = volume
air_contents.temperature = T20C
return INITIALIZE_HINT_LATELOAD
/obj/machinery/portable_atmospherics/LateInitialize()

View File

@@ -21,8 +21,8 @@
/obj/machinery/portable_atmospherics/powered/pump/filled
start_pressure = 90 * ONE_ATMOSPHERE
/obj/machinery/portable_atmospherics/powered/pump/New()
..()
/obj/machinery/portable_atmospherics/powered/pump/Initialize()
. = ..()
cell = new/obj/item/weapon/cell/apc(src)
var/list/air_mix = StandardAirMix()

View File

@@ -20,8 +20,8 @@
var/list/scrubbing_gas = list("phoron", "carbon_dioxide", "nitrous_oxide", "volatile_fuel")
/obj/machinery/portable_atmospherics/powered/scrubber/New()
..()
/obj/machinery/portable_atmospherics/powered/scrubber/Initialize()
. = ..()
cell = new/obj/item/weapon/cell/apc(src)
/obj/machinery/portable_atmospherics/powered/scrubber/emp_act(severity)
@@ -162,8 +162,8 @@
var/global/gid = 1
var/id = 0
/obj/machinery/portable_atmospherics/powered/scrubber/huge/New()
..()
/obj/machinery/portable_atmospherics/powered/scrubber/huge/Initialize()
. = ..()
cell = null
id = gid

View File

@@ -335,7 +335,7 @@
var/matter_amount_per_sheet = 10
var/matter_type = MAT_STEEL
/obj/machinery/organ_printer/robot/full/New()
/obj/machinery/organ_printer/robot/full/Initialize()
. = ..()
stored_matter = max_stored_matter

View File

@@ -42,7 +42,7 @@
var/list/camera_computers_using_this = list()
/obj/machinery/camera/New()
/obj/machinery/camera/Initialize()
wires = new(src)
assembly = new(src)
assembly.state = 4
@@ -61,7 +61,7 @@
error("[src.name] in [get_area(src)]has errored. [src.network?"Empty network list":"Null network list"]")
ASSERT(src.network)
ASSERT(src.network.len > 0)
..()
. = ..()
/obj/machinery/camera/Destroy()
if(isMotion())
@@ -180,7 +180,7 @@
else
assembly.state = 1
to_chat(user, "<span class='notice'>You cut \the [src] free from the wall.</span>")
new /obj/item/stack/cable_coil(src.loc, length=2)
new /obj/item/stack/cable_coil(src.loc, 2)
assembly = null //so qdel doesn't eat it.
qdel(src)

View File

@@ -106,8 +106,8 @@ var/global/list/engineering_networks = list(
// EMP
/obj/machinery/camera/emp_proof/New()
..()
/obj/machinery/camera/emp_proof/Initialize()
. = ..()
upgradeEmpProof()
// X-RAY
@@ -127,14 +127,14 @@ var/global/list/engineering_networks = list(
/obj/machinery/camera/xray/research
network = list(NETWORK_RESEARCH)
/obj/machinery/camera/xray/New()
..()
/obj/machinery/camera/xray/Initialize()
. = ..()
upgradeXRay()
// MOTION
/obj/machinery/camera/motion/New()
..()
/obj/machinery/camera/motion/Initialize()
. = ..()
upgradeMotion()
/obj/machinery/camera/motion/engineering_outpost
@@ -149,8 +149,8 @@ var/global/list/engineering_networks = list(
/obj/machinery/camera/all/command
network = list(NETWORK_COMMAND)
/obj/machinery/camera/all/New()
..()
/obj/machinery/camera/all/Initialize()
. = ..()
upgradeEmpProof()
upgradeXRay()
upgradeMotion()

View File

@@ -456,8 +456,8 @@
icon_state = "pod_g"
/obj/machinery/clonepod/full/New()
..()
/obj/machinery/clonepod/full/Initialize()
. = ..()
for(var/i = 1 to container_limit)
containers += new /obj/item/weapon/reagent_containers/glass/bottle/biomass(src)
@@ -499,7 +499,8 @@
name = "data disk - 'God Emperor of Mankind'"
read_only = 1
/obj/item/weapon/disk/data/demo/New()
/obj/item/weapon/disk/data/demo/Initialize()
. = ..()
initializeDisk()
buf.types=DNA2_BUF_UE|DNA2_BUF_UI
//data = "066000033000000000AF00330660FF4DB002690"
@@ -514,8 +515,8 @@
name = "data disk - 'Mr. Muggles'"
read_only = 1
/obj/item/weapon/disk/data/monkey/New()
..()
/obj/item/weapon/disk/data/monkey/Initialize()
. = ..()
initializeDisk()
buf.types=DNA2_BUF_SE
var/list/new_SE=list(0x098,0x3E8,0x403,0x44C,0x39F,0x4B0,0x59D,0x514,0x5FC,0x578,0x5DC,0x640,0x6A4)
@@ -524,8 +525,8 @@
buf.dna.SE=new_SE
buf.dna.SetSEValueRange(MONKEYBLOCK,0xDAC, 0xFFF)
/obj/item/weapon/disk/data/New()
..()
/obj/item/weapon/disk/data/Initialize()
. = ..()
var/diskcolor = pick(0,1,2)
icon_state = "datadisk[diskcolor]"
@@ -545,8 +546,8 @@
name = "Diskette Box"
icon_state = "disk_kit"
/obj/item/weapon/storage/box/disks/New()
..()
/obj/item/weapon/storage/box/disks/Initialize()
. = ..()
new /obj/item/weapon/disk/data(src)
new /obj/item/weapon/disk/data(src)
new /obj/item/weapon/disk/data(src)

View File

@@ -20,8 +20,8 @@
var/healthAlarm = 50
var/oxy = 1 //oxygen beeping toggle
/obj/machinery/computer/operating/New()
..()
/obj/machinery/computer/operating/Initialize()
. = ..()
for(var/direction in list(NORTH,EAST,SOUTH,WEST))
table = locate(/obj/machinery/optable, get_step(src, direction))
if(table)

View File

@@ -15,8 +15,8 @@
var/current_tag = null
var/datum/tgui_module/rcon/rcon
/obj/machinery/computer/rcon/New()
..()
/obj/machinery/computer/rcon/Initialize()
. = ..()
rcon = new(src)
/obj/machinery/computer/rcon/Destroy()

View File

@@ -94,8 +94,8 @@
var/blocked = 0 //Player cannot attack/heal while set
var/turtle = 0
/obj/machinery/computer/arcade/battle/New()
..()
/obj/machinery/computer/arcade/battle/Initialize()
. = ..()
var/name_action
var/name_part1
var/name_part2
@@ -347,8 +347,8 @@
var/gameStatus = ORION_STATUS_START
var/canContinueEvent = 0
/obj/machinery/computer/arcade/orion_trail/New()
..()
/obj/machinery/computer/arcade/orion_trail/Initialize()
. = ..()
// Sets up the main trail
stops = list("Pluto","Asteroid Belt","Proxima Centauri","Dead Space","Rigel Prime","Tau Ceti Beta","Black Hole","Space Outpost Beta-9","Orion Prime")
stopblurbs = list(
@@ -1237,8 +1237,8 @@
/// End Payment
/obj/machinery/computer/arcade/clawmachine/New()
..()
/obj/machinery/computer/arcade/clawmachine/Initialize()
. = ..()
/obj/machinery/computer/arcade/clawmachine/attack_hand(mob/living/user)
if(..())

View File

@@ -12,8 +12,8 @@ var/global/list/minor_air_alarms = list()
icon_screen = "alert:0"
light_color = "#e6ffff"
/obj/machinery/computer/atmos_alert/New()
..()
/obj/machinery/computer/atmos_alert/Initialize()
. = ..()
atmosphere_alarm.register_alarm(src, /atom/proc/update_icon)
/obj/machinery/computer/atmos_alert/Destroy()

View File

@@ -15,9 +15,6 @@
var/list/monitored_alarm_ids = null
var/datum/tgui_module/atmos_control/atmos_control
/obj/machinery/computer/atmoscontrol/New()
..()
/obj/machinery/computer/atmoscontrol/laptop //[TO DO] Change name to PCU and update mapdata to include replacement computers
name = "\improper Atmospherics PCU"
desc = "A personal computer unit. It seems to have only the Atmosphereics Control program installed."

View File

@@ -16,9 +16,6 @@
clicksound = "keyboard"
/obj/machinery/computer/New()
..()
/obj/machinery/computer/Initialize()
. = ..()
power_change()

View File

@@ -10,9 +10,9 @@
circuit = /obj/item/weapon/circuitboard/crew
var/datum/tgui_module/crew_monitor/crew_monitor
/obj/machinery/computer/crew/New()
/obj/machinery/computer/crew/Initialize()
crew_monitor = new(src)
..()
. = ..()
/obj/machinery/computer/crew/Destroy()
qdel(crew_monitor)

View File

@@ -96,8 +96,8 @@
var/list/internal_log = list()
var/mode = 0 // 0 - making pass, 1 - viewing logs
/obj/machinery/computer/guestpass/New()
..()
/obj/machinery/computer/guestpass/Initialize()
. = ..()
uid = "[rand(100,999)]-G[rand(10,99)]"

View File

@@ -7,8 +7,8 @@
circuit = /obj/item/weapon/circuitboard/shutoff_monitor
var/datum/tgui_module/shutoff_monitor/monitor
/obj/machinery/computer/shutoff_monitor/New()
..()
/obj/machinery/computer/shutoff_monitor/Initialize()
. = ..()
monitor = new(src)
/obj/machinery/computer/shutoff_monitor/Destroy()

Some files were not shown because too many files have changed in this diff Show More