diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm index a5e15639723..0aae436dcbc 100644 --- a/code/ATMOSPHERICS/atmospherics.dm +++ b/code/ATMOSPHERICS/atmospherics.dm @@ -35,8 +35,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)) diff --git a/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm b/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm index cc280d97ccb..6b49555a3af 100644 --- a/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm +++ b/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm @@ -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 diff --git a/code/ATMOSPHERICS/components/binary_devices/circulator.dm b/code/ATMOSPHERICS/components/binary_devices/circulator.dm index c5fe955523e..cca0593f1a5 100644 --- a/code/ATMOSPHERICS/components/binary_devices/circulator.dm +++ b/code/ATMOSPHERICS/components/binary_devices/circulator.dm @@ -24,8 +24,8 @@ density = TRUE -/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 diff --git a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm index aebea389013..131c7888e8b 100644 --- a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm @@ -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)) diff --git a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm index 686efa65089..02887e8219c 100644 --- a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm +++ b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm @@ -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 diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm index 514216e7faf..188f816dce5 100644 --- a/code/ATMOSPHERICS/components/binary_devices/pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm @@ -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 diff --git a/code/ATMOSPHERICS/components/omni_devices/filter.dm b/code/ATMOSPHERICS/components/omni_devices/filter.dm index 1b51693389b..74f77dabdec 100644 --- a/code/ATMOSPHERICS/components/omni_devices/filter.dm +++ b/code/ATMOSPHERICS/components/omni_devices/filter.dm @@ -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 diff --git a/code/ATMOSPHERICS/components/omni_devices/mixer.dm b/code/ATMOSPHERICS/components/omni_devices/mixer.dm index 3487482be3c..3dfb13436c1 100644 --- a/code/ATMOSPHERICS/components/omni_devices/mixer.dm +++ b/code/ATMOSPHERICS/components/omni_devices/mixer.dm @@ -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) diff --git a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm index f0c5498fb3e..f19fc58fcf3 100644 --- a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm +++ b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm @@ -25,8 +25,8 @@ var/list/ports = new() -/obj/machinery/atmospherics/omni/New() - ..() +/obj/machinery/atmospherics/omni/Initialize() + . = ..() icon_state = "base" ports = new() diff --git a/code/ATMOSPHERICS/components/trinary_devices/filter.dm b/code/ATMOSPHERICS/components/trinary_devices/filter.dm index 48085569bc9..7e76971377c 100755 --- a/code/ATMOSPHERICS/components/trinary_devices/filter.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/filter.dm @@ -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 diff --git a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm index 8cecbc6c651..87b1eea40cc 100644 --- a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm @@ -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 diff --git a/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm b/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm index eaae718b2ea..538451bbf6f 100644 --- a/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm @@ -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 diff --git a/code/ATMOSPHERICS/components/unary/outlet_injector.dm b/code/ATMOSPHERICS/components/unary/outlet_injector.dm index b4991c0e5d5..951426f0bcc 100644 --- a/code/ATMOSPHERICS/components/unary/outlet_injector.dm +++ b/code/ATMOSPHERICS/components/unary/outlet_injector.dm @@ -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 diff --git a/code/ATMOSPHERICS/components/unary/unary_base.dm b/code/ATMOSPHERICS/components/unary/unary_base.dm index 12d6822ad47..a20a860b02e 100644 --- a/code/ATMOSPHERICS/components/unary/unary_base.dm +++ b/code/ATMOSPHERICS/components/unary/unary_base.dm @@ -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 diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index 145381146fd..35718961562 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -83,8 +83,6 @@ . = ..() //soundloop = new(list(src), FALSE) -/obj/machinery/atmospherics/unary/vent_pump/New() - ..() air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP icon = null @@ -112,8 +110,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 // VOREStation Edit Start - Wall mounted vents @@ -137,8 +135,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) diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm index 64a57a744e0..c50ff795fff 100644 --- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm @@ -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 diff --git a/code/ATMOSPHERICS/pipes/he_pipes.dm b/code/ATMOSPHERICS/pipes/he_pipes.dm index 11f826ae050..0d9e673e689 100644 --- a/code/ATMOSPHERICS/pipes/he_pipes.dm +++ b/code/ATMOSPHERICS/pipes/he_pipes.dm @@ -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. diff --git a/code/ATMOSPHERICS/pipes/manifold.dm b/code/ATMOSPHERICS/pipes/manifold.dm index a02f0e66de0..88cb10994ea 100644 --- a/code/ATMOSPHERICS/pipes/manifold.dm +++ b/code/ATMOSPHERICS/pipes/manifold.dm @@ -19,8 +19,8 @@ level = 1 -/obj/machinery/atmospherics/pipe/manifold/New() - ..() +/obj/machinery/atmospherics/pipe/manifold/Initialize() + . = ..() alpha = 255 icon = null diff --git a/code/ATMOSPHERICS/pipes/manifold4w.dm b/code/ATMOSPHERICS/pipes/manifold4w.dm index eac8494a65d..3773ebce73b 100644 --- a/code/ATMOSPHERICS/pipes/manifold4w.dm +++ b/code/ATMOSPHERICS/pipes/manifold4w.dm @@ -20,8 +20,8 @@ level = 1 -/obj/machinery/atmospherics/pipe/manifold4w/New() - ..() +/obj/machinery/atmospherics/pipe/manifold4w/Initialize() + . = ..() alpha = 255 icon = null diff --git a/code/ATMOSPHERICS/pipes/pipe_base.dm b/code/ATMOSPHERICS/pipes/pipe_base.dm index 0d687b8db05..04b45954219 100644 --- a/code/ATMOSPHERICS/pipes/pipe_base.dm +++ b/code/ATMOSPHERICS/pipes/pipe_base.dm @@ -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 diff --git a/code/ATMOSPHERICS/pipes/simple.dm b/code/ATMOSPHERICS/pipes/simple.dm index 1f427fb151d..2d81d4d0c04 100644 --- a/code/ATMOSPHERICS/pipes/simple.dm +++ b/code/ATMOSPHERICS/pipes/simple.dm @@ -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. diff --git a/code/ATMOSPHERICS/pipes/tank.dm b/code/ATMOSPHERICS/pipes/tank.dm index 63807862880..89a1d06d6a5 100644 --- a/code/ATMOSPHERICS/pipes/tank.dm +++ b/code/ATMOSPHERICS/pipes/tank.dm @@ -18,9 +18,9 @@ pipe_flags = PIPING_DEFAULT_LAYER_ONLY density = TRUE -/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,30 +74,25 @@ 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 @@ -105,28 +100,24 @@ icon_state = "n2_map" volume = 40000 //Vorestation edit -/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 @@ -134,26 +125,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" diff --git a/code/ZAS/Fire.dm b/code/ZAS/Fire.dm index 015ffa36a92..cd765f07571 100644 --- a/code/ZAS/Fire.dm +++ b/code/ZAS/Fire.dm @@ -179,8 +179,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) diff --git a/code/__defines/subsystems.dm b/code/__defines/subsystems.dm index 8ed8125dac6..0c93c81e288 100644 --- a/code/__defines/subsystems.dm +++ b/code/__defines/subsystems.dm @@ -19,9 +19,10 @@ #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 0 //New should not call Initialize +#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 diff --git a/code/_helpers/turfs.dm b/code/_helpers/turfs.dm index ddfcec7421e..9de7b925ad2 100644 --- a/code/_helpers/turfs.dm +++ b/code/_helpers/turfs.dm @@ -121,7 +121,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. diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm index 84844936c4f..f09cb94b0e7 100644 --- a/code/_helpers/unsorted.dm +++ b/code/_helpers/unsorted.dm @@ -726,7 +726,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. @@ -1167,15 +1167,13 @@ var/list/WALLITEMS = list( var/color = hex ? hex : "#[num2hex(red, 2)][num2hex(green, 2)][num2hex(blue, 2)]" return "___" + var/mob/dview/dview_mob = new //Version of view() which ignores darkness, because BYOND doesn't have it. /proc/dview(var/range = world.view, var/center, var/invis_flags = 0) if(!center) return - if(!dview_mob) //VOREStation Add: Debugging - dview_mob = new - log_error("Had to recreate the dview mob!") dview_mob.loc = center @@ -1186,10 +1184,10 @@ var/mob/dview/dview_mob = new /mob/dview invisibility = 101 - density = FALSE + density = 0 - anchored = TRUE - simulated = FALSE + anchored = 1 + simulated = 0 see_in_dark = 1e6 @@ -1198,8 +1196,8 @@ var/mob/dview/dview_mob = new color = origin.color set_light(origin.light_range, origin.light_power, origin.light_color) -/mob/dview/New() - ..() +/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) @@ -1207,18 +1205,17 @@ var/mob/dview/dview_mob = new else living_mob_list -= src -/mob/dview/Life() - mob_list -= src - dead_mob_list -= src - living_mob_list -= src - /mob/dview/Destroy(var/force) - stack_trace("Attempt to delete the dview_mob: [log_info_line(src)]") + crash_with("Attempt to delete the dview_mob: [log_info_line(src)]") if (!force) return QDEL_HINT_LETMELIVE global.dview_mob = new return ..() +// call to generate a stack trace and print to runtime logs +/proc/crash_with(msg) + CRASH(msg) + /proc/screen_loc2turf(scr_loc, turf/origin) var/tX = splittext(scr_loc, ",") var/tY = splittext(tX[2], ":") diff --git a/code/_onclick/hud/ability_screen_objects.dm b/code/_onclick/hud/ability_screen_objects.dm index cb500b4fe3a..c92da9293d7 100644 --- a/code/_onclick/hud/ability_screen_objects.dm +++ b/code/_onclick/hud/ability_screen_objects.dm @@ -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,10 +179,10 @@ ability_master.toggle_open(1) client.screen -= ability_master -/mob/New() - ..() +/mob/Initialize() + . = ..() if(!ability_master) //VOREStation Edit: S H A D E K I N - ability_master = new /obj/screen/movable/ability_master(src) + ability_master = new /obj/screen/movable/ability_master(null, src) ///////////ACTUAL ABILITIES//////////// //This is what you click to do things// diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 8954bf45bc5..c9c15433d43 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -661,8 +661,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 @@ -730,6 +731,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 @@ -817,8 +821,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() diff --git a/code/controllers/emergency_shuttle_controller.dm b/code/controllers/emergency_shuttle_controller.dm index b5fa776f7f5..41c57ecb720 100644 --- a/code/controllers/emergency_shuttle_controller.dm +++ b/code/controllers/emergency_shuttle_controller.dm @@ -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") diff --git a/code/controllers/subsystems/atoms.dm b/code/controllers/subsystems/atoms.dm index a62c5265c55..335949fa123 100644 --- a/code/controllers/subsystems/atoms.dm +++ b/code/controllers/subsystems/atoms.dm @@ -8,52 +8,54 @@ 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) 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("Initializing objects", 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/atom/A as anything in atoms) + 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(A, mapload_arg)) - atoms -= A + 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/atom/A as anything in late_loaders) @@ -62,12 +64,8 @@ SUBSYSTEM_DEF(atoms) testing("Late initialized [late_loaders.len] atoms") 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 @@ -86,9 +84,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 @@ -102,18 +100,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() diff --git a/code/controllers/subsystems/open_space.dm b/code/controllers/subsystems/open_space.dm new file mode 100644 index 00000000000..735a221f56b --- /dev/null +++ b/code/controllers/subsystems/open_space.dm @@ -0,0 +1,96 @@ +// +// Controller handling icon updates of open space turfs +// + +GLOBAL_VAR_INIT(open_space_initialised, FALSE) + +SUBSYSTEM_DEF(open_space) + name = "Open Space" + wait = 2 // 5 times per second. + init_order = INIT_ORDER_OPENSPACE + var/list/turfs_to_process = list() // List of turfs queued for update. + var/list/turfs_to_process_old = null // List of turfs currently being updated. + var/counter = 1 // Can't use .len because we need to iterate in order + var/static/image/over_OS_darkness // Image overlayed over the bottom turf with stuff in it. + +/datum/controller/subsystem/open_space/Initialize(timeofday) + over_OS_darkness = image('icons/turf/open_space.dmi', "black_open") + over_OS_darkness.plane = OVER_OPENSPACE_PLANE + over_OS_darkness.layer = MOB_LAYER + initialize_open_space() + // Pre-process open space turfs once before the round starts. + fire(FALSE, TRUE) + return ..() + +/datum/controller/subsystem/open_space/Recover() + flags |= SS_NO_INIT // Make extra sure we don't initialize twice. + . = ..() + +/datum/controller/subsystem/open_space/fire(resumed = 0, init_tick_checks = FALSE) + // We use a different list so any additions to the update lists during a delay from MC_TICK_CHECK + // don't cause things to be cut from the list without being updated. + + //If we're not resuming, this must mean it's a new iteration so we have to grab the turfs + if (!resumed) + src.counter = 1 + src.turfs_to_process_old = turfs_to_process + turfs_to_process = list() + + //cache for sanic speed (lists are references anyways) + var/list/turfs_to_process_old = src.turfs_to_process_old + var/counter = src.counter + while(counter <= turfs_to_process_old.len) + var/turf/T = turfs_to_process_old[counter] + counter += 1 + if(!QDELETED(T)) + update_turf(T) + if (init_tick_checks) + CHECK_TICK // Used during initialization processing + else if (MC_TICK_CHECK) + src.counter = counter // Save for when we're resumed + return // Used during normal MC processing. + +/datum/controller/subsystem/open_space/proc/update_turf(var/turf/T) + for(var/atom/movable/A in T) + A.fall() + T.update_icon() + +/datum/controller/subsystem/open_space/proc/add_turf(var/turf/T, var/recursive = 0) + ASSERT(isturf(T)) + // Check for multiple additions + // Pointless to process the same turf twice. But we need to push it to the end of the list + // because any turfs below it need to process first. + turfs_to_process -= T + turfs_to_process += T + if(recursive > 0) + var/turf/above = GetAbove(T) + if(above && isopenspace(above)) + add_turf(above, recursive) + +// Queue the initial updates of open space turfs when the game starts. This will lag! +/datum/controller/subsystem/open_space/proc/initialize_open_space() + // Do initial setup from bottom to top. + for(var/zlevel = 1 to world.maxz) + for(var/turf/simulated/open/T in block(locate(1, 1, zlevel), locate(world.maxx, world.maxy, zlevel))) + add_turf(T) + CHECK_TICK + GLOB.open_space_initialised = TRUE + +/datum/controller/subsystem/open_space/stat_entry(msg_prefix) + return ..("T [turfs_to_process.len]") + +/obj/update_icon() + . = ..() + if(GLOB.open_space_initialised && !invisibility && isturf(loc)) + var/turf/T = GetAbove(src) + if(isopenspace(T)) + // log_debug("[T] ([T.x],[T.y],[T.z]) queued for update for [src].update_icon()") + SSopen_space.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)) + var/turf/T = GetAbove(src) + if(isopenspace(T)) + SSopen_space.add_turf(T, 1) + . = ..() // Important that this be at the bottom, or we will have been moved to nullspace. diff --git a/code/controllers/subsystems/ticker.dm b/code/controllers/subsystems/ticker.dm index 4c6c5e44265..ad20bbb8898 100644 --- a/code/controllers/subsystems/ticker.dm +++ b/code/controllers/subsystems/ticker.dm @@ -416,7 +416,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 diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm index da3e8e1baf2..9ba4923aa0c 100644 --- a/code/controllers/verbs.dm +++ b/code/controllers/verbs.dm @@ -7,8 +7,9 @@ blocks_emissive = FALSE 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 diff --git a/code/datums/ghost_query.dm b/code/datums/ghost_query.dm index 6a342f58203..83015e6be19 100644 --- a/code/datums/ghost_query.dm +++ b/code/datums/ghost_query.dm @@ -20,10 +20,10 @@ // Then wait awhile. while(!finished) - sleep(1 SECOND) - wait_time -= 1 SECOND - if(wait_time <= 0) - finished = TRUE + spawn(1 SECOND) + wait_time -= 1 SECOND + if(wait_time <= 0) + finished = TRUE // Prune the list after the wait, incase any candidates logged out. for(var/mob/observer/dead/D as anything in candidates) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index efb84bbc858..6721ca70277 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -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." @@ -406,10 +406,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 @@ -434,7 +434,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 diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index b24169b8212..0dc346ca816 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -1833,24 +1833,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" diff --git a/code/game/area/ai_monitored.dm b/code/game/area/ai_monitored.dm index 84f2c8eb4ea..fc218150d5d 100644 --- a/code/game/area/ai_monitored.dm +++ b/code/game/area/ai_monitored.dm @@ -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) - if(M.isMotion()) - motioncamera = M - M.area_motion = src - return - return +/area/ai_monitored/LateInitialize() + . = ..() + for(var/obj/machinery/camera/M in src) + if(M.isMotion()) + motioncamera = M + M.area_motion = src /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) - - diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index d0cdeb01876..579678bd45e 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -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 @@ -55,10 +55,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() @@ -70,6 +73,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) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 0234ec9371a..e61dd0e956f 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -50,27 +50,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 - - // 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. + //atom creation method that preloads variables at creation if(GLOB.use_preloader && (src.type == GLOB._preloader.target_path))//in case the instanciated atom is creating other atoms in New() GLOB._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 @@ -82,6 +77,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)) stack_trace("GC: -- [type] had initialize() called after qdel() --") if(initialized) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index ef50823c48c..6865bc5ffbf 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -427,34 +427,102 @@ continue src.throw_impact(A,speed) -/atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower, spin = TRUE, datum/callback/callback) //If this returns FALSE then callback will not be called. - . = TRUE - if (!target || speed <= 0 || QDELETED(src) || (target.z != src.z)) - return FALSE +/atom/movable/proc/throw_at(atom/target, range, speed, thrower) + set waitfor = FALSE + if(!target || !src) + return 0 + if(target.z != src.z) + return 0 + //use a modified version of Bresenham's algorithm to get from the atom's current position to that of the target + src.throwing = 1 + src.thrower = thrower + src.throw_source = get_turf(src) //store the origin turf + src.pixel_z = 0 + if(usr) + if(HULK in usr.mutations) + src.throwing = 2 // really strong throw! - if (pulledby) - pulledby.stop_pulling() + var/dist_travelled = 0 + var/dist_since_sleep = 0 + var/area/a = get_area(src.loc) - var/datum/thrownthing/TT = new(src, target, range, speed, thrower, callback) - throwing = TT + var/dist_x = abs(target.x - src.x) + var/dist_y = abs(target.y - src.y) - pixel_z = 0 - if(spin && does_spin) - SpinAnimation(4,1) + var/dx + if (target.x > src.x) + dx = EAST + else + dx = WEST - SSthrowing.processing[src] = TT - if (SSthrowing.state == SS_PAUSED && length(SSthrowing.currentrun)) - SSthrowing.currentrun[src] = TT + var/dy + if (target.y > src.y) + dy = NORTH + else + dy = SOUTH + + var/error + var/major_dir + var/major_dist + var/minor_dir + var/minor_dist + if(dist_x > dist_y) + error = dist_x/2 - dist_y + major_dir = dx + major_dist = dist_x + minor_dir = dy + minor_dist = dist_y + else + error = dist_y/2 - dist_x + major_dir = dy + major_dist = dist_y + minor_dir = dx + minor_dist = dist_x + + range = min(dist_x + dist_y, range) + + while(src && target && src.throwing && istype(src.loc, /turf) \ + && ((abs(target.x - src.x)+abs(target.y - src.y) > 0 && dist_travelled < range) \ + || (a && a.has_gravity == 0) \ + || istype(src.loc, /turf/space))) + // only stop when we've gone the whole distance (or max throw range) and are on a non-space tile, or hit something, or hit the end of the map, or someone picks it up + var/atom/step + if(error >= 0) + step = get_step(src, major_dir) + error -= minor_dist + else + step = get_step(src, minor_dir) + error += major_dist + if(!step) // going off the edge of the map makes get_step return null, don't let things go off the edge + break + src.Move(step) + hit_check(speed) + dist_travelled++ + dist_since_sleep++ + if(dist_since_sleep >= speed) + dist_since_sleep = 0 + sleep(1) + a = get_area(src.loc) + // and yet it moves + if(src.does_spin) + src.SpinAnimation(speed = 4, loops = 1) + + //done throwing, either because it hit something or it finished moving + if(isobj(src)) src.throw_impact(get_turf(src),speed) + src.throwing = 0 + src.thrower = null + src.throw_source = null + fall() //Overlays /atom/movable/overlay var/atom/master = null anchored = TRUE -/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) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 431b4e06f32..c960fc47728 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -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, diff --git a/code/game/gamemodes/changeling/modularchangling.dm b/code/game/gamemodes/changeling/modularchangling.dm index 5563d4f01bb..e95148d80b2 100644 --- a/code/game/gamemodes/changeling/modularchangling.dm +++ b/code/game/gamemodes/changeling/modularchangling.dm @@ -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, diff --git a/code/game/gamemodes/changeling/powers/armblade.dm b/code/game/gamemodes/changeling/powers/armblade.dm index ffdc9b4ae37..67518216958 100644 --- a/code/game/gamemodes/changeling/powers/armblade.dm +++ b/code/game/gamemodes/changeling/powers/armblade.dm @@ -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("A grotesque weapon forms around [loc.name]\'s arm!", diff --git a/code/game/gamemodes/changeling/powers/armor.dm b/code/game/gamemodes/changeling/powers/armor.dm index 5a6db52833a..390c10eea56 100644 --- a/code/game/gamemodes/changeling/powers/armor.dm +++ b/code/game/gamemodes/changeling/powers/armor.dm @@ -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 = FALSE -/obj/item/clothing/suit/space/changeling/New() - ..() +/obj/item/clothing/suit/space/changeling/Initialize() + . = ..() if(ismob(loc)) loc.visible_message("[loc.name]\'s flesh rapidly inflates, forming a bloated mass around their body!", "We inflate our flesh, creating a spaceproof suit!", @@ -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("[loc.name]\'s flesh turns black, quickly transforming into a hard, chitinous mass!", "We harden our flesh, creating a suit of armor!", diff --git a/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm b/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm index ca92d67ff74..d35a2f21616 100644 --- a/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm +++ b/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm @@ -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("Electrical arcs form around [loc.name]\'s hand!", "We store a charge of electricity in our hand.", diff --git a/code/game/gamemodes/changeling/powers/electric_lockpick.dm b/code/game/gamemodes/changeling/powers/electric_lockpick.dm index 262d90429f3..40ba101f4e7 100644 --- a/code/game/gamemodes/changeling/powers/electric_lockpick.dm +++ b/code/game/gamemodes/changeling/powers/electric_lockpick.dm @@ -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, "We shape our finger to fit inside electronics, and are ready to force them open.") diff --git a/code/game/gamemodes/changeling/powers/fabricate_clothing.dm b/code/game/gamemodes/changeling/powers/fabricate_clothing.dm index c3c5f2aa15c..91b58f42a2e 100644 --- a/code/game/gamemodes/changeling/powers/fabricate_clothing.dm +++ b/code/game/gamemodes/changeling/powers/fabricate_clothing.dm @@ -264,12 +264,10 @@ var/global/list/changeling_fabricated_clothing = list( access = null canremove = FALSE -/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() diff --git a/code/game/gamemodes/cult/construct_spells.dm b/code/game/gamemodes/cult/construct_spells.dm index 62cdd5bf48a..57de2b49767 100644 --- a/code/game/gamemodes/cult/construct_spells.dm +++ b/code/game/gamemodes/cult/construct_spells.dm @@ -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 diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index 37400109142..f8a12c3e3bb 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -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() diff --git a/code/game/gamemodes/cult/narsie.dm b/code/game/gamemodes/cult/narsie.dm index 9c3504924f2..d7067031920 100644 --- a/code/game/gamemodes/cult/narsie.dm +++ b/code/game/gamemodes/cult/narsie.dm @@ -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("[uppertext(name)] HAS RISEN") 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 diff --git a/code/game/gamemodes/endgame/supermatter_cascade/portal.dm b/code/game/gamemodes/endgame/supermatter_cascade/portal.dm index a74867d9905..8016ed42f2c 100644 --- a/code/game/gamemodes/endgame/supermatter_cascade/portal.dm +++ b/code/game/gamemodes/endgame/supermatter_cascade/portal.dm @@ -14,8 +14,9 @@ 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() diff --git a/code/game/gamemodes/events/black_hole.dm b/code/game/gamemodes/events/black_hole.dm index b18310ed886..2e62b4cf118 100644 --- a/code/game/gamemodes/events/black_hole.dm +++ b/code/game/gamemodes/events/black_hole.dm @@ -8,9 +8,9 @@ density = FALSE anchored = TRUE -/obj/effect/bhole/New() - spawn(4) - controller() +/obj/effect/bhole/Initialize() + . = ..() + addtimer(CALLBACK(src, .proc/controller), 4) /obj/effect/bhole/proc/controller() while(src) diff --git a/code/game/gamemodes/events/holidays/Christmas.dm b/code/game/gamemodes/events/holidays/Christmas.dm index e0991edaa2d..65d23e8f5f8 100644 --- a/code/game/gamemodes/events/holidays/Christmas.dm +++ b/code/game/gamemodes/events/holidays/Christmas.dm @@ -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("[user] and [target] pop \an [src]! *pop*", "You pull \an [src] with [target]! *pop*", "You hear a *pop*.") diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 950910fe5fc..24e411a707c 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -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(attempt_vr(src,"Bump_vr",list(A))) return //VOREStation Edit - allows meteors to be deflected by baseball bats if(A) diff --git a/code/game/gamemodes/technomancer/catalog.dm b/code/game/gamemodes/technomancer/catalog.dm index 5dd0d64310e..bcf80cee4bc 100644 --- a/code/game/gamemodes/technomancer/catalog.dm +++ b/code/game/gamemodes/technomancer/catalog.dm @@ -73,8 +73,8 @@ var/list/all_technomancer_assistance = subtypesof(/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() diff --git a/code/game/gamemodes/technomancer/core_obj.dm b/code/game/gamemodes/technomancer/core_obj.dm index 0bdf378582d..5e44b3b6da3 100644 --- a/code/game/gamemodes/technomancer/core_obj.dm +++ b/code/game/gamemodes/technomancer/core_obj.dm @@ -37,8 +37,8 @@ var/max_summons = 10 // Maximum allowed summoned entities. Some cores will have different caps. var/universal = FALSE // Allows non-technomancers to use the core - VOREStation Add -/obj/item/weapon/technomancer_core/New() - ..() +/obj/item/weapon/technomancer_core/Initialize() + . = ..() START_PROCESSING(SSobj, src) /obj/item/weapon/technomancer_core/Destroy() @@ -142,9 +142,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 diff --git a/code/game/gamemodes/technomancer/devices/gloves_of_regen.dm b/code/game/gamemodes/technomancer/devices/gloves_of_regen.dm index 9d78afe0b2c..26dda90524f 100644 --- a/code/game/gamemodes/technomancer/devices/gloves_of_regen.dm +++ b/code/game/gamemodes/technomancer/devices/gloves_of_regen.dm @@ -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 diff --git a/code/game/gamemodes/technomancer/devices/shield_armor.dm b/code/game/gamemodes/technomancer/devices/shield_armor.dm index eec695278f2..eb11f761c79 100644 --- a/code/game/gamemodes/technomancer/devices/shield_armor.dm +++ b/code/game/gamemodes/technomancer/devices/shield_armor.dm @@ -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) diff --git a/code/game/gamemodes/technomancer/equipment.dm b/code/game/gamemodes/technomancer/equipment.dm index 940e31f3cd5..aca1ec01af3 100644 --- a/code/game/gamemodes/technomancer/equipment.dm +++ b/code/game/gamemodes/technomancer/equipment.dm @@ -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" diff --git a/code/game/gamemodes/technomancer/spell_objs.dm b/code/game/gamemodes/technomancer/spell_objs.dm index f8833d13b28..339ec59c238 100644 --- a/code/game/gamemodes/technomancer/spell_objs.dm +++ b/code/game/gamemodes/technomancer/spell_objs.dm @@ -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, "You need a Core to do that.") - 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() diff --git a/code/game/gamemodes/technomancer/spells/aspect_aura.dm b/code/game/gamemodes/technomancer/spells/aspect_aura.dm index eec4304d713..ec5c2486390 100644 --- a/code/game/gamemodes/technomancer/spells/aspect_aura.dm +++ b/code/game/gamemodes/technomancer/spells/aspect_aura.dm @@ -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) diff --git a/code/game/gamemodes/technomancer/spells/aura/aura.dm b/code/game/gamemodes/technomancer/spells/aura/aura.dm index be986bb7eed..9bdffceac1b 100644 --- a/code/game/gamemodes/technomancer/spells/aura/aura.dm +++ b/code/game/gamemodes/technomancer/spells/aura/aura.dm @@ -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].") diff --git a/code/game/gamemodes/technomancer/spells/chroma.dm b/code/game/gamemodes/technomancer/spells/chroma.dm index b87a82a0aeb..dff834f6689 100644 --- a/code/game/gamemodes/technomancer/spells/chroma.dm +++ b/code/game/gamemodes/technomancer/spells/chroma.dm @@ -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 diff --git a/code/game/gamemodes/technomancer/spells/energy_siphon.dm b/code/game/gamemodes/technomancer/spells/energy_siphon.dm index 1659b8f17bd..16b82068fda 100644 --- a/code/game/gamemodes/technomancer/spells/energy_siphon.dm +++ b/code/game/gamemodes/technomancer/spells/energy_siphon.dm @@ -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() diff --git a/code/game/gamemodes/technomancer/spells/flame_tongue.dm b/code/game/gamemodes/technomancer/spells/flame_tongue.dm index 9a52c5d82fd..a0471fe4adc 100644 --- a/code/game/gamemodes/technomancer/spells/flame_tongue.dm +++ b/code/game/gamemodes/technomancer/spells/flame_tongue.dm @@ -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("\The [loc]'s hand begins to emit a flame.") welder = new /obj/item/weapon/weldingtool/spell(src) diff --git a/code/game/gamemodes/technomancer/spells/insert/insert.dm b/code/game/gamemodes/technomancer/spells/insert/insert.dm index 9ac0295e2b8..0d537b35a91 100644 --- a/code/game/gamemodes/technomancer/spells/insert/insert.dm +++ b/code/game/gamemodes/technomancer/spells/insert/insert.dm @@ -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) diff --git a/code/game/gamemodes/technomancer/spells/instability_tap.dm b/code/game/gamemodes/technomancer/spells/instability_tap.dm index ad2c72518be..e5a80fdafc5 100644 --- a/code/game/gamemodes/technomancer/spells/instability_tap.dm +++ b/code/game/gamemodes/technomancer/spells/instability_tap.dm @@ -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) diff --git a/code/game/gamemodes/technomancer/spells/modifier/modifier.dm b/code/game/gamemodes/technomancer/spells/modifier/modifier.dm index 3ea278286e3..f612f00d3f6 100644 --- a/code/game/gamemodes/technomancer/spells/modifier/modifier.dm +++ b/code/game/gamemodes/technomancer/spells/modifier/modifier.dm @@ -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) diff --git a/code/game/gamemodes/technomancer/spells/phase_shift.dm b/code/game/gamemodes/technomancer/spells/phase_shift.dm index 7cee437685a..0a64aec0b6f 100644 --- a/code/game/gamemodes/technomancer/spells/phase_shift.dm +++ b/code/game/gamemodes/technomancer/spells/phase_shift.dm @@ -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) diff --git a/code/game/gamemodes/technomancer/spells/radiance.dm b/code/game/gamemodes/technomancer/spells/radiance.dm index d86428354e4..80a7d76ec96 100644 --- a/code/game/gamemodes/technomancer/spells/radiance.dm +++ b/code/game/gamemodes/technomancer/spells/radiance.dm @@ -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].") diff --git a/code/game/gamemodes/technomancer/spells/reflect.dm b/code/game/gamemodes/technomancer/spells/reflect.dm index 07f3595edaa..b5ca6047a40 100644 --- a/code/game/gamemodes/technomancer/spells/reflect.dm +++ b/code/game/gamemodes/technomancer/spells/reflect.dm @@ -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) diff --git a/code/game/gamemodes/technomancer/spells/shield.dm b/code/game/gamemodes/technomancer/spells/shield.dm index b11d5590b08..849ea56fbc4 100644 --- a/code/game/gamemodes/technomancer/spells/shield.dm +++ b/code/game/gamemodes/technomancer/spells/shield.dm @@ -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) diff --git a/code/game/gamemodes/technomancer/spells/spawner/darkness.dm b/code/game/gamemodes/technomancer/spells/spawner/darkness.dm index f54f9b75025..9a1a7bd365c 100644 --- a/code/game/gamemodes/technomancer/spells/spawner/darkness.dm +++ b/code/game/gamemodes/technomancer/spells/spawner/darkness.dm @@ -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 diff --git a/code/game/gamemodes/technomancer/spells/spawner/destablize.dm b/code/game/gamemodes/technomancer/spells/spawner/destablize.dm index 9bf6b072812..a24c0209898 100644 --- a/code/game/gamemodes/technomancer/spells/spawner/destablize.dm +++ b/code/game/gamemodes/technomancer/spells/spawner/destablize.dm @@ -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) diff --git a/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm b/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm index b56ea64e9cf..1594286377f 100644 --- a/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm +++ b/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm @@ -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) diff --git a/code/game/gamemodes/technomancer/spells/warp_strike.dm b/code/game/gamemodes/technomancer/spells/warp_strike.dm index 83a2336ab69..b0f7712cfa6 100644 --- a/code/game/gamemodes/technomancer/spells/warp_strike.dm +++ b/code/game/gamemodes/technomancer/spells/warp_strike.dm @@ -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) diff --git a/code/game/machinery/Beacon.dm b/code/game/machinery/Beacon.dm index f1066caffcd..7fc7fdf98c8 100644 --- a/code/game/machinery/Beacon.dm +++ b/code/game/machinery/Beacon.dm @@ -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 diff --git a/code/game/machinery/CableLayer.dm b/code/game/machinery/CableLayer.dm index 20677bb0ff0..3f9477431a5 100644 --- a/code/game/machinery/CableLayer.dm +++ b/code/game/machinery/CableLayer.dm @@ -8,9 +8,10 @@ var/max_cable = 100 var/on = 0 -/obj/machinery/cablelayer/New() - cable = new(src, 100) - ..() +/obj/machinery/cablelayer/Initialize() + cable = new(src) + cable.amount = 100 + . = ..() /obj/machinery/cablelayer/Moved(atom/old_loc, direction, forced = FALSE) . = ..() diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index 9a5eb65ba60..0e22433714e 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -15,8 +15,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) diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index f33549fc232..54bbc4baca1 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -552,8 +552,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() diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index 86f55631a4e..dd897f659d8 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -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() diff --git a/code/game/machinery/air_alarm.dm b/code/game/machinery/air_alarm.dm index ca40f0dc530..3cb7ac5b343 100644 --- a/code/game/machinery/air_alarm.dm +++ b/code/game/machinery/air_alarm.dm @@ -120,6 +120,9 @@ if(!pixel_x && !pixel_y) offset_airalarm() first_run() + set_frequency(frequency) + if(!master_is_operating()) + elect_master() /obj/machinery/alarm/Destroy() unregister_radio(src, frequency) @@ -154,12 +157,6 @@ update_icon() -/obj/machinery/alarm/Initialize() - . = ..() - set_frequency(frequency) - if(!master_is_operating()) - elect_master() - /obj/machinery/alarm/process() if((stat & (NOPOWER|BROKEN)) || shorted) return diff --git a/code/game/machinery/atm_ret_field.dm b/code/game/machinery/atm_ret_field.dm index bcf78539a79..36e92d5281b 100644 --- a/code/game/machinery/atm_ret_field.dm +++ b/code/game/machinery/atm_ret_field.dm @@ -81,6 +81,7 @@ return /obj/machinery/atmospheric_field_generator/perma/Initialize() + . = ..() generate_field() /obj/machinery/atmospheric_field_generator/update_icon() diff --git a/code/game/machinery/atmoalter/area_atmos_computer.dm b/code/game/machinery/atmoalter/area_atmos_computer.dm index bfe95bada70..82f23e72a68 100644 --- a/code/game/machinery/atmoalter/area_atmos_computer.dm +++ b/code/game/machinery/atmoalter/area_atmos_computer.dm @@ -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() diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index cb11dce0b50..4849c780806 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -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 diff --git a/code/game/machinery/atmoalter/clamp.dm b/code/game/machinery/atmoalter/clamp.dm index a77999a6614..4467376601c 100644 --- a/code/game/machinery/atmoalter/clamp.dm +++ b/code/game/machinery/atmoalter/clamp.dm @@ -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) diff --git a/code/game/machinery/atmoalter/portable_atmospherics.dm b/code/game/machinery/atmoalter/portable_atmospherics.dm index 6bdf71c5254..900dc7cd958 100644 --- a/code/game/machinery/atmoalter/portable_atmospherics.dm +++ b/code/game/machinery/atmoalter/portable_atmospherics.dm @@ -13,18 +13,14 @@ var/start_pressure = ONE_ATMOSPHERE var/maximum_pressure = 90 * ONE_ATMOSPHERE -/obj/machinery/portable_atmospherics/New() +/obj/machinery/portable_atmospherics/Initialize() ..() //VOREStation Edit - Fix runtime if(air_contents) air_contents.volume = volume air_contents.temperature = T20C //VOREStation Edit End - - return 1 - -/obj/machinery/portable_atmospherics/Initialize() - ..() + return INITIALIZE_HINT_LATELOAD /obj/machinery/portable_atmospherics/LateInitialize() diff --git a/code/game/machinery/atmoalter/pump.dm b/code/game/machinery/atmoalter/pump.dm index 1a502c675f9..8d496edddeb 100644 --- a/code/game/machinery/atmoalter/pump.dm +++ b/code/game/machinery/atmoalter/pump.dm @@ -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() diff --git a/code/game/machinery/atmoalter/scrubber.dm b/code/game/machinery/atmoalter/scrubber.dm index 7ab58e2c88d..80d053eb720 100644 --- a/code/game/machinery/atmoalter/scrubber.dm +++ b/code/game/machinery/atmoalter/scrubber.dm @@ -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) @@ -164,8 +164,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 diff --git a/code/game/machinery/bioprinter.dm b/code/game/machinery/bioprinter.dm index 4c684abb999..e3bf76493cc 100644 --- a/code/game/machinery/bioprinter.dm +++ b/code/game/machinery/bioprinter.dm @@ -338,7 +338,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 diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 85f23cb1dbd..1f1059422ef 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -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 @@ -65,8 +65,8 @@ if(!c_tag) var/area/A = get_area(src) c_tag = "[A ? A.name : "Unknown"] #[rand(111,999)]" - ..() // VOREStation Edit End + . = ..() /obj/machinery/camera/Destroy() if(isMotion()) @@ -185,7 +185,7 @@ else assembly.state = 1 to_chat(user, "You cut \the [src] free from the wall.") - 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) diff --git a/code/game/machinery/camera/presets.dm b/code/game/machinery/camera/presets.dm index 7e1de88bbb1..52741d6ebe7 100644 --- a/code/game/machinery/camera/presets.dm +++ b/code/game/machinery/camera/presets.dm @@ -112,8 +112,8 @@ var/global/list/engineering_networks = list( // EMP -/obj/machinery/camera/emp_proof/New() - ..() +/obj/machinery/camera/emp_proof/Initialize() + . = ..() upgradeEmpProof() // X-RAY @@ -133,14 +133,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 @@ -155,8 +155,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() diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 49c917f312e..2d52929e720 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -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) diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm index 4efec263f80..11c07b74f22 100644 --- a/code/game/machinery/computer/Operating.dm +++ b/code/game/machinery/computer/Operating.dm @@ -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) diff --git a/code/game/machinery/computer/RCON_Console.dm b/code/game/machinery/computer/RCON_Console.dm index d6df0d2d6d9..156f74ffa5c 100644 --- a/code/game/machinery/computer/RCON_Console.dm +++ b/code/game/machinery/computer/RCON_Console.dm @@ -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() diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 016a96c7230..fec159f48d4 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -96,9 +96,6 @@ /obj/machinery/computer/arcade/battle/Initialize() . = ..() - randomize_characters() - -/obj/machinery/computer/arcade/battle/proc/randomize_characters() var/name_action var/name_part1 var/name_part2 @@ -191,7 +188,6 @@ turtle = 0 if(emagged) - randomize_characters() emagged = 0 add_fingerprint(usr) @@ -210,7 +206,6 @@ new /obj/item/clothing/head/collectable/petehat(src.loc) message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") log_game("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") - randomize_characters() emagged = 0 else if(!contents.len) feedback_inc("arcade_win_normal") @@ -344,8 +339,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( @@ -1234,8 +1229,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(..()) diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm index 24a7d21a5f0..9bc132c7f16 100644 --- a/code/game/machinery/computer/atmos_alert.dm +++ b/code/game/machinery/computer/atmos_alert.dm @@ -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() diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index 869756f9874..4eac351ce11 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -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." diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index 1af31afe80d..fa73834f6fa 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -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) diff --git a/code/game/machinery/computer/guestpass.dm b/code/game/machinery/computer/guestpass.dm index 24b97e20994..6b6cd3a1aeb 100644 --- a/code/game/machinery/computer/guestpass.dm +++ b/code/game/machinery/computer/guestpass.dm @@ -101,8 +101,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)]" diff --git a/code/game/machinery/computer/shutoff_monitor.dm b/code/game/machinery/computer/shutoff_monitor.dm index 8cc101d8044..37eb2060a79 100644 --- a/code/game/machinery/computer/shutoff_monitor.dm +++ b/code/game/machinery/computer/shutoff_monitor.dm @@ -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() diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 35a060863e7..90b323358ff 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -27,24 +27,24 @@ var/image/fluid -/obj/machinery/atmospherics/unary/cryo_cell/New() - ..() +/obj/machinery/atmospherics/unary/cryo_cell/Initialize() + . = ..() icon = 'icons/obj/cryogenics_split.dmi' icon_state = "base" initialize_directions = dir -/obj/machinery/atmospherics/unary/cryo_cell/Initialize() - . = ..() var/image/tank = image(icon,"tank") tank.alpha = 200 tank.pixel_y = 18 tank.plane = MOB_PLANE tank.layer = MOB_LAYER+0.2 //Above fluid + fluid = image(icon, "tube_filler") fluid.pixel_y = 18 fluid.alpha = 200 fluid.plane = MOB_PLANE fluid.layer = MOB_LAYER+0.1 //Below glass, above mob + add_overlay(tank) update_icon() diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index c0c23f9420c..5a210c91365 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -289,9 +289,20 @@ time_till_despawn = 60 //1 second, because gateway. -/obj/machinery/cryopod/New() +/obj/machinery/cryopod/robot/door/checkpoint + name = "automated checkpoint" + desc = "A reinforced, automated checkpoint tracking arrivals and departures from the outpost. Beyond this vault is a small airstrip, then nothing but untamed wilderness." + on_store_message = "has departed from the colony." + on_store_name = "Travel Oversight" + on_enter_occupant_message = "The checkpoint unseals and grinds open, and you step through." + on_store_visible_message_1 = "grinds closed after" + on_store_visible_message_2 = "passes through it." + time_till_despawn = 10 // 1 second, because math + +/obj/machinery/cryopod/Initialize() + . = ..() announce = new /obj/item/device/radio/intercom(src) - ..() + find_control_computer() /obj/machinery/cryopod/Destroy() if(occupant) @@ -299,11 +310,6 @@ occupant.resting = 1 return ..() -/obj/machinery/cryopod/Initialize() - . = ..() - - find_control_computer() - /obj/machinery/cryopod/proc/find_control_computer(urgent=0) control_computer = null diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index a72d814c791..9ea64dc99f4 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -21,8 +21,8 @@ Deployable items var/locked = 0.0 // req_access = list(access_maint_tunnels) -/obj/machinery/deployable/barrier/New() - ..() +/obj/machinery/deployable/barrier/Initialize() + . = ..() icon_state = "barrier[locked]" diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 20d0f634dab..bd2a0915767 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1444,8 +1444,15 @@ About the new airlock wires panel: return 0 return ..(M) -/obj/machinery/door/airlock/New(var/newloc, var/obj/structure/door_assembly/assembly=null) - ..() +/obj/machinery/door/airlock/Initialize(var/ml, var/obj/structure/door_assembly/assembly=null) + if(src.closeOtherId != null) + for (var/obj/machinery/door/airlock/A in machines) + if(A.closeOtherId == src.closeOtherId && A != src) + src.closeOther = A + break + name = "\improper [name]" + + . = ..() //if assembly is given, create the new door from the assembly if (assembly && istype(assembly)) @@ -1473,22 +1480,17 @@ About the new airlock wires panel: set_dir(assembly.dir) //wires - var/turf/T = get_turf(newloc) + var/turf/T = get_turf(src) if(T && (T.z in using_map.admin_levels)) secured_wires = 1 if (secured_wires) wires = new/datum/wires/airlock/secure(src) else wires = new/datum/wires/airlock(src) - -/obj/machinery/door/airlock/Initialize() - if(src.closeOtherId != null) - for (var/obj/machinery/door/airlock/A in machines) - if(A.closeOtherId == src.closeOtherId && A != src) - src.closeOther = A - break - name = "\improper [name]" - . = ..() + + if(frequency) + set_frequency(frequency) + update_icon() /obj/machinery/door/airlock/Destroy() qdel(wires) @@ -1553,4 +1555,4 @@ About the new airlock wires panel: to_chat(user, span("notice", "You deconstruct \the [src].")) qdel(src) return TRUE - return FALSE + return FALSE \ No newline at end of file diff --git a/code/game/machinery/doors/airlock_control.dm b/code/game/machinery/doors/airlock_control.dm index 3c91bd7c02a..9d3e7c4adf1 100644 --- a/code/game/machinery/doors/airlock_control.dm +++ b/code/game/machinery/doors/airlock_control.dm @@ -132,14 +132,6 @@ frequency = new_frequency radio_connection = radio_controller.add_object(src, frequency, RADIO_AIRLOCK) - -/obj/machinery/door/airlock/Initialize() - . = ..() - if(frequency) - set_frequency(frequency) - - update_icon() - /obj/machinery/door/airlock/Destroy() if(frequency && radio_controller) radio_controller.remove_object(src,frequency) diff --git a/code/game/machinery/doors/alarmlock.dm b/code/game/machinery/doors/alarmlock.dm index f7dda48feb4..7508f559a83 100644 --- a/code/game/machinery/doors/alarmlock.dm +++ b/code/game/machinery/doors/alarmlock.dm @@ -9,10 +9,6 @@ var/air_frequency = 1437 autoclose = 0 -/obj/machinery/door/airlock/alarmlock/New() - ..() - air_connection = new - /obj/machinery/door/airlock/alarmlock/Destroy() if(radio_controller) radio_controller.remove_object(src,air_frequency) @@ -22,8 +18,7 @@ . = ..() radio_controller.remove_object(src, air_frequency) air_connection = radio_controller.add_object(src, air_frequency, RADIO_TO_AIRALARM) - open() - + addtimer(CALLBACK(src, .proc/open), 0) /obj/machinery/door/airlock/alarmlock/receive_signal(datum/signal/signal) ..() diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index fa31ef365fc..fd4060db9cd 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -53,7 +53,7 @@ visible_message("\The [user] bonks \the [src] harmlessly.") user.do_attack_animation(src) -/obj/machinery/door/New() +/obj/machinery/door/Initialize() . = ..() if(density) layer = closed_layer diff --git a/code/game/machinery/doors/multi_tile.dm b/code/game/machinery/doors/multi_tile.dm index 23b71bdb0f1..67181cb824a 100644 --- a/code/game/machinery/doors/multi_tile.dm +++ b/code/game/machinery/doors/multi_tile.dm @@ -7,7 +7,7 @@ open_sound_powered = 'sound/machines/door/WideOpen.ogg' close_sound_powered = 'sound/machines/door/WideClose.ogg' -/obj/machinery/door/airlock/multi_tile/Initialize(mapload) +/obj/machinery/door/airlock/multi_tile/Initialize() . = ..() SetBounds() RegisterSignal(src, COMSIG_MOVABLE_MOVED, .proc/SetBounds) @@ -48,4 +48,4 @@ /obj/machinery/door/airlock/multi_tile/metal/mait icon = 'icons/obj/doors/Door2x1_Maint.dmi' - //req_one_access = list(access_maint_tunnels) //VOREStaiton Edit - Maintenance is open access + //req_one_access = list(access_maint_tunnels) //VOREStaiton Edit - Maintenance is open access \ No newline at end of file diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 28afc5e9ff4..b11781dbb0e 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -17,8 +17,8 @@ can_atmos_pass = ATMOS_PASS_PROC air_properties_vary_with_direction = 1 -/obj/machinery/door/window/New() - ..() +/obj/machinery/door/window/Initialize() + . = ..() update_nearby_tiles() if(LAZYLEN(req_access)) src.icon_state = "[src.icon_state]" diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index 7b8039cb6f9..dd15e02a993 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -9,8 +9,8 @@ var/list/doppler_arrays = list() icon_state = "doppler" -/obj/machinery/doppler_array/New() - ..() +/obj/machinery/doppler_array/Initialize() + . = ..() doppler_arrays += src /obj/machinery/doppler_array/Destroy() diff --git a/code/game/machinery/floodlight.dm b/code/game/machinery/floodlight.dm index a5cc7d67508..39693f3e281 100644 --- a/code/game/machinery/floodlight.dm +++ b/code/game/machinery/floodlight.dm @@ -13,9 +13,9 @@ var/open = 0 var/brightness_on = 8 //can't remember what the maxed out value is -/obj/machinery/floodlight/New() +/obj/machinery/floodlight/Initialize() + . = ..() cell = new(src) - ..() /obj/machinery/floodlight/update_icon() cut_overlays() diff --git a/code/game/machinery/floorlayer.dm b/code/game/machinery/floorlayer.dm index dfbf3c38df7..3be956bcaec 100644 --- a/code/game/machinery/floorlayer.dm +++ b/code/game/machinery/floorlayer.dm @@ -8,9 +8,9 @@ var/obj/item/stack/tile/T var/list/mode = list("dismantle"=0,"laying"=0,"collect"=0) -/obj/machinery/floorlayer/New() +/obj/machinery/floorlayer/Initialize() + . = ..() T = new/obj/item/stack/tile/floor(src) - ..() /obj/machinery/floorlayer/Moved(atom/old_loc, direction, forced = FALSE) . = ..() diff --git a/code/game/machinery/frame.dm b/code/game/machinery/frame.dm index d651ad2025a..69652ef0212 100644 --- a/code/game/machinery/frame.dm +++ b/code/game/machinery/frame.dm @@ -280,8 +280,8 @@ for(var/obj/ct as anything in req_components) req_component_names[ct] = initial(ct.name) -/obj/structure/frame/New(var/loc, var/dir, var/building = 0, var/datum/frame/frame_types/type, mob/user as mob) - ..() +/obj/structure/frame/Initialize(var/ml, var/dir, var/building = 0, var/datum/frame/frame_types/type, mob/user as mob) + . = ..() if(building) frame_type = type state = FRAME_PLACED diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 060bd029fc5..a511e09d9b6 100755 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -30,8 +30,8 @@ location.hotspot_expose(1000,500,1) return 1 -/obj/machinery/igniter/New() - ..() +/obj/machinery/igniter/Initialize() + . = ..() icon_state = "igniter[on]" /obj/machinery/igniter/power_change() @@ -58,9 +58,6 @@ idle_power_usage = 2 active_power_usage = 4 -/obj/machinery/sparker/New() - ..() - /obj/machinery/sparker/power_change() ..() if(!(stat & NOPOWER) && disable == 0) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 6ceab538950..6152f07df36 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -121,15 +121,12 @@ Class Procs: blocks_emissive = EMISSIVE_BLOCK_GENERIC -/obj/machinery/New(l, d=0) - ..() - if(isnum(d)) +/obj/machinery/Initialize(var/ml, d=0) + . = ..() + if(isnum(d)) //VOREStation Edit - bugfix set_dir(d) if(ispath(circuit)) circuit = new circuit(src) - -/obj/machinery/Initialize(var/mapload) - . = ..() global.machines += src if(ispath(circuit)) circuit = new circuit(src) @@ -137,7 +134,7 @@ Class Procs: START_MACHINE_PROCESSING(src) else START_PROCESSING(SSfastprocess, src) - if(!mapload) + if(!ml) power_change() /obj/machinery/Destroy() diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index e2b76f3632a..6bfd03372c4 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -27,8 +27,8 @@ var/center_y = 0 var/max_dist = 20 // absolute value of center_x,y cannot exceed this integer -/obj/machinery/magnetic_module/New() - ..() +/obj/machinery/magnetic_module/Initialize() + . = ..() var/turf/T = loc hide(!T.is_plating()) center = T @@ -209,8 +209,8 @@ var/datum/radio_frequency/radio_connection -/obj/machinery/magnetic_controller/New() - ..() +/obj/machinery/magnetic_controller/Initialize() + . = ..() if(autolink) for(var/obj/machinery/magnetic_module/M in machines) diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm index 1002e3fa213..7e30fc58089 100644 --- a/code/game/machinery/mass_driver.dm +++ b/code/game/machinery/mass_driver.dm @@ -16,7 +16,7 @@ var/id = 1.0 var/drive_range = 50 //this is mostly irrelevant since current mass drivers throw into space, but you could make a lower-range mass driver for interstation transport or something I guess. -/obj/machinery/mass_driver/New() +/obj/machinery/mass_driver/Initialize() . = ..() default_apply_parts() diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 1e1fff180ed..056ef1727a8 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -18,8 +18,8 @@ var/global/list/navbeacons = list() // no I don't like putting this in, but it w var/list/codes = list() // assoc. list of transponder codes req_access = list(access_engine) -/obj/machinery/navbeacon/New() - ..() +/obj/machinery/navbeacon/Initialize() + . = ..() set_codes_from_txt(codes_txt) if(freq) warning("[src] at [x],[y],[z] has deprecated var freq=[freq]. Replace it with proper type.") @@ -233,6 +233,6 @@ Transponder Codes: