diff --git a/.travis.yml b/.travis.yml index 8273b1e69ab..a34e0e29f9c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,13 +10,7 @@ env: - DM_MAPFILE="" matrix: - BUILD_TOOLS=true - - DM_MAPFILE="tgstation2" - - DM_MAPFILE="metastation" - - DM_MAPFILE="birdstation" - - DM_MAPFILE="pubbystation" - - DM_MAPFILE="templates" - - DM_MAPFILE="omegastation" - - DM_MAPFILE="deltastation" + - DM_MAPFILE="loadallmaps" cache: directories: diff --git a/_maps/birdstation.dm b/_maps/birdstation.dm index 434912fa9da..326a5217bc1 100644 --- a/_maps/birdstation.dm +++ b/_maps/birdstation.dm @@ -13,6 +13,7 @@ A small map intended for lowpop(40 players and less). #define MINETYPE "lavaland" #include "map_files\BirdStation\BirdStation.dmm" +#ifndef TRAVIS_MASS_MAP_BUILD #include "map_files\generic\z2.dmm" #include "map_files\generic\z3.dmm" #include "map_files\generic\z4.dmm" @@ -29,7 +30,7 @@ A small map intended for lowpop(40 players and less). #define MAP_NAME "BirdboatStation" #define MAP_TRANSITION_CONFIG DEFAULT_MAP_TRANSITION_CONFIG - +#endif #if !defined(MAP_OVERRIDE_FILES) #define MAP_OVERRIDE_FILES #include "map_files\BirdStation\job\job_changes.dm" diff --git a/_maps/deltastation.dm b/_maps/deltastation.dm index 5a66be6ca10..e297e63075f 100644 --- a/_maps/deltastation.dm +++ b/_maps/deltastation.dm @@ -5,6 +5,7 @@ #define MINETYPE "lavaland" #include "map_files\DeltaStation\DeltaStation2.dmm" +#ifndef TRAVIS_MASS_MAP_BUILD #include "map_files\generic\z2.dmm" #include "map_files\generic\z3.dmm" #include "map_files\generic\z4.dmm" @@ -21,7 +22,7 @@ #define MAP_NAME "Delta Station" #define MAP_TRANSITION_CONFIG DEFAULT_MAP_TRANSITION_CONFIG - +#endif #elif !defined(MAP_OVERRIDE) #warn a map has already been included, deltastation. diff --git a/_maps/loadallmaps.dm b/_maps/loadallmaps.dm new file mode 100644 index 00000000000..b9192f88f3c --- /dev/null +++ b/_maps/loadallmaps.dm @@ -0,0 +1,53 @@ +#define TRAVIS_MASS_MAP_BUILD +#define MAP_TRANSITION_CONFIG DEFAULT_MAP_TRANSITION_CONFIG + +#include "birdstation.dm" +#ifdef MAP_OVERRIDE_FILES + #undef MAP_OVERRIDE_FILES +#endif + +#include "deltastation.dm" +#ifdef MAP_OVERRIDE_FILES + #undef MAP_OVERRIDE_FILES +#endif + +#include "metastation.dm" +#ifdef MAP_OVERRIDE_FILES + #undef MAP_OVERRIDE_FILES +#endif + +#include "omegastation.dm" +#ifdef MAP_OVERRIDE_FILES + #undef MAP_OVERRIDE_FILES +#endif + +#include "pubbystation.dm" +#ifdef MAP_OVERRIDE_FILES + #undef MAP_OVERRIDE_FILES +#endif + +#include "tgstation2.dm" +#ifdef MAP_OVERRIDE_FILES + #undef MAP_OVERRIDE_FILES +#endif + +#include "map_files\generic\z2.dmm" +#include "map_files\generic\z3.dmm" +#include "map_files\generic\z4.dmm" +#include "map_files\generic\lavaland.dmm" +#include "map_files\generic\z6.dmm" +#include "map_files\generic\z7.dmm" +#include "map_files\generic\z8.dmm" +#include "map_files\generic\z9.dmm" +#include "map_files\generic\z10.dmm" +#include "map_files\generic\z11.dmm" + +#undef TRAVIS_MASS_MAP_BUILD + +#ifdef TRAVISBUILDING +#include "templates.dm" +#endif + +#include "runtimestation.dm" + +#define BYOND_WHY_YOU_NO_ALLOW_INCLUDE_LAST_LINE //because byond fails to compile if the last thing in a file is an include. \ No newline at end of file diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index bbfc47bb037..316e111d6fd 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -112458,8 +112458,9 @@ dwidth = 11; height = 18; name = "Delta emergency shuttle"; - timid = 0; - width = 30 + width = 30; + preferred_direction = 2; + port_angle = 90 }, /obj/docking_port/stationary{ dheight = 0; diff --git a/_maps/metastation.dm b/_maps/metastation.dm index 9987cd2459f..3fbd063eafd 100644 --- a/_maps/metastation.dm +++ b/_maps/metastation.dm @@ -5,6 +5,7 @@ #define MINETYPE "lavaland" #include "map_files\MetaStation\MetaStation.dmm" +#ifndef TRAVIS_MASS_MAP_BUILD #include "map_files\generic\z2.dmm" #include "map_files\generic\z3.dmm" #include "map_files\generic\z4.dmm" @@ -21,7 +22,7 @@ #define MAP_NAME "MetaStation" #define MAP_TRANSITION_CONFIG DEFAULT_MAP_TRANSITION_CONFIG - +#endif #elif !defined(MAP_OVERRIDE) #warn a map has already been included, ignoring MetaStation. diff --git a/_maps/omegastation.dm b/_maps/omegastation.dm index 8000697e50c..ad4fe6607c1 100644 --- a/_maps/omegastation.dm +++ b/_maps/omegastation.dm @@ -5,6 +5,7 @@ #define MINETYPE "lavaland" #include "map_files\OmegaStation\OmegaStation.dmm" +#ifndef TRAVIS_MASS_MAP_BUILD #include "map_files\generic\z2.dmm" #include "map_files\generic\z3.dmm" #include "map_files\generic\z4.dmm" @@ -21,7 +22,7 @@ #define MAP_NAME "OmegaStation" #define MAP_TRANSITION_CONFIG DEFAULT_MAP_TRANSITION_CONFIG - +#endif #if !defined(MAP_OVERRIDE_FILES) #define MAP_OVERRIDE_FILES #include "map_files\OmegaStation\job\job_changes.dm" diff --git a/_maps/pubbystation.dm b/_maps/pubbystation.dm index 92ef96be5e3..9ef04e80613 100644 --- a/_maps/pubbystation.dm +++ b/_maps/pubbystation.dm @@ -5,6 +5,7 @@ #define MINETYPE "lavaland" #include "map_files\PubbyStation\PubbyStation.dmm" +#ifndef TRAVIS_MASS_MAP_BUILD #include "map_files\generic\z2.dmm" #include "map_files\generic\z3.dmm" #include "map_files\generic\z4.dmm" @@ -21,7 +22,7 @@ #define MAP_NAME "PubbyStation" #define MAP_TRANSITION_CONFIG DEFAULT_MAP_TRANSITION_CONFIG - +#endif #if !defined(MAP_OVERRIDE_FILES) #define MAP_OVERRIDE_FILES #include "map_files\PubbyStation\job\job_changes.dm" diff --git a/_maps/shuttles/emergency_delta.dmm b/_maps/shuttles/emergency_delta.dmm index a1a7fd709ac..c38d6de7b36 100644 --- a/_maps/shuttles/emergency_delta.dmm +++ b/_maps/shuttles/emergency_delta.dmm @@ -46,7 +46,7 @@ "aT" = (/obj/structure/sign/nanotrasen,/turf/closed/wall/mineral/titanium,/area/shuttle/escape) "aU" = (/turf/open/floor/plasteel/bot,/area/shuttle/escape) "aV" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0"},/turf/open/floor/plasteel/warning/side{tag = "icon-plasteel_warn_side (EAST)"; icon_state = "plasteel_warn_side"; dir = 4},/area/shuttle/escape) -"aW" = (/obj/machinery/door/airlock/shuttle{name = "Emergency Shuttle Airlock"},/obj/docking_port/mobile/emergency{dheight = 0; dwidth = 11; height = 18; name = "Delta emergency shuttle"; timid = 1; width = 30},/turf/open/floor/plating,/area/shuttle/escape) +"aW" = (/obj/machinery/door/airlock/shuttle{name = "Emergency Shuttle Airlock"},/obj/docking_port/mobile/emergency{dheight = 0; dwidth = 11; height = 18; name = "Delta emergency shuttle"; timid = 1; width = 30; preferred_direction = 2; port_angle = 90},/turf/open/floor/plating,/area/shuttle/escape) "aX" = (/obj/structure/flora/ausbushes/grassybush,/obj/structure/flora/ausbushes/lavendergrass,/obj/structure/flora/ausbushes/ppflowers,/obj/structure/flora/ausbushes/sunnybush,/obj/structure/window/shuttle,/turf/open/floor/grass,/area/shuttle/escape) "aY" = (/obj/structure/extinguisher_cabinet{pixel_x = -26},/obj/machinery/shieldgen,/turf/open/floor/plasteel/bot,/area/shuttle/escape) "aZ" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/electrical{pixel_x = -3; pixel_y = 1},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 0; pixel_y = -1},/obj/item/weapon/storage/toolbox/emergency{pixel_x = 3; pixel_y = -5},/turf/open/floor/plasteel/bot,/area/shuttle/escape) diff --git a/_maps/tgstation2.dm b/_maps/tgstation2.dm index 9f027f88e85..9ebc966dbae 100644 --- a/_maps/tgstation2.dm +++ b/_maps/tgstation2.dm @@ -5,6 +5,7 @@ #define MINETYPE "lavaland" #include "map_files\TgStation\tgstation.2.1.3.dmm" +#ifndef TRAVIS_MASS_MAP_BUILD #include "map_files\generic\z2.dmm" #include "map_files\generic\z3.dmm" #include "map_files\generic\z4.dmm" @@ -21,7 +22,7 @@ #define MAP_NAME "Box Station" #define MAP_TRANSITION_CONFIG DEFAULT_MAP_TRANSITION_CONFIG - +#endif #elif !defined(MAP_OVERRIDE) #warn a map has already been included, ignoring /tg/station 2. diff --git a/code/__DEFINES/clockcult.dm b/code/__DEFINES/clockcult.dm index 1ede7c7fbfd..d97dbc6cf57 100644 --- a/code/__DEFINES/clockcult.dm +++ b/code/__DEFINES/clockcult.dm @@ -90,5 +90,6 @@ var/global/list/all_scripture = list() //a list containing scripture instances; #define CLOCKCULT_SILICONS "silicons" //misc clockcult stuff - #define MARAUDER_EMERGE_THRESHOLD 65 //marauders cannot emerge unless host is at this% or less health + +#define SIGIL_ACCESS_RANGE 2 //range at which transmission sigils can access power diff --git a/code/__DEFINES/qdel.dm b/code/__DEFINES/qdel.dm index 8358df737e0..4bbe2e486a1 100644 --- a/code/__DEFINES/qdel.dm +++ b/code/__DEFINES/qdel.dm @@ -6,8 +6,7 @@ #define QDEL_HINT_IWILLGC 2 //functionally the same as the above. qdel should assume the object will gc on its own, and not check it. #define QDEL_HINT_HARDDEL 3 //qdel should assume this object won't gc, and queue a hard delete using a hard reference. #define QDEL_HINT_HARDDEL_NOW 4 //qdel should assume this object won't gc, and hard del it post haste. -#define QDEL_HINT_PUTINPOOL 5 //qdel will put this object in the atom pool. -#define QDEL_HINT_FINDREFERENCE 6 //functionally identical to QDEL_HINT_QUEUE if TESTING is not enabled in _compiler_options.dm. +#define QDEL_HINT_FINDREFERENCE 5 //functionally identical to QDEL_HINT_QUEUE if TESTING is not enabled in _compiler_options.dm. //if TESTING is enabled, qdel will call this object's find_references() verb. //defines for the gc_destroyed var diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 4d8a0a46e0a..0fea126a80a 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -33,7 +33,7 @@ else //no need to update return 0 else - alert = PoolOrNew(type) + alert = new type() if(new_master) var/old_layer = new_master.layer @@ -586,8 +586,8 @@ so as to remain in compliance with the most up-to-date laws." return usr.client.Click(master, location, control, params) /obj/screen/alert/Destroy() - ..() + . = ..() severity = 0 master = null screen_loc = "" - return QDEL_HINT_PUTINPOOL //Don't destroy me, I have a family! + diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index a1078b7aeb1..ba8ff0e72cc 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -12,7 +12,7 @@ else if(!severity || severity == screen.severity) return null else - screen = PoolOrNew(type) + screen = new type() screen.icon_state = "[initial(screen.icon_state)][severity]" screen.severity = severity @@ -65,9 +65,8 @@ var/severity = 0 /obj/screen/fullscreen/Destroy() - ..() severity = 0 - return QDEL_HINT_PUTINPOOL + . = ..() /obj/screen/fullscreen/brute icon_state = "brutedamageoverlay" diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 66e4a5d0448..4a141df0c51 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -175,7 +175,7 @@ var/const/tk_maxrange = 15 /obj/item/tk_grab/proc/apply_focus_overlay() if(!focus) return - PoolOrNew(/obj/effect/overlay/temp/telekinesis, get_turf(focus)) + new /obj/effect/overlay/temp/telekinesis(get_turf(focus)) /obj/item/tk_grab/update_icon() diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index ece8d7c5678..05807f12955 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -190,8 +190,6 @@ var/datum/subsystem/garbage_collector/SSgarbage SSgarbage.HardQueue(D) if (QDEL_HINT_HARDDEL_NOW) //qdel should assume this object won't gc, and hard del it post haste. del(D) - if (QDEL_HINT_PUTINPOOL) //qdel will put this object in the pool. - PlaceInPool(D, 0) if (QDEL_HINT_FINDREFERENCE)//qdel will, if TESTING is enabled, display all references to this object, then queue the object for deletion. SSgarbage.QueueForQueuing(D) #ifdef TESTING diff --git a/code/controllers/subsystem/pool.dm b/code/controllers/subsystem/pool.dm deleted file mode 100644 index 245e733e984..00000000000 --- a/code/controllers/subsystem/pool.dm +++ /dev/null @@ -1,48 +0,0 @@ -var/datum/subsystem/pool/SSpool - -/datum/subsystem/pool - name = "Pool" - init_order = 20 - flags = SS_BACKGROUND | SS_FIRE_IN_LOBBY - var/list/global_pool - var/list/pool_levels = list() - var/sum = 0 - - var/list/maintained_types = list( - /obj/item/stack/tile/plasteel = 100 - ) - - var/list/stats_placed_in_pool = list() - var/list/stats_pooled_or_newed = list() - var/list/stats_reused = list() - var/list/stats_created_new = list() - -/datum/subsystem/pool/New() - NEW_SS_GLOBAL(SSpool) - -/datum/subsystem/pool/Initialize(timeofday) - global_pool = GlobalPool - -/datum/subsystem/pool/stat_entry(msg) - if(global_pool) - msg += "Types: [global_pool.len]|Total Pooled Objects: [sum]" - else - msg += "NULL POOL" - ..(msg) - -/datum/subsystem/pool/fire() - sum = 0 - for(var/type in global_pool + maintained_types) - var/list/L = global_pool[type] - var/required_number = maintained_types[type] || 0 - - // Update pool levels and tracker - var/amount = 0 - if(L) - amount = L.len - sum += amount - - // why yes, just inflate the pool at one item per tick - if(amount < required_number) - var/diver = new type - qdel(diver) diff --git a/code/controllers/subsystem/processing/objects.dm b/code/controllers/subsystem/processing/objects.dm index f919b0ce883..0e1a697c874 100644 --- a/code/controllers/subsystem/processing/objects.dm +++ b/code/controllers/subsystem/processing/objects.dm @@ -11,6 +11,8 @@ var/datum/subsystem/objects/SSobj init_order = 12 priority = 40 + var/initialized = FALSE + var/old_initialized var/list/atom_spawners = list() var/list/processing = list() var/list/currentrun = list() @@ -24,10 +26,18 @@ var/datum/subsystem/objects/SSobj setupGenetics() //to set the mutations' place in structural enzymes, so monkey.initialize() knows where to put the monkey mutation. for(var/thing in world) var/atom/A = thing - A.initialize() + A.Initialize(TRUE) CHECK_TICK + initialized = TRUE . = ..() +/datum/subsystem/objects/proc/map_loader_begin() + old_initialized = initialized + initialized = FALSE + +/datum/subsystem/objects/proc/map_loader_stop() + initialized = old_initialized + /datum/subsystem/objects/proc/trigger_atom_spawners(zlevel, ignore_z=FALSE) for(var/V in atom_spawners) var/atom/A = V @@ -58,11 +68,14 @@ var/datum/subsystem/objects/SSobj /datum/subsystem/objects/proc/setup_template_objects(list/objects) trigger_atom_spawners(0, ignore_z=TRUE) - for(var/A in objects) - var/atom/B = A - B.initialize() + if(initialized) + for(var/A in objects) + var/atom/B = A + B.Initialize(TRUE) /datum/subsystem/objects/Recover() + initialized = SSobj.initialized + old_initialized = SSobj.old_initialized if (istype(SSobj.atom_spawners)) atom_spawners = SSobj.atom_spawners if (istype(SSobj.processing)) diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm index 6d7ad339d5f..2bc6c40cfe8 100644 --- a/code/controllers/subsystem/timer.dm +++ b/code/controllers/subsystem/timer.dm @@ -284,7 +284,8 @@ var/datum/subsystem/timer/SStimer prev.next = null if (next && next.prev == src) next.prev = null - + next = null + prev = null return QDEL_HINT_IWILLGC proc/addtimer(datum/callback/callback, wait, flags) @@ -335,4 +336,4 @@ proc/addtimer(datum/callback/callback, wait, flags) #undef BUCKET_LEN -#undef BUCKET_POS \ No newline at end of file +#undef BUCKET_POS diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index b6170c688d9..0b1cc6d6e7d 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -36,7 +36,7 @@ Bonus /datum/symptom/heal/proc/Heal(mob/living/M, datum/disease/advance/A) var/heal_amt = 0.5 if(M.toxloss > 0 && prob(20)) - PoolOrNew(/obj/effect/overlay/temp/heal, list(get_turf(M), "#66FF99")) + new /obj/effect/overlay/temp/heal(get_turf(M), "#66FF99") M.adjustToxLoss(-heal_amt) return 1 @@ -67,7 +67,7 @@ Bonus /datum/symptom/heal/plus/Heal(mob/living/M, datum/disease/advance/A) var/heal_amt = 1 if(M.toxloss > 0 && prob(20)) - PoolOrNew(/obj/effect/overlay/temp/heal, list(get_turf(M), "#00FF00")) + new /obj/effect/overlay/temp/heal(get_turf(M), "#00FF00") M.adjustToxLoss(-heal_amt) return 1 @@ -110,7 +110,7 @@ Bonus M.update_damage_overlays() if(prob(20)) - PoolOrNew(/obj/effect/overlay/temp/heal, list(get_turf(M), "#FF3333")) + new /obj/effect/overlay/temp/heal(get_turf(M), "#FF3333") return 1 @@ -148,7 +148,7 @@ Bonus if(M.getCloneLoss() > 0) M.adjustCloneLoss(-1) M.take_bodypart_damage(0, 1) //Deals BURN damage, which is not cured by this symptom - PoolOrNew(/obj/effect/overlay/temp/heal, list(get_turf(M), "#33FFCC")) + new /obj/effect/overlay/temp/heal(get_turf(M), "#33FFCC") if(!parts.len) return @@ -158,7 +158,7 @@ Bonus M.update_damage_overlays() if(prob(20)) - PoolOrNew(/obj/effect/overlay/temp/heal, list(get_turf(M), "#CC1100")) + new /obj/effect/overlay/temp/heal(get_turf(M), "#CC1100") return 1 @@ -201,7 +201,7 @@ Bonus M.update_damage_overlays() if(prob(20)) - PoolOrNew(/obj/effect/overlay/temp/heal, list(get_turf(M), "#FF9933")) + new /obj/effect/overlay/temp/heal(get_turf(M), "#FF9933") return 1 @@ -248,7 +248,7 @@ Bonus M.update_damage_overlays() if(prob(20)) - PoolOrNew(/obj/effect/overlay/temp/heal, list(get_turf(M), "#CC6600")) + new /obj/effect/overlay/temp/heal(get_turf(M), "#CC6600") return 1 diff --git a/code/datums/weather/weather_types.dm b/code/datums/weather/weather_types.dm index 541bef2e59e..0232d4c8ad5 100644 --- a/code/datums/weather/weather_types.dm +++ b/code/datums/weather/weather_types.dm @@ -174,7 +174,7 @@ return var/datum/signal/status_signal = new - var/atom/movable/virtualspeaker/virt = PoolOrNew(/atom/movable/virtualspeaker,null) + var/atom/movable/virtualspeaker/virt = new /atom/movable/virtualspeaker(null) status_signal.source = virt status_signal.transmission_method = 1 status_signal.data["command"] = "shuttle" diff --git a/code/game/area/ai_monitored.dm b/code/game/area/ai_monitored.dm index f1ad7ab8872..a89b8de9526 100644 --- a/code/game/area/ai_monitored.dm +++ b/code/game/area/ai_monitored.dm @@ -3,12 +3,13 @@ var/list/obj/machinery/camera/motioncameras = list() var/list/motionTargets = list() -/area/ai_monitored/initialize() +/area/ai_monitored/Initialize(mapload) ..() - for (var/obj/machinery/camera/M in src) - if(M.isMotion()) - motioncameras.Add(M) - M.area_motion = src + if(mapload) + for (var/obj/machinery/camera/M in src) + if(M.isMotion()) + motioncameras.Add(M) + M.area_motion = src //Only need to use one camera diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 5f6f0ee55ff..6034a16cc4b 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -40,6 +40,8 @@ if(luminosity) light = new(src) + if(SSobj && SSobj.initialized) + Initialize(FALSE) //. = ..() //uncomment if you are dumb enough to add a /datum/New() proc /atom/Destroy() @@ -431,8 +433,10 @@ var/list/blood_splatter_icons = list() //effects at world start up without causing runtimes /atom/proc/spawn_atom_to_world() -//This will be called after the map and objects are loaded -/atom/proc/initialize() +//Called after New if the world is not loaded with TRUE +//Called from base of New if the world is loaded with FALSE +/atom/proc/Initialize(mapload) + set waitfor = 0 return //the vision impairment to give to the mob whose perspective is set to that atom (e.g. an unfocused camera giving you an impaired vision when looking through it) @@ -445,7 +449,7 @@ var/list/blood_splatter_icons = list() /atom/proc/add_vomit_floor(mob/living/carbon/M, toxvomit = 0) if(isturf(src)) - var/obj/effect/decal/cleanable/vomit/V = PoolOrNew(/obj/effect/decal/cleanable/vomit, src) + var/obj/effect/decal/cleanable/vomit/V = new /obj/effect/decal/cleanable/vomit(src) // Make toxins vomit look different if(toxvomit) V.icon_state = "vomittox_[pick(1,4)]" diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm index d634f10ebb3..6342011050d 100644 --- a/code/game/gamemodes/antag_spawner.dm +++ b/code/game/gamemodes/antag_spawner.dm @@ -70,7 +70,7 @@ H << "Unable to reach your apprentice! You can either attack the spellbook with the contract to refund your points, or wait and try again later." /obj/item/weapon/antag_spawner/contract/spawn_antag(client/C, turf/T, type = "") - PoolOrNew(/obj/effect/particle_effect/smoke, T) + new /obj/effect/particle_effect/smoke(T) var/mob/living/carbon/human/M = new/mob/living/carbon/human(T) C.prefs.copy_to(M) M.key = C.key @@ -257,7 +257,7 @@ /obj/item/weapon/antag_spawner/slaughter_demon/spawn_antag(client/C, turf/T, type = "") - var /obj/effect/dummy/slaughter/holder = PoolOrNew(/obj/effect/dummy/slaughter,T) + var /obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(T) var/mob/living/simple_animal/slaughter/S = new demon_type(holder) S.holder = holder S.key = C.key diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index d7403319957..570a0df62e3 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -32,7 +32,7 @@ /mob/living/simple_animal/hostile/blob/blob_act(obj/structure/blob/B) if(stat != DEAD && health < maxHealth) for(var/i in 1 to 2) - var/obj/effect/overlay/temp/heal/H = PoolOrNew(/obj/effect/overlay/temp/heal, get_turf(src)) //hello yes you are being healed + var/obj/effect/overlay/temp/heal/H = new /obj/effect/overlay/temp/heal(get_turf(src)) //hello yes you are being healed if(overmind) H.color = overmind.blob_reagent_datum.complementary_color else diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index 6825d2cd6cb..209d8ca130e 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -140,7 +140,7 @@ loc.blob_act(src) //don't ask how a wall got on top of the core, just eat it /obj/structure/blob/proc/blob_attack_animation(atom/A = null, controller) //visually attacks an atom - var/obj/effect/overlay/temp/blob/O = PoolOrNew(/obj/effect/overlay/temp/blob, src.loc) + var/obj/effect/overlay/temp/blob/O = new /obj/effect/overlay/temp/blob(src.loc) O.setDir(dir) if(controller) var/mob/camera/blob/BO = controller @@ -208,7 +208,7 @@ if(overmind) overmind.blob_reagent_datum.emp_reaction(src, severity) if(prob(100 - severity * 30)) - PoolOrNew(/obj/effect/overlay/temp/emp, get_turf(src)) + new /obj/effect/overlay/temp/emp(get_turf(src)) /obj/structure/blob/tesla_act(power) ..() diff --git a/code/game/gamemodes/clock_cult/clock_effects/clock_overlay.dm b/code/game/gamemodes/clock_cult/clock_effects/clock_overlay.dm index 2e42a1ee4c9..8284bf351c4 100644 --- a/code/game/gamemodes/clock_cult/clock_effects/clock_overlay.dm +++ b/code/game/gamemodes/clock_cult/clock_effects/clock_overlay.dm @@ -16,8 +16,7 @@ /obj/effect/clockwork/overlay/Destroy() if(linked) linked = null - ..() - return QDEL_HINT_PUTINPOOL + . = ..() /obj/effect/clockwork/overlay/wall name = "clockwork wall" diff --git a/code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm b/code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm index d33943cfe89..6ffd83e7161 100644 --- a/code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm +++ b/code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm @@ -68,7 +68,7 @@ L.visible_message("[src] appears around [L] in a burst of light!", \ "[target_flashed ? "An unseen force":"The glowing sigil around you"] holds you in place!") L.Stun(5) - PoolOrNew(/obj/effect/overlay/temp/ratvar/sigil/transgression, get_turf(src)) + new /obj/effect/overlay/temp/ratvar/sigil/transgression(get_turf(src)) qdel(src) @@ -101,7 +101,7 @@ animate(src, color = "#AF0AAF", time = convert_time) var/obj/effect/overlay/temp/ratvar/sigil/glow if(glow_type) - glow = PoolOrNew(glow_type, get_turf(src)) + glow = new glow_type(get_turf(src)) animate(glow, alpha = 255, time = convert_time) var/I = 0 while(I < convert_time && get_turf(L) == get_turf(src)) @@ -171,7 +171,7 @@ /obj/effect/clockwork/sigil/transmission name = "suspicious sigil" desc = "A glowing orange sigil. The air around it feels staticky." - clockwork_desc = "A sigil that will serve as a battery for clockwork structures. Use Volt Void while standing on it to charge it." + clockwork_desc = "A sigil that will serve as a battery for clockwork structures." icon_state = "sigiltransmission" color = "#EC8A2D" alpha = 50 @@ -294,14 +294,14 @@ while(L && (!is_servant_of_ratvar(L) || (is_servant_of_ratvar(L) && vitality)) && get_turf(L) == get_turf(src)) sigil_active = TRUE if(animation_number >= 4) - PoolOrNew(/obj/effect/overlay/temp/ratvar/sigil/vitality, get_turf(src)) + new /obj/effect/overlay/temp/ratvar/sigil/vitality(get_turf(src)) animation_number = 0 animation_number++ if(!is_servant_of_ratvar(L)) var/vitality_drained = 0 if(L.stat == DEAD) vitality_drained = L.maxHealth - var/obj/effect/overlay/temp/ratvar/sigil/vitality/V = PoolOrNew(/obj/effect/overlay/temp/ratvar/sigil/vitality, get_turf(src)) + var/obj/effect/overlay/temp/ratvar/sigil/vitality/V = new /obj/effect/overlay/temp/ratvar/sigil/vitality(get_turf(src)) animate(V, alpha = 0, transform = matrix()*2, time = 8) playsound(L, 'sound/magic/WandODeath.ogg', 50, 1) L.visible_message("[L] collapses in on [L.p_them()]self as [src] flares bright blue!") diff --git a/code/game/gamemodes/clock_cult/clock_helpers/component_helpers.dm b/code/game/gamemodes/clock_cult/clock_helpers/component_helpers.dm index 5a9a486efea..e04edc42c3e 100644 --- a/code/game/gamemodes/clock_cult/clock_helpers/component_helpers.dm +++ b/code/game/gamemodes/clock_cult/clock_helpers/component_helpers.dm @@ -4,7 +4,8 @@ specific_component_id = get_weighted_component_id() clockwork_component_cache[specific_component_id]++ if(A) - PoolOrNew(get_component_animation_type(specific_component_id), get_turf(A)) + var/component_animation_type = get_component_animation_type(specific_component_id) + new component_animation_type(get_turf(A)) update_slab_info() return specific_component_id diff --git a/code/game/gamemodes/clock_cult/clock_helpers/proselytizer_helpers.dm b/code/game/gamemodes/clock_cult/clock_helpers/proselytizer_helpers.dm index 885ca815c0d..04d739c8ff8 100644 --- a/code/game/gamemodes/clock_cult/clock_helpers/proselytizer_helpers.dm +++ b/code/game/gamemodes/clock_cult/clock_helpers/proselytizer_helpers.dm @@ -32,7 +32,7 @@ /turf/open/floor/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) if(floor_tile == /obj/item/stack/tile/plasteel) - PoolOrNew(floor_tile, src) + new floor_tile(src) make_plating() playsound(src, 'sound/items/Crowbar.ogg', 10, 1) //clink return list("operation_time" = 30, "new_obj_type" = /turf/open/floor/clockwork, "power_cost" = POWER_FLOOR, "spawn_dir" = SOUTH) diff --git a/code/game/gamemodes/clock_cult/clock_helpers/slab_abilities.dm b/code/game/gamemodes/clock_cult/clock_helpers/slab_abilities.dm index d36dcd3d8fe..08f17c70d22 100644 --- a/code/game/gamemodes/clock_cult/clock_helpers/slab_abilities.dm +++ b/code/game/gamemodes/clock_cult/clock_helpers/slab_abilities.dm @@ -22,7 +22,7 @@ ranged_mousepointer = 'icons/effects/geis_target.dmi' /obj/effect/proc_holder/slab/geis/InterceptClickOn(mob/living/caller, params, atom/target) - if(..()) + if(target == slab || ..()) return TRUE var/turf/T = ranged_ability_user.loc @@ -120,7 +120,7 @@ L.adjustToxLoss(totaldamage * 0.5, TRUE, TRUE) var/healseverity = max(round(totaldamage*0.05, 1), 1) //shows the general severity of the damage you just healed, 1 glow per 20 for(var/i in 1 to healseverity) - PoolOrNew(/obj/effect/overlay/temp/heal, list(targetturf, "#1E8CE1")) + new /obj/effect/overlay/temp/heal(targetturf, "#1E8CE1") clockwork_say(ranged_ability_user, text2ratvar("Mend wounded flesh!")) add_logs(ranged_ability_user, L, "healed with Sentinel's Compromise") else @@ -139,6 +139,45 @@ return TRUE +//For the Volt Void scripture, fires a ray of energy at a target location +/obj/effect/proc_holder/slab/volt + ranged_mousepointer = 'icons/effects/volt_target.dmi' + +/obj/effect/proc_holder/slab/volt/InterceptClickOn(mob/living/caller, params, atom/target) + if(..()) + return TRUE + + var/turf/T = ranged_ability_user.loc + if(!isturf(T)) + return TRUE + + if(target in view(7, get_turf(ranged_ability_user))) + successful = TRUE + ranged_ability_user.visible_message("[ranged_ability_user] fires a ray of energy at [target]!", "You fire a volt ray at [target].") + playsound(ranged_ability_user, 'sound/effects/light_flicker.ogg', 50, 1) + var/turf/targetturf = get_turf(target) + var/obj/structure/destructible/clockwork/powered/volt_checker/VC = new/obj/structure/destructible/clockwork/powered/volt_checker(get_turf(ranged_ability_user)) + var/multiplier = 1 + var/minimum_power = Floor(VC.total_accessable_power() * 0.2, MIN_CLOCKCULT_POWER) + var/usable_power = min(minimum_power, 1000) + var/used_power = 0 + while(used_power < usable_power && VC.try_use_power(MIN_CLOCKCULT_POWER)) + used_power += MIN_CLOCKCULT_POWER + multiplier += 0.025 + if(iscyborg(ranged_ability_user)) + var/mob/living/silicon/robot/C = ranged_ability_user + if(C.cell) + usable_power = Clamp(Floor(C.cell.charge * 0.2, MIN_CLOCKCULT_POWER), usable_power, 1000) + while(used_power < usable_power && C.cell.use(MIN_CLOCKCULT_POWER)) + used_power += MIN_CLOCKCULT_POWER + multiplier += 0.025 + qdel(VC) + new/obj/effect/overlay/temp/ratvar/volt_hit/true(targetturf, ranged_ability_user, multiplier) + add_logs(ranged_ability_user, targetturf, "fired a volt ray") + remove_ranged_ability() + + return TRUE + //For the cyborg Linked Vanguard scripture, grants you and a nearby ally Vanguard /obj/effect/proc_holder/slab/vanguard ranged_mousepointer = 'icons/effects/vanguard_target.dmi' diff --git a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm b/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm index b4450435925..6f9fa263e15 100644 --- a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm +++ b/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm @@ -11,6 +11,7 @@ var/list/stored_components = list(BELLIGERENT_EYE = 0, VANGUARD_COGWHEEL = 0, GEIS_CAPACITOR = 0, REPLICANT_ALLOY = 0, HIEROPHANT_ANSIBLE = 0) var/busy //If the slab is currently being used by something var/production_time = 0 + var/target_component_id //the target component ID to create, if any var/no_cost = FALSE //If the slab is admin-only and needs no components and has no scripture locks var/speed_multiplier = 1 //multiples how fast this slab recites scripture var/nonhuman_usable = FALSE //if the slab can be used by nonhumans, defaults to off @@ -68,7 +69,7 @@ /datum/clockwork_scripture/create_object/mania_motor) /obj/item/clockwork/slab/cyborg/janitor - quickbound = list(/datum/clockwork_scripture/channeled/belligerent, /datum/clockwork_scripture/channeled/volt_void, /datum/clockwork_scripture/create_object/sigil_of_transmission, \ + quickbound = list(/datum/clockwork_scripture/channeled/belligerent, /datum/clockwork_scripture/channeled/volt_void/cyborg, /datum/clockwork_scripture/create_object/sigil_of_transmission, \ /datum/clockwork_scripture/create_object/interdiction_lens) /obj/item/clockwork/slab/cyborg/service @@ -127,14 +128,16 @@ var/mob/living/L L = get_atom_on_turf(src, /mob/living) if(istype(L) && is_servant_of_ratvar(L) && (nonhuman_usable || ishuman(L))) - var/component_to_generate = get_weighted_component_id(src) //more likely to generate components that we have less of + var/component_to_generate = target_component_id + if(!component_to_generate) + component_to_generate = get_weighted_component_id(src) //more likely to generate components that we have less of stored_components[component_to_generate]++ update_slab_info(src) for(var/obj/item/clockwork/slab/S in L.GetAllContents()) //prevent slab abuse today if(S == src) continue S.production_time = production_time + 50 //set it to our next production plus five seconds, so that if you hold the same slabs, the same one will always generate - L << "Your slab cl[pick("ank", "ink", "unk", "ang")]s as it produces a new component." + L << "Your slab cl[pick("ank", "ink", "unk", "ang")]s as it produces a component." /obj/item/clockwork/slab/examine(mob/user) ..() @@ -400,6 +403,10 @@ data["selected"] = selected_scripture + data["target_comp"] = "NONE" + if(target_component_id) + data["target_comp"] = "[get_component_acronym(target_component_id)]" + generate_all_scripture() data["scripture"] = list() @@ -439,6 +446,13 @@ addtimer(CALLBACK(src, .proc/recite_scripture, text2path(params["category"]), usr, FALSE), 0) if("select") selected_scripture = params["category"] + if("component") + var/list/components = list("Random Components") + for(var/i in clockwork_component_cache) + components["[get_component_name(i)] [(clockwork_component_cache[i])]"] = i + var/input_component = input("Choose a component type.", "Target Component") as null|anything in components + if(input_component && !..()) + target_component_id = components[input_component] if("bind") var/datum/clockwork_scripture/path = text2path(params["category"]) //we need a path and not a string var/found_index = quickbound.Find(path) @@ -449,7 +463,7 @@ quickbound[found_index] = null //otherwise, leave it as a null so the scripture maintains position update_quickbind() else - var/target_index = input("Position of [initial(path.name)], 1 to 5?", text("Input")) as num|null + var/target_index = input("Position of [initial(path.name)], 1 to 5?", "Input") as num|null if(isnum(target_index) && target_index > 0 && target_index < 6 && !..()) var/datum/clockwork_scripture/S if(LAZYLEN(quickbound) >= target_index) diff --git a/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm b/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm index d63b36aea95..8e92246ed17 100644 --- a/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm +++ b/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm @@ -99,13 +99,13 @@ impale_cooldown = world.time + initial(impale_cooldown) attack_cooldown = world.time + initial(attack_cooldown) if(target) - PoolOrNew(/obj/effect/overlay/temp/dir_setting/bloodsplatter, list(get_turf(target), get_dir(user, target))) + new /obj/effect/overlay/temp/dir_setting/bloodsplatter(get_turf(target), get_dir(user, target)) target.Stun(2) user << "You prepare to remove your ratvarian spear from [target]..." var/remove_verb = pick("pull", "yank", "drag") if(do_after(user, 10, 1, target)) var/turf/T = get_turf(target) - var/obj/effect/overlay/temp/dir_setting/bloodsplatter/B = PoolOrNew(/obj/effect/overlay/temp/dir_setting/bloodsplatter, list(T, get_dir(target, user))) + var/obj/effect/overlay/temp/dir_setting/bloodsplatter/B = new /obj/effect/overlay/temp/dir_setting/bloodsplatter(T, get_dir(target, user)) playsound(T, 'sound/misc/splort.ogg', 200, 1) playsound(T, 'sound/weapons/pierce.ogg', 200, 1) if(target.stat != CONSCIOUS) @@ -154,5 +154,5 @@ T = get_turf(src) if(T) //make sure we're not in null or something T.visible_message("[src] [pick("cracks in two and fades away", "snaps in two and dematerializes")]!") - PoolOrNew(/obj/effect/overlay/temp/ratvar/spearbreak, T) + new /obj/effect/overlay/temp/ratvar/spearbreak(T) qdel(src) diff --git a/code/game/gamemodes/clock_cult/clock_mobs.dm b/code/game/gamemodes/clock_cult/clock_mobs.dm index 198b85849c6..8fd91b5519d 100644 --- a/code/game/gamemodes/clock_cult/clock_mobs.dm +++ b/code/game/gamemodes/clock_cult/clock_mobs.dm @@ -225,7 +225,7 @@ if(iscarbon(host)) resulthealth = round((abs(HEALTH_THRESHOLD_DEAD - host.health) / abs(HEALTH_THRESHOLD_DEAD - host.maxHealth)) * 100) if(ratvar_awakens || resulthealth <= MARAUDER_EMERGE_THRESHOLD) - PoolOrNew(/obj/effect/overlay/temp/heal, list(host.loc, "#AF0AAF")) + new /obj/effect/overlay/temp/heal(host.loc, "#AF0AAF") host.adjustBruteLoss(-1) host.adjustFireLoss(-1) host.adjustToxLoss(-1) @@ -384,7 +384,7 @@ target.do_attack_animation(src) target.changeNext_move(CLICK_CD_MELEE) blockchance = initial(blockchance) - playsound(src, 'sound/magic/clockwork/fellowship_armory.ogg', 10, 1, 0, 1) //clang + playsound(src, 'sound/magic/clockwork/fellowship_armory.ogg', 30, 1, 0, 1) //clang visible_message("[src] blocks [target && istype(textobject, /obj/item) ? "[target]'s [textobject.name]":"\the [textobject]"]!", \ "You block [target && istype(textobject, /obj/item) ? "[target]'s [textobject.name]":"\the [textobject]"]!") if(target && Adjacent(target)) diff --git a/code/game/gamemodes/clock_cult/clock_scripture.dm b/code/game/gamemodes/clock_cult/clock_scripture.dm index bf125e248e6..58682f9c422 100644 --- a/code/game/gamemodes/clock_cult/clock_scripture.dm +++ b/code/game/gamemodes/clock_cult/clock_scripture.dm @@ -214,7 +214,8 @@ Judgement: 12 servants, 5 caches, 300 CV, and any existing AIs are converted or if(!do_after(invoker, chant_interval, target = invoker)) break clockwork_say(invoker, text2ratvar(pick(chant_invocations)), whispered) - chant_effects(i) + if(!chant_effects(i)) + break if(invoker && slab) chant_end_effects() return TRUE diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm index 82b92711374..0d5b8c3fc68 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm +++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm @@ -148,7 +148,7 @@ whispered = TRUE object_path = /obj/effect/clockwork/sigil/transmission creator_message = "A sigil silently appears below you. It will automatically power clockwork structures adjecent to it." - usage_tip = "Can be recharged by using Volt Void while standing on it." + usage_tip = "Cyborgs can charge from this sigil by remaining over it for 5 seconds." tier = SCRIPTURE_APPLICATION one_per_tile = TRUE primary_component = HIEROPHANT_ANSIBLE diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm index b3069969cab..1932cf376bb 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm +++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm @@ -37,3 +37,8 @@ Left-click a target to place a Judicial Marker!\n\ Click your slab to cancel." timeout_time = 50 + +//Volt Void, but with a different quickbind desc +/datum/clockwork_scripture/channeled/volt_void/cyborg + quickbind_desc = "Allows you to fire energy rays at target locations using your own power.
Maximum 5 chants." + tier = SCRIPTURE_PERIPHERAL diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm index fb84db2d2f6..a184e85ca56 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm +++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm @@ -35,6 +35,7 @@ C.apply_damage(cultist_damage * 0.5, BURN, "l_leg") C.apply_damage(cultist_damage * 0.5, BURN, "r_leg") C.toggle_move_intent() + return TRUE //Judicial Visor: Creates a judicial visor, which can smite an area. @@ -217,11 +218,15 @@ progbar = new(invoker, flee_time, invoker) progbar.bar.color = list("#AF0AAF", "#AF0AAF", "#AF0AAF", rgb(0,0,0)) animate(progbar.bar, color = initial(progbar.bar.color), time = flee_time+grace_period) - while(world.time < endtime && invoker && slab && invoker.get_active_held_item() == slab) + while(world.time < endtime && can_recite()) sleep(1) progbar.update(world.time - starttime) qdel(progbar) - sleep(grace_period) + if(can_recite()) + sleep(grace_period) + else + return FALSE + return TRUE /datum/clockwork_scripture/channeled/taunting_tirade/chant_end_effects() qdel(progbar) diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm index 8faba217d19..8ec7afd9def 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm +++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm @@ -268,62 +268,66 @@ return slab.procure_gateway(invoker, duration, portal_uses) -//Volt Void: Channeled for up to thirty times over thirty seconds. Consumes power from most power storages and deals slight burn damage to the invoker. +//Volt Void: Channeled for up to five times over ten seconds to fire up to five rays of energy at target locations. /datum/clockwork_scripture/channeled/volt_void - descname = "Channeled, Area Power Drain" + descname = "Channeled, Targeted Energy Blasts" name = "Volt Void" //Alternative name: "On all levels but physical, I am a power sink" - desc = "Drains energy from nearby power sources, dealing burn damage if the total power consumed is above a threshhold. Channeled every second for a maximum of thirty seconds." - chant_invocations = list("Draw charge to this shell!") - chant_amount = 30 - chant_interval = 10 + desc = "Allows you to fire energy rays at target locations; more power consumed causes more damage. Channeled every fourth of a second for a maximum of ten seconds." + channel_time = 20 + invocations = list("Amperage...", "...grant me your power!") + chant_invocations = list("Use charge to kill!", "Slay with power!", "Hunt with energy!") + chant_amount = 5 + chant_interval = 4 required_components = list(GEIS_CAPACITOR = 1, HIEROPHANT_ANSIBLE = 2) consumed_components = list(GEIS_CAPACITOR = 1, HIEROPHANT_ANSIBLE = 1) - usage_tip = "If standing on a Sigil of Transmission, will transfer power to it. Augumented limbs will also be healed unless above a very high threshhold." + usage_tip = "Though it requires you to stand still, this scripture can do massive damage." tier = SCRIPTURE_SCRIPT primary_component = HIEROPHANT_ANSIBLE sort_priority = 10 quickbind = TRUE - quickbind_desc = "Drains power from nearby objects. If standing on a Sigil of Transmission, gives it that power.
Maximum 30 chants." - var/total_power_drained = 0 - var/power_damage_threshhold = 3000 - var/augument_damage_threshhold = 6000 + quickbind_desc = "Allows you to fire energy rays at target locations. Failing to fire causes backlash.
Maximum 5 chants." + var/static/list/nzcrentr_insults = list("You're not very good at aiming.", "You hunt badly.", "What a waste of energy.", "Almost funny to watch.", + "Boss says \"Click something, you idiot!\".", "Stop wasting components if you can't aim.") /datum/clockwork_scripture/channeled/volt_void/chant_effects(chant_number) - playsound(invoker, 'sound/effects/EMPulse.ogg', 50, 1) - PoolOrNew(/obj/effect/overlay/temp/ratvar/sigil/voltvoid, get_turf(invoker)) - var/power_drained = 0 - for(var/atom/movable/A in view(7, get_turf(invoker))) - power_drained += A.power_drain(TRUE) - var/obj/effect/clockwork/sigil/transmission/ST = locate(/obj/effect/clockwork/sigil/transmission) in get_turf(invoker) - if(ST && power_drained >= MIN_CLOCKCULT_POWER) - var/sigil_drain = 0 - while(power_drained >= MIN_CLOCKCULT_POWER) - ST.modify_charge(-MIN_CLOCKCULT_POWER) - power_drained -= MIN_CLOCKCULT_POWER - sigil_drain += MIN_CLOCKCULT_POWER * 0.2 - power_drained += sigil_drain //readd part of the power given to the sigil to the power drained this cycle - ST.visible_message("[ST] flares a brilliant orange!") - total_power_drained += power_drained - if(power_drained >= MIN_CLOCKCULT_POWER) - if(iscyborg(invoker)) - var/mob/living/silicon/robot/R = invoker - if(R.cell) - R.cell.give(power_drained) - R.visible_message("[invoker] flares a brilliant orange!", "You feel your cell charging.") - else if(total_power_drained >= power_damage_threshhold) - var/power_damage = power_drained * 0.01 - invoker.visible_message("[invoker] flares a brilliant orange!", "You feel the heat of electricity running into your body.") - if(ishuman(invoker)) - var/mob/living/carbon/human/H = invoker - for(var/X in H.bodyparts) - var/obj/item/bodypart/BP = X - if(ratvar_awakens || (BP.status == BODYPART_ROBOTIC && total_power_drained < augument_damage_threshhold)) //if ratvar is alive, it won't damage and will always heal augumented limbs - if(BP.heal_damage(power_damage, power_damage, 1, 0)) //heals one point of burn and brute for every ~100W drained on augumented limbs - H.update_damage_overlays() - else - if(BP.receive_damage(0, power_damage)) - H.update_damage_overlays() - else if(isanimal(invoker)) - var/mob/living/simple_animal/A = invoker - A.adjustHealth(-power_damage) //if a simple animal is using volt void, just heal it + slab.busy = null + var/datum/clockwork_scripture/ranged_ability/volt_ray/ray = new + ray.slab = slab + ray.invoker = invoker + var/turf/T = get_turf(invoker) + if(!ray.run_scripture() && slab && invoker) + if(can_recite() && T == get_turf(invoker)) + if(!ratvar_awakens && !iscyborg(invoker) && !isclockmob(invoker) && !isdrone(invoker)) + var/obj/structure/destructible/clockwork/powered/volt_checker/VC = new/obj/structure/destructible/clockwork/powered/volt_checker(get_turf(invoker)) + var/multiplier = 0.4 + var/minimum_power = Floor(VC.total_accessable_power() * 0.2, MIN_CLOCKCULT_POWER) + var/usable_power = min(minimum_power, 1000) + var/used_power = 0 + while(used_power < usable_power && VC.try_use_power(MIN_CLOCKCULT_POWER)) + used_power += MIN_CLOCKCULT_POWER + multiplier += 0.01 + qdel(VC) + var/obj/effect/overlay/temp/ratvar/volt_hit/VH = new /obj/effect/overlay/temp/ratvar/volt_hit(get_turf(invoker), null, multiplier) + invoker.visible_message("[invoker] is struck by [invoker.p_their()] own [VH.name]!", "You're struck by your own [VH.name]!") + invoker.adjustFireLoss(VH.damage) //you have to fail all five blasts to die to this + playsound(invoker, 'sound/machines/defib_zap.ogg', VH.damage, 1, -1) + invoker << "\"[text2ratvar(pick(nzcrentr_insults))]\"" + else + return FALSE return TRUE + +/obj/effect/ebeam/volt_ray + name = "volt_ray" + layer = LYING_MOB_LAYER + +/datum/clockwork_scripture/ranged_ability/volt_ray + name = "Volt Ray" + slab_icon = "volt" + allow_mobility = FALSE + ranged_type = /obj/effect/proc_holder/slab/volt + ranged_message = "You charge the clockwork slab with shocking might.\n\ + Left-click a target to fire, quickly!" + timeout_time = 16 + +/obj/structure/destructible/clockwork/powered/volt_checker + invisibility = INVISIBILITY_ABSTRACT diff --git a/code/game/gamemodes/clock_cult/clock_structure.dm b/code/game/gamemodes/clock_cult/clock_structure.dm index 4554ae23dd0..0050ab9e146 100644 --- a/code/game/gamemodes/clock_cult/clock_structure.dm +++ b/code/game/gamemodes/clock_cult/clock_structure.dm @@ -76,6 +76,13 @@ return FAILED_UNFASTEN return ..() +/obj/structure/destructible/clockwork/attack_animal(mob/living/simple_animal/M) + if(is_servant_of_ratvar(M)) + attack_hand(M) + return FALSE + else + return ..() + /obj/structure/destructible/clockwork/attackby(obj/item/I, mob/user, params) if(is_servant_of_ratvar(user) && istype(I, /obj/item/weapon/wrench) && unanchored_icon) if(default_unfasten_wrench(user, I, 50) == SUCCESSFUL_UNFASTEN) @@ -97,7 +104,7 @@ if(anchored && unanchored_icon) anchored = FALSE update_anchored(null, obj_integrity > max_integrity * 0.25) - PoolOrNew(/obj/effect/overlay/temp/emp, loc) + new /obj/effect/overlay/temp/emp(loc) //for the ark and Ratvar @@ -132,7 +139,9 @@ ..() if(is_servant_of_ratvar(user) || isobserver(user)) var/powered = total_accessable_power() - user << "It has access to [powered == INFINITY ? "INFINITY":"[powered]"]W of power." + var/sigil_number = LAZYLEN(check_apc_and_sigils()) + user << "It has access to [powered == INFINITY ? "INFINITY":"[powered]"]W of power, \ + and [sigil_number] Sigil[sigil_number == 1 ? "s":""] of Transmission [sigil_number == 1 ? "is":"are"] in range." /obj/structure/destructible/clockwork/powered/Destroy() SSfastprocess.processing -= src @@ -182,7 +191,7 @@ /obj/structure/destructible/clockwork/powered/emp_act(severity) if(forced_disable(TRUE)) - PoolOrNew(/obj/effect/overlay/temp/emp, loc) + new /obj/effect/overlay/temp/emp(loc) /obj/structure/destructible/clockwork/powered/proc/total_accessable_power() //how much power we have and can use if(!needs_power || ratvar_awakens) @@ -213,7 +222,7 @@ /obj/structure/destructible/clockwork/powered/proc/accessable_sigil_power() var/power = 0 - for(var/obj/effect/clockwork/sigil/transmission/T in range(1, src)) + for(var/obj/effect/clockwork/sigil/transmission/T in range(SIGIL_ACCESS_RANGE, src)) power += T.power_charge return power @@ -231,8 +240,8 @@ /obj/structure/destructible/clockwork/powered/proc/use_power(amount) //we've made sure we had power, so now we use it var/sigilpower = accessable_sigil_power() var/list/sigils_in_range = list() - for(var/obj/effect/clockwork/sigil/transmission/T in range(1, src)) - sigils_in_range |= T + for(var/obj/effect/clockwork/sigil/transmission/T in range(SIGIL_ACCESS_RANGE, src)) + sigils_in_range += T while(sigilpower && amount >= MIN_CLOCKCULT_POWER) for(var/S in sigils_in_range) var/obj/effect/clockwork/sigil/transmission/T = S @@ -278,8 +287,8 @@ /obj/structure/destructible/clockwork/powered/proc/check_apc_and_sigils() //checks for sigils and an APC, returning FALSE if it finds neither, and a list of sigils otherwise . = list() - for(var/obj/effect/clockwork/sigil/transmission/T in range(1, src)) - . |= T + for(var/obj/effect/clockwork/sigil/transmission/T in range(SIGIL_ACCESS_RANGE, src)) + . += T var/list/L = . if(!L.len && (!target_apc || !target_apc.cell)) return FALSE diff --git a/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm b/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm index d8ec850a701..3d53803a62f 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm @@ -113,7 +113,7 @@ /obj/structure/destructible/clockwork/massive/celestial_gateway/proc/make_glow() if(!glow) - glow = PoolOrNew(/obj/effect/clockwork/overlay/gateway_glow, get_turf(src)) + glow = new /obj/effect/clockwork/overlay/gateway_glow(get_turf(src)) glow.linked = src /obj/structure/destructible/clockwork/massive/celestial_gateway/ex_act(severity) diff --git a/code/game/gamemodes/clock_cult/clock_structures/geis_binding.dm b/code/game/gamemodes/clock_cult/clock_structures/geis_binding.dm index d7054fddc71..94d8c135126 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/geis_binding.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/geis_binding.dm @@ -26,7 +26,7 @@ return /obj/structure/destructible/clockwork/geis_binding/emp_act(severity) - PoolOrNew(/obj/effect/overlay/temp/emp, loc) + new /obj/effect/overlay/temp/emp(loc) qdel(src) /obj/structure/destructible/clockwork/geis_binding/post_buckle_mob(mob/living/M) @@ -47,8 +47,8 @@ M.visible_message("A [name] appears around [M]!", \ "A [name] appears around you!\nResist!") else - var/obj/effect/overlay/temp/ratvar/geis_binding/G = PoolOrNew(/obj/effect/overlay/temp/ratvar/geis_binding, M.loc) - var/obj/effect/overlay/temp/ratvar/geis_binding/T = PoolOrNew(/obj/effect/overlay/temp/ratvar/geis_binding/top, M.loc) + var/obj/effect/overlay/temp/ratvar/geis_binding/G = new /obj/effect/overlay/temp/ratvar/geis_binding(M.loc) + var/obj/effect/overlay/temp/ratvar/geis_binding/T = new /obj/effect/overlay/temp/ratvar/geis_binding/top(M.loc) G.layer = mob_layer - 0.01 T.layer = mob_layer + 0.01 G.alpha = alpha @@ -83,10 +83,10 @@ if(L) L.Stun(1, 1, 1) visible_message("[src] flares brightly!") - var/obj/effect/overlay/temp/ratvar/geis_binding/G1 = PoolOrNew(/obj/effect/overlay/temp/ratvar/geis_binding, loc) - var/obj/effect/overlay/temp/ratvar/geis_binding/G2 = PoolOrNew(/obj/effect/overlay/temp/ratvar/geis_binding, loc) - var/obj/effect/overlay/temp/ratvar/geis_binding/T1 = PoolOrNew(/obj/effect/overlay/temp/ratvar/geis_binding/top, loc) - var/obj/effect/overlay/temp/ratvar/geis_binding/T2 = PoolOrNew(/obj/effect/overlay/temp/ratvar/geis_binding/top, loc) + var/obj/effect/overlay/temp/ratvar/geis_binding/G1 = new /obj/effect/overlay/temp/ratvar/geis_binding(loc) + var/obj/effect/overlay/temp/ratvar/geis_binding/G2 = new /obj/effect/overlay/temp/ratvar/geis_binding(loc) + var/obj/effect/overlay/temp/ratvar/geis_binding/T1 = new /obj/effect/overlay/temp/ratvar/geis_binding/top(loc) + var/obj/effect/overlay/temp/ratvar/geis_binding/T2 = new /obj/effect/overlay/temp/ratvar/geis_binding/top(loc) G1.layer = mob_layer - 0.01 G2.layer = mob_layer - 0.01 T1.layer = mob_layer + 0.01 diff --git a/code/game/gamemodes/clock_cult/clock_structures/mending_motor.dm b/code/game/gamemodes/clock_cult/clock_structures/mending_motor.dm index fb3d60888e8..11c12d4db69 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/mending_motor.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/mending_motor.dm @@ -61,7 +61,7 @@ if(S.health < S.maxHealth) if(try_use_power(heal_cost)) S.adjustHealth(-(8 * efficiency)) - PoolOrNew(/obj/effect/overlay/temp/heal, list(T, "#1E8CE1")) + new /obj/effect/overlay/temp/heal(T, "#1E8CE1") else S << "\"[text2ratvar(pick(heal_failure_messages))]\"" break @@ -80,7 +80,7 @@ if(C == src) efficiency = get_efficiency_mod() C.update_icon() - PoolOrNew(/obj/effect/overlay/temp/heal, list(T, "#1E8CE1")) + new /obj/effect/overlay/temp/heal(T, "#1E8CE1") else break else @@ -95,7 +95,7 @@ if(try_use_power(heal_cost)) S.adjustBruteLoss(-(5 * efficiency)) S.adjustFireLoss(-(3 * efficiency)) - PoolOrNew(/obj/effect/overlay/temp/heal, list(T, "#1E8CE1")) + new /obj/effect/overlay/temp/heal(T, "#1E8CE1") else S << "\"[text2ratvar(pick(heal_failure_messages))]\"" break diff --git a/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm b/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm index c938966062c..c28d7ae3efe 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm @@ -78,7 +78,7 @@ var/obj/mecha/M = target M.take_damage(damage_per_tick * get_efficiency_mod(), BURN, "melee", 1, get_dir(src, M)) - PoolOrNew(/obj/effect/overlay/temp/ratvar/ocular_warden, get_turf(target)) + new /obj/effect/overlay/temp/ratvar/ocular_warden(get_turf(target)) setDir(get_dir(get_turf(src), get_turf(target))) if(!target) diff --git a/code/game/gamemodes/clock_cult/clock_structures/tinkerers_cache.dm b/code/game/gamemodes/clock_cult/clock_structures/tinkerers_cache.dm index fc5d0cb2631..df12be38db8 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/tinkerers_cache.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/tinkerers_cache.dm @@ -44,9 +44,9 @@ break if(linkedwall && wall_generation_cooldown <= world.time) wall_generation_cooldown = world.time + (CACHE_PRODUCTION_TIME * get_efficiency_mod(TRUE)) - generate_cache_component(null, src) + var/component_id = generate_cache_component(null, src) playsound(linkedwall, 'sound/magic/clockwork/fellowship_armory.ogg', rand(15, 20), 1, -3, 1, 1) - visible_message("Something cl[pick("ank", "ink", "unk", "ang")]s around inside of [src]...") + visible_message("Something cl[pick("ank", "ink", "unk", "ang")]s around inside of [src]...") /obj/structure/destructible/clockwork/cache/attackby(obj/item/I, mob/living/user, params) if(!is_servant_of_ratvar(user)) diff --git a/code/game/gamemodes/clock_cult/clock_structures/tinkerers_daemon.dm b/code/game/gamemodes/clock_cult/clock_structures/tinkerers_daemon.dm index 67dc21a9028..07976e51a09 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/tinkerers_daemon.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/tinkerers_daemon.dm @@ -160,6 +160,6 @@ if(component_to_generate) generate_cache_component(component_to_generate, src) production_time = world.time + (production_cooldown * get_efficiency_mod(TRUE)) //go on cooldown - visible_message("[src] hums as it produces a [get_component_name(component_to_generate)].") + visible_message("[src] hums as it produces a component.") else forced_disable(FALSE) //we shouldn't actually ever get here, as we should cancel out way before this diff --git a/code/game/gamemodes/clock_cult/clock_structures/wall_gear.dm b/code/game/gamemodes/clock_cult/clock_structures/wall_gear.dm index 87ae60dc6d4..6b6f3ff9dc0 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/wall_gear.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/wall_gear.dm @@ -19,7 +19,7 @@ /obj/structure/destructible/clockwork/wall_gear/New() ..() - PoolOrNew(/obj/effect/overlay/temp/ratvar/gear, get_turf(src)) + new /obj/effect/overlay/temp/ratvar/gear(get_turf(src)) /obj/structure/destructible/clockwork/wall_gear/emp_act(severity) return diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index b2c3d2520f3..6490636a9ab 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -193,7 +193,7 @@ if(current_charges) owner.visible_message("\The [attack_text] is deflected in a burst of blood-red sparks!") current_charges-- - PoolOrNew(/obj/effect/overlay/temp/cult/sparks, get_turf(owner)) + new /obj/effect/overlay/temp/cult/sparks(get_turf(owner)) if(!current_charges) owner.visible_message("The runed shield around [owner] suddenly disappears!") owner.update_inv_wear_suit() @@ -341,14 +341,14 @@ if(uses <= 0) icon_state ="shifter_drained" playsound(mobloc, "sparks", 50, 1) - PoolOrNew(/obj/effect/overlay/temp/dir_setting/cult/phase/out, list(mobloc, C.dir)) + new /obj/effect/overlay/temp/dir_setting/cult/phase/out(mobloc, C.dir) var/atom/movable/pulled = handle_teleport_grab(destination, C) C.forceMove(destination) if(pulled) C.start_pulling(pulled) //forcemove resets pulls, so we need to re-pull - PoolOrNew(/obj/effect/overlay/temp/dir_setting/cult/phase, list(destination, C.dir)) + new /obj/effect/overlay/temp/dir_setting/cult/phase(destination, C.dir) playsound(destination, 'sound/effects/phasein.ogg', 25, 1) playsound(destination, "sparks", 50, 1) diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index fc49899a9c3..752e311533f 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -154,7 +154,7 @@ var/list/blacklisted_pylon_turfs = typecacheof(list( for(var/mob/living/L in range(5, src)) if(iscultist(L) || isshade(L) || isconstruct(L)) if(L.health != L.maxHealth) - PoolOrNew(/obj/effect/overlay/temp/heal, list(get_turf(src), "#960000")) + new /obj/effect/overlay/temp/heal(get_turf(src), "#960000") if(ishuman(L)) L.adjustBruteLoss(-1, 0) L.adjustFireLoss(-1, 0) @@ -184,7 +184,7 @@ var/list/blacklisted_pylon_turfs = typecacheof(list( else var/turf/open/floor/engine/cult/F = safepick(cultturfs) if(F) - PoolOrNew(/obj/effect/overlay/temp/cult/turf/floor, F) + new /obj/effect/overlay/temp/cult/turf/floor(F) else // Are we in space or something? No cult turfs or // convertable turfs? diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 359154a044e..db9f4a91a17 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -415,7 +415,7 @@ var/list/teleport_runes = list() else sacrificed += sacrificial - PoolOrNew(/obj/effect/overlay/temp/cult/sac, get_turf(src)) + new /obj/effect/overlay/temp/cult/sac(get_turf(src)) for(var/M in invokers) if(sacrifice_fulfilled) M << "\"Yes! This is the one I desire! You have done well.\"" @@ -891,7 +891,7 @@ var/list/wall_runes = list() if(!src) return do_area_burn(T, 1.5) - PoolOrNew(/obj/effect/hotspot, T) + new /obj/effect/hotspot(T) qdel(src) /obj/effect/rune/blood_boil/proc/do_area_burn(turf/T, multiplier) diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 681ce9c9033..3f3f0e57ccc 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -328,7 +328,7 @@ /obj/effect/meteor/tunguska/Move() . = ..() if(.) - PoolOrNew(/obj/effect/overlay/temp/revenant, get_turf(src)) + new /obj/effect/overlay/temp/revenant(get_turf(src)) /obj/effect/meteor/tunguska/meteor_effect() ..() diff --git a/code/game/gamemodes/miniantags/abduction/abduction.dm b/code/game/gamemodes/miniantags/abduction/abduction.dm index b38a189fee8..2ba0ceec158 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction.dm @@ -301,7 +301,7 @@ c.team = team spawn(5) // I'd do this properly when i got some time, temporary hack for mappers - c.Initialize() + c.Setup() qdel(src) diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index 7cdd3ac1f0c..b7b05526a13 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -52,8 +52,7 @@ stealth_active = 1 if(ishuman(loc)) var/mob/living/carbon/human/M = loc - PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja/cloak, - list(get_turf(M), M.dir)) + new /obj/effect/overlay/temp/dir_setting/ninja/cloak(get_turf(M), M.dir) M.name_override = disguise.name M.icon = disguise.icon M.icon_state = disguise.icon_state @@ -66,8 +65,7 @@ stealth_active = 0 if(ishuman(loc)) var/mob/living/carbon/human/M = loc - PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja, - list(get_turf(M), M.dir)) + new /obj/effect/overlay/temp/dir_setting/ninja(get_turf(M), M.dir) M.name_override = null M.cut_overlays() M.regenerate_icons() diff --git a/code/game/gamemodes/miniantags/abduction/machinery/console.dm b/code/game/gamemodes/miniantags/abduction/machinery/console.dm index 5539f6a878e..e7d830e8926 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/console.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/console.dm @@ -154,7 +154,7 @@ user << "Location marked as test subject release point." -/obj/machinery/abductor/console/proc/Initialize() +/obj/machinery/abductor/console/proc/Setup() for(var/obj/machinery/abductor/pad/p in machines) if(p.team == team) diff --git a/code/game/gamemodes/miniantags/abduction/machinery/pad.dm b/code/game/gamemodes/miniantags/abduction/machinery/pad.dm index 21c627d266f..10d22d43c1e 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/pad.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/pad.dm @@ -16,27 +16,27 @@ flick("alien-pad", src) for(var/mob/living/target in loc) target.forceMove(teleport_target) - PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja, list(get_turf(target), target.dir)) + new /obj/effect/overlay/temp/dir_setting/ninja(get_turf(target), target.dir) /obj/machinery/abductor/pad/proc/Retrieve(mob/living/target) flick("alien-pad", src) - PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja, list(get_turf(target), target.dir)) + new /obj/effect/overlay/temp/dir_setting/ninja(get_turf(target), target.dir) Warp(target) /obj/machinery/abductor/pad/proc/MobToLoc(place,mob/living/target) - PoolOrNew(/obj/effect/overlay/temp/teleport_abductor, place) + new /obj/effect/overlay/temp/teleport_abductor(place) sleep(80) flick("alien-pad", src) target.forceMove(place) - PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja, list(get_turf(target), target.dir)) + new /obj/effect/overlay/temp/dir_setting/ninja(get_turf(target), target.dir) /obj/machinery/abductor/pad/proc/PadToLoc(place) - PoolOrNew(/obj/effect/overlay/temp/teleport_abductor, place) + new /obj/effect/overlay/temp/teleport_abductor(place) sleep(80) flick("alien-pad", src) for(var/mob/living/target in get_turf(src)) target.forceMove(place) - PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja, list(get_turf(target), target.dir)) + new /obj/effect/overlay/temp/dir_setting/ninja(get_turf(target), target.dir) /obj/effect/overlay/temp/teleport_abductor diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm index 823106453bd..dd2f9af17e1 100644 --- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm +++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm @@ -409,7 +409,7 @@ resources++ do_attack_animation(target) changeNext_move(CLICK_CD_MELEE) - var/obj/effect/overlay/temp/swarmer/integrate/I = PoolOrNew(/obj/effect/overlay/temp/swarmer/integrate, get_turf(target)) + var/obj/effect/overlay/temp/swarmer/integrate/I = new /obj/effect/overlay/temp/swarmer/integrate(get_turf(target)) I.pixel_x = target.pixel_x I.pixel_y = target.pixel_y I.pixel_z = target.pixel_z @@ -426,7 +426,7 @@ /mob/living/simple_animal/hostile/swarmer/proc/DisIntegrate(atom/movable/target) - PoolOrNew(/obj/effect/overlay/temp/swarmer/disintegration, get_turf(target)) + new /obj/effect/overlay/temp/swarmer/disintegration(get_turf(target)) do_attack_animation(target) changeNext_move(CLICK_CD_MELEE) target.ex_act(3) @@ -474,7 +474,7 @@ /mob/living/simple_animal/hostile/swarmer/proc/DismantleMachine(obj/machinery/target) do_attack_animation(target) src << "We begin to dismantle this machine. We will need to be uninterrupted." - var/obj/effect/overlay/temp/swarmer/dismantle/D = PoolOrNew(/obj/effect/overlay/temp/swarmer/dismantle, get_turf(target)) + var/obj/effect/overlay/temp/swarmer/dismantle/D = new /obj/effect/overlay/temp/swarmer/dismantle(get_turf(target)) D.pixel_x = target.pixel_x D.pixel_y = target.pixel_y D.pixel_z = target.pixel_z @@ -484,7 +484,7 @@ M.amount = 5 for(var/obj/item/I in target.component_parts) I.loc = M.loc - var/obj/effect/overlay/temp/swarmer/disintegration/N = PoolOrNew(/obj/effect/overlay/temp/swarmer/disintegration, get_turf(target)) + var/obj/effect/overlay/temp/swarmer/disintegration/N = new /obj/effect/overlay/temp/swarmer/disintegration(get_turf(target)) N.pixel_x = target.pixel_x N.pixel_y = target.pixel_y N.pixel_z = target.pixel_z diff --git a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm index 91c47fad8e4..d096c397402 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm @@ -205,7 +205,7 @@ var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(4, 0, L) s.start() - PoolOrNew(/obj/effect/overlay/temp/revenant, L.loc) + new /obj/effect/overlay/temp/revenant(L.loc) sleep(20) if(!L.on) //wait, wait, don't shock me return @@ -240,19 +240,19 @@ /obj/effect/proc_holder/spell/aoe_turf/revenant/defile/proc/defile(turf/T) if(T.flags & NOJAUNT) T.flags -= NOJAUNT - PoolOrNew(/obj/effect/overlay/temp/revenant, T) + new /obj/effect/overlay/temp/revenant(T) if(!istype(T, /turf/open/floor/plating) && !istype(T, /turf/open/floor/engine/cult) && isfloorturf(T) && prob(15)) var/turf/open/floor/floor = T if(floor.intact && floor.floor_tile) - PoolOrNew(floor.floor_tile, floor) + new floor.floor_tile(floor) floor.broken = 0 floor.burnt = 0 floor.make_plating(1) if(T.type == /turf/closed/wall && prob(15)) - PoolOrNew(/obj/effect/overlay/temp/revenant, T) + new /obj/effect/overlay/temp/revenant(T) T.ChangeTurf(/turf/closed/wall/rust) if(T.type == /turf/closed/wall/r_wall && prob(10)) - PoolOrNew(/obj/effect/overlay/temp/revenant, T) + new /obj/effect/overlay/temp/revenant(T) T.ChangeTurf(/turf/closed/wall/r_wall/rust) for(var/obj/structure/closet/closet in T.contents) closet.open() @@ -264,7 +264,7 @@ for(var/obj/structure/window/window in T) window.take_damage(rand(30,80)) if(window && window.fulltile) - PoolOrNew(/obj/effect/overlay/temp/revenant/cracks, window.loc) + new /obj/effect/overlay/temp/revenant/cracks(window.loc) for(var/obj/machinery/light/light in T) light.flicker(20) //spooky @@ -287,7 +287,7 @@ /obj/effect/proc_holder/spell/aoe_turf/revenant/malfunction/proc/malfunction(turf/T, mob/user) for(var/mob/living/simple_animal/bot/bot in T) if(!bot.emagged) - PoolOrNew(/obj/effect/overlay/temp/revenant, bot.loc) + new /obj/effect/overlay/temp/revenant(bot.loc) bot.locked = 0 bot.open = 1 bot.emag_act() @@ -295,21 +295,21 @@ if(human == user) continue human << "You feel [pick("your sense of direction flicker out", "a stabbing pain in your head", "your mind fill with static")]." - PoolOrNew(/obj/effect/overlay/temp/revenant, human.loc) + new /obj/effect/overlay/temp/revenant(human.loc) human.emp_act(1) for(var/obj/thing in T) if(istype(thing, /obj/machinery/dominator) || istype(thing, /obj/machinery/power/apc) || istype(thing, /obj/machinery/power/smes)) //Doesn't work on dominators, SMES and APCs, to prevent kekkery continue if(prob(20)) if(prob(50)) - PoolOrNew(/obj/effect/overlay/temp/revenant, thing.loc) + new /obj/effect/overlay/temp/revenant(thing.loc) thing.emag_act(null) else if(!istype(thing, /obj/machinery/clonepod)) //I hate everything but mostly the fact there's no better way to do this without just not affecting it at all thing.emp_act(1) for(var/mob/living/silicon/robot/S in T) //Only works on cyborgs, not AI playsound(S, 'sound/machines/warning-buzzer.ogg', 50, 1) - PoolOrNew(/obj/effect/overlay/temp/revenant, S.loc) + new /obj/effect/overlay/temp/revenant(S.loc) S.spark_system.start() S.emp_act(1) @@ -332,7 +332,7 @@ for(var/mob/living/mob in T) if(mob == user) continue - PoolOrNew(/obj/effect/overlay/temp/revenant, mob.loc) + new /obj/effect/overlay/temp/revenant(mob.loc) if(iscarbon(mob)) if(ishuman(mob)) var/mob/living/carbon/human/H = mob @@ -353,14 +353,14 @@ mob.adjustToxLoss(5) for(var/obj/structure/spacevine/vine in T) //Fucking with botanists, the ability. vine.add_atom_colour("#823abb", TEMPORARY_COLOUR_PRIORITY) - PoolOrNew(/obj/effect/overlay/temp/revenant, vine.loc) + new /obj/effect/overlay/temp/revenant(vine.loc) QDEL_IN(vine, 10) for(var/obj/structure/glowshroom/shroom in T) shroom.add_atom_colour("#823abb", TEMPORARY_COLOUR_PRIORITY) - PoolOrNew(/obj/effect/overlay/temp/revenant, shroom.loc) + new /obj/effect/overlay/temp/revenant(shroom.loc) QDEL_IN(shroom, 10) for(var/obj/machinery/hydroponics/tray in T) - PoolOrNew(/obj/effect/overlay/temp/revenant, tray.loc) + new /obj/effect/overlay/temp/revenant(tray.loc) tray.pestlevel = rand(8, 10) tray.weedlevel = rand(8, 10) tray.toxic = rand(45, 55) diff --git a/code/game/gamemodes/miniantags/revenant/revenant_blight.dm b/code/game/gamemodes/miniantags/revenant/revenant_blight.dm index 41815b1ca45..7122451c653 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_blight.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_blight.dm @@ -33,11 +33,11 @@ affected_mob << "You suddenly feel [pick("sick and tired", "disoriented", "tired and confused", "nauseated", "faint", "dizzy")]..." affected_mob.confused += 8 affected_mob.adjustStaminaLoss(8) - PoolOrNew(/obj/effect/overlay/temp/revenant, affected_mob.loc) + new /obj/effect/overlay/temp/revenant(affected_mob.loc) if(stagedamage < stage) stagedamage++ affected_mob.adjustToxLoss(stage*2) //should, normally, do about 30 toxin damage. - PoolOrNew(/obj/effect/overlay/temp/revenant, affected_mob.loc) + new /obj/effect/overlay/temp/revenant(affected_mob.loc) if(prob(45)) affected_mob.adjustStaminaLoss(stage) ..() //So we don't increase a stage before applying the stage damage. @@ -56,7 +56,7 @@ finalstage = 1 affected_mob << "You feel like [pick("nothing's worth it anymore", "nobody ever needed your help", "nothing you did mattered", "everything you tried to do was worthless")]." affected_mob.adjustStaminaLoss(45) - PoolOrNew(/obj/effect/overlay/temp/revenant, affected_mob.loc) + new /obj/effect/overlay/temp/revenant(affected_mob.loc) if(affected_mob.dna && affected_mob.dna.species) affected_mob.dna.species.handle_mutant_bodyparts(affected_mob,"#1d2953") affected_mob.dna.species.handle_hair(affected_mob,"#1d2953") diff --git a/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm b/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm index 908bdae128d..d41b9edab16 100644 --- a/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm +++ b/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm @@ -33,7 +33,7 @@ message_admins("No valid spawn locations found, aborting...") return MAP_ERROR - var /obj/effect/dummy/slaughter/holder = PoolOrNew(/obj/effect/dummy/slaughter,(pick(spawn_locs))) + var /obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter((pick(spawn_locs))) var/mob/living/simple_animal/slaughter/S = new /mob/living/simple_animal/slaughter/(holder) S.holder = holder player_mind.transfer_to(S) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 71de06ffcdf..5c40f147b31 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -592,7 +592,7 @@ var/global/list/multiverse = list() var/turf/T = get_turf(user) playsound(T,'sound/magic/WarpWhistle.ogg', 200, 1) user.canmove = 0 - PoolOrNew(/obj/effect/overlay/temp/tornado,T) + new /obj/effect/overlay/temp/tornado(T) sleep(20) if(interrupted(user)) return @@ -610,7 +610,7 @@ var/global/list/multiverse = list() T = potential_T break breakout += 1 - PoolOrNew(/obj/effect/overlay/temp/tornado,T) + new /obj/effect/overlay/temp/tornado(T) sleep(20) if(interrupted(user)) return diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index b30313bc207..e93e4967af1 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -568,7 +568,8 @@ else user << "It appears to have no author." -/obj/item/weapon/spellbook/proc/Initialize() +/obj/item/weapon/spellbook/Initialize() + ..() var/entry_types = subtypesof(/datum/spellbook_entry) - /datum/spellbook_entry/item - /datum/spellbook_entry/summon for(var/T in entry_types) var/datum/spellbook_entry/E = new T @@ -579,11 +580,6 @@ qdel(E) tab = categories[1] -/obj/item/weapon/spellbook/New() - ..() - Initialize() - - /obj/item/weapon/spellbook/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/weapon/antag_spawner/contract)) var/obj/item/weapon/antag_spawner/contract/contract = O diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index 16bc9f135e4..1b5e8ff1066 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -91,7 +91,7 @@ if(cooldown_on || disabled) return else - PoolOrNew(/obj/effect/particle_effect/foam, loc) + new /obj/effect/particle_effect/foam(loc) src.uses-- cooldown_on = 1 cooldown_time = world.timeofday + 100 diff --git a/code/game/machinery/airlock_control.dm b/code/game/machinery/airlock_control.dm index 56240c6d9b2..a9087e7bfa5 100644 --- a/code/game/machinery/airlock_control.dm +++ b/code/game/machinery/airlock_control.dm @@ -77,20 +77,6 @@ frequency = new_frequency radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK) - -/obj/machinery/door/airlock/initialize() - if(frequency) - set_frequency(frequency) - - update_icon() - - -/obj/machinery/door/airlock/New() - ..() - - if(SSradio) - set_frequency(frequency) - /obj/machinery/door/airlock/Destroy() if(frequency && SSradio) SSradio.remove_object(src,frequency) @@ -156,14 +142,9 @@ frequency = new_frequency radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK) -/obj/machinery/airlock_sensor/initialize() - set_frequency(frequency) - -/obj/machinery/airlock_sensor/New() +/obj/machinery/airlock_sensor/Initialize() ..() - - if(SSradio) - set_frequency(frequency) + set_frequency(frequency) /obj/machinery/airlock_sensor/Destroy() if(SSradio) diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index bae828d2680..45508523412 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -54,8 +54,9 @@ world.log << "[src.c_tag] [src.x] [src.y] [src.z] conflicts with [C.c_tag] [C.x] [C.y] [C.z]" */ -/obj/machinery/camera/initialize() - if(z == 1 && prob(3) && !start_active) +/obj/machinery/camera/Initialize(mapload) + ..() + if(mapload && z == 1 && prob(3) && !start_active) toggle_cam() /obj/machinery/camera/Move() diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm index 0989ee50a59..e8e7f535874 100644 --- a/code/game/machinery/computer/Operating.dm +++ b/code/game/machinery/computer/Operating.dm @@ -7,13 +7,7 @@ var/mob/living/carbon/human/patient = null var/obj/structure/table/optable/table = null - -/obj/machinery/computer/operating/New() - ..() - if(ticker) - find_table() - -/obj/machinery/computer/operating/initialize() +/obj/machinery/computer/operating/Initialize() find_table() /obj/machinery/computer/operating/proc/find_table() diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm index 004a59d29cd..2bec71bb875 100644 --- a/code/game/machinery/computer/atmos_alert.dm +++ b/code/game/machinery/computer/atmos_alert.dm @@ -9,7 +9,7 @@ var/receive_frequency = 1437 var/datum/radio_frequency/radio_connection -/obj/machinery/computer/atmos_alert/initialize() +/obj/machinery/computer/atmos_alert/Initialize() ..() set_frequency(receive_frequency) diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index 0a2f345cd84..218d5ec752a 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -45,14 +45,10 @@ frequency = new_frequency radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA) -/obj/machinery/air_sensor/initialize() - set_frequency(frequency) - -/obj/machinery/air_sensor/New() +/obj/machinery/air_sensor/Initialize() ..() SSair.atmos_machinery += src - if(SSradio) - set_frequency(frequency) + set_frequency(frequency) /obj/machinery/air_sensor/Destroy() SSair.atmos_machinery -= src @@ -86,10 +82,9 @@ var/list/sensor_information = list() var/datum/radio_frequency/radio_connection -/obj/machinery/computer/atmos_control/New() +/obj/machinery/computer/atmos_control/Initialize() ..() - if(SSradio) - set_frequency(frequency) + set_frequency(frequency) /obj/machinery/computer/atmos_control/Destroy() if(SSradio) @@ -136,9 +131,6 @@ frequency = new_frequency radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA) -/obj/machinery/computer/atmos_control/initialize() - set_frequency(frequency) - ///////////////////////////////////////////////////////////// // LARGE TANK CONTROL ///////////////////////////////////////////////////////////// diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index d9f87430c17..d9ee17ca3b5 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -27,8 +27,6 @@ //cause a runtime else if(ispath(circuit)) circuit = new circuit(null) - power_change() - update_icon() /obj/machinery/computer/Destroy() if(circuit) @@ -36,7 +34,8 @@ circuit = null return ..() -/obj/machinery/computer/initialize() +/obj/machinery/computer/Initialize() + ..() power_change() /obj/machinery/computer/process() diff --git a/code/game/machinery/computer/gulag_teleporter.dm b/code/game/machinery/computer/gulag_teleporter.dm index becb3aae116..59a445c8cb4 100644 --- a/code/game/machinery/computer/gulag_teleporter.dm +++ b/code/game/machinery/computer/gulag_teleporter.dm @@ -148,7 +148,7 @@ prisoner.forceMove(get_turf(beacon)) prisoner.Weaken(2) // small travel dizziness prisoner << "The teleportation makes you a little dizzy." - PoolOrNew(/obj/effect/particle_effect/sparks, prisoner.loc) + new /obj/effect/particle_effect/sparks(prisoner.loc) playsound(src.loc, "sparks", 50, 1) if(teleporter.locked) teleporter.locked = FALSE diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index 03e0f77a636..8c470b19c9a 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -54,12 +54,12 @@ else user << "A no server error appears on the screen." -/obj/machinery/computer/message_monitor/initialize() +/obj/machinery/computer/message_monitor/Initialize() + ..() //Is the server isn't linked to a server, and there's a server available, default it to the first one in the list. if(!linkedServer) if(message_servers && message_servers.len > 0) linkedServer = message_servers[1] - return /obj/machinery/computer/message_monitor/attack_hand(mob/living/user) if(..()) diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index 2b26f1e3582..49944bb8ac0 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -9,11 +9,11 @@ var/range = 4 -/obj/machinery/computer/pod/initialize() +/obj/machinery/computer/pod/Initialize() + ..() for(var/obj/machinery/mass_driver/M in range(range, src)) if(M.id == id) connected = M - ..() /obj/machinery/computer/pod/proc/alarm() diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index cb35f0be1b3..d33b8e42627 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -115,12 +115,14 @@ var/list/airlock_overlays = list() max_integrity = normal_integrity if(damage_deflection == AIRLOCK_DAMAGE_DEFLECTION_N && security_level > AIRLOCK_SECURITY_METAL) damage_deflection = AIRLOCK_DAMAGE_DEFLECTION_R - update_icon() -/obj/machinery/door/airlock/initialize() - . = ..() +/obj/machinery/door/airlock/Initialize() + ..() if (cyclelinkeddir) cyclelinkairlock() + if(frequency) + set_frequency(frequency) + update_icon() /obj/machinery/door/airlock/proc/cyclelinkairlock() if (cyclelinkedairlock) diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 3f3fa5dd9f7..15de9be8e4f 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -362,7 +362,7 @@ /obj/machinery/door/airlock/cult/New() ..() - PoolOrNew(openingoverlaytype, src.loc) + new openingoverlaytype(src.loc) /obj/machinery/door/airlock/cult/canAIControl(mob/user) return (iscultist(user) && !isAllPowerCut()) @@ -371,10 +371,10 @@ if(!density) return 1 if(friendly || iscultist(M) || istype(M, /mob/living/simple_animal/shade) || isconstruct(M)) - PoolOrNew(openingoverlaytype, loc) + new openingoverlaytype(loc) return 1 else - PoolOrNew(/obj/effect/overlay/temp/cult/sac, loc) + new /obj/effect/overlay/temp/cult/sac(loc) var/atom/throwtarget throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(M, src))) M << pick(sound('sound/hallucinations/turn_around1.ogg',0,1,50), sound('sound/hallucinations/turn_around2.ogg',0,1,50)) @@ -432,8 +432,8 @@ /obj/machinery/door/airlock/clockwork/New() ..() var/turf/T = get_turf(src) - PoolOrNew(/obj/effect/overlay/temp/ratvar/door, T) - PoolOrNew(/obj/effect/overlay/temp/ratvar/beam/door, T) + new /obj/effect/overlay/temp/ratvar/door(T) + new /obj/effect/overlay/temp/ratvar/beam/door(T) change_construction_value(5) /obj/machinery/door/airlock/clockwork/Destroy() diff --git a/code/game/machinery/doors/alarmlock.dm b/code/game/machinery/doors/alarmlock.dm index 7f26954d1a6..6169398b739 100644 --- a/code/game/machinery/doors/alarmlock.dm +++ b/code/game/machinery/doors/alarmlock.dm @@ -21,7 +21,7 @@ air_connection = null return ..() -/obj/machinery/door/airlock/alarmlock/initialize() +/obj/machinery/door/airlock/alarmlock/Initialize() ..() SSradio.remove_object(src, air_frequency) air_connection = SSradio.add_object(src, air_frequency, RADIO_TO_AIRALARM) diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 8d81f226371..1b0ecc7dc31 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -44,18 +44,20 @@ Radio = new/obj/item/device/radio(src) Radio.listening = 0 -/obj/machinery/door_timer/initialize() - for(var/obj/machinery/door/window/brigdoor/M in urange(20, src)) - if (M.id == id) - targets += M +/obj/machinery/door_timer/Initialize() + ..() + if(id != null) + for(var/obj/machinery/door/window/brigdoor/M in urange(20, src)) + if (M.id == id) + targets += M - for(var/obj/machinery/flasher/F in urange(20, src)) - if(F.id == id) - targets += F + for(var/obj/machinery/flasher/F in urange(20, src)) + if(F.id == id) + targets += F - for(var/obj/structure/closet/secure_closet/brig/C in urange(20, src)) - if(C.id == id) - targets += C + for(var/obj/structure/closet/secure_closet/brig/C in urange(20, src)) + if(C.id == id) + targets += C if(!targets.len) stat |= BROKEN diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index bbc8aeff386..5d219ca853b 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -318,7 +318,7 @@ /obj/machinery/door/window/clockwork/setDir(direct) if(!made_glow) - var/obj/effect/E = PoolOrNew(/obj/effect/overlay/temp/ratvar/door/window, get_turf(src)) + var/obj/effect/E = new /obj/effect/overlay/temp/ratvar/door/window(get_turf(src)) E.setDir(direct) made_glow = TRUE ..() diff --git a/code/game/machinery/embedded_controller/access_controller.dm b/code/game/machinery/embedded_controller/access_controller.dm index 9ed4ea26c3c..9a7f8b4f3bb 100644 --- a/code/game/machinery/embedded_controller/access_controller.dm +++ b/code/game/machinery/embedded_controller/access_controller.dm @@ -19,7 +19,8 @@ /obj/machinery/doorButtons/proc/findObjsByTag() return -/obj/machinery/doorButtons/initialize() +/obj/machinery/doorButtons/Initialize() + ..() findObjsByTag() /obj/machinery/doorButtons/emag_act(mob/user) diff --git a/code/game/machinery/embedded_controller/airlock_controller.dm b/code/game/machinery/embedded_controller/airlock_controller.dm index 85468c5a944..bf5067cf143 100644 --- a/code/game/machinery/embedded_controller/airlock_controller.dm +++ b/code/game/machinery/embedded_controller/airlock_controller.dm @@ -219,8 +219,10 @@ var/sensor_tag var/sanitize_external -/obj/machinery/embedded_controller/radio/airlock_controller/initialize() +/obj/machinery/embedded_controller/radio/airlock_controller/Initialize(mapload) ..() + if(!mapload) + return var/datum/computer/file/embedded_program/airlock_controller/new_prog = new diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm index 5b9d1823d8e..c50f54f4f8b 100644 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm @@ -77,7 +77,8 @@ SSradio.remove_object(src,frequency) return ..() -/obj/machinery/embedded_controller/radio/initialize() +/obj/machinery/embedded_controller/radio/Initialize() + ..() set_frequency(frequency) /obj/machinery/embedded_controller/radio/post_signal(datum/signal/signal) diff --git a/code/game/machinery/embedded_controller/simple_vent_controller.dm b/code/game/machinery/embedded_controller/simple_vent_controller.dm index b75b515f5c4..50136323132 100644 --- a/code/game/machinery/embedded_controller/simple_vent_controller.dm +++ b/code/game/machinery/embedded_controller/simple_vent_controller.dm @@ -51,9 +51,11 @@ // Setup parameters only var/airpump_tag -/obj/machinery/embedded_controller/radio/simple_vent_controller/initialize() +/obj/machinery/embedded_controller/radio/simple_vent_controller/Initialize(mapload) ..() + if(!mapload) + return var/datum/computer/file/embedded_program/simple_vent_controller/new_prog = new new_prog.airpump_tag = airpump_tag diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index e59263ddf2a..bd68496bb92 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -156,7 +156,7 @@ Class Procs: /obj/machinery/emp_act(severity) if(use_power && !stat) use_power(7500/severity) - PoolOrNew(/obj/effect/overlay/temp/emp, loc) + new /obj/effect/overlay/temp/emp(loc) ..() /obj/machinery/proc/open_machine(drop = 1) diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 18c3ea73adf..8ebdf0ba52b 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -587,7 +587,10 @@ pixel_y = (dir & 3)? (dir ==1 ? -24 : 24) : 0 power_change() //Checks power and initial settings -/obj/machinery/turretid/initialize() //map-placed turrets autolink turrets +/obj/machinery/turretid/Initialize(mapload) //map-placed turrets autolink turrets + ..() + if(!mapload) + return if(control_area && istext(control_area)) for(var/V in sortedAreas) var/area/A = V diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index f25425d1e9a..02324c8c68f 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -44,14 +44,8 @@ // new display // register for radio system -/obj/machinery/status_display/New() - ..() - if(SSradio) - SSradio.add_object(src, frequency) - -/obj/machinery/status_display/initialize() - if(SSradio) - SSradio.add_object(src, frequency) +/obj/machinery/status_display/Initialize() + SSradio.add_object(src, frequency) /obj/machinery/status_display/Destroy() if(SSradio) diff --git a/code/game/machinery/telecomms/broadcasting.dm b/code/game/machinery/telecomms/broadcasting.dm index 66c70792338..7227a393dfc 100644 --- a/code/game/machinery/telecomms/broadcasting.dm +++ b/code/game/machinery/telecomms/broadcasting.dm @@ -67,7 +67,7 @@ var/list/radios = list() - var/atom/movable/virtualspeaker/virt = PoolOrNew(/atom/movable/virtualspeaker,null) + var/atom/movable/virtualspeaker/virt = new /atom/movable/virtualspeaker(null) virt.name = name virt.job = job virt.languages_spoken = AM.languages_spoken diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index e56ebd9e0b9..0bb9f414ed3 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -147,8 +147,9 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() if(. && T1) // Update listening Z, just in case you have telecomm relay on a shuttle listening_level = T1.z -/obj/machinery/telecomms/initialize() - if(autolinkers.len) +/obj/machinery/telecomms/Initialize(mapload) + ..() + if(mapload && autolinkers.len) // Links nearby machines if(!long_range_link) for(var/obj/machinery/telecomms/T in urange(20, src, 1)) diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 61e6fc2df1f..a5f43c7e753 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -14,11 +14,10 @@ /obj/machinery/computer/teleporter/New() src.id = "[rand(1000, 9999)]" - link_power_station() ..() - return -/obj/machinery/computer/teleporter/initialize() +/obj/machinery/computer/teleporter/Initialize() + ..() link_power_station() /obj/machinery/computer/teleporter/Destroy() @@ -235,7 +234,6 @@ /obj/machinery/teleport/hub/New() ..() - link_power_station() var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/teleporter_hub(null) B.apply_default_parts(src) @@ -248,7 +246,8 @@ /obj/item/weapon/stock_parts/matter_bin = 1) def_components = list(/obj/item/weapon/ore/bluespace_crystal = /obj/item/weapon/ore/bluespace_crystal/artificial) -/obj/machinery/teleport/hub/initialize() +/obj/machinery/teleport/hub/Initialize() + ..() link_power_station() /obj/machinery/teleport/hub/Destroy() @@ -350,7 +349,6 @@ ..() var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/teleporter_station(null) B.apply_default_parts(src) - link_console_and_hub() /obj/item/weapon/circuitboard/machine/teleporter_station name = "Teleporter Station (Machine Board)" @@ -362,7 +360,8 @@ /obj/item/weapon/stock_parts/console_screen = 1) def_components = list(/obj/item/weapon/ore/bluespace_crystal = /obj/item/weapon/ore/bluespace_crystal/artificial) -/obj/machinery/teleport/station/initialize() +/obj/machinery/teleport/station/Initialize() + ..() link_console_and_hub() /obj/machinery/teleport/station/RefreshParts() diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 9b193245c04..b871bd7c7a7 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -151,7 +151,7 @@ var/list/the_targets = list(T,T1,T2) spawn(0) for(var/a=0, a<5, a++) - var/obj/effect/particle_effect/water/W = PoolOrNew(/obj/effect/particle_effect/water, get_turf(chassis)) + var/obj/effect/particle_effect/water/W = new /obj/effect/particle_effect/water(get_turf(chassis)) if(!W) return var/turf/my_target = pick(the_targets) diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index b16103e6a03..c0c4b62d063 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -37,7 +37,7 @@ A.original = target A.current = curloc if(!A.suppressed && firing_effect_type) - PoolOrNew(firing_effect_type, list(get_turf(src), chassis.dir)) + new firing_effect_type(get_turf(src), chassis.dir) var/spread = 0 diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm index 419a7be6207..e25b0323584 100644 --- a/code/game/mecha/mech_bay.dm +++ b/code/game/mecha/mech_bay.dm @@ -147,5 +147,6 @@ return add_overlay("recharge_comp_on") -/obj/machinery/computer/mech_bay_power_console/initialize() +/obj/machinery/computer/mech_bay_power_console/Initialize() + ..() reconnect() diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index c50d3cf0103..58a5edce57d 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -63,7 +63,7 @@ qdel(src) /obj/effect/anomaly/proc/anomalyNeutralize() - PoolOrNew(/obj/effect/particle_effect/smoke/bad, loc) + new /obj/effect/particle_effect/smoke/bad(loc) for(var/atom/movable/O in src) O.loc = src.loc diff --git a/code/game/objects/effects/effect_system/effect_system.dm b/code/game/objects/effects/effect_system/effect_system.dm index ec9f73d71b2..eb8f575efb8 100644 --- a/code/game/objects/effects/effect_system/effect_system.dm +++ b/code/game/objects/effects/effect_system/effect_system.dm @@ -19,8 +19,7 @@ would spawn and follow the beaker, even if it is carried or thrown. /obj/effect/particle_effect/Destroy() if(ticker) cameranet.updateVisibility(src) - ..() - return QDEL_HINT_PUTINPOOL + . = ..() /datum/effect_system var/number = 3 @@ -57,7 +56,7 @@ would spawn and follow the beaker, even if it is carried or thrown. /datum/effect_system/proc/generate_effect() if(holder) location = get_turf(holder) - var/obj/effect/E = PoolOrNew(effect_type, location) + var/obj/effect/E = new effect_type(location) total_effects++ var/direction if(cardinals) diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index e7db9acffeb..f2a3d61d190 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -113,7 +113,7 @@ for(var/mob/living/L in T) foam_mob(L) - var/obj/effect/particle_effect/foam/F = PoolOrNew(src.type, T) + var/obj/effect/particle_effect/foam/F = new src.type(T) F.amount = amount reagents.copy_to(F, (reagents.total_volume)) F.add_atom_colour(color, FIXED_COLOUR_PRIORITY) @@ -144,7 +144,7 @@ /datum/effect_system/foam_spread/New() ..() - chemholder = PoolOrNew(/obj) + chemholder = new /obj() var/datum/reagents/R = new/datum/reagents(1000) chemholder.reagents = R R.my_atom = chemholder @@ -172,7 +172,7 @@ if(foundfoam)//If there was already foam where we start, we add our foaminess to it. foundfoam.amount += amount else - var/obj/effect/particle_effect/foam/F = PoolOrNew(effect_type, location) + var/obj/effect/particle_effect/foam/F = new effect_type(location) var/foamcolor = mix_color_from_reagents(chemholder.reagents.reagent_list) chemholder.reagents.copy_to(F, chemholder.reagents.total_volume/amount) F.add_atom_colour(foamcolor, FIXED_COLOUR_PRIORITY) diff --git a/code/game/objects/effects/effect_system/effects_other.dm b/code/game/objects/effects/effect_system/effects_other.dm index 60fd3c63edc..503f120dd49 100644 --- a/code/game/objects/effects/effect_system/effects_other.dm +++ b/code/game/objects/effects/effect_system/effects_other.dm @@ -36,7 +36,7 @@ if(processing) processing = 0 if(number < 3) - var/obj/effect/particle_effect/steam/I = PoolOrNew(/obj/effect/particle_effect/steam, oldposition) + var/obj/effect/particle_effect/steam/I = new /obj/effect/particle_effect/steam(oldposition) number++ I.setDir(holder.dir) oldposition = get_turf(holder) @@ -73,7 +73,7 @@ var/turf/T = get_turf(holder) if(T != oldposition) if(!T.has_gravity() || !nograv_required) - var/obj/effect/particle_effect/ion_trails/I = PoolOrNew(effect_type, oldposition) + var/obj/effect/particle_effect/ion_trails/I = new effect_type(oldposition) set_dir(I) if(fade) flick(fadetype, I) diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm index 17c19b0a204..351ac8122c8 100644 --- a/code/game/objects/effects/effect_system/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/effects_smoke.dm @@ -255,7 +255,7 @@ /datum/effect_system/smoke_spread/chem/New() ..() - chemholder = PoolOrNew(/obj) + chemholder = new /obj() var/datum/reagents/R = new/datum/reagents(500) chemholder.reagents = R R.my_atom = chemholder diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index 3648adac7c8..fb2ab81eeb6 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -28,9 +28,8 @@ var/timerid /obj/effect/overlay/temp/Destroy() - ..() + . = ..() deltimer(timerid) - return QDEL_HINT_PUTINPOOL /obj/effect/overlay/temp/New() ..() @@ -312,6 +311,60 @@ /obj/effect/overlay/temp/ratvar/window/single icon_state = "ratvarwindowglow_s" +/obj/effect/overlay/temp/ratvar/volt_hit + name = "volt blast" + layer = ABOVE_MOB_LAYER + duration = 5 + icon_state = "volt_hit" + var/mob/user + var/damage = 25 + +/obj/effect/overlay/temp/ratvar/volt_hit/New(loc, caster, multiplier) + if(multiplier) + damage *= multiplier + duration = max(round(damage * 0.2), 1) + ..() + SetLuminosity(3, 2) + +/obj/effect/overlay/temp/ratvar/volt_hit/true/New(loc, caster, multiplier) + ..() + user = caster + if(user) + var/matrix/M = new + M.Turn(Get_Angle(src, user)) + transform = M + addtimer(CALLBACK(src, .proc/volthit), 0) + +/obj/effect/overlay/temp/ratvar/volt_hit/proc/volthit() + if(user) + Beam(get_turf(user), "volt_ray", time=duration, maxdistance=8, beam_type=/obj/effect/ebeam/volt_ray) + var/hit_amount = 0 + var/turf/T = get_turf(src) + for(var/mob/living/L in T) + if(is_servant_of_ratvar(L)) + continue + var/obj/item/I = L.null_rod_check() + if(I) + L.visible_message("Strange energy flows into [L]'s [I.name]!", \ + "Your [I.name] shields you from [src]!") + continue + L.visible_message("[L] is struck by a [name]!", "You're struck by a [name]!") + L.apply_damage(damage, BURN, "chest", L.run_armor_check("chest", "laser", "Your armor absorbs [src]!", "Your armor blocks part of [src]!", 0, "Your armor was penetrated by [src]!")) + add_logs(user, L, "struck with a volt blast") + hit_amount++ + for(var/obj/mecha/M in T) + if(M.occupant) + if(is_servant_of_ratvar(M.occupant)) + continue + M.occupant << "Your [M.name] is struck by a [name]!" + M.visible_message("[M] is struck by a [name]!") + M.take_damage(damage, BURN, 0, 0) + hit_amount++ + if(hit_amount) + playsound(src, 'sound/machines/defib_zap.ogg', damage*hit_amount, 1, -1) + else + playsound(src, "sparks", 50, 1) + /obj/effect/overlay/temp/ratvar/ocular_warden name = "warden's gaze" layer = ABOVE_MOB_LAYER @@ -378,18 +431,6 @@ animate(src, transform = matrix()*2, time = 5) animate(transform = oldtransform, alpha = 0, time = 65) -/obj/effect/overlay/temp/ratvar/sigil/voltvoid - color = "#EC8A2D" - layer = ABOVE_MOB_LAYER - duration = 10 - luminosity = 3 - -/obj/effect/overlay/temp/ratvar/sigil/voltvoid/New() - ..() - var/oldtransform = transform - animate(src, transform = matrix()*3, time = 1) - animate(transform = oldtransform, alpha = 0, time = 9) - /obj/effect/overlay/temp/ratvar/sigil/vitality color = "#1E8CE1" icon_state = "sigilactivepulse" diff --git a/code/game/objects/empulse.dm b/code/game/objects/empulse.dm index 510c5183af7..0a87fc55dba 100644 --- a/code/game/objects/empulse.dm +++ b/code/game/objects/empulse.dm @@ -9,7 +9,7 @@ log_game("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] ") if(heavy_range > 1) - PoolOrNew(/obj/effect/overlay/temp/emp/pulse, epicenter) + new /obj/effect/overlay/temp/emp/pulse(epicenter) if(heavy_range > light_range) light_range = heavy_range diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 9e663c385e9..17e638e8bdf 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -145,7 +145,7 @@ var/explosionid = 1 if(T) if(flame_dist && prob(40) && !isspaceturf(T) && !T.density) - PoolOrNew(/obj/effect/hotspot, T) //Mostly for ambience! + new /obj/effect/hotspot(T) //Mostly for ambience! if(dist > 0) T.explosion_level = max(T.explosion_level, dist) //let the bigger one have it T.explosion_id = id diff --git a/code/game/objects/items/devices/PDA/radio.dm b/code/game/objects/items/devices/PDA/radio.dm index e0fb40066b4..e1ae98de1ec 100644 --- a/code/game/objects/items/devices/PDA/radio.dm +++ b/code/game/objects/items/devices/PDA/radio.dm @@ -28,18 +28,14 @@ var/last_transmission var/datum/radio_frequency/radio_connection -/obj/item/radio/integrated/signal/New() - ..() - if(SSradio) - initialize() - /obj/item/radio/integrated/signal/Destroy() if(SSradio) SSradio.remove_object(src, frequency) radio_connection = null return ..() -/obj/item/radio/integrated/signal/initialize() +/obj/item/radio/integrated/signal/Initialize() + ..() if (src.frequency < 1200 || src.frequency > 1600) src.frequency = sanitize_frequency(src.frequency) diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index 5cefee833ee..66acb1e6c58 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -49,13 +49,13 @@ qdel(active_dummy) active_dummy = null usr << "You deactivate \the [src]." - PoolOrNew(/obj/effect/overlay/temp/emp/pulse, get_turf(src)) + new /obj/effect/overlay/temp/emp/pulse(get_turf(src)) else playsound(get_turf(src), 'sound/effects/pop.ogg', 100, 1, -6) var/obj/effect/dummy/chameleon/C = new/obj/effect/dummy/chameleon(usr.loc) C.activate(usr, saved_appearance, src) usr << "You activate \the [src]." - PoolOrNew(/obj/effect/overlay/temp/emp/pulse, get_turf(src)) + new /obj/effect/overlay/temp/emp/pulse(get_turf(src)) /obj/item/device/chameleon/proc/disrupt(delete_dummy = 1) if(active_dummy) diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 56ec099fbdf..5e55e396bfa 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -12,7 +12,7 @@ var/on = 0 var/brightness_on = 4 //luminosity when on -/obj/item/device/flashlight/initialize() +/obj/item/device/flashlight/Initialize() ..() if(on) icon_state = "[initial(icon_state)]-on" @@ -111,7 +111,7 @@ return var/T = get_turf(target) if(locate(/mob/living) in T) - PoolOrNew(/obj/effect/overlay/temp/medical_holosign, list(T,user)) //produce a holographic glow + new /obj/effect/overlay/temp/medical_holosign(T,user) //produce a holographic glow holo_cooldown = world.time + 100 return ..() diff --git a/code/game/objects/items/devices/instruments.dm b/code/game/objects/items/devices/instruments.dm index d4da3dd5c14..d03e5345eac 100644 --- a/code/game/objects/items/devices/instruments.dm +++ b/code/game/objects/items/devices/instruments.dm @@ -22,9 +22,10 @@ user.visible_message("[user] begins to play 'Gloomy Sunday'! It looks like [user.p_theyre()] trying to commit suicide!") return (BRUTELOSS) -/obj/item/device/instrument/initialize() - song.tempo = song.sanitize_tempo(song.tempo) // tick_lag isn't set when the map is loaded +/obj/item/device/instrument/Initialize(mapload) ..() + if(mapload) + song.tempo = song.sanitize_tempo(song.tempo) // tick_lag isn't set when the map is loaded /obj/item/device/instrument/attack_self(mob/user) if(!user.IsAdvancedToolUser()) diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index f842304a8c6..87c97636ab5 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -17,14 +17,9 @@ user.visible_message("[user] hooks [user.p_them()]self to the electropack and spams the trigger! It looks like [user.p_theyre()] trying to commit suicide!") return (FIRELOSS) -/obj/item/device/electropack/initialize() - if(SSradio) - SSradio.add_object(src, frequency, RADIO_CHAT) - -/obj/item/device/electropack/New() - if(SSradio) - SSradio.add_object(src, frequency, RADIO_CHAT) +/obj/item/device/electropack/Initialize() ..() + SSradio.add_object(src, frequency, RADIO_CHAT) /obj/item/device/electropack/Destroy() if(SSradio) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index e27fd99416f..1a9bbeba017 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -54,8 +54,6 @@ wires.cut(WIRE_TX) // OH GOD WHY secure_radio_connections = new ..() - if(SSradio) - initialize() /obj/item/device/radio/proc/recalculateChannels() channels = list() @@ -100,7 +98,8 @@ keyslot = null return ..() -/obj/item/device/radio/initialize() +/obj/item/device/radio/Initialize() + ..() frequency = sanitize_frequency(frequency, freerange) set_frequency(frequency) diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index 49fba49dc1b..10132b4d423 100644 --- a/code/game/objects/items/stacks/sheets/light.dm +++ b/code/game/objects/items/stacks/sheets/light.dm @@ -29,7 +29,7 @@ var/obj/item/stack/sheet/metal/M = O if (M.use(1)) use(1) - var/obj/item/L = PoolOrNew(/obj/item/stack/tile/light, user.loc) + var/obj/item/L = new /obj/item/stack/tile/light(user.loc) user << "You make a light tile." L.add_fingerprint(user) else diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index e206d9ac087..97490e9fc35 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -18,10 +18,6 @@ pixel_x = rand(-3, 3) pixel_y = rand(-3, 3) //randomize a little -/obj/item/stack/tile/Destroy() - ..() - return QDEL_HINT_PUTINPOOL - /obj/item/stack/tile/attackby(obj/item/W, mob/user, params) if (istype(W, /obj/item/weapon/weldingtool)) diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index a7eba9a3164..3c2e3df48be 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -44,7 +44,7 @@ /obj/item/weapon/soap/suicide_act(mob/user) user.say(";FFFFFFFFFFFFFFFFUUUUUUUDGE!!") user.visible_message("[user] lifts [src] to their mouth and gnaws on it furiously, producing a thick froth! [user.p_they(TRUE)]'ll never get that BB gun now!") - PoolOrNew(/obj/effect/particle_effect/foam, loc) + new /obj/effect/particle_effect/foam(loc) return (TOXLOSS) /obj/item/weapon/soap/Crossed(AM as mob|obj) diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index 8f95ca04c16..aafc8a1b007 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -147,7 +147,7 @@ for(var/a=0, a<5, a++) spawn(0) - var/obj/effect/particle_effect/water/W = PoolOrNew( /obj/effect/particle_effect/water, get_turf(src) ) + var/obj/effect/particle_effect/water/W = new /obj/effect/particle_effect/water(get_turf(src)) var/turf/my_target = pick(the_targets) if(precision) the_targets -= my_target diff --git a/code/game/objects/items/weapons/powerfist.dm b/code/game/objects/items/weapons/powerfist.dm index 7f78ac53275..3c6b809ec7b 100644 --- a/code/game/objects/items/weapons/powerfist.dm +++ b/code/game/objects/items/weapons/powerfist.dm @@ -81,7 +81,7 @@ target.apply_damage(force * fisto_setting, BRUTE) target.visible_message("[user]'s powerfist lets out a loud hiss as they punch [target.name]!", \ "You cry out in pain as [user]'s punch flings you backwards!") - PoolOrNew(/obj/effect/overlay/temp/kinetic_blast, target.loc) + new /obj/effect/overlay/temp/kinetic_blast(target.loc) playsound(loc, 'sound/weapons/resonator_blast.ogg', 50, 1) playsound(loc, 'sound/weapons/genhit2.ogg', 50, 1) diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 0cca77c19c9..4c1c005464b 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -285,7 +285,7 @@ /obj/item/weapon/storage/backpack/satchel/flat/New() ..() - PoolOrNew(/obj/item/stack/tile/plasteel, src) + new /obj/item/stack/tile/plasteel(src) new /obj/item/weapon/crowbar(src) SSpersistence.new_secret_satchels += src diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm index 9229058882a..d944ab6f5c0 100644 --- a/code/game/objects/items/weapons/tanks/watertank.dm +++ b/code/game/objects/items/weapons/tanks/watertank.dm @@ -300,7 +300,7 @@ if(!Adj|| !isturf(target)) return if(metal_synthesis_cooldown < 5) - var/obj/effect/particle_effect/foam/metal/F = PoolOrNew(/obj/effect/particle_effect/foam/metal, get_turf(target)) + var/obj/effect/particle_effect/foam/metal/F = new /obj/effect/particle_effect/foam/metal(get_turf(target)) F.amount = 0 metal_synthesis_cooldown++ spawn(100) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 8db02b56f8a..dd90343981e 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -34,14 +34,12 @@ var/material_drop_amount = 2 var/delivery_icon = "deliverycloset" //which icon to use when packagewrapped. null to be unwrappable. -/obj/structure/closet/New() - ..() - update_icon() -/obj/structure/closet/initialize() +/obj/structure/closet/Initialize(mapload) ..() - if(!opened) // if closed, any item at the crate's loc is put in the contents + if(mapload && !opened) // if closed, any item at the crate's loc is put in the contents take_contents() + update_icon() /obj/structure/closet/Destroy() dump_contents() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 3f96b0dcddb..be2b31b73ff 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -37,6 +37,7 @@ /obj/structure/closet/secure_closet/hop/New() ..() + new /obj/item/clothing/neck/cloak/hop(src) new /obj/item/clothing/under/rank/head_of_personnel(src) new /obj/item/clothing/head/hopcap(src) new /obj/item/weapon/cartridge/hop(src) diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index 00a8aee7063..93b4893d4b8 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -330,8 +330,8 @@ /obj/structure/falsewall/brass/New(loc) ..() var/turf/T = get_turf(src) - PoolOrNew(/obj/effect/overlay/temp/ratvar/wall/false, T) - PoolOrNew(/obj/effect/overlay/temp/ratvar/beam/falsewall, T) + new /obj/effect/overlay/temp/ratvar/wall/false(T) + new /obj/effect/overlay/temp/ratvar/beam/falsewall(T) change_construction_value(4) /obj/structure/falsewall/brass/Destroy() diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 6796be48652..a0f8dd9e882 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -224,10 +224,10 @@ ..() change_construction_value(1) if(broken) - PoolOrNew(/obj/effect/overlay/temp/ratvar/grille/broken, get_turf(src)) + new /obj/effect/overlay/temp/ratvar/grille/broken(get_turf(src)) else - PoolOrNew(/obj/effect/overlay/temp/ratvar/grille, get_turf(src)) - PoolOrNew(/obj/effect/overlay/temp/ratvar/beam/grille, get_turf(src)) + new /obj/effect/overlay/temp/ratvar/grille(get_turf(src)) + new /obj/effect/overlay/temp/ratvar/beam/grille(get_turf(src)) /obj/structure/grille/ratvar/Destroy() change_construction_value(-1) diff --git a/code/game/objects/structures/guncase.dm b/code/game/objects/structures/guncase.dm index 6f33866175e..d52153f9f46 100644 --- a/code/game/objects/structures/guncase.dm +++ b/code/game/objects/structures/guncase.dm @@ -12,17 +12,14 @@ var/open = 1 var/capacity = 4 -/obj/structure/guncase/New() +/obj/structure/guncase/Initialize(mapload) ..() - update_icon() - -/obj/structure/guncase/initialize() - ..() - for(var/obj/item/I in loc.contents) - if(istype(I, gun_category)) - I.loc = src - if(contents.len >= capacity) - break + if(mapload) + for(var/obj/item/I in loc.contents) + if(istype(I, gun_category)) + I.loc = src + if(contents.len >= capacity) + break update_icon() /obj/structure/guncase/update_icon() diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index d3fa057eb9a..eb0f8b7dec3 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -1,4 +1,5 @@ //////Kitchen Spike +#define VIABLE_MOB_CHECK(X) (isliving(X) && !issilicon(X) && !isbot(X)) /obj/structure/kitchenspike_frame name = "meatspike frame" @@ -71,7 +72,7 @@ return ..() /obj/structure/kitchenspike/attack_hand(mob/user) - if(isliving(user.pulling) && user.a_intent == INTENT_GRAB && !has_buckled_mobs()) + if(VIABLE_MOB_CHECK(user.pulling) && user.a_intent == INTENT_GRAB && !has_buckled_mobs()) var/mob/living/L = user.pulling if(do_mob(user, src, 120)) if(has_buckled_mobs()) //to prevent spam/queing up attacks @@ -146,3 +147,5 @@ new /obj/item/stack/sheet/metal(src.loc, 4) new /obj/item/stack/rods(loc, 4) qdel(src) + +#undef VIABLE_MOB_CHECK diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index b37d37bebde..bb715800a5e 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -115,8 +115,8 @@ /obj/structure/lattice/catwalk/clockwork/New() ..() - PoolOrNew(/obj/effect/overlay/temp/ratvar/floor/catwalk, loc) - PoolOrNew(/obj/effect/overlay/temp/ratvar/beam/catwalk, loc) + new /obj/effect/overlay/temp/ratvar/floor/catwalk(loc) + new /obj/effect/overlay/temp/ratvar/beam/catwalk(loc) /obj/structure/lattice/catwalk/clockwork/ratvar_act() return diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm index 5dabd381870..98b394262fb 100644 --- a/code/game/objects/structures/musician.dm +++ b/code/game/objects/structures/musician.dm @@ -325,9 +325,10 @@ song = null return ..() -/obj/structure/piano/initialize() - song.tempo = song.sanitize_tempo(song.tempo) // tick_lag isn't set when the map is loaded +/obj/structure/piano/Initialize(mapload) ..() + if(mapload) + song.tempo = song.sanitize_tempo(song.tempo) // tick_lag isn't set when the map is loaded /obj/structure/piano/attack_hand(mob/user) if(!user.IsAdvancedToolUser()) diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm index 348128def51..061599ae73c 100644 --- a/code/game/objects/structures/noticeboard.dm +++ b/code/game/objects/structures/noticeboard.dm @@ -9,7 +9,12 @@ max_integrity = 150 var/notices = 0 -/obj/structure/noticeboard/initialize() +/obj/structure/noticeboard/Initialize(mapload) + ..() + + if(!mapload) + return + for(var/obj/item/I in loc) if(notices > 4) break if(istype(I, /obj/item/weapon/paper)) diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 2bf64c55366..b563467dad7 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -32,7 +32,12 @@ FLOOR SAFES tumbler_2_open = rand(0, 71) -/obj/structure/safe/initialize() +/obj/structure/safe/Initialize(mapload) + ..() + + if(!mapload) + return + for(var/obj/item/I in loc) if(space >= maxspace) return @@ -185,10 +190,11 @@ FLOOR SAFES layer = LOW_OBJ_LAYER -/obj/structure/safe/floor/initialize() +/obj/structure/safe/floor/Initialize(mapload) ..() - var/turf/T = loc - hide(T.intact) + if(mapload) + var/turf/T = loc + hide(T.intact) /obj/structure/safe/floor/hide(var/intact) diff --git a/code/game/objects/structures/spirit_board.dm b/code/game/objects/structures/spirit_board.dm index dfef2c730c4..5bcb2c9974d 100644 --- a/code/game/objects/structures/spirit_board.dm +++ b/code/game/objects/structures/spirit_board.dm @@ -6,7 +6,7 @@ density = 1 anchored = 0 var/virgin = 1 - var/cooldown = 0 + var/next_use = 0 var/planchette = "A" var/lastuser = null @@ -32,16 +32,15 @@ virgin = 0 notify_ghosts("Someone has begun playing with a [src.name] in [get_area(src)]!", source = src) - planchette = input("Choose the letter.", "Seance!") in list("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z") + planchette = input("Choose the letter.", "Seance!") as null|anything in list("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z") + if(!planchette || !Adjacent(M) || next_use > world.time) + return add_logs(M, src, "picked a letter on", " which was \"[planchette]\".") - cooldown = world.time + next_use = world.time + rand(30,50) lastuser = M.ckey - - var/turf/T = loc - sleep(rand(20,30)) - if(T == loc) - visible_message("The planchette slowly moves... and stops at the letter \"[planchette]\".") - + //blind message is the same because not everyone brings night vision to seances + var/msg = "The planchette slowly moves... and stops at the letter \"[planchette]\"." + visible_message(msg,"",msg) /obj/structure/spirit_board/proc/spirit_board_checks(mob/M) //cooldown @@ -49,7 +48,7 @@ if(M.ckey == lastuser) bonus = 10 //Give some other people a chance, hog. - if(cooldown > world.time - (30 + bonus)) + if(next_use - bonus > world.time ) return 0 //No feedback here, hiding the cooldown a little makes it harder to tell who's really picking letters. //lighting check diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 298547d658e..0dbfc2ca4da 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -453,12 +453,12 @@ var/amount_of_gears = 2 if(!fulltile) if(direct) - var/obj/effect/E = PoolOrNew(/obj/effect/overlay/temp/ratvar/window/single, get_turf(src)) + var/obj/effect/E = new /obj/effect/overlay/temp/ratvar/window/single(get_turf(src)) setDir(direct) E.setDir(direct) made_glow = TRUE else - PoolOrNew(/obj/effect/overlay/temp/ratvar/window, get_turf(src)) + new /obj/effect/overlay/temp/ratvar/window(get_turf(src)) made_glow = TRUE amount_of_gears = 4 for(var/i in 1 to amount_of_gears) @@ -467,7 +467,7 @@ /obj/structure/window/reinforced/clockwork/setDir(direct) if(!made_glow) - var/obj/effect/E = PoolOrNew(/obj/effect/overlay/temp/ratvar/window/single, get_turf(src)) + var/obj/effect/E = new /obj/effect/overlay/temp/ratvar/window/single(get_turf(src)) E.setDir(direct) made_glow = TRUE ..() diff --git a/code/game/pooling/pool.dm b/code/game/pooling/pool.dm deleted file mode 100644 index e99df9c5b0b..00000000000 --- a/code/game/pooling/pool.dm +++ /dev/null @@ -1,146 +0,0 @@ - -/* -/tg/station13 /datum Pool: ---------------------------------- -By RemieRichards - -Creation/Deletion is laggy, so let's reduce reuse and recycle! - -Usage: - -To get a object, just call - - PoolOrNew(type, arg) if you only want to pass one argument to New(), usually loc - - PoolOrNew(type, list) if you want to pass multiple arguments to New() - -To put a object back in the pool, call PlaceInPool(object) -This will call destroy on the object, set its loc to null, -and reset all of its vars to their default - -You can override your object's destroy to return QDEL_HINT_PUTINPOOL -to ensure its always placed in this pool (this will only be acted on if qdel calls destroy, and destroy will not get called twice) - -For almost all pooling purposes, it is better to use the QDEL hint than to pool it directly with PlaceInPool - -*/ - -var/global/list/GlobalPool = list() - -//You'll be using this proc 90% of the time. -//It grabs a type from the pool if it can -//And if it can't, it creates one -//The pool is flexible and will expand to fit -//The new created atom when it eventually -//Goes into the pool - -//Second argument can be a single arg -//Or a list of arguments -//Either way it gets passed to new - -/proc/PoolOrNew(get_type,second_arg) - if(!get_type) - return - - if(SSpool) - INCREMENT_TALLY(SSpool.stats_pooled_or_newed, get_type) - - . = GetFromPool(get_type,second_arg) - - if(!.) - if(SSpool) - INCREMENT_TALLY(SSpool.stats_created_new, get_type) - if(ispath(get_type)) - if(islist(second_arg)) - . = new get_type (arglist(second_arg)) - else - . = new get_type (second_arg) - else - if(SSpool) - INCREMENT_TALLY(SSpool.stats_reused, get_type) - - -/proc/GetFromPool(get_type,second_arg) - if(!get_type) - return - - if(isnull(GlobalPool[get_type])) - return - - if(length(GlobalPool[get_type]) == 0) - return - - var/datum/pooled = pop(GlobalPool[get_type]) - if(pooled) - pooled.gc_destroyed = null - - var/atom/movable/AM - if(istype(pooled, /atom/movable)) - AM = pooled - - if(islist(second_arg)) - if(AM) - AM.loc = second_arg[1] //we need to do loc setting explicetly before even calling New() to replicate new()'s behavior - pooled.New(arglist(second_arg)) - - else - if(AM) - AM.loc = second_arg - pooled.New(second_arg) - - return pooled - - -/proc/PlaceInPool(datum/diver, destroy = 1) - if(!istype(diver)) - return - - if(diver in GlobalPool[diver.type]) - return - - if(SSpool) - INCREMENT_TALLY(SSpool.stats_placed_in_pool, diver.type) - - if(!GlobalPool[diver.type]) - GlobalPool[diver.type] = list() - - GlobalPool[diver.type] |= diver - - if(destroy) - diver.Destroy() - - diver.gc_destroyed = 1 - - diver.ResetVars() - -var/list/exclude = list("animate_movement", "contents", "loc", "locs", "parent_type", "vars", "verbs", "type", "gc_destroyed") -var/list/pooledvariables = list() -//thanks to clusterfack @ /vg/station for these two procs -/datum/proc/createVariables() - pooledvariables[type] = new/list() - var/list/exclude = global.exclude + args - - for(var/key in vars) - if(key in exclude) - continue - if(islist(vars[key])) - pooledvariables[type][key] = list() - else - pooledvariables[type][key] = initial(vars[key]) - -/datum/proc/ResetVars() - if(!pooledvariables[type]) - createVariables(args) - - for(var/key in pooledvariables[type]) - if (islist(pooledvariables[type][key])) - vars[key] = list() - else - vars[key] = pooledvariables[type][key] - -/atom/movable/ResetVars() - ..() - loc = null - contents = initial(contents) //something is really wrong if this object still has stuff in it by this point - -/image/ResetVars() - ..() - loc = null diff --git a/code/game/say.dm b/code/game/say.dm index 5ac65c4b80e..172bfc0fd3c 100644 --- a/code/game/say.dm +++ b/code/game/say.dm @@ -170,7 +170,3 @@ var/list/freqtospan = list( /atom/movable/virtualspeaker/GetRadio() return radio - -/atom/movable/virtualspeaker/Destroy() - ..() - return QDEL_HINT_PUTINPOOL diff --git a/code/game/turfs/closed.dm b/code/game/turfs/closed.dm index 2a64b3a2cf6..a4202d2b812 100644 --- a/code/game/turfs/closed.dm +++ b/code/game/turfs/closed.dm @@ -40,7 +40,9 @@ icon_state = titlescreen /turf/closed/indestructible/riveted + icon = 'icons/turf/walls/riveted.dmi' icon_state = "riveted" + smooth = SMOOTH_TRUE /turf/closed/indestructible/New() ..() @@ -50,7 +52,6 @@ /turf/closed/indestructible/riveted/uranium icon = 'icons/turf/walls/uranium_wall.dmi' icon_state = "uranium" - smooth = SMOOTH_TRUE /turf/closed/indestructible/abductor icon_state = "alien1" @@ -115,4 +116,3 @@ desc = "A wall made out of a strange metal. The squares on it pulse in a predictable pattern." icon = 'icons/turf/walls/hierophant_wall.dmi' icon_state = "wall" - smooth = SMOOTH_TRUE diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index ea0431e0ed9..8d1a4131cdb 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -145,7 +145,7 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3"," else user << "You remove the floor tile." if(floor_tile) - PoolOrNew(floor_tile, src) + new floor_tile(src) make_plating() playsound(src, C.usesound, 80, 1) return 1 @@ -155,17 +155,17 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3"," if(current_size == STAGE_THREE) if(prob(30)) if(floor_tile) - PoolOrNew(floor_tile, src) + new floor_tile(src) make_plating() else if(current_size == STAGE_FOUR) if(prob(50)) if(floor_tile) - PoolOrNew(floor_tile, src) + new floor_tile(src) make_plating() else if(current_size >= STAGE_FIVE) if(floor_tile) if(prob(70)) - PoolOrNew(floor_tile, src) + new floor_tile(src) make_plating() else if(prob(50)) ReplaceWithLattice() @@ -179,9 +179,10 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3"," if(.) ChangeTurf(/turf/open/floor/clockwork) -/turf/open/floor/initialize() +/turf/open/floor/Initialize(mapload) ..() - MakeDirty() + if(mapload) + MakeDirty() /turf/open/floor/acid_melt() ChangeTurf(baseturf) diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm index e0bf32470fd..f20b98bae32 100644 --- a/code/game/turfs/simulated/floor/misc_floor.dm +++ b/code/game/turfs/simulated/floor/misc_floor.dm @@ -69,9 +69,9 @@ /turf/open/floor/clockwork/New() ..() - PoolOrNew(/obj/effect/overlay/temp/ratvar/floor, src) - PoolOrNew(/obj/effect/overlay/temp/ratvar/beam, src) - realappearence = PoolOrNew(/obj/effect/clockwork/overlay/floor, src) + new /obj/effect/overlay/temp/ratvar/floor(src) + new /obj/effect/overlay/temp/ratvar/beam(src) + realappearence = new /obj/effect/clockwork/overlay/floor(src) realappearence.linked = src change_construction_value(1) @@ -129,7 +129,7 @@ return ..() /turf/open/floor/clockwork/make_plating() - PoolOrNew(/obj/item/stack/tile/brass, src) + new /obj/item/stack/tile/brass(src) return ..() /turf/open/floor/clockwork/narsie_act() diff --git a/code/game/turfs/simulated/floor/reinf_floor.dm b/code/game/turfs/simulated/floor/reinf_floor.dm index 02bded48527..8ee346905d5 100644 --- a/code/game/turfs/simulated/floor/reinf_floor.dm +++ b/code/game/turfs/simulated/floor/reinf_floor.dm @@ -61,7 +61,7 @@ if(current_size >= STAGE_FIVE) if(floor_tile) if(prob(30)) - PoolOrNew(floor_tile, src) + new floor_tile(src) make_plating() else if(prob(30)) ReplaceWithLattice() @@ -108,8 +108,8 @@ /turf/open/floor/engine/cult/New() ..() - PoolOrNew(/obj/effect/overlay/temp/cult/turf/floor, src) - realappearence = PoolOrNew(/obj/effect/clockwork/overlay/floor/bloodcult, src) + new /obj/effect/overlay/temp/cult/turf/floor(src) + realappearence = new /obj/effect/clockwork/overlay/floor/bloodcult(src) realappearence.linked = src /turf/open/floor/engine/cult/Destroy() diff --git a/code/game/turfs/simulated/wall/misc_walls.dm b/code/game/turfs/simulated/wall/misc_walls.dm index 211ef629627..ce0b8a61074 100644 --- a/code/game/turfs/simulated/wall/misc_walls.dm +++ b/code/game/turfs/simulated/wall/misc_walls.dm @@ -9,7 +9,7 @@ girder_type = /obj/structure/girder/cult /turf/closed/wall/mineral/cult/New() - PoolOrNew(/obj/effect/overlay/temp/cult/turf, src) + new /obj/effect/overlay/temp/cult/turf(src) ..() /turf/closed/wall/mineral/cult/devastate_wall() @@ -31,11 +31,11 @@ desc = "A cold stone wall engraved with indecipherable symbols. Studying them causes your head to pound." /turf/closed/wall/mineral/cult/artificer/break_wall() - PoolOrNew(/obj/effect/overlay/temp/cult/turf, get_turf(src)) + new /obj/effect/overlay/temp/cult/turf(get_turf(src)) return null //excuse me we want no runed metal here /turf/closed/wall/mineral/cult/artificer/devastate_wall() - PoolOrNew(/obj/effect/overlay/temp/cult/turf, get_turf(src)) + new /obj/effect/overlay/temp/cult/turf(get_turf(src)) //Clockwork wall: Causes nearby tinkerer's caches to generate components. /turf/closed/wall/clockwork @@ -52,9 +52,9 @@ /turf/closed/wall/clockwork/New() ..() - PoolOrNew(/obj/effect/overlay/temp/ratvar/wall, src) - PoolOrNew(/obj/effect/overlay/temp/ratvar/beam, src) - realappearence = PoolOrNew(/obj/effect/clockwork/overlay/wall, src) + new /obj/effect/overlay/temp/ratvar/wall(src) + new /obj/effect/overlay/temp/ratvar/beam(src) + realappearence = new /obj/effect/clockwork/overlay/wall(src) realappearence.linked = src change_construction_value(5) diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm index c0632662c8d..9493b756be6 100644 --- a/code/modules/admin/fun_balloon.dm +++ b/code/modules/admin/fun_balloon.dm @@ -60,7 +60,7 @@ message_admins("[key_name_admin(ghost)] has taken control of ([key_name_admin(body)])") body.ghostize(0) body.key = ghost.key - PoolOrNew(/obj/effect/overlay/temp/gravpush, get_turf(body)) + new /obj/effect/overlay/temp/gravpush(get_turf(body)) /obj/effect/fun_balloon/sentience/emergency_shuttle name = "shuttle sentience fun balloon" @@ -79,7 +79,7 @@ /obj/effect/fun_balloon/scatter/effect() for(var/mob/living/M in range(effect_range, get_turf(src))) var/turf/T = find_safe_turf() - PoolOrNew(/obj/effect/overlay/temp/gravpush, get_turf(M)) + new /obj/effect/overlay/temp/gravpush(get_turf(M)) M.forceMove(T) M << "Pop!" diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index 34723b96619..aaead53f545 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -121,6 +121,7 @@ else text += ": [t]
" + CHECK_TICK usr << browse(text, "window=SDQL-result") diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index dba6f2dbb2e..9ddfe2380e6 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -177,11 +177,11 @@ /obj/item/device/assembly/flash/cyborg/attack(mob/living/M, mob/user) ..() - PoolOrNew(/obj/effect/overlay/temp/borgflash, get_turf(src)) + new /obj/effect/overlay/temp/borgflash(get_turf(src)) /obj/item/device/assembly/flash/cyborg/attack_self(mob/user) ..() - PoolOrNew(/obj/effect/overlay/temp/borgflash, get_turf(src)) + new /obj/effect/overlay/temp/borgflash(get_turf(src)) /obj/item/device/assembly/flash/cyborg/attackby(obj/item/weapon/W, mob/user, params) return diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm index aeca666fde9..e796d3cf64a 100644 --- a/code/modules/atmospherics/environmental/LINDA_fire.dm +++ b/code/modules/atmospherics/environmental/LINDA_fire.dm @@ -33,7 +33,7 @@ if(oxy < 0.5 || tox < 0.5) return 0 - active_hotspot = PoolOrNew(/obj/effect/hotspot, src) + active_hotspot = new /obj/effect/hotspot(src) active_hotspot.temperature = exposed_temperature active_hotspot.volume = exposed_volume @@ -155,8 +155,8 @@ T.active_hotspot = null DestroyTurf() loc = null - ..() - return QDEL_HINT_PUTINPOOL + . = ..() + /obj/effect/hotspot/proc/DestroyTurf() if(isturf(loc)) diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 0a50265fa8c..ac72db5df55 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -138,8 +138,6 @@ name = "[A.name] Air Alarm" update_icon() - if(ticker && ticker.current_state == 3)//if the game is running - initialize() /obj/machinery/airalarm/Destroy() if(SSradio) @@ -148,7 +146,8 @@ wires = null return ..() -/obj/machinery/airalarm/initialize() +/obj/machinery/airalarm/Initialize(mapload) + ..() set_frequency(frequency) /obj/machinery/airalarm/ui_status(mob/user) diff --git a/code/modules/atmospherics/machinery/other/meter.dm b/code/modules/atmospherics/machinery/other/meter.dm index 826a519bc89..d48d55dac51 100644 --- a/code/modules/atmospherics/machinery/other/meter.dm +++ b/code/modules/atmospherics/machinery/other/meter.dm @@ -27,8 +27,9 @@ src.target = null return ..() -/obj/machinery/meter/initialize() - if (!target) +/obj/machinery/meter/Initialize(mapload) + ..() + if (mapload && !target) src.target = locate(/obj/machinery/atmospherics/pipe) in loc /obj/machinery/meter/process_atmos() @@ -131,13 +132,8 @@ // TURF METER - REPORTS A TILE'S AIR CONTENTS // why are you yelling? +/obj/machinery/meter/turf -/obj/machinery/meter/turf/New() +/obj/machinery/meter/turf/Initialize() ..() src.target = loc - return 1 - - -/obj/machinery/meter/turf/initialize() - if (!target) - src.target = loc diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index 8f4006ff342..0c9a98397dc 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -27,18 +27,14 @@ var/obj/effect/ctf/flag_reset/reset var/reset_path = /obj/effect/ctf/flag_reset -/obj/item/weapon/twohanded/ctf/New() - ..() - if(!reset) - reset = new reset_path(get_turf(src)) - /obj/item/weapon/twohanded/ctf/Destroy() if(reset) qdel(reset) reset = null . = ..() -/obj/item/weapon/twohanded/ctf/initialize() +/obj/item/weapon/twohanded/ctf/Initialize() + ..() if(!reset) reset = new reset_path(get_turf(src)) @@ -503,6 +499,7 @@ resistance_flags = INDESTRUCTIBLE var/team = WHITE_TEAM time_between_triggers = 1 + anchored = TRUE alpha = 255 /obj/structure/trap/examine(mob/user) diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm index adfad411a9d..ff1e4539ae3 100644 --- a/code/modules/awaymissions/gateway.dm +++ b/code/modules/awaymissions/gateway.dm @@ -23,7 +23,8 @@ var/obj/machinery/gateway/centerstation/the_gateway = null return ..() -/obj/machinery/gateway/initialize() +/obj/machinery/gateway/Initialize() + ..() update_icon() switch(dir) if(SOUTH,SOUTHEAST,SOUTHWEST) @@ -52,7 +53,8 @@ var/obj/machinery/gateway/centerstation/the_gateway = null var/wait = 0 //this just grabs world.time at world start var/obj/machinery/gateway/centeraway/awaygate = null -/obj/machinery/gateway/centerstation/initialize() +/obj/machinery/gateway/centerstation/Initialize() + ..() update_icon() wait = world.time + config.gateway_delay //+ thirty minutes default awaygate = locate(/obj/machinery/gateway/centeraway) @@ -179,7 +181,8 @@ var/obj/machinery/gateway/centerstation/the_gateway = null var/obj/machinery/gateway/centeraway/stationgate = null -/obj/machinery/gateway/centeraway/initialize() +/obj/machinery/gateway/centeraway/Initialize() + ..() update_icon() stationgate = locate(/obj/machinery/gateway/centerstation) diff --git a/code/modules/awaymissions/maploader/reader.dm b/code/modules/awaymissions/maploader/reader.dm index 69b3add44e9..fab32c7ffdb 100644 --- a/code/modules/awaymissions/maploader/reader.dm +++ b/code/modules/awaymissions/maploader/reader.dm @@ -242,6 +242,8 @@ var/global/dmm_suite/preloader/_preloader = new while(!ispath(members[first_turf_index],/turf)) //find first /turf object in members first_turf_index++ + //turn off base new Initialization until the whole thing is loaded + SSobj.map_loader_begin() //instanciate the first /turf var/turf/T if(members[first_turf_index] != /turf/template_noop) @@ -259,7 +261,14 @@ var/global/dmm_suite/preloader/_preloader = new //finally instance all remainings objects/mobs for(index in 1 to first_turf_index-1) instance_atom(members[index],members_attributes[index],xcrd,ycrd,zcrd) - CHECK_TICK + + //custom CHECK_TICK here because we don't want things created while we're sleeping to not initialize + if(world.tick_usage > CURRENT_TICKLIMIT) + SSobj.map_loader_stop() + stoplag() + SSobj.map_loader_begin() + //Restore initialization to the previous value + SSobj.map_loader_stop() //////////////// //Helpers procs diff --git a/code/modules/awaymissions/mission_code/Cabin.dm b/code/modules/awaymissions/mission_code/Cabin.dm index 0b39818adbc..3a33c4ac992 100644 --- a/code/modules/awaymissions/mission_code/Cabin.dm +++ b/code/modules/awaymissions/mission_code/Cabin.dm @@ -7,7 +7,7 @@ density = 0 var/active = 1 -/obj/structure/firepit/initialize() +/obj/structure/firepit/Initialize() ..() toggleFirepit() @@ -18,7 +18,6 @@ else ..() - /obj/structure/firepit/attackby(obj/item/W,mob/living/user,params) if(!active) var/msg = W.ignition_effect(src, user) @@ -90,7 +89,7 @@ if(istype(T,/turf/open/floor/plating/asteroid/snow)) return ..(T) return 0 - + /datum/mapGeneratorModule/bottomlayer/snow spawnableTurfs = list(/turf/open/floor/plating/asteroid/snow/atmosphere = 100) diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index fc09409ff9e..a2abd6d2ace 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -31,7 +31,7 @@ extinguishes_left-- H.visible_message("[H]'s suit automatically extinguishes them!","Your suit automatically extinguishes you.") H.ExtinguishMob() - PoolOrNew(/obj/effect/particle_effect/water, get_turf(H)) + new /obj/effect/particle_effect/water(get_turf(H)) //I just want the light feature of the hardsuit helmet diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index 920f5769e28..46c657455fa 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -50,6 +50,11 @@ name = "captain's cloak" desc = "Worn by the commander of Space Station 13." icon_state = "capcloak" + +/obj/item/clothing/neck/cloak/hop + name = "head of personnel's cloak." + desc = "Worn by the Head of Personnel. It smells faintly of bureaucracy." + icon_state = "hopcloak" /obj/item/clothing/suit/hooded/cloak/drake name = "drake armour" diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index ec6b580ef53..11b4c83f114 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -618,7 +618,7 @@ extinguishes_left-- H.visible_message("[H]'s suit automatically extinguishes them!","Your suit automatically extinguishes you.") H.ExtinguishMob() - PoolOrNew(/obj/effect/particle_effect/water, get_turf(H)) + new /obj/effect/particle_effect/water(get_turf(H)) return 0 /obj/item/clothing/under/plasmaman/attackby(obj/item/E, mob/user, params) diff --git a/code/modules/events/wizard/imposter.dm b/code/modules/events/wizard/imposter.dm index b579ee834fb..fcb1100f1c7 100644 --- a/code/modules/events/wizard/imposter.dm +++ b/code/modules/events/wizard/imposter.dm @@ -16,7 +16,7 @@ return //Sad Trombone var/client/C = pick(candidates) - PoolOrNew(/obj/effect/particle_effect/smoke, W.loc) + new /obj/effect/particle_effect/smoke(W.loc) var/mob/living/carbon/human/I = new /mob/living/carbon/human(W.loc) W.dna.transfer_identity(I, transfer_SE=1) diff --git a/code/modules/food_and_drinks/food/snacks/meat.dm b/code/modules/food_and_drinks/food/snacks/meat.dm index 6b9f93f573c..8b8d48ec1dc 100644 --- a/code/modules/food_and_drinks/food/snacks/meat.dm +++ b/code/modules/food_and_drinks/food/snacks/meat.dm @@ -6,7 +6,7 @@ name = "meat" desc = "A slab of meat" icon_state = "meat" - dried_type = /obj/item/weapon/reagent_containers/food/snacks/sosjerky + dried_type = /obj/item/weapon/reagent_containers/food/snacks/sosjerky/healthy bitesize = 3 list_reagents = list("nutriment" = 3) cooked_type = /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain diff --git a/code/modules/food_and_drinks/food/snacks_vend.dm b/code/modules/food_and_drinks/food/snacks_vend.dm index fec5f1cdc0f..74ee9ba99b8 100644 --- a/code/modules/food_and_drinks/food/snacks_vend.dm +++ b/code/modules/food_and_drinks/food/snacks_vend.dm @@ -20,6 +20,12 @@ junkiness = 25 filling_color = "#8B0000" +/obj/item/weapon/reagent_containers/food/snacks/sosjerky/healthy + name = "homemade beef jerky" + desc = "Homemade beef jerky made from the finest space cows." + list_reagents = list("nutriment" = 3, "vitamin" = 1) + junkiness = 0 + /obj/item/weapon/reagent_containers/food/snacks/chips name = "chips" desc = "Commander Riker's What-The-Crisps" @@ -39,6 +45,12 @@ junkiness = 25 filling_color = "#8B0000" +/obj/item/weapon/reagent_containers/food/snacks/no_raisin/healthy + name = "homemade raisins" + desc = "homemade raisins, the best in all of spess." + list_reagents = list("nutriment" = 3, "vitamin" = 2) + junkiness = 0 + /obj/item/weapon/reagent_containers/food/snacks/spacetwinkie name = "space twinkie" icon_state = "space_twinkie" diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm index 10349f42d3f..3f513f0a7db 100644 --- a/code/modules/holodeck/computer.dm +++ b/code/modules/holodeck/computer.dm @@ -58,15 +58,15 @@ world.log << "Holodeck computer cannot be in a holodeck." world.log << "This would cause circular power dependency." qdel(src) // todo handle constructed computers - return + return //l-lewd... else linked.linked = src // todo detect multiple/constructed computers - - if(ticker && ticker.current_state >= GAME_STATE_PLAYING) - initialize() ..() -/obj/machinery/computer/holodeck/initialize() +/obj/machinery/computer/holodeck/Initialize(mapload) + ..() + if(!mapload && ticker.current_state < GAME_STATE_PLAYING) + return program_cache = list() emag_programs = list() for(var/typekey in subtypesof(program_type)) diff --git a/code/modules/hydroponics/grown/berries.dm b/code/modules/hydroponics/grown/berries.dm index c709e22bde8..6ab8a98ac6b 100644 --- a/code/modules/hydroponics/grown/berries.dm +++ b/code/modules/hydroponics/grown/berries.dm @@ -164,7 +164,7 @@ name = "bunch of grapes" desc = "Nutritious!" icon_state = "grapes" - dried_type = /obj/item/weapon/reagent_containers/food/snacks/no_raisin + dried_type = /obj/item/weapon/reagent_containers/food/snacks/no_raisin/healthy filling_color = "#FF1493" bitesize_mod = 2 diff --git a/code/modules/jobs/job_types/security.dm b/code/modules/jobs/job_types/security.dm index e1a02020d08..c3a02d2cf80 100644 --- a/code/modules/jobs/job_types/security.dm +++ b/code/modules/jobs/job_types/security.dm @@ -281,12 +281,11 @@ var/list/sec_departments = list("engineering", "supply", "medical", "science") implants = list(/obj/item/weapon/implant/mindshield) -/obj/item/device/radio/headset/headset_sec/department/New() +/obj/item/device/radio/headset/headset_sec/alt/department/New() wires = new(src) secure_radio_connections = new - - initialize() recalculateChannels() + ..() /obj/item/device/radio/headset/headset_sec/alt/department/engi keyslot = new /obj/item/device/encryptionkey/headset_sec diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 2fef96919e9..a9257551f05 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -25,7 +25,10 @@ var/list/allowed_books = list(/obj/item/weapon/book, /obj/item/weapon/spellbook, /obj/item/weapon/storage/book) //Things allowed in the bookcase -/obj/structure/bookcase/initialize() +/obj/structure/bookcase/Initialize(mapload) + ..() + if(!mapload) + return state = 2 icon_state = "book-0" anchored = 1 diff --git a/code/modules/library/random_books.dm b/code/modules/library/random_books.dm index ff3bd42b3ff..1d5a3c3df6a 100644 --- a/code/modules/library/random_books.dm +++ b/code/modules/library/random_books.dm @@ -20,12 +20,9 @@ var/book_count = 2 anchored = 1 state = 2 -/obj/structure/bookcase/random/New() - ..() - if(ticker && ticker.current_state >= GAME_STATE_PLAYING) - initialize() -/obj/structure/bookcase/random/initialize() +/obj/structure/bookcase/random/Initialize(mapload) + ..() if(!book_count || !isnum(book_count)) update_icon() return @@ -77,8 +74,9 @@ name = "bookcase (Reference)" category = "Reference" var/ref_book_prob = 20 -/obj/structure/bookcase/random/reference/initialize() + +/obj/structure/bookcase/random/reference/Initialize(mapload) + ..() while(book_count > 0 && prob(ref_book_prob)) book_count-- new /obj/item/weapon/book/manual/random(src) - ..() diff --git a/code/modules/mining/equipment.dm b/code/modules/mining/equipment.dm index d1ebf0d5509..dcfff7d841f 100644 --- a/code/modules/mining/equipment.dm +++ b/code/modules/mining/equipment.dm @@ -447,7 +447,7 @@ minerals += M if(minerals.len) for(var/turf/closed/mineral/M in minerals) - var/obj/effect/overlay/temp/mining_overlay/C = PoolOrNew(/obj/effect/overlay/temp/mining_overlay, M) + var/obj/effect/overlay/temp/mining_overlay/C = new /obj/effect/overlay/temp/mining_overlay(M) C.icon_state = M.scan_state /obj/effect/overlay/temp/mining_overlay @@ -542,7 +542,7 @@ var/target_turf = get_turf(target) if(ismineralturf(target_turf)) var/turf/closed/mineral/M = target_turf - PoolOrNew(/obj/effect/overlay/temp/kinetic_blast, M) + new /obj/effect/overlay/temp/kinetic_blast(M) M.gets_drilled(firer) ..() @@ -567,7 +567,7 @@ return if(proximity_flag && target == mark && isliving(target)) var/mob/living/L = target - PoolOrNew(/obj/effect/overlay/temp/kinetic_blast, get_turf(L)) + new /obj/effect/overlay/temp/kinetic_blast(get_turf(L)) mark = 0 if(L.mob_size >= MOB_SIZE_LARGE) L.underlays -= marked_image diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 0b0b257a1b3..4941ce6b0eb 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -141,10 +141,10 @@ if(linked.z == CENTCOMM) user << "[linked] is somewhere you can't go." - PoolOrNew(/obj/effect/particle_effect/smoke, user.loc) + new /obj/effect/particle_effect/smoke(user.loc) user.forceMove(get_turf(linked)) feedback_add_details("warp_cube","[src.type]") - PoolOrNew(/obj/effect/particle_effect/smoke, user.loc) + new /obj/effect/particle_effect/smoke(user.loc) /obj/item/device/warp_cube/red name = "red cube" @@ -656,7 +656,7 @@ if(!istype(T)) return if(!istype(T, turf_type)) - var/obj/effect/overlay/temp/lavastaff/L = PoolOrNew(/obj/effect/overlay/temp/lavastaff, T) + var/obj/effect/overlay/temp/lavastaff/L = new /obj/effect/overlay/temp/lavastaff(T) L.alpha = 0 animate(L, alpha = 255, time = create_delay) user.visible_message("[user] points [src] at [T]!") @@ -803,7 +803,7 @@ timer = world.time + cooldown_time if(isliving(target) && chaser_timer <= world.time) //living and chasers off cooldown? fire one! chaser_timer = world.time + chaser_cooldown - PoolOrNew(/obj/effect/overlay/temp/hierophant/chaser, list(get_turf(user), user, target, chaser_speed, friendly_fire_check)) + new /obj/effect/overlay/temp/hierophant/chaser(get_turf(user), user, target, chaser_speed, friendly_fire_check) add_logs(user, target, "fired a chaser at", src) else addtimer(CALLBACK(src, .proc/cardinal_blasts, T, user), 0) //otherwise, just do cardinal blast @@ -858,7 +858,7 @@ if(do_after(user, 50, target = user) && !beacon) var/turf/T = get_turf(user) playsound(T,'sound/magic/Blind.ogg', 200, 1, -4) - PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/teleport, list(T, user)) + new /obj/effect/overlay/temp/hierophant/telegraph/teleport(T, user) beacon = new/obj/effect/hierophant(T) user.update_action_buttons_icon() user.visible_message("[user] places a strange machine beneath [user.p_their()] feet!", \ @@ -885,8 +885,8 @@ timer = world.time + 50 addtimer(CALLBACK(src, .proc/prepare_icon_update), 0) beacon.icon_state = "hierophant_tele_on" - var/obj/effect/overlay/temp/hierophant/telegraph/edge/TE1 = PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/edge, user.loc) - var/obj/effect/overlay/temp/hierophant/telegraph/edge/TE2 = PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/edge, beacon.loc) + var/obj/effect/overlay/temp/hierophant/telegraph/edge/TE1 = new /obj/effect/overlay/temp/hierophant/telegraph/edge(user.loc) + var/obj/effect/overlay/temp/hierophant/telegraph/edge/TE2 = new /obj/effect/overlay/temp/hierophant/telegraph/edge(beacon.loc) if(do_after(user, 40, target = user) && user && beacon) var/turf/T = get_turf(beacon) var/turf/source = get_turf(user) @@ -898,8 +898,8 @@ addtimer(CALLBACK(src, .proc/prepare_icon_update), 0) beacon.icon_state = "hierophant_tele_off" return - PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph, list(T, user)) - PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph, list(source, user)) + new /obj/effect/overlay/temp/hierophant/telegraph(T, user) + new /obj/effect/overlay/temp/hierophant/telegraph(source, user) playsound(T,'sound/magic/Wand_Teleport.ogg', 200, 1) playsound(source,'sound/machines/AirlockOpen.ogg', 200, 1) if(!do_after(user, 3, target = user) || !user || !beacon) //no walking away shitlord @@ -920,13 +920,13 @@ beacon.icon_state = "hierophant_tele_off" return add_logs(user, beacon, "teleported self from ([source.x],[source.y],[source.z]) to") - PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/teleport, list(T, user)) - PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/teleport, list(source, user)) + new /obj/effect/overlay/temp/hierophant/telegraph/teleport(T, user) + new /obj/effect/overlay/temp/hierophant/telegraph/teleport(source, user) for(var/t in RANGE_TURFS(1, T)) - var/obj/effect/overlay/temp/hierophant/blast/B = PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(t, user, TRUE)) //blasts produced will not hurt allies + var/obj/effect/overlay/temp/hierophant/blast/B = new /obj/effect/overlay/temp/hierophant/blast(t, user, TRUE) //blasts produced will not hurt allies B.damage = 30 for(var/t in RANGE_TURFS(1, source)) - var/obj/effect/overlay/temp/hierophant/blast/B = PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(t, user, TRUE)) //but absolutely will hurt enemies + var/obj/effect/overlay/temp/hierophant/blast/B = new /obj/effect/overlay/temp/hierophant/blast(t, user, TRUE) //but absolutely will hurt enemies B.damage = 30 for(var/mob/living/L in range(1, source)) addtimer(CALLBACK(src, .proc/teleport_mob, source, L, T, user), 0) //regardless, take all mobs near us along @@ -971,10 +971,10 @@ /obj/item/weapon/hierophant_club/proc/cardinal_blasts(turf/T, mob/living/user) //fire cardinal cross blasts with a delay if(!T) return - PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/cardinal, list(T, user)) + new /obj/effect/overlay/temp/hierophant/telegraph/cardinal(T, user) playsound(T,'sound/effects/bin_close.ogg', 200, 1) sleep(2) - PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(T, user, friendly_fire_check)) + new /obj/effect/overlay/temp/hierophant/blast(T, user, friendly_fire_check) for(var/d in cardinal) addtimer(CALLBACK(src, .proc/blast_wall, T, d, user), 0) @@ -987,15 +987,15 @@ for(var/i in 1 to range) if(!J) return - PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(J, user, friendly_fire_check)) + new /obj/effect/overlay/temp/hierophant/blast(J, user, friendly_fire_check) previousturf = J J = get_step(previousturf, dir) /obj/item/weapon/hierophant_club/proc/aoe_burst(turf/T, mob/living/user) //make a 3x3 blast around a target if(!T) return - PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph, list(T, user)) + new /obj/effect/overlay/temp/hierophant/telegraph(T, user) playsound(T,'sound/effects/bin_close.ogg', 200, 1) sleep(2) for(var/t in RANGE_TURFS(1, T)) - PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(t, user, friendly_fire_check)) + new /obj/effect/overlay/temp/hierophant/blast(t, user, friendly_fire_check) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index d4c584964ec..1aa26092f02 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -285,7 +285,7 @@ message_admins("[key_name_admin(usr)] (?) (FLW) activated a bluespace capsule away from the mining level! (JMP)") log_admin("[key_name(usr)] activated a bluespace capsule away from the mining level at [T.x], [T.y], [T.z]") template.load(deploy_location, centered = TRUE) - PoolOrNew(/obj/effect/particle_effect/smoke, get_turf(src)) + new /obj/effect/particle_effect/smoke(get_turf(src)) qdel(src) diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index b8553642f12..e6d569c7f9c 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -19,9 +19,6 @@ /obj/effect/dummy/slaughter/singularity_act() return -/obj/effect/dummy/slaughter/Destroy() - ..() - return QDEL_HINT_PUTINPOOL /mob/living/proc/phaseout(obj/effect/decal/cleanable/B) @@ -53,7 +50,7 @@ playsound(get_turf(src), 'sound/magic/enter_blood.ogg', 100, 1, -1) // Extinguish, unbuckle, stop being pulled, set our location into the // dummy object - var/obj/effect/dummy/slaughter/holder = PoolOrNew(/obj/effect/dummy/slaughter,mobloc) + var/obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(mobloc) src.ExtinguishMob() // Keep a reference to whatever we're pulling, because forceMove() diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm index a7da9d3312d..f26894fd167 100644 --- a/code/modules/mob/living/brain/MMI.dm +++ b/code/modules/mob/living/brain/MMI.dm @@ -37,10 +37,8 @@ ..() radio = new(src) //Spawns a radio inside the MMI. radio.broadcasting = 0 //researching radio mmis turned the robofabs into radios because this didnt start as 0. - if(config) - laws.set_laws_config() -/obj/item/device/mmi/initialize() +/obj/item/device/mmi/Initialize() ..() laws.set_laws_config() diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm index 6211dc83493..9382dc392db 100644 --- a/code/modules/mob/living/carbon/alien/death.dm +++ b/code/modules/mob/living/carbon/alien/death.dm @@ -5,10 +5,10 @@ new /obj/effect/gibspawner/xenobodypartless(loc,viruses) /mob/living/carbon/alien/gib_animation() - PoolOrNew(/obj/effect/overlay/temp/gib_animation, list(loc, "gibbed-a")) + new /obj/effect/overlay/temp/gib_animation(loc, "gibbed-a") /mob/living/carbon/alien/spawn_dust() new /obj/effect/decal/remains/xeno(loc) /mob/living/carbon/alien/dust_animation() - PoolOrNew(/obj/effect/overlay/temp/dust_animation, list(loc, "dust-a")) + new /obj/effect/overlay/temp/dust_animation(loc, "dust-a") diff --git a/code/modules/mob/living/carbon/alien/larva/death.dm b/code/modules/mob/living/carbon/alien/larva/death.dm index 3ebd1c0141b..16d2f534e08 100644 --- a/code/modules/mob/living/carbon/alien/larva/death.dm +++ b/code/modules/mob/living/carbon/alien/larva/death.dm @@ -13,10 +13,10 @@ new /obj/effect/gibspawner/larvabodypartless(loc,viruses) /mob/living/carbon/alien/larva/gib_animation() - PoolOrNew(/obj/effect/overlay/temp/gib_animation, list(loc, "gibbed-l")) + new /obj/effect/overlay/temp/gib_animation(loc, "gibbed-l") /mob/living/carbon/alien/larva/spawn_dust() new /obj/effect/decal/remains/xeno(loc) /mob/living/carbon/alien/larva/dust_animation() - PoolOrNew(/obj/effect/overlay/temp/dust_animation, list(loc, "dust-l")) + new /obj/effect/overlay/temp/dust_animation(loc, "dust-l") diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index d12da18b721..1e50d17e408 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -1,8 +1,8 @@ /mob/living/carbon/human/gib_animation() - PoolOrNew(/obj/effect/overlay/temp/gib_animation, list(loc, "gibbed-h")) + new /obj/effect/overlay/temp/gib_animation(loc, "gibbed-h") /mob/living/carbon/human/dust_animation() - PoolOrNew(/obj/effect/overlay/temp/dust_animation, list(loc, "dust-h")) + new /obj/effect/overlay/temp/dust_animation(loc, "dust-h") /mob/living/carbon/human/spawn_gibs(with_bodyparts) if(with_bodyparts) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 5cc37923a72..c18f6721edc 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -166,3 +166,4 @@ dna.species.mutant_bodyparts |= "wings" update_body() +//Ayy lmao diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index 5083098c045..7b133bda11c 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -308,7 +308,7 @@ /datum/species/golem/bluespace/proc/reactive_teleport(mob/living/carbon/human/H) H.visible_message("[H] teleports!", "You destabilize and teleport!") - PoolOrNew(/obj/effect/particle_effect/sparks, get_turf(H)) + new /obj/effect/particle_effect/sparks(get_turf(H)) playsound(get_turf(H), "sparks", 50, 1) do_teleport(H, get_turf(H), 6, asoundin = 'sound/weapons/emitter2.ogg') last_teleport = world.time diff --git a/code/modules/mob/living/carbon/monkey/death.dm b/code/modules/mob/living/carbon/monkey/death.dm index 25e7face89d..a45209c5c21 100644 --- a/code/modules/mob/living/carbon/monkey/death.dm +++ b/code/modules/mob/living/carbon/monkey/death.dm @@ -1,5 +1,5 @@ /mob/living/carbon/monkey/gib_animation() - PoolOrNew(/obj/effect/overlay/temp/gib_animation, list(loc, "gibbed-m")) + new /obj/effect/overlay/temp/gib_animation(loc, "gibbed-m") /mob/living/carbon/monkey/dust_animation() - PoolOrNew(/obj/effect/overlay/temp/dust_animation, list(loc, "dust-m")) + new /obj/effect/overlay/temp/dust_animation(loc, "dust-m") diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 15af40fa62a..d0cc88e67fe 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -29,18 +29,15 @@ //initialize limbs create_bodyparts() - if(good_mutations.len) //genetic mutations have been set up. - initialize() //initialize monkey dna - create_internal_organs() ..() -/mob/living/carbon/monkey/initialize() +/mob/living/carbon/monkey/Initialize() + ..() create_dna(src) dna.initialize_dna(random_blood_type()) - /mob/living/carbon/monkey/create_internal_organs() internal_organs += new /obj/item/organ/appendix internal_organs += new /obj/item/organ/lungs diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index 3281cfdc1df..aec007e5c44 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -53,7 +53,7 @@ if(POWER_REQ_ALL) return !T || !A || ((!A.master.power_equip || isspaceturf(T)) && !is_type_in_list(loc, list(/obj/item, /obj/mecha))) if(POWER_REQ_CLOCKCULT) - for(var/obj/effect/clockwork/sigil/transmission/ST in range(src, 1)) + for(var/obj/effect/clockwork/sigil/transmission/ST in range(src, SIGIL_ACCESS_RANGE)) return FALSE return !T || !A || (!istype(T, /turf/open/floor/clockwork) && (!A.master.power_equip || isspaceturf(T)) && !is_type_in_list(loc, list(/obj/item, /obj/mecha))) diff --git a/code/modules/mob/living/silicon/pai/examine.dm b/code/modules/mob/living/silicon/pai/examine.dm index 79268c87673..e69de29bb2d 100644 --- a/code/modules/mob/living/silicon/pai/examine.dm +++ b/code/modules/mob/living/silicon/pai/examine.dm @@ -1,2 +0,0 @@ -/mob/living/silicon/pai/examine() //removed as it was pointless...moved to the pai-card instead. - return \ No newline at end of file diff --git a/code/modules/mob/living/silicon/pai/life.dm b/code/modules/mob/living/silicon/pai/life.dm index 7a8341b4955..e69de29bb2d 100644 --- a/code/modules/mob/living/silicon/pai/life.dm +++ b/code/modules/mob/living/silicon/pai/life.dm @@ -1,22 +0,0 @@ -/mob/living/silicon/pai/Life() - if(stat == DEAD) - return - if(cable) - if(get_dist(src, cable) > 1) - var/turf/T = get_turf(src.loc) - T.visible_message("[src.cable] rapidly retracts back into its spool.", "You hear a click and the sound of wire spooling rapidly.") - qdel(src.cable) - cable = null - silent = max(silent - 1, 0) - . = ..() - -/mob/living/silicon/pai/updatehealth() - if(status_flags & GODMODE) - return - health = maxHealth - getBruteLoss() - getFireLoss() - update_stat() - - -/mob/living/silicon/pai/process() - emitterhealth = Clamp((emitterhealth + emitterregen), -50, emittermaxhealth) - hit_slowdown = Clamp((hit_slowdown - 1), 0, 100) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 8c3d5ffaaac..db2d74ce4f8 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -78,10 +78,6 @@ . = ..() . += slowdown -/mob/living/silicon/pai/examine(mob/user) - ..() - user << "A personal AI in holochassis mode. Its master ID string seems to be [master]." - /mob/living/silicon/pai/Destroy() pai_list -= src ..() @@ -214,3 +210,30 @@ return TRUE slowdown = initial(slowdown) return TRUE + +/mob/living/silicon/pai/examine(mob/user) + ..() + user << "A personal AI in holochassis mode. Its master ID string seems to be [master]." + +/mob/living/silicon/pai/Life() + if(stat == DEAD) + return + if(cable) + if(get_dist(src, cable) > 1) + var/turf/T = get_turf(src.loc) + T.visible_message("[src.cable] rapidly retracts back into its spool.", "You hear a click and the sound of wire spooling rapidly.") + qdel(src.cable) + cable = null + silent = max(silent - 1, 0) + . = ..() + +/mob/living/silicon/pai/updatehealth() + if(status_flags & GODMODE) + return + health = maxHealth - getBruteLoss() - getFireLoss() + update_stat() + + +/mob/living/silicon/pai/process() + emitterhealth = Clamp((emitterhealth + emitterregen), -50, emittermaxhealth) + hit_slowdown = Clamp((hit_slowdown - 1), 0, 100) diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index 06369f02cbf..36e6a7f05a0 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -1,6 +1,6 @@ /mob/living/silicon/robot/gib_animation() - PoolOrNew(/obj/effect/overlay/temp/gib_animation, list(loc, "gibbed-r")) + new /obj/effect/overlay/temp/gib_animation(loc, "gibbed-r") /mob/living/silicon/robot/dust() if(mmi) @@ -11,7 +11,7 @@ new /obj/effect/decal/remains/robot(loc) /mob/living/silicon/robot/dust_animation() - PoolOrNew(/obj/effect/overlay/temp/dust_animation, list(loc, "dust-r")) + new /obj/effect/overlay/temp/dust_animation(loc, "dust-r") /mob/living/silicon/robot/death(gibbed) if(stat == DEAD) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 35fb6540517..20fce3d5dd4 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -191,9 +191,9 @@ /obj/item/weapon/robot_module/proc/do_transform_animation() var/mob/living/silicon/robot/R = loc - var/obj/effect/overlay/temp/decoy/fading/fivesecond/ANM = PoolOrNew(/obj/effect/overlay/temp/decoy/fading/fivesecond, list(R.loc, R)) + var/obj/effect/overlay/temp/decoy/fading/fivesecond/ANM = new /obj/effect/overlay/temp/decoy/fading/fivesecond(R.loc, R) ANM.layer = R.layer - 0.01 - PoolOrNew(/obj/effect/overlay/temp/small_smoke, R.loc) + new /obj/effect/overlay/temp/small_smoke(R.loc) if(R.hat) R.hat.forceMove(get_turf(R)) R.hat = null diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 27858feaf3c..7bffdf2ba78 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -302,7 +302,7 @@ /mob/living/simple_animal/bot/emp_act(severity) var/was_on = on stat |= EMPED - PoolOrNew(/obj/effect/overlay/temp/emp, loc) + new /obj/effect/overlay/temp/emp(loc) if(paicard) paicard.emp_act(severity) src.visible_message("[paicard] is flies out of [bot_name]!","You are forcefully ejected from [bot_name]!") diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index dbec44582ab..da33418b6f2 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -242,7 +242,7 @@ T.MakeSlippery(min_wet_time = 20, wet_time_to_add = 15) else visible_message("[src] whirs and bubbles violently, before releasing a plume of froth!") - PoolOrNew(/obj/effect/particle_effect/foam, loc) + new /obj/effect/particle_effect/foam(loc) else ..() diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm index 9f215684072..c156cf1fe38 100644 --- a/code/modules/mob/living/simple_animal/bot/construction.dm +++ b/code/modules/mob/living/simple_animal/bot/construction.dm @@ -430,6 +430,7 @@ var/mob/living/simple_animal/bot/secbot/S = new /mob/living/simple_animal/bot/secbot S.loc = get_turf(src) S.name = created_name + S.baton_type = I.type qdel(I) qdel(src) diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 26d48b5c033..eac1dcd042a 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -446,7 +446,7 @@ Auto Patrol[]"}, if(severity==2 && prob(70)) ..(severity-1) else - PoolOrNew(/obj/effect/overlay/temp/emp, loc) + new /obj/effect/overlay/temp/emp(loc) var/list/mob/living/carbon/targets = new for(var/mob/living/carbon/C in view(12,src)) if(C.stat==2) diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 8cf7faa3fab..fdb98d181c0 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -15,6 +15,7 @@ bot_type = SEC_BOT model = "Securitron" bot_core_type = /obj/machinery/bot_core/secbot + var/baton_type = /obj/item/weapon/melee/baton window_id = "autosec" window_name = "Automatic Security Unit v1.6" allow_pai = 0 @@ -380,7 +381,7 @@ Auto Patrol: []"}, Sa.add_overlay("hs_hole") Sa.created_name = name new /obj/item/device/assembly/prox_sensor(Tsec) - new /obj/item/weapon/melee/baton(Tsec) + new baton_type(Tsec) if(prob(50)) new /obj/item/bodypart/l_arm/robot(Tsec) diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index a277de98424..7b49e29ad1c 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -175,9 +175,9 @@ var/global/list/parasites = list() //all currently existing/living guardians if(istype(summoner.loc, /obj/effect)) Recall(TRUE) else - PoolOrNew(/obj/effect/overlay/temp/guardian/phase/out, loc) + new /obj/effect/overlay/temp/guardian/phase/out(loc) forceMove(summoner.loc) - PoolOrNew(/obj/effect/overlay/temp/guardian/phase, loc) + new /obj/effect/overlay/temp/guardian/phase(loc) /mob/living/simple_animal/hostile/guardian/canSuicide() return 0 @@ -320,7 +320,7 @@ var/global/list/parasites = list() //all currently existing/living guardians return FALSE if(loc == summoner) forceMove(summoner.loc) - PoolOrNew(/obj/effect/overlay/temp/guardian/phase, loc) + new /obj/effect/overlay/temp/guardian/phase(loc) cooldown = world.time + 10 return TRUE return FALSE @@ -328,7 +328,7 @@ var/global/list/parasites = list() //all currently existing/living guardians /mob/living/simple_animal/hostile/guardian/proc/Recall(forced) if(!summoner || loc == summoner || (cooldown > world.time && !forced)) return FALSE - PoolOrNew(/obj/effect/overlay/temp/guardian/phase/out, loc) + new /obj/effect/overlay/temp/guardian/phase/out(loc) forceMove(summoner) cooldown = world.time + 10 diff --git a/code/modules/mob/living/simple_animal/guardian/types/assassin.dm b/code/modules/mob/living/simple_animal/guardian/types/assassin.dm index 73e48a73c1b..b14609413eb 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/assassin.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/assassin.dm @@ -71,7 +71,7 @@ armour_penetration = 100 obj_damage = 0 environment_smash = 0 - PoolOrNew(/obj/effect/overlay/temp/guardian/phase/out, get_turf(src)) + new /obj/effect/overlay/temp/guardian/phase/out(get_turf(src)) alpha = 15 if(!forced) src << "You enter stealth, empowering your next attack." diff --git a/code/modules/mob/living/simple_animal/guardian/types/charger.dm b/code/modules/mob/living/simple_animal/guardian/types/charger.dm index 31636ed3c80..708a1e2ce6b 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/charger.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/charger.dm @@ -40,7 +40,7 @@ /mob/living/simple_animal/hostile/guardian/charger/Move() if(charging) - PoolOrNew(/obj/effect/overlay/temp/decoy/fading, list(loc,src)) + new /obj/effect/overlay/temp/decoy/fading(loc,src) . = ..() /mob/living/simple_animal/hostile/guardian/charger/snapback() diff --git a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm index a8fd15e8531..acad094cc24 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm @@ -22,14 +22,14 @@ if(isliving(target)) var/mob/living/M = target if(!M.anchored && M != summoner && !hasmatchingsummoner(M)) - PoolOrNew(/obj/effect/overlay/temp/guardian/phase/out, get_turf(M)) + new /obj/effect/overlay/temp/guardian/phase/out(get_turf(M)) do_teleport(M, M, 10) for(var/mob/living/L in range(1, M)) if(hasmatchingsummoner(L)) //if the summoner matches don't hurt them continue if(L != src && L != summoner) L.apply_damage(15, BRUTE) - PoolOrNew(/obj/effect/overlay/temp/explosion, get_turf(M)) + new /obj/effect/overlay/temp/explosion(get_turf(M)) /mob/living/simple_animal/hostile/guardian/bomb/AltClickOn(atom/movable/A) if(!istype(A)) @@ -76,7 +76,7 @@ var/turf/T = get_turf(src) stored_obj.forceMove(T) playsound(T,'sound/effects/Explosion2.ogg', 200, 1) - PoolOrNew(/obj/effect/overlay/temp/explosion, T) + new /obj/effect/overlay/temp/explosion(T) user.ex_act(2) qdel(src) else diff --git a/code/modules/mob/living/simple_animal/guardian/types/protector.dm b/code/modules/mob/living/simple_animal/guardian/types/protector.dm index 3613d0bdd74..5defc82199e 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/protector.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/protector.dm @@ -63,6 +63,6 @@ else summoner << "You moved out of range, and were pulled back! You can only move [range] meters from [real_name]!" summoner.visible_message("\The [summoner] jumps back to [summoner.p_their()] protector.") - PoolOrNew(/obj/effect/overlay/temp/guardian/phase/out, get_turf(summoner)) + new /obj/effect/overlay/temp/guardian/phase/out(get_turf(summoner)) summoner.forceMove(get_turf(src)) - PoolOrNew(/obj/effect/overlay/temp/guardian/phase, get_turf(summoner)) + new /obj/effect/overlay/temp/guardian/phase(get_turf(summoner)) diff --git a/code/modules/mob/living/simple_animal/guardian/types/support.dm b/code/modules/mob/living/simple_animal/guardian/types/support.dm index e59076cced3..a10680e73eb 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/support.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/support.dm @@ -35,7 +35,7 @@ C.adjustFireLoss(-5) C.adjustOxyLoss(-5) C.adjustToxLoss(-5) - var/obj/effect/overlay/temp/heal/H = PoolOrNew(/obj/effect/overlay/temp/heal, get_turf(C)) + var/obj/effect/overlay/temp/heal/H = new /obj/effect/overlay/temp/heal(get_turf(C)) if(namedatum) H.color = namedatum.colour if(C == summoner) @@ -137,11 +137,11 @@ src << "You need to hold still!" return - PoolOrNew(/obj/effect/overlay/temp/guardian/phase/out, T) + new /obj/effect/overlay/temp/guardian/phase/out(T) if(isliving(A)) var/mob/living/L = A L.flash_act() A.visible_message("[A] disappears in a flash of light!", \ "Your vision is obscured by a flash of light!") do_teleport(A, beacon, 0) - PoolOrNew(/obj/effect/overlay/temp/guardian/phase, get_turf(A)) + new /obj/effect/overlay/temp/guardian/phase(get_turf(A)) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm index 36aba02fdc1..7244788cd5e 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -129,7 +129,7 @@ Difficulty: Hard /mob/living/simple_animal/hostile/megafauna/bubblegum/Move() if(charging) - PoolOrNew(/obj/effect/overlay/temp/decoy/fading, list(loc,src)) + new /obj/effect/overlay/temp/decoy/fading(loc,src) DestroySurroundings() . = ..() if(!stat && .) @@ -150,12 +150,12 @@ Difficulty: Hard var/turf/T = get_turf(target) if(!T || T == loc) return - PoolOrNew(/obj/effect/overlay/temp/dragon_swoop, T) + new /obj/effect/overlay/temp/dragon_swoop(T) charging = 1 DestroySurroundings() walk(src, 0) setDir(get_dir(src, T)) - var/obj/effect/overlay/temp/decoy/D = PoolOrNew(/obj/effect/overlay/temp/decoy, list(loc,src)) + var/obj/effect/overlay/temp/decoy/D = new /obj/effect/overlay/temp/decoy(loc,src) animate(D, alpha = 0, color = "#FF0000", transform = matrix()*2, time = 5) sleep(5) throw_at(T, get_dist(src, T), 1, src, 0, callback = CALLBACK(src, .charge_end)) @@ -240,9 +240,9 @@ Difficulty: Hard /mob/living/simple_animal/hostile/megafauna/bubblegum/proc/bloodsmack(turf/T, handedness) if(handedness) - PoolOrNew(/obj/effect/overlay/temp/bubblegum_hands/rightsmack, T) + new /obj/effect/overlay/temp/bubblegum_hands/rightsmack(T) else - PoolOrNew(/obj/effect/overlay/temp/bubblegum_hands/leftsmack, T) + new /obj/effect/overlay/temp/bubblegum_hands/leftsmack(T) sleep(2.5) for(var/mob/living/L in T) if(!faction_check(L)) @@ -254,11 +254,11 @@ Difficulty: Hard /mob/living/simple_animal/hostile/megafauna/bubblegum/proc/bloodgrab(turf/T, handedness) if(handedness) - PoolOrNew(/obj/effect/overlay/temp/bubblegum_hands/rightpaw, T) - PoolOrNew(/obj/effect/overlay/temp/bubblegum_hands/rightthumb, T) + new /obj/effect/overlay/temp/bubblegum_hands/rightpaw(T) + new /obj/effect/overlay/temp/bubblegum_hands/rightthumb(T) else - PoolOrNew(/obj/effect/overlay/temp/bubblegum_hands/leftpaw, T) - PoolOrNew(/obj/effect/overlay/temp/bubblegum_hands/leftthumb, T) + new /obj/effect/overlay/temp/bubblegum_hands/leftpaw(T) + new /obj/effect/overlay/temp/bubblegum_hands/leftthumb(T) sleep(6) for(var/mob/living/L in T) if(!faction_check(L)) @@ -308,7 +308,7 @@ Difficulty: Hard if(!pools.len) return FALSE - var/obj/effect/overlay/temp/decoy/DA = PoolOrNew(/obj/effect/overlay/temp/decoy, list(loc,src)) + var/obj/effect/overlay/temp/decoy/DA = new /obj/effect/overlay/temp/decoy(loc,src) DA.color = "#FF0000" var/oldtransform = DA.transform DA.transform = matrix()*2 @@ -350,7 +350,7 @@ Difficulty: Hard new /obj/effect/decal/cleanable/blood/bubblegum(J) for(var/i in 1 to range) J = get_step(previousturf, targetdir) - PoolOrNew(/obj/effect/overlay/temp/dir_setting/bloodsplatter, list(previousturf, get_dir(previousturf, J))) + new /obj/effect/overlay/temp/dir_setting/bloodsplatter(previousturf, get_dir(previousturf, J)) playsound(previousturf,'sound/effects/splat.ogg', 100, 1, -1) if(!J || !previousturf.atmos_adjacent_turfs || !previousturf.atmos_adjacent_turfs[J]) break diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 97fd658ce29..b0d7639d224 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -112,7 +112,7 @@ Difficulty: Very Hard /mob/living/simple_animal/hostile/megafauna/colossus/bullet_act(obj/item/projectile/P) if(!stat) - var/obj/effect/overlay/temp/at_shield/AT = PoolOrNew(/obj/effect/overlay/temp/at_shield, src.loc, src) + var/obj/effect/overlay/temp/at_shield/AT = new /obj/effect/overlay/temp/at_shield(src.loc, src) var/random_x = rand(-32, 32) AT.pixel_x += random_x @@ -556,7 +556,7 @@ Difficulty: Very Hard if(..()) for(var/i in range(1, src)) if(isturf(i)) - PoolOrNew(/obj/effect/overlay/temp/cult/sparks, i) + new /obj/effect/overlay/temp/cult/sparks(i) continue if(ishuman(i)) var/mob/living/carbon/human/H = i @@ -644,7 +644,7 @@ Difficulty: Very Hard var/mob/living/L = target if(L.stat < DEAD) L.heal_overall_damage(heal_power, heal_power) - PoolOrNew(/obj/effect/overlay/temp/heal, list(get_turf(target), "#80F5FF")) + new /obj/effect/overlay/temp/heal(get_turf(target), "#80F5FF") /mob/living/simple_animal/hostile/lightgeist/ghostize() . = ..() @@ -667,7 +667,7 @@ Difficulty: Very Hard if(..()) var/list/L = list() var/turf/T = get_step(src, dir) - PoolOrNew(/obj/effect/overlay/temp/emp/pulse,T) + new /obj/effect/overlay/temp/emp/pulse(T) for(var/i in T) if(istype(i, /obj/item) && !is_type_in_typecache(i, banned_items_typecache)) var/obj/item/W = i diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index f882f2143a6..7cf9de1a960 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -128,7 +128,7 @@ Difficulty: Medium /obj/effect/overlay/temp/target/proc/fall() var/turf/T = get_turf(src) playsound(T,'sound/magic/Fireball.ogg', 200, 1) - PoolOrNew(/obj/effect/overlay/temp/fireball,T) + new /obj/effect/overlay/temp/fireball(T) sleep(12) explosion(T, 0, 0, 1, 0, 0, 0, 1) @@ -157,7 +157,7 @@ Difficulty: Medium visible_message("Fire rains from the sky!") for(var/turf/turf in range(12,get_turf(src))) if(prob(10)) - PoolOrNew(/obj/effect/overlay/temp/target, turf) + new /obj/effect/overlay/temp/target(turf) /mob/living/simple_animal/hostile/megafauna/dragon/proc/fire_walls() playsound(get_turf(src),'sound/magic/Fireball.ogg', 200, 1) @@ -174,7 +174,7 @@ Difficulty: Medium if(!range || (J != previousturf && (!previousturf.atmos_adjacent_turfs || !previousturf.atmos_adjacent_turfs[J]))) break range-- - PoolOrNew(/obj/effect/hotspot,J) + new /obj/effect/hotspot(J) J.hotspot_expose(700,50,1) for(var/mob/living/L in J.contents - hit_things) L.adjustFireLoss(20) @@ -218,7 +218,7 @@ Difficulty: Medium else tturf = get_turf(src) forceMove(tturf) - PoolOrNew(/obj/effect/overlay/temp/dragon_swoop, tturf) + new /obj/effect/overlay/temp/dragon_swoop(tturf) animate(src, pixel_x = initial(pixel_x), pixel_z = 0, time = 10) sleep(10) playsound(src.loc, 'sound/effects/meteorimpact.ogg', 200, 1) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm index 037400778c4..4c537c32fb3 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm @@ -151,7 +151,7 @@ Difficulty: Hard var/prevloc = loc . = ..() if(!stat && .) - var/obj/effect/overlay/temp/hierophant/squares/HS = PoolOrNew(/obj/effect/overlay/temp/hierophant/squares, prevloc) + var/obj/effect/overlay/temp/hierophant/squares/HS = new /obj/effect/overlay/temp/hierophant/squares(prevloc) HS.dir = dir playsound(loc, 'sound/mecha/mechmove04.ogg', 150, 1, -4) if(target) @@ -251,7 +251,7 @@ Difficulty: Hard pickedtarget = pick_n_take(targets) if(!istype(pickedtarget) || pickedtarget.stat == DEAD) pickedtarget = target - var/obj/effect/overlay/temp/hierophant/chaser/C = PoolOrNew(/obj/effect/overlay/temp/hierophant/chaser, list(loc, src, pickedtarget, chaser_speed, FALSE)) + var/obj/effect/overlay/temp/hierophant/chaser/C = new /obj/effect/overlay/temp/hierophant/chaser(loc, src, pickedtarget, chaser_speed, FALSE) C.moving = 3 C.moving_dir = pick_n_take(cardinal_copy) sleep(10) @@ -281,10 +281,10 @@ Difficulty: Hard else addtimer(CALLBACK(src, .proc/diagonal_blasts, target), 0) else if(chaser_cooldown < world.time) //if chasers are off cooldown, fire some! - var/obj/effect/overlay/temp/hierophant/chaser/C = PoolOrNew(/obj/effect/overlay/temp/hierophant/chaser, list(loc, src, target, chaser_speed, FALSE)) + var/obj/effect/overlay/temp/hierophant/chaser/C = new /obj/effect/overlay/temp/hierophant/chaser(loc, src, target, chaser_speed, FALSE) chaser_cooldown = world.time + initial(chaser_cooldown) if((prob(anger_modifier) || target.Adjacent(src)) && target != src) - var/obj/effect/overlay/temp/hierophant/chaser/OC = PoolOrNew(/obj/effect/overlay/temp/hierophant/chaser, list(loc, src, target, max(1.5, 5 - anger_modifier * 0.07), FALSE)) + var/obj/effect/overlay/temp/hierophant/chaser/OC = new /obj/effect/overlay/temp/hierophant/chaser(loc, src, target, max(1.5, 5 - anger_modifier * 0.07), FALSE) OC.moving = 4 OC.moving_dir = pick(cardinal - C.moving_dir) else //just release a burst of power @@ -294,10 +294,10 @@ Difficulty: Hard var/turf/T = get_turf(victim) if(!T) return - PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/diagonal, list(T, src)) + new /obj/effect/overlay/temp/hierophant/telegraph/diagonal(T, src) playsound(T,'sound/effects/bin_close.ogg', 200, 1) sleep(2) - PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(T, src, FALSE)) + new /obj/effect/overlay/temp/hierophant/blast(T, src, FALSE) for(var/d in diagonals) addtimer(CALLBACK(src, .proc/blast_wall, T, d), 0) @@ -305,10 +305,10 @@ Difficulty: Hard var/turf/T = get_turf(victim) if(!T) return - PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/cardinal, list(T, src)) + new /obj/effect/overlay/temp/hierophant/telegraph/cardinal(T, src) playsound(T,'sound/effects/bin_close.ogg', 200, 1) sleep(2) - PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(T, src, FALSE)) + new /obj/effect/overlay/temp/hierophant/blast(T, src, FALSE) for(var/d in cardinal) addtimer(CALLBACK(src, .proc/blast_wall, T, d), 0) @@ -316,10 +316,10 @@ Difficulty: Hard var/turf/T = get_turf(victim) if(!T) return - PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph, list(T, src)) + new /obj/effect/overlay/temp/hierophant/telegraph(T, src) playsound(T,'sound/effects/bin_close.ogg', 200, 1) sleep(2) - PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(T, src, FALSE)) + new /obj/effect/overlay/temp/hierophant/blast(T, src, FALSE) for(var/d in alldirs) addtimer(CALLBACK(src, .proc/blast_wall, T, d), 0) @@ -328,7 +328,7 @@ Difficulty: Hard var/turf/previousturf = T var/turf/J = get_step(previousturf, set_dir) for(var/i in 1 to range) - PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(J, src, FALSE)) + new /obj/effect/overlay/temp/hierophant/blast(J, src, FALSE) previousturf = J J = get_step(previousturf, set_dir) @@ -344,7 +344,7 @@ Difficulty: Hard for(var/t in RANGE_TURFS(11, T)) if(t && get_dist(t, T) == 11) new /obj/effect/overlay/temp/hierophant/wall(t) - PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(t, src, FALSE)) + new /obj/effect/overlay/temp/hierophant/blast(t, src, FALSE) if(get_dist(src, T) >= 11) //hey you're out of range I need to get closer to you! addtimer(CALLBACK(src, .proc/blink, T), 0) @@ -352,7 +352,7 @@ Difficulty: Hard var/turf/previousturf = T var/turf/J = get_step(previousturf, set_dir) for(var/i in 1 to 10) - var/obj/effect/overlay/temp/hierophant/squares/HS = PoolOrNew(/obj/effect/overlay/temp/hierophant/squares, J) + var/obj/effect/overlay/temp/hierophant/squares/HS = new /obj/effect/overlay/temp/hierophant/squares(J) HS.dir = set_dir previousturf = J J = get_step(previousturf, set_dir) @@ -363,19 +363,19 @@ Difficulty: Hard return var/turf/T = get_turf(victim) var/turf/source = get_turf(src) - PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph, list(T, src)) - PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph, list(source, src)) + new /obj/effect/overlay/temp/hierophant/telegraph(T, src) + new /obj/effect/overlay/temp/hierophant/telegraph(source, src) playsound(T,'sound/magic/Wand_Teleport.ogg', 200, 1) playsound(source,'sound/machines/AirlockOpen.ogg', 200, 1) blinking = TRUE sleep(2) //short delay before we start... - PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/teleport, list(T, src)) - PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/teleport, list(source, src)) + new /obj/effect/overlay/temp/hierophant/telegraph/teleport(T, src) + new /obj/effect/overlay/temp/hierophant/telegraph/teleport(source, src) for(var/t in RANGE_TURFS(1, T)) - var/obj/effect/overlay/temp/hierophant/blast/B = PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(t, src, FALSE)) + var/obj/effect/overlay/temp/hierophant/blast/B = new /obj/effect/overlay/temp/hierophant/blast(t, src, FALSE) B.damage = 30 for(var/t in RANGE_TURFS(1, source)) - var/obj/effect/overlay/temp/hierophant/blast/B = PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(t, src, FALSE)) + var/obj/effect/overlay/temp/hierophant/blast/B = new /obj/effect/overlay/temp/hierophant/blast(t, src, FALSE) B.damage = 30 animate(src, alpha = 0, time = 2, easing = EASE_OUT) //fade out sleep(1) @@ -397,11 +397,11 @@ Difficulty: Hard var/turf/T = get_turf(victim) if(!T) return - PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph, list(T, src)) + new /obj/effect/overlay/temp/hierophant/telegraph(T, src) playsound(T,'sound/effects/bin_close.ogg', 200, 1) sleep(2) for(var/t in RANGE_TURFS(1, T)) - PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(t, src, FALSE)) + new /obj/effect/overlay/temp/hierophant/blast(t, src, FALSE) /mob/living/simple_animal/hostile/megafauna/hierophant/proc/burst(turf/original) //release a wave of blasts playsound(original,'sound/machines/AirlockOpen.ogg', 200, 1) @@ -414,7 +414,7 @@ Difficulty: Hard if(dist > last_dist) last_dist = dist sleep(1 + min(burst_range - last_dist, 12) * 0.5) //gets faster as it gets further out - PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(T, src, FALSE)) + new /obj/effect/overlay/temp/hierophant/blast(T, src, FALSE) /mob/living/simple_animal/hostile/megafauna/hierophant/AltClickOn(atom/A) //player control handler(don't give this to a player holy fuck) if(!istype(A) || get_dist(A, src) <= 2) @@ -525,7 +525,7 @@ Difficulty: Hard targetturf = get_turf(target) /obj/effect/overlay/temp/hierophant/chaser/proc/make_blast() - PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(loc, caster, friendly_fire_check)) + new /obj/effect/overlay/temp/hierophant/blast(loc, caster, friendly_fire_check) /obj/effect/overlay/temp/hierophant/telegraph icon = 'icons/effects/96x96.dmi' @@ -632,7 +632,7 @@ Difficulty: Hard addtimer(CALLBACK(H, /obj/item/weapon/hierophant_club.proc/prepare_icon_update), 0) if(do_after(user, 50, target = src)) playsound(src,'sound/magic/Blind.ogg', 200, 1, -4) - PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/teleport, list(get_turf(src), user)) + new /obj/effect/overlay/temp/hierophant/telegraph/teleport(get_turf(src), user) user << "You collect [src], reattaching it to the club!" H.beacon = null user.update_action_buttons_icon() diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index c2faba04b33..d144a04b098 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -39,10 +39,11 @@ var/attempt_open = 0 // Pickup loot -/mob/living/simple_animal/hostile/mimic/crate/initialize() +/mob/living/simple_animal/hostile/mimic/crate/Initialize(mapload) ..() - for(var/obj/item/I in loc) - I.loc = src + if(mapload) //eat shit + for(var/obj/item/I in loc) + I.loc = src /mob/living/simple_animal/hostile/mimic/crate/DestroySurroundings() ..() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 8b2a29de530..6be8cd5723d 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -290,7 +290,7 @@ var/next_mob_id = 0 if (!tile) return 0 - PoolOrNew(/obj/effect/overlay/temp/point, list(A,invisibility)) + new /obj/effect/overlay/temp/point(A,invisibility) return 1 diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index d029187d6bd..a3f12c4d174 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -241,12 +241,12 @@ L.loc = locate(locx,locy,mobloc.z) var/limit = 2//For only two trailing shadows. for(var/turf/T in getline(mobloc, L.loc)) - PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja/shadow, list(T, L.dir)) + new /obj/effect/overlay/temp/dir_setting/ninja/shadow(T, L.dir) limit-- if(limit<=0) break else - PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja/shadow, list(mobloc, L.dir)) + new /obj/effect/overlay/temp/dir_setting/ninja/shadow(mobloc, L.dir) L.loc = get_step(L, direct) L.setDir(direct) if(3) //Incorporeal move, but blocked by holy-watered tiles and salt piles. diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index a66b1d653c8..5fe7e06b5ca 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -42,7 +42,7 @@ cut_overlays() invisibility = INVISIBILITY_MAXIMUM - PoolOrNew(/obj/effect/overlay/temp/monkeyify, get_turf(src)) + new /obj/effect/overlay/temp/monkeyify(get_turf(src)) sleep(22) var/mob/living/carbon/monkey/O = new /mob/living/carbon/monkey( loc ) @@ -192,7 +192,7 @@ icon = null cut_overlays() invisibility = INVISIBILITY_MAXIMUM - PoolOrNew(/obj/effect/overlay/temp/monkeyify/humanify, get_turf(src)) + new /obj/effect/overlay/temp/monkeyify/humanify(get_turf(src)) sleep(22) var/mob/living/carbon/human/O = new( loc ) for(var/obj/item/C in O.loc) diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm index a29a42f89a7..1ef1d02a533 100644 --- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm +++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm @@ -72,7 +72,7 @@ It is possible to destroy the net by the occupant or someone else. M.unEquip(W) playsound(M.loc, 'sound/effects/sparks4.ogg', 50, 1) - PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja/phase/out, list(get_turf(M), M.dir)) + new /obj/effect/overlay/temp/dir_setting/ninja/phase/out(get_turf(M), M.dir) visible_message("[M] suddenly vanishes!") M.forceMove(pick(holdingfacility)) //Throw mob in to the holding facility. @@ -86,7 +86,7 @@ It is possible to destroy the net by the occupant or someone else. spark_system.start() playsound(M.loc, 'sound/effects/phasein.ogg', 25, 1) playsound(M.loc, 'sound/effects/sparks2.ogg', 50, 1) - PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja/phase, list(get_turf(M), M.dir)) + new /obj/effect/overlay/temp/dir_setting/ninja/phase(get_turf(M), M.dir) qdel(src) else//And they are free. diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_teleporting.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_teleporting.dm index f60151d4794..de88dc03f6a 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_teleporting.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_teleporting.dm @@ -33,7 +33,7 @@ Contents: if(destination && isturf(mobloc))//So we don't teleport out of containers playsound(H.loc, "sparks", 50, 1) - PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja/phase/out, list(get_turf(H), H.dir)) + new /obj/effect/overlay/temp/dir_setting/ninja/phase/out(get_turf(H), H.dir) handle_teleport_grab(destination, H) H.loc = destination @@ -41,7 +41,7 @@ Contents: spark_system.start() playsound(H.loc, 'sound/effects/phasein.ogg', 25, 1) playsound(H.loc, "sparks", 50, 1) - PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja/phase, list(get_turf(H), H.dir)) + new /obj/effect/overlay/temp/dir_setting/ninja/phase(get_turf(H), H.dir) destination.phase_damage_creatures(20,H)//Paralyse and damage mobs and mechas on the turf s_coold = 1 @@ -62,7 +62,7 @@ Contents: var/turf/mobloc = get_turf(H.loc)//To make sure that certain things work properly below. if(!T.density && isturf(mobloc)) playsound(H.loc, "sparks", 50, 1) - PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja/phase/out, list(get_turf(H), H.dir)) + new /obj/effect/overlay/temp/dir_setting/ninja/phase/out(get_turf(H), H.dir) handle_teleport_grab(T, H) H.forceMove(T) @@ -70,7 +70,7 @@ Contents: spark_system.start() playsound(H.loc, 'sound/effects/phasein.ogg', 25, 1) playsound(H.loc, "sparks", 50, 1) - PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja/phase, list(get_turf(H), H.dir)) + new /obj/effect/overlay/temp/dir_setting/ninja/phase(get_turf(H), H.dir) T.phase_damage_creatures(20,H)//Paralyse and damage mobs and mechas on the turf s_coold = 1 diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index d1a0eb18d24..b5e14821164 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -31,10 +31,12 @@ icon_state = "tallcabinet" -/obj/structure/filingcabinet/initialize() - for(var/obj/item/I in loc) - if(istype(I, /obj/item/weapon/paper) || istype(I, /obj/item/weapon/folder) || istype(I, /obj/item/weapon/photo)) - I.loc = src +/obj/structure/filingcabinet/Initialize(mapload) + ..() + if(mapload) + for(var/obj/item/I in loc) + if(istype(I, /obj/item/weapon/paper) || istype(I, /obj/item/weapon/folder) || istype(I, /obj/item/weapon/photo)) + I.loc = src /obj/structure/filingcabinet/deconstruct(disassembled = TRUE) if(!(flags & NODECONSTRUCT)) diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index cb472a44a3a..79878af7a21 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -1,139 +1,142 @@ -/obj/item/weapon/paper_bin - name = "paper bin" - desc = "Contains all the paper you'll never need." - icon = 'icons/obj/bureaucracy.dmi' - icon_state = "paper_bin1" - item_state = "sheet-metal" - throwforce = 0 - w_class = WEIGHT_CLASS_NORMAL - throw_speed = 3 - throw_range = 7 - pressure_resistance = 8 - var/total_paper = 30 - var/list/papers = list() - var/obj/item/weapon/pen/bin_pen - -/obj/item/weapon/paper_bin/initialize() - var/obj/item/weapon/pen/P = locate(/obj/item/weapon/pen) in src.loc - if(P && !bin_pen) - P.loc = src - bin_pen = P - update_icon() - var/static/warned = FALSE - if(!warned) - warning("one or more paperbins ate a pen duing initialize()") - warned = TRUE - -/obj/item/weapon/paper_bin/fire_act(exposed_temperature, exposed_volume) - if(!total_paper) - return - ..() - -/obj/item/weapon/paper_bin/Destroy() - if(papers) - for(var/i in papers) - qdel(i) - papers = null - . = ..() - -/obj/item/weapon/paper_bin/fire_act(exposed_temperature, exposed_volume) - if(total_paper) - total_paper = 0 - update_icon() - ..() - -/obj/item/weapon/paper_bin/MouseDrop(atom/over_object) - var/mob/living/M = usr - if(!istype(M) || M.incapacitated() || !Adjacent(M)) - return - - if(over_object == M) - M.put_in_hands(src) - - else if(istype(over_object, /obj/screen/inventory/hand)) - var/obj/screen/inventory/hand/H = over_object - if(!remove_item_from_storage(M)) - if(!M.unEquip(src)) - return - M.put_in_hand(src, H.held_index) - - add_fingerprint(M) - - -/obj/item/weapon/paper_bin/attack_paw(mob/user) - return attack_hand(user) - - -/obj/item/weapon/paper_bin/attack_hand(mob/user) - if(user.lying) - return - user.changeNext_move(CLICK_CD_MELEE) - if(bin_pen) - var/obj/item/weapon/pen/P = bin_pen - P.loc = user.loc - user.put_in_hands(P) - user << "You take [P] out of \the [src]." - bin_pen = null - update_icon() - else if(total_paper >= 1) - total_paper-- - update_icon() - // If there's any custom paper on the stack, use that instead of creating a new paper. - var/obj/item/weapon/paper/P - if(papers.len > 0) - P = papers[papers.len] - papers.Remove(P) - else - P = new /obj/item/weapon/paper - if(SSevent.holidays && SSevent.holidays[APRIL_FOOLS]) - if(prob(30)) - P.info = "HONK HONK HONK HONK HONK HONK HONK
HOOOOOOOOOOOOOOOOOOOOOONK
APRIL FOOLS
" - P.rigged = 1 - P.updateinfolinks() - - P.loc = user.loc - user.put_in_hands(P) - user << "You take [P] out of \the [src]." - else - user << "[src] is empty!" - - add_fingerprint(user) - - -/obj/item/weapon/paper_bin/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/paper)) - var/obj/item/weapon/paper/P = I - if(!user.unEquip(P)) - return - P.loc = src - user << "You put [P] in [src]." - papers.Add(P) - total_paper++ - update_icon() - else if(istype(I, /obj/item/weapon/pen)) - var/obj/item/weapon/pen/P = I - if(!user.unEquip(P)) - return - P.loc = src - user << "You put [P] in [src]." - bin_pen = P - update_icon() - else - return ..() - -/obj/item/weapon/paper_bin/examine(mob/user) - ..() - if(total_paper) - user << "It contains " + (total_paper > 1 ? "[total_paper] papers" : " one paper")+"." - else - user << "It doesn't contain anything." - - -/obj/item/weapon/paper_bin/update_icon() - if(total_paper < 1) - icon_state = "paper_bin0" - else - icon_state = "paper_bin1" - cut_overlays() - if(bin_pen) - add_overlay(image(icon=bin_pen.icon,icon_state=bin_pen.icon_state)) +/obj/item/weapon/paper_bin + name = "paper bin" + desc = "Contains all the paper you'll never need." + icon = 'icons/obj/bureaucracy.dmi' + icon_state = "paper_bin1" + item_state = "sheet-metal" + throwforce = 0 + w_class = WEIGHT_CLASS_NORMAL + throw_speed = 3 + throw_range = 7 + pressure_resistance = 8 + var/total_paper = 30 + var/list/papers = list() + var/obj/item/weapon/pen/bin_pen + +/obj/item/weapon/paper_bin/Initialize(mapload) + ..() + if(!mapload) + return + var/obj/item/weapon/pen/P = locate(/obj/item/weapon/pen) in src.loc + if(P && !bin_pen) + P.loc = src + bin_pen = P + update_icon() + var/static/warned = FALSE + if(!warned) + warning("one or more paperbins ate a pen duing initialize()") + warned = TRUE + +/obj/item/weapon/paper_bin/fire_act(exposed_temperature, exposed_volume) + if(!total_paper) + return + ..() + +/obj/item/weapon/paper_bin/Destroy() + if(papers) + for(var/i in papers) + qdel(i) + papers = null + . = ..() + +/obj/item/weapon/paper_bin/fire_act(exposed_temperature, exposed_volume) + if(total_paper) + total_paper = 0 + update_icon() + ..() + +/obj/item/weapon/paper_bin/MouseDrop(atom/over_object) + var/mob/living/M = usr + if(!istype(M) || M.incapacitated() || !Adjacent(M)) + return + + if(over_object == M) + M.put_in_hands(src) + + else if(istype(over_object, /obj/screen/inventory/hand)) + var/obj/screen/inventory/hand/H = over_object + if(!remove_item_from_storage(M)) + if(!M.unEquip(src)) + return + M.put_in_hand(src, H.held_index) + + add_fingerprint(M) + + +/obj/item/weapon/paper_bin/attack_paw(mob/user) + return attack_hand(user) + + +/obj/item/weapon/paper_bin/attack_hand(mob/user) + if(user.lying) + return + user.changeNext_move(CLICK_CD_MELEE) + if(bin_pen) + var/obj/item/weapon/pen/P = bin_pen + P.loc = user.loc + user.put_in_hands(P) + user << "You take [P] out of \the [src]." + bin_pen = null + update_icon() + else if(total_paper >= 1) + total_paper-- + update_icon() + // If there's any custom paper on the stack, use that instead of creating a new paper. + var/obj/item/weapon/paper/P + if(papers.len > 0) + P = papers[papers.len] + papers.Remove(P) + else + P = new /obj/item/weapon/paper + if(SSevent.holidays && SSevent.holidays[APRIL_FOOLS]) + if(prob(30)) + P.info = "HONK HONK HONK HONK HONK HONK HONK
HOOOOOOOOOOOOOOOOOOOOOONK
APRIL FOOLS
" + P.rigged = 1 + P.updateinfolinks() + + P.loc = user.loc + user.put_in_hands(P) + user << "You take [P] out of \the [src]." + else + user << "[src] is empty!" + + add_fingerprint(user) + + +/obj/item/weapon/paper_bin/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/paper)) + var/obj/item/weapon/paper/P = I + if(!user.unEquip(P)) + return + P.loc = src + user << "You put [P] in [src]." + papers.Add(P) + total_paper++ + update_icon() + else if(istype(I, /obj/item/weapon/pen)) + var/obj/item/weapon/pen/P = I + if(!user.unEquip(P)) + return + P.loc = src + user << "You put [P] in [src]." + bin_pen = P + update_icon() + else + return ..() + +/obj/item/weapon/paper_bin/examine(mob/user) + ..() + if(total_paper) + user << "It contains " + (total_paper > 1 ? "[total_paper] papers" : " one paper")+"." + else + user << "It doesn't contain anything." + + +/obj/item/weapon/paper_bin/update_icon() + if(total_paper < 1) + icon_state = "paper_bin0" + else + icon_state = "paper_bin1" + cut_overlays() + if(bin_pen) + add_overlay(image(icon=bin_pen.icon,icon_state=bin_pen.icon_state)) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index c70277ce155..c5f5283c54a 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -169,7 +169,10 @@ terminal.setDir(tdir) terminal.master = src -/obj/machinery/power/apc/initialize() +/obj/machinery/power/apc/Initialize(mapload) + ..() + if(!mapload) + return has_electronics = 2 //installed and secured // is starting with a power cell installed, create it and set its charge level if(cell_type) diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index a27f6f9bf5e..f28fae197f1 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -27,7 +27,8 @@ var/lastcirc = "00" -/obj/machinery/power/generator/initialize() +/obj/machinery/power/generator/Initialize(mapload) + ..() var/obj/machinery/atmospherics/components/binary/circulator/circpath = /obj/machinery/atmospherics/components/binary/circulator cold_circ = locate(circpath) in get_step(src, cold_dir) hot_circ = locate(circpath) in get_step(src, hot_dir) diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index b8d9f7b182b..c0e0380d5aa 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -98,7 +98,8 @@ var/const/GRAV_NEEDS_WRENCH = 3 // Generator which spawns with the station. // -/obj/machinery/gravity_generator/main/station/initialize() +/obj/machinery/gravity_generator/main/station/Initialize() + ..() setup_parts() middle.add_overlay("activated") update_list() @@ -109,10 +110,6 @@ var/const/GRAV_NEEDS_WRENCH = 3 /obj/machinery/gravity_generator/main/station/admin use_power = 0 -/obj/machinery/gravity_generator/main/station/admin/New() - ..() - initialize() - // // Main Generator with the main code // diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index be4edcae7c4..a58a90f6f80 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -99,7 +99,7 @@ display round(lastgen) and plasmatank amount var/time_per_sheet = 260 var/current_heat = 0 -/obj/machinery/power/port_gen/pacman/initialize() +/obj/machinery/power/port_gen/pacman/Initialize() ..() if(anchored) connect_to_network() diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm index 6117d88035d..d4522c93b37 100644 --- a/code/modules/power/rtg.dm +++ b/code/modules/power/rtg.dm @@ -23,7 +23,6 @@ ..() var/obj/item/weapon/circuitboard/machine/B = new board_path(null) B.apply_default_parts(src) - connect_to_network() /obj/item/weapon/circuitboard/machine/rtg name = "RTG (Machine Board)" @@ -34,7 +33,7 @@ /obj/item/weapon/stock_parts/capacitor = 1, /obj/item/stack/sheet/mineral/uranium = 10) // We have no Pu-238, and this is the closest thing to it. -/obj/machinery/power/rtg/initialize() +/obj/machinery/power/rtg/Initialize() ..() connect_to_network() diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm index 3a19ec72b10..9c11a4289b9 100644 --- a/code/modules/power/singularity/narsie.dm +++ b/code/modules/power/singularity/narsie.dm @@ -41,7 +41,7 @@ /obj/singularity/narsie/large/attack_ghost(mob/dead/observer/user as mob) makeNewConstruct(/mob/living/simple_animal/hostile/construct/harvester, user, null, 0, loc_override = src.loc) - PoolOrNew(/obj/effect/particle_effect/smoke/sleeping, src.loc) + new /obj/effect/particle_effect/smoke/sleeping(src.loc) /obj/singularity/narsie/process() diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 068ec6bbe61..cad9ba44e16 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -281,11 +281,10 @@ var/obj/machinery/power/tracker/connected_tracker = null var/list/connected_panels = list() - -/obj/machinery/power/solar_control/New() +/obj/machinery/power/solar_control/Initialize() ..() - if(ticker) - initialize() + if(powernet) + set_panels(currentdir) connect_to_network() /obj/machinery/power/solar_control/Destroy() @@ -335,12 +334,6 @@ set_panels(currentdir) updateDialog() - -/obj/machinery/power/solar_control/initialize() - ..() - if(!powernet) return - set_panels(currentdir) - /obj/machinery/power/solar_control/update_icon() cut_overlays() if(stat & NOPOWER) diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index 387179ff766..cfea73c623f 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -85,7 +85,7 @@ /obj/item/stack/cable_coil = 5, /obj/item/weapon/stock_parts/manipulator = 6) -/obj/machinery/power/compressor/initialize() +/obj/machinery/power/compressor/Initialize() ..() locate_machinery() if(!turbine) @@ -201,7 +201,7 @@ /obj/item/stack/cable_coil = 5, /obj/item/weapon/stock_parts/capacitor = 6) -/obj/machinery/power/turbine/initialize() +/obj/machinery/power/turbine/Initialize() ..() locate_machinery() if(!compressor) @@ -337,10 +337,9 @@ -/obj/machinery/computer/turbine_computer/initialize() +/obj/machinery/computer/turbine_computer/Initialize() ..() - spawn(10) - locate_machinery() + locate_machinery() /obj/machinery/computer/turbine_computer/locate_machinery() compressor = locate(/obj/machinery/power/compressor) in range(5, src) diff --git a/code/modules/projectiles/firing.dm b/code/modules/projectiles/firing.dm index 4c44b27bb62..68c08054553 100644 --- a/code/modules/projectiles/firing.dm +++ b/code/modules/projectiles/firing.dm @@ -44,7 +44,7 @@ if(BB.firer) firing_dir = BB.firer.dir if(!BB.suppressed && firing_effect_type) - PoolOrNew(firing_effect_type, list(get_turf(src), firing_dir)) + new firing_effect_type(get_turf(src), firing_dir) var/direct_target if(targloc == curloc) diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index e4654ea5a8d..1d0dc72e1f6 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -193,10 +193,10 @@ if(ismineralturf(target_turf)) var/turf/closed/mineral/M = target_turf M.gets_drilled(firer) - var/obj/effect/overlay/temp/kinetic_blast/K = PoolOrNew(/obj/effect/overlay/temp/kinetic_blast, target_turf) + var/obj/effect/overlay/temp/kinetic_blast/K = new /obj/effect/overlay/temp/kinetic_blast(target_turf) K.color = color for(var/type in hit_overlays) - PoolOrNew(type, target_turf) + new type(target_turf) if(turf_aoe) for(var/T in RANGE_TURFS(1, target_turf) - target_turf) if(ismineralturf(T)) diff --git a/code/modules/projectiles/guns/medbeam.dm b/code/modules/projectiles/guns/medbeam.dm index fae78a8fa31..bcc9e3bd8a5 100644 --- a/code/modules/projectiles/guns/medbeam.dm +++ b/code/modules/projectiles/guns/medbeam.dm @@ -107,7 +107,7 @@ /obj/item/weapon/gun/medbeam/proc/on_beam_tick(var/mob/living/target) if(target.health != target.maxHealth) - PoolOrNew(/obj/effect/overlay/temp/heal, list(get_turf(target), "#80F5FF")) + new /obj/effect/overlay/temp/heal(get_turf(target), "#80F5FF") target.adjustBruteLoss(-4) target.adjustFireLoss(-4) return diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 51799b0d8d5..d3c220ac0cc 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -81,7 +81,7 @@ var/turf/target_loca = get_turf(target) if(!isliving(target)) if(impact_effect_type) - PoolOrNew(impact_effect_type, list(target_loca, target, src)) + new impact_effect_type(target_loca, target, src) return 0 var/mob/living/L = target if(blocked != 100) // not completely blocked @@ -90,13 +90,13 @@ if(starting) splatter_dir = get_dir(starting, target_loca) if(isalien(L)) - PoolOrNew(/obj/effect/overlay/temp/dir_setting/bloodsplatter/xenosplatter, list(target_loca, splatter_dir)) + new /obj/effect/overlay/temp/dir_setting/bloodsplatter/xenosplatter(target_loca, splatter_dir) else - PoolOrNew(/obj/effect/overlay/temp/dir_setting/bloodsplatter, list(target_loca, splatter_dir)) + new /obj/effect/overlay/temp/dir_setting/bloodsplatter(target_loca, splatter_dir) if(prob(33)) L.add_splatter_floor(target_loca) else if(impact_effect_type) - PoolOrNew(impact_effect_type, list(target_loca, target, src)) + new impact_effect_type(target_loca, target, src) var/organ_hit_text = "" var/limb_hit = L.check_limb_hit(def_zone)//to get the correct message info. diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 81c5bb9ddc1..b12784b4307 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -95,10 +95,6 @@ /obj/item/projectile/beam/emitter/singularity_pull() return //don't want the emitters to miss -/obj/item/projectile/beam/emitter/Destroy() - ..() - return QDEL_HINT_PUTINPOOL - /obj/item/projectile/beam/lasertag name = "laser tag beam" icon_state = "omnilaser" diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index d08b80cb164..76725fd2169 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -119,7 +119,7 @@ ..() var/turf/location = get_turf(src) if(location) - PoolOrNew(/obj/effect/hotspot, location) + new /obj/effect/hotspot(location) location.hotspot_expose(700, 50, 1) /obj/item/projectile/bullet/incendiary/shell/dragonsbreath @@ -326,7 +326,7 @@ ..() var/turf/location = get_turf(src) if(location) - PoolOrNew(/obj/effect/hotspot, location) + new /obj/effect/hotspot(location) location.hotspot_expose(700, 50, 1) /obj/item/projectile/bullet/saw/incen/on_hit(atom/target, blocked = 0) diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index e8830ec1a8f..7a68d887067 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -247,7 +247,7 @@ var/throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(A, src))) A.throw_at(throwtarget,power+1,1) for(var/turf/F in range(T,power)) - PoolOrNew(/obj/effect/overlay/temp/gravpush, F) + new /obj/effect/overlay/temp/gravpush(F) /obj/item/projectile/gravityattract name = "attraction bolt" @@ -274,7 +274,7 @@ continue A.throw_at(T, power+1, 1) for(var/turf/F in range(T,power)) - PoolOrNew(/obj/effect/overlay/temp/gravpush, F) + new /obj/effect/overlay/temp/gravpush(F) /obj/item/projectile/gravitychaos name = "gravitational blast" @@ -301,5 +301,5 @@ continue A.throw_at(get_edge_target_turf(A, pick(cardinal)), power+1, 1) for(var/turf/Z in range(T,power)) - PoolOrNew(/obj/effect/overlay/temp/gravpush, Z) + new /obj/effect/overlay/temp/gravpush(Z) diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index 1ce7341a3fd..f60c7f38a60 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -170,7 +170,7 @@ for(var/turf/open/T in range(1, B)) var/obj/structure/blob/C = locate() in T if(!(C && C.overmind && C.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) && prob(80)) - PoolOrNew(/obj/effect/hotspot, T) + new /obj/effect/hotspot(T) if(damage_flag == "fire") return 0 return ..() @@ -299,7 +299,7 @@ var/initial_volume = reac_volume reac_volume = ..() if(reac_volume >= 10) //if it's not a spore cloud, bad time incoming - var/obj/effect/overlay/temp/explosion/fast/E = PoolOrNew(/obj/effect/overlay/temp/explosion/fast, get_turf(M)) + var/obj/effect/overlay/temp/explosion/fast/E = new /obj/effect/overlay/temp/explosion/fast(get_turf(M)) E.alpha = 150 for(var/mob/living/L in orange(get_turf(M), 1)) if("blob" in L.faction) //no friendly fire diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm index 249825cde20..85f553fcc28 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm @@ -63,7 +63,7 @@ if(isfloorturf(F)) for(var/turf/turf in range(1,F)) if(!locate(/obj/effect/hotspot) in turf) - PoolOrNew(/obj/effect/hotspot, F) + new /obj/effect/hotspot(F) if(iswallturf(T)) var/turf/closed/wall/W = T if(prob(reac_volume)) @@ -75,7 +75,7 @@ M.adjust_fire_stacks(min(reac_volume/5, 10)) M.IgniteMob() if(!locate(/obj/effect/hotspot) in M.loc) - PoolOrNew(/obj/effect/hotspot, M.loc) + new /obj/effect/hotspot(M.loc) /datum/reagent/sorium name = "Sorium" diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index b75908a6f23..4f76d34b2a8 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -132,7 +132,7 @@ /datum/chemical_reaction/clf3/on_reaction(datum/reagents/holder, created_volume) var/turf/T = get_turf(holder.my_atom) for(var/turf/turf in range(1,T)) - PoolOrNew(/obj/effect/hotspot, turf) + new /obj/effect/hotspot(turf) holder.chem_temp = 1000 // hot as shit /datum/chemical_reaction/reagent_explosion/methsplosion @@ -147,7 +147,7 @@ /datum/chemical_reaction/reagent_explosion/methsplosion/on_reaction(datum/reagents/holder, created_volume) var/turf/T = get_turf(holder.my_atom) for(var/turf/turf in range(1,T)) - PoolOrNew(/obj/effect/hotspot, turf) + new /obj/effect/hotspot(turf) holder.chem_temp = 1000 // hot as shit ..() diff --git a/code/modules/recycling/disposal-structures.dm b/code/modules/recycling/disposal-structures.dm index 681b9b58610..f244a4d748c 100644 --- a/code/modules/recycling/disposal-structures.dm +++ b/code/modules/recycling/disposal-structures.dm @@ -254,7 +254,7 @@ if(isfloorturf(T)) //intact floor, pop the tile floorturf = T if(floorturf.floor_tile) - PoolOrNew(floorturf.floor_tile, T) + new floorturf.floor_tile(T) floorturf.make_plating() if(direction) // direction is specified diff --git a/code/modules/recycling/disposal-unit.dm b/code/modules/recycling/disposal-unit.dm index 03ae6756cb0..dd001cfa404 100644 --- a/code/modules/recycling/disposal-unit.dm +++ b/code/modules/recycling/disposal-unit.dm @@ -61,7 +61,10 @@ if(current_size >= STAGE_FIVE) deconstruct() -/obj/machinery/disposal/initialize() +/obj/machinery/disposal/Initialize(mapload) + ..() + if(!mapload) + return //this will get a copy of the air turf and take a SEND PRESSURE amount of air from it var/atom/L = loc var/datum/gas_mixture/env = new diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index c34beaa7515..2e33749f708 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -105,9 +105,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, files = new /datum/research(src) //Setup the research data holder. matching_designs = list() if(!id) - for(var/obj/machinery/r_n_d/server/centcom/S in machines) - S.initialize() - break + fix_noid_research_servers() /* Instead of calling this every tick, it is only being called when needed /obj/machinery/computer/rdconsole/process() diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index a20239a618e..237344366c4 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -18,7 +18,6 @@ ..() var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/rdserver(null) B.apply_default_parts(src) - initialize() //Agouri /obj/item/weapon/circuitboard/machine/rdserver name = "R&D Server (Machine Board)" @@ -38,7 +37,8 @@ tot_rating += SP.rating heat_gen /= max(1, tot_rating) -/obj/machinery/r_n_d/server/initialize() +/obj/machinery/r_n_d/server/Initialize(mapload) + ..() if(!files) files = new /datum/research(src) var/list/temp_list if(!id_with_upload.len) @@ -136,8 +136,11 @@ name = "Centcom Central R&D Database" server_id = -1 -/obj/machinery/r_n_d/server/centcom/initialize() +/obj/machinery/r_n_d/server/centcom/Initialize() ..() + fix_noid_research_servers() + +/proc/fix_noid_research_servers() var/list/no_id_servers = list() var/list/server_ids = list() for(var/obj/machinery/r_n_d/server/S in machines) diff --git a/code/modules/ruins/objects_and_mobs/ruin_mapping_aids.dm b/code/modules/ruins/objects_and_mobs/ruin_mapping_aids.dm index 0e7a6268ac0..4db811604d8 100644 --- a/code/modules/ruins/objects_and_mobs/ruin_mapping_aids.dm +++ b/code/modules/ruins/objects_and_mobs/ruin_mapping_aids.dm @@ -6,7 +6,7 @@ icon_state = "syndballoon" var/baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface -/obj/effect/baseturf_helper/initialize() +/obj/effect/baseturf_helper/Initialize() ..() var/area/thearea = get_area(src) for(var/turf/T in get_area_turfs(thearea, z)) diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 0f36e7e2b14..079c16671ec 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -426,8 +426,11 @@ var/edge_distance = 16 // Minimal distance from the map edge, setting this too low can result in shuttle landing on the edge and getting "sliced" -/obj/docking_port/stationary/random/initialize() +/obj/docking_port/stationary/random/Initialize(mapload) ..() + if(!mapload) + return + var/list/turfs = get_area_turfs(target_area) var/turf/T = pick(turfs) diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index ed185319fbf..4e43edea999 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -237,7 +237,10 @@ areaInstance = null . = ..() -/obj/docking_port/mobile/initialize() +/obj/docking_port/mobile/Initialize(mapload) + ..() + if(!mapload) + return var/area/A = get_area(src) if(istype(A, /area/shuttle)) areaInstance = A @@ -391,7 +394,7 @@ /obj/docking_port/mobile/proc/create_ripples(obj/docking_port/stationary/S1) var/list/turfs = ripple_area(S1) for(var/t in turfs) - ripples += PoolOrNew(/obj/effect/overlay/temp/ripple, t) + ripples += new /obj/effect/overlay/temp/ripple(t) /obj/docking_port/mobile/proc/remove_ripples() for(var/R in ripples) diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm index 42502536550..b235184ddd8 100644 --- a/code/modules/spells/spell_types/devil.dm +++ b/code/modules/spells/spell_types/devil.dm @@ -136,7 +136,7 @@ spawn_dust() src.visible_message("[src] disappears in a flashfire!") playsound(get_turf(src), 'sound/magic/enter_blood.ogg', 100, 1, -1) - var/obj/effect/dummy/slaughter/holder = PoolOrNew(/obj/effect/dummy/slaughter,loc) + var/obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(loc) src.ExtinguishMob() if(buckled) buckled.unbuckle_mob(src,force=1) diff --git a/code/modules/spells/spell_types/ethereal_jaunt.dm b/code/modules/spells/spell_types/ethereal_jaunt.dm index 52669807277..cbc87cd40ff 100644 --- a/code/modules/spells/spell_types/ethereal_jaunt.dm +++ b/code/modules/spells/spell_types/ethereal_jaunt.dm @@ -26,7 +26,7 @@ target.notransform = 1 var/turf/mobloc = get_turf(target) var/obj/effect/dummy/spell_jaunt/holder = new /obj/effect/dummy/spell_jaunt(mobloc) - PoolOrNew(jaunt_out_type, list(mobloc, holder.dir)) + new jaunt_out_type(mobloc, holder.dir) target.ExtinguishMob() if(target.buckled) target.buckled.unbuckle_mob(target,force=1) @@ -51,7 +51,7 @@ holder.reappearing = 1 playsound(get_turf(target), 'sound/magic/Ethereal_Exit.ogg', 50, 1, -1) sleep(25 - jaunt_in_time) - PoolOrNew(jaunt_in_type, list(mobloc, holder.dir)) + new jaunt_in_type(mobloc, holder.dir) sleep(jaunt_in_time) qdel(holder) if(!qdeleted(target)) diff --git a/code/modules/spells/spell_types/wizard.dm b/code/modules/spells/spell_types/wizard.dm index b5ca5146578..72eab294e43 100644 --- a/code/modules/spells/spell_types/wizard.dm +++ b/code/modules/spells/spell_types/wizard.dm @@ -338,7 +338,7 @@ M.adjustBruteLoss(5) M << "You're slammed into the floor by [user]!" else - PoolOrNew(sparkle_path, list(get_turf(AM), get_dir(user, AM))) //created sparkles will disappear on their own + new sparkle_path(get_turf(AM), get_dir(user, AM)) //created sparkles will disappear on their own if(isliving(AM)) var/mob/living/M = AM M.Weaken(stun_amt) diff --git a/code/modules/telesci/bscrystal.dm b/code/modules/telesci/bscrystal.dm index 937906101c9..2bd0ee63d95 100644 --- a/code/modules/telesci/bscrystal.dm +++ b/code/modules/telesci/bscrystal.dm @@ -23,7 +23,7 @@ /obj/item/weapon/ore/bluespace_crystal/attack_self(mob/user) user.visible_message("[user] crushes [src]!", "You crush [src]!") - PoolOrNew(/obj/effect/particle_effect/sparks, loc) + new /obj/effect/particle_effect/sparks(loc) playsound(src.loc, "sparks", 50, 1) blink_mob(user) user.unEquip(src) @@ -36,7 +36,7 @@ if(!..()) // not caught in mid-air visible_message("[src] fizzles and disappears upon impact!") var/turf/T = get_turf(hit_atom) - PoolOrNew(/obj/effect/particle_effect/sparks, T) + new /obj/effect/particle_effect/sparks(T) playsound(src.loc, "sparks", 50, 1) if(isliving(hit_atom)) blink_mob(hit_atom) diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index 2ed4638a322..9ddd993c7e6 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -31,8 +31,8 @@ var/obj/item/device/gps/inserted_gps /obj/machinery/computer/telescience/New() - ..() recalibrate() + ..() /obj/machinery/computer/telescience/Destroy() eject() @@ -45,10 +45,11 @@ ..() user << "There are [crystals.len ? crystals.len : "no"] bluespace crystal\s in the crystal slots." -/obj/machinery/computer/telescience/initialize() +/obj/machinery/computer/telescience/Initialize(mapload) ..() - for(var/i = 1; i <= starting_crystals; i++) - crystals += new /obj/item/weapon/ore/bluespace_crystal/artificial(null) // starting crystals + if(mapload) + for(var/i = 1; i <= starting_crystals; i++) + crystals += new /obj/item/weapon/ore/bluespace_crystal/artificial(null) // starting crystals /obj/machinery/computer/telescience/attack_paw(mob/user) user << "You are too primitive to use this computer!" diff --git a/code/modules/vehicles/speedbike.dm b/code/modules/vehicles/speedbike.dm index 4240d93e8c1..ecfcecbc2ed 100644 --- a/code/modules/vehicles/speedbike.dm +++ b/code/modules/vehicles/speedbike.dm @@ -29,7 +29,7 @@ /obj/vehicle/space/speedbike/Move(newloc,move_dir) if(has_buckled_mobs()) - PoolOrNew(/obj/effect/overlay/temp/speedbike_trail,list(loc,move_dir)) + new /obj/effect/overlay/temp/speedbike_trail(loc,move_dir) . = ..() /obj/vehicle/space/speedbike/red diff --git a/code/world.dm b/code/world.dm index f6886a5b8b0..fb041501fcc 100644 --- a/code/world.dm +++ b/code/world.dm @@ -248,7 +248,7 @@ var/last_irc_status = 0 if(ticker && ticker.round_end_sound) world << sound(ticker.round_end_sound) else - world << sound(pick('sound/AI/newroundsexy.ogg','sound/misc/apcdestroyed.ogg','sound/misc/bangindonk.ogg','sound/misc/leavingtg.ogg', 'sound/misc/its_only_game.ogg')) // random end sounds!! - LastyBatsy + world << sound(pick('sound/AI/newroundsexy.ogg','sound/misc/apcdestroyed.ogg','sound/misc/bangindonk.ogg','sound/misc/leavingtg.ogg', 'sound/misc/its_only_game.ogg', 'sound/misc/yeehaw.ogg')) // random end sounds!! - LastyBatsy sleep(soundwait) Master.Shutdown() //run SS shutdowns for(var/thing in clients) diff --git a/html/changelog.html b/html/changelog.html index fc47d9c7b9e..c6e1e07f263 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,66 @@ -->
+

22 January 2017

+

ChemicalRascal updated:

+
    +
  • Voice analyzers in "inclusive" mode (the default mode) are now case-insensitive.
  • +
+

Cyberboss updated:

+
    +
  • You can no longer meatspike bots and silicons
  • +
  • Secbots will now drop the baton type they were constructed with
  • +
+

Dannno updated:

+
    +
  • yeehaw.ogg is now a round end sound
  • +
+

Fox McCloud updated:

+
    +
  • drying meat slabs and grapes now yields a healthy non-junkfood snack
  • +
+

Hyena updated:

+
    +
  • Adds paint remover to the janitors closet
  • +
+

Joan updated:

+
    +
  • Clockwork Proselytizers can now convert lattices and catwalks. This has negative gameplay benefit, but looks cool.
  • +
  • Sigils of Transmission can be accessed by clockwork structures in a larger range.
  • +
  • You can see, when examining a clockwork structure, how many sigils are in range of it.
  • +
  • Clockwork constructs will toggle clockwork structures instead of attacking them.
  • +
+

Shadowlight213 updated:

+
    +
  • Zombies will now get their claws upon zombification
  • +
+

Thunder12345 updated:

+
    +
  • The indestructible walls on CentComm will now smooth.
  • +
+

Tofa01 updated:

+
    +
  • Changed alert message on early launch Authorization shuttle repeal message.
  • +
  • Makes the repeal message work and push a alert to the crew properly, also reports every Authorization repeal now.
  • +
  • Auto Capitalisation will now work with all types of MMI chat
  • +
+

Ultimate-Chimera updated:

+
    +
  • Adds a new costume crate to the cargo ordering console.
  • +
+

XDTM updated:

+
    +
  • Xenobiology consoles are now buildable from circuitboards in R&D. They'll be limited to the area they're built in plus any area with the same name.
  • +
  • Stock Exchange computers are now also buildable this way.
  • +
  • Androids now speak in a more robotic tone of voice.
  • +
  • Armblades now look a bit more bladelike.
  • +
+

coiax updated:

+
    +
  • The Delta emergency shuttle now travels towards the south, rather than the north. This changes nothing except which direction the stars rushing past the windows are moving.
  • +
  • Fixed dragging the spawn protection traps on CTF.
  • +
+

20 January 2017

CoreOverload updated:

    @@ -1082,52 +1142,6 @@
    • mining/labor shuttles are now radiation proof.
    - -

    20 November 2016

    -

    Basilman updated:

    -
      -
    • Added a new beard style, Broken Man.
    • -
    -

    Cobby updated:

    -
      -
    • Airlock security is only given to vault doors, centcomm, and Secure Tech [Secure Tech just requires a welder]
    • -
    -

    Incoming5643 updated:

    -
      -
    • The warp whistle has been added to the wizard's repertoire of spells and artifacts.
    • -
    • The drop table for summon magic has been expanded.
    • -
    -

    Joan updated:

    -
      -
    • Servant cyborgs no longer have emagged modules.
    • -
    • Servant cyborgs now have a limited selection of scripture and tools, which varies by cyborg type.
    • -
    -

    Kor updated:

    -
      -
    • Station goals will once again function in extended.
    • -
    -

    Swindly updated:

    -
      -
    • Added a nitrous oxide reagent. It can be created by heating 3 parts ammonia, 1 part nitrogen, and 2 parts oxygen to 525K. The process produces water as a by-product and will cause an explosion if too much heat is applied.
    • -
    - -

    19 November 2016

    -

    Crushtoe updated:

    -
      -
    • Added a shiny new icon for the reaper's scythe in-hand and normal sprite. It's 25% less gardener.
    • -
    -

    RandomMarine updated:

    -
      -
    • An instruction paper has been added to the morgue on most maps, because somehow it's needed.
    • -
    -

    Shadowlight213 updated:

    -
      -
    • Added the AI integrity restorer as a modular computer program
    • -
    • Added an AI intelliCard slot. Insert an Intellicard into it to be able to use the restoration program.
    • -
    • Fixes Alarm program detecting ruins
    • -
    • Fixes being unable to toggle the card reader module power
    • -
    • The downloader will now tell you if a program is incompatible with your hardware
    • -
GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index d8db8b9790b..bd0a17087f9 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -8869,3 +8869,46 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - bugfix: A few iconless items have been blacklisted from chameleon clothing. - tweak: Reviver implants now warn you when they're turning on or off, or when giving a heart attack due to EMP. +2017-01-22: + ChemicalRascal: + - tweak: Voice analyzers in "inclusive" mode (the default mode) are now case-insensitive. + Cyberboss: + - tweak: You can no longer meatspike bots and silicons + - bugfix: Secbots will now drop the baton type they were constructed with + Dannno: + - rscadd: yeehaw.ogg is now a round end sound + Fox McCloud: + - tweak: drying meat slabs and grapes now yields a healthy non-junkfood snack + Hyena: + - rscadd: Adds paint remover to the janitors closet + Joan: + - rscadd: Clockwork Proselytizers can now convert lattices and catwalks. This has + negative gameplay benefit, but looks cool. + - rscadd: Sigils of Transmission can be accessed by clockwork structures in a larger + range. + - tweak: You can see, when examining a clockwork structure, how many sigils are + in range of it. + - rscadd: Clockwork constructs will toggle clockwork structures instead of attacking + them. + Shadowlight213: + - bugfix: Zombies will now get their claws upon zombification + Thunder12345: + - rscadd: The indestructible walls on CentComm will now smooth. + Tofa01: + - tweak: Changed alert message on early launch Authorization shuttle repeal message. + - bugfix: Makes the repeal message work and push a alert to the crew properly, also + reports every Authorization repeal now. + - bugfix: Auto Capitalisation will now work with all types of MMI chat + Ultimate-Chimera: + - rscadd: Adds a new costume crate to the cargo ordering console. + XDTM: + - rscadd: Xenobiology consoles are now buildable from circuitboards in R&D. They'll + be limited to the area they're built in plus any area with the same name. + - rscadd: Stock Exchange computers are now also buildable this way. + - rscadd: Androids now speak in a more robotic tone of voice. + - imageadd: Armblades now look a bit more bladelike. + coiax: + - rscadd: The Delta emergency shuttle now travels towards the south, rather than + the north. This changes nothing except which direction the stars rushing past + the windows are moving. + - bugfix: Fixed dragging the spawn protection traps on CTF. diff --git a/html/changelogs/AutoChangeLog-pr-22515.yml b/html/changelogs/AutoChangeLog-pr-22515.yml deleted file mode 100644 index d30bce90488..00000000000 --- a/html/changelogs/AutoChangeLog-pr-22515.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "XDTM" -delete-after: True -changes: - - rscadd: "Xenobiology consoles are now buildable from circuitboards in R&D. They'll be limited to the area they're built in plus any area with the same name." - - rscadd: "Stock Exchange computers are now also buildable this way." diff --git a/html/changelogs/AutoChangeLog-pr-22555.yml b/html/changelogs/AutoChangeLog-pr-22555.yml deleted file mode 100644 index 06b5a420e98..00000000000 --- a/html/changelogs/AutoChangeLog-pr-22555.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ChemicalRascal" -delete-after: True -changes: - - tweak: "Voice analyzers in \"inclusive\" mode (the default mode) are now case-insensitive." diff --git a/html/changelogs/AutoChangeLog-pr-22619.yml b/html/changelogs/AutoChangeLog-pr-22619.yml deleted file mode 100644 index c85c7d743bb..00000000000 --- a/html/changelogs/AutoChangeLog-pr-22619.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Hyena" -delete-after: True -changes: - - rscadd: "Adds paint remover to the janitors closet" diff --git a/html/changelogs/AutoChangeLog-pr-22781.yml b/html/changelogs/AutoChangeLog-pr-22781.yml new file mode 100644 index 00000000000..ce06c6d2fa3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-22781.yml @@ -0,0 +1,4 @@ +author: "Joan" +delete-after: True +changes: + - rscadd: "Clockwork Slabs can now focus on a specific component type to produce." diff --git a/html/changelogs/AutoChangeLog-pr-22897.yml b/html/changelogs/AutoChangeLog-pr-22897.yml new file mode 100644 index 00000000000..6e9f167c39e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-22897.yml @@ -0,0 +1,5 @@ +author: "Joan" +delete-after: True +changes: + - experiment: "Redesigned: Volt Void now allows you to fire up to 5 energy rays at targets in view; each ray does 25 laser damage to non-Servants in the target tile. The ray will consume power to do up to double damage, however." + - wip: "Failing to fire a Volt Void ray will damage you, though you won't die from it unless you have access to a lot of power and are either low on health or fail all five rays in a row." diff --git a/html/changelogs/AutoChangeLog-pr-23132.yml b/html/changelogs/AutoChangeLog-pr-23132.yml deleted file mode 100644 index 33eaf323766..00000000000 --- a/html/changelogs/AutoChangeLog-pr-23132.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Tofa01" -delete-after: True -changes: - - tweak: "Changed alert message on early launch Authorization shuttle repeal message." - - bugfix: "Makes the repeal message work and push a alert to the crew properly, also reports every Authorization repeal now." diff --git a/html/changelogs/AutoChangeLog-pr-23146.yml b/html/changelogs/AutoChangeLog-pr-23146.yml deleted file mode 100644 index 865337638c8..00000000000 --- a/html/changelogs/AutoChangeLog-pr-23146.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Joan" -delete-after: True -changes: - - rscadd: "Clockwork Proselytizers can now convert lattices and catwalks. This has negative gameplay benefit, but looks cool." diff --git a/html/changelogs/AutoChangeLog-pr-23154.yml b/html/changelogs/AutoChangeLog-pr-23154.yml deleted file mode 100644 index 534719b345c..00000000000 --- a/html/changelogs/AutoChangeLog-pr-23154.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ultimate-Chimera" -delete-after: True -changes: - - rscadd: "Adds a new costume crate to the cargo ordering console." diff --git a/html/changelogs/AutoChangeLog-pr-23156.yml b/html/changelogs/AutoChangeLog-pr-23156.yml deleted file mode 100644 index 2b42100ae03..00000000000 --- a/html/changelogs/AutoChangeLog-pr-23156.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Tofa01" -delete-after: True -changes: - - bugfix: "Auto Capitalisation will now work with all types of MMI chat" diff --git a/html/changelogs/AutoChangeLog-pr-23164.yml b/html/changelogs/AutoChangeLog-pr-23164.yml deleted file mode 100644 index a7efada347c..00000000000 --- a/html/changelogs/AutoChangeLog-pr-23164.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Shadowlight213" -delete-after: True -changes: - - bugfix: "Zombies will now get their claws upon zombification" diff --git a/html/changelogs/AutoChangeLog-pr-23167.yml b/html/changelogs/AutoChangeLog-pr-23167.yml deleted file mode 100644 index 4ba96ff47db..00000000000 --- a/html/changelogs/AutoChangeLog-pr-23167.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "XDTM" -delete-after: True -changes: - - rscadd: "Androids now speak in a more robotic tone of voice." diff --git a/icons/effects/beam.dmi b/icons/effects/beam.dmi index b479defb1be..9d2b2665abd 100644 Binary files a/icons/effects/beam.dmi and b/icons/effects/beam.dmi differ diff --git a/icons/effects/clockwork.dmi b/icons/effects/clockwork.dmi deleted file mode 100644 index ae4461cb211..00000000000 Binary files a/icons/effects/clockwork.dmi and /dev/null differ diff --git a/icons/effects/clockwork_effects.dmi b/icons/effects/clockwork_effects.dmi index c60ecabc1dd..f315ad1fffe 100644 Binary files a/icons/effects/clockwork_effects.dmi and b/icons/effects/clockwork_effects.dmi differ diff --git a/icons/effects/volt_target.dmi b/icons/effects/volt_target.dmi new file mode 100644 index 00000000000..43ff78599c0 Binary files /dev/null and b/icons/effects/volt_target.dmi differ diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index 79baead32d6..a7f1ea71bf3 100644 Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index 767cf4b6fe3..1bb5de02672 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index 9736a4e7996..65ab25858a1 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/mob/neck.dmi b/icons/mob/neck.dmi index f214a237e00..32c23345e29 100644 Binary files a/icons/mob/neck.dmi and b/icons/mob/neck.dmi differ diff --git a/icons/obj/clockwork_objects.dmi b/icons/obj/clockwork_objects.dmi index 82b2abe7d0b..b305ad90a9a 100644 Binary files a/icons/obj/clockwork_objects.dmi and b/icons/obj/clockwork_objects.dmi differ diff --git a/icons/obj/clothing/cloaks.dmi b/icons/obj/clothing/cloaks.dmi index 3677fa15258..dd1ae7d7275 100644 Binary files a/icons/obj/clothing/cloaks.dmi and b/icons/obj/clothing/cloaks.dmi differ diff --git a/icons/turf/walls/riveted.dmi b/icons/turf/walls/riveted.dmi new file mode 100644 index 00000000000..90d1e96297b Binary files /dev/null and b/icons/turf/walls/riveted.dmi differ diff --git a/sound/misc/yeehaw.ogg b/sound/misc/yeehaw.ogg new file mode 100644 index 00000000000..ddc56fbfe9d Binary files /dev/null and b/sound/misc/yeehaw.ogg differ diff --git a/tgstation.dme b/tgstation.dme index b86d4f6f142..3385098013d 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -167,7 +167,6 @@ #include "code\controllers\subsystem\parallax.dm" #include "code\controllers\subsystem\persistence.dm" #include "code\controllers\subsystem\ping.dm" -#include "code\controllers\subsystem\pool.dm" #include "code\controllers\subsystem\radio.dm" #include "code\controllers\subsystem\religion.dm" #include "code\controllers\subsystem\server_maintenance.dm" @@ -901,7 +900,6 @@ #include "code\game\objects\structures\transit_tubes\transit_tube.dm" #include "code\game\objects\structures\transit_tubes\transit_tube_construction.dm" #include "code\game\objects\structures\transit_tubes\transit_tube_pod.dm" -#include "code\game\pooling\pool.dm" #include "code\game\turfs\closed.dm" #include "code\game\turfs\open.dm" #include "code\game\turfs\turf.dm" @@ -1521,8 +1519,6 @@ #include "code\modules\mob\living\silicon\ai\freelook\eye.dm" #include "code\modules\mob\living\silicon\ai\freelook\read_me.dm" #include "code\modules\mob\living\silicon\pai\death.dm" -#include "code\modules\mob\living\silicon\pai\examine.dm" -#include "code\modules\mob\living\silicon\pai\life.dm" #include "code\modules\mob\living\silicon\pai\pai.dm" #include "code\modules\mob\living\silicon\pai\pai_defense.dm" #include "code\modules\mob\living\silicon\pai\pai_shell.dm" diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index c36077d689d..2c3c0f3d1eb 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -1,16 +1,16 @@ -require=function t(e,n,a){function r(o,s){if(!n[o]){if(!e[o]){var p="function"==typeof require&&require;if(!s&&p)return p(o,!0);if(i)return i(o,!0);var u=Error("Cannot find module '"+o+"'");throw u.code="MODULE_NOT_FOUND",u}var c=n[o]={exports:{}};e[o][0].call(c.exports,function(t){var n=e[o][1][t];return r(n?n:t)},c,c.exports,t,e,n,a)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o2?u[2]:void 0,l=Math.min((void 0===c?o:r(c,o))-p,o-s),f=1;for(s>p&&p+l>s&&(f=-1,p+=l-1,s+=l-1);l-- >0;)p in n?n[s]=n[p]:delete n[s],s+=f,p+=f;return n}},{76:76,79:79,80:80}],6:[function(t,e,n){"use strict";var a=t(80),r=t(76),i=t(79);e.exports=[].fill||function(t){for(var e=a(this),n=i(e.length),o=arguments,s=o.length,p=r(s>1?o[1]:void 0,n),u=s>2?o[2]:void 0,c=void 0===u?n:r(u,n);c>p;)e[p++]=t;return e}},{76:76,79:79,80:80}],7:[function(t,e,n){var a=t(78),r=t(79),i=t(76);e.exports=function(t){return function(e,n,o){var s,p=a(e),u=r(p.length),c=i(o,u);if(t&&n!=n){for(;u>c;)if(s=p[c++],s!=s)return!0}else for(;u>c;c++)if((t||c in p)&&p[c]===n)return t||c;return!t&&-1}}},{76:76,78:78,79:79}],8:[function(t,e,n){var a=t(17),r=t(34),i=t(80),o=t(79),s=t(9);e.exports=function(t){var e=1==t,n=2==t,p=3==t,u=4==t,c=6==t,l=5==t||c;return function(f,d,h){for(var m,v,g=i(f),b=r(g),y=a(d,h,3),_=o(b.length),x=0,w=e?s(f,_):n?s(f,0):void 0;_>x;x++)if((l||x in b)&&(m=b[x],v=y(m,x,g),t))if(e)w[x]=v;else if(v)switch(t){case 3:return!0;case 5:return m;case 6:return x;case 2:w.push(m)}else if(u)return!1;return c?-1:p||u?u:w}}},{17:17,34:34,79:79,80:80,9:9}],9:[function(t,e,n){var a=t(38),r=t(36),i=t(83)("species");e.exports=function(t,e){var n;return r(t)&&(n=t.constructor,"function"!=typeof n||n!==Array&&!r(n.prototype)||(n=void 0),a(n)&&(n=n[i],null===n&&(n=void 0))),new(void 0===n?Array:n)(e)}},{36:36,38:38,83:83}],10:[function(t,e,n){var a=t(11),r=t(83)("toStringTag"),i="Arguments"==a(function(){return arguments}());e.exports=function(t){var e,n,o;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=(e=Object(t))[r])?n:i?a(e):"Object"==(o=a(e))&&"function"==typeof e.callee?"Arguments":o}},{11:11,83:83}],11:[function(t,e,n){var a={}.toString;e.exports=function(t){return a.call(t).slice(8,-1)}},{}],12:[function(t,e,n){"use strict";var a=t(46),r=t(31),i=t(60),o=t(17),s=t(69),p=t(18),u=t(27),c=t(42),l=t(44),f=t(82)("id"),d=t(30),h=t(38),m=t(65),v=t(19),g=Object.isExtensible||h,b=v?"_s":"size",y=0,_=function(t,e){if(!h(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!d(t,f)){if(!g(t))return"F";if(!e)return"E";r(t,f,++y)}return"O"+t[f]},x=function(t,e){var n,a=_(e);if("F"!==a)return t._i[a];for(n=t._f;n;n=n.n)if(n.k==e)return n};e.exports={getConstructor:function(t,e,n,r){var c=t(function(t,i){s(t,c,e),t._i=a.create(null),t._f=void 0,t._l=void 0,t[b]=0,void 0!=i&&u(i,n,t[r],t)});return i(c.prototype,{clear:function(){for(var t=this,e=t._i,n=t._f;n;n=n.n)n.r=!0,n.p&&(n.p=n.p.n=void 0),delete e[n.i];t._f=t._l=void 0,t[b]=0},"delete":function(t){var e=this,n=x(e,t);if(n){var a=n.n,r=n.p;delete e._i[n.i],n.r=!0,r&&(r.n=a),a&&(a.p=r),e._f==n&&(e._f=a),e._l==n&&(e._l=r),e[b]--}return!!n},forEach:function(t){for(var e,n=o(t,arguments.length>1?arguments[1]:void 0,3);e=e?e.n:this._f;)for(n(e.v,e.k,this);e&&e.r;)e=e.p},has:function(t){return!!x(this,t)}}),v&&a.setDesc(c.prototype,"size",{get:function(){return p(this[b])}}),c},def:function(t,e,n){var a,r,i=x(t,e);return i?i.v=n:(t._l=i={i:r=_(e,!0),k:e,v:n,p:a=t._l,n:void 0,r:!1},t._f||(t._f=i),a&&(a.n=i),t[b]++,"F"!==r&&(t._i[r]=i)),t},getEntry:x,setStrong:function(t,e,n){c(t,e,function(t,e){this._t=t,this._k=e,this._l=void 0},function(){for(var t=this,e=t._k,n=t._l;n&&n.r;)n=n.p;return t._t&&(t._l=n=n?n.n:t._t._f)?"keys"==e?l(0,n.k):"values"==e?l(0,n.v):l(0,[n.k,n.v]):(t._t=void 0,l(1))},n?"entries":"values",!n,!0),m(e)}}},{17:17,18:18,19:19,27:27,30:30,31:31,38:38,42:42,44:44,46:46,60:60,65:65,69:69,82:82}],13:[function(t,e,n){var a=t(27),r=t(10);e.exports=function(t){return function(){if(r(this)!=t)throw TypeError(t+"#toJSON isn't generic");var e=[];return a(this,!1,e.push,e),e}}},{10:10,27:27}],14:[function(t,e,n){"use strict";var a=t(31),r=t(60),i=t(4),o=t(38),s=t(69),p=t(27),u=t(8),c=t(30),l=t(82)("weak"),f=Object.isExtensible||o,d=u(5),h=u(6),m=0,v=function(t){return t._l||(t._l=new g)},g=function(){this.a=[]},b=function(t,e){return d(t.a,function(t){return t[0]===e})};g.prototype={get:function(t){var e=b(this,t);return e?e[1]:void 0},has:function(t){return!!b(this,t)},set:function(t,e){var n=b(this,t);n?n[1]=e:this.a.push([t,e])},"delete":function(t){var e=h(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},e.exports={getConstructor:function(t,e,n,a){var i=t(function(t,r){s(t,i,e),t._i=m++,t._l=void 0,void 0!=r&&p(r,n,t[a],t)});return r(i.prototype,{"delete":function(t){return o(t)?f(t)?c(t,l)&&c(t[l],this._i)&&delete t[l][this._i]:v(this)["delete"](t):!1},has:function(t){return o(t)?f(t)?c(t,l)&&c(t[l],this._i):v(this).has(t):!1}}),i},def:function(t,e,n){return f(i(e))?(c(e,l)||a(e,l,{}),e[l][t._i]=n):v(t).set(e,n),t},frozenStore:v,WEAK:l}},{27:27,30:30,31:31,38:38,4:4,60:60,69:69,8:8,82:82}],15:[function(t,e,n){"use strict";var a=t(29),r=t(22),i=t(61),o=t(60),s=t(27),p=t(69),u=t(38),c=t(24),l=t(43),f=t(66);e.exports=function(t,e,n,d,h,m){var v=a[t],g=v,b=h?"set":"add",y=g&&g.prototype,_={},x=function(t){var e=y[t];i(y,t,"delete"==t?function(t){return m&&!u(t)?!1:e.call(this,0===t?0:t)}:"has"==t?function(t){return m&&!u(t)?!1:e.call(this,0===t?0:t)}:"get"==t?function(t){return m&&!u(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof g&&(m||y.forEach&&!c(function(){(new g).entries().next()}))){var w,k=new g,P=k[b](m?{}:-0,1)!=k,C=c(function(){k.has(1)}),E=l(function(t){new g(t)});E||(g=e(function(e,n){p(e,g,t);var a=new v;return void 0!=n&&s(n,h,a[b],a),a}),g.prototype=y,y.constructor=g),m||k.forEach(function(t,e){w=1/e===-(1/0)}),(C||w)&&(x("delete"),x("has"),h&&x("get")),(w||P)&&x(b),m&&y.clear&&delete y.clear}else g=d.getConstructor(e,t,h,b),o(g.prototype,n);return f(g,t),_[t]=g,r(r.G+r.W+r.F*(g!=v),_),m||d.setStrong(g,t,h),g}},{22:22,24:24,27:27,29:29,38:38,43:43,60:60,61:61,66:66,69:69}],16:[function(t,e,n){var a=e.exports={version:"1.2.6"};"number"==typeof __e&&(__e=a)},{}],17:[function(t,e,n){var a=t(2);e.exports=function(t,e,n){if(a(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,a){return t.call(e,n,a)};case 3:return function(n,a,r){return t.call(e,n,a,r)}}return function(){return t.apply(e,arguments)}}},{2:2}],18:[function(t,e,n){e.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},{}],19:[function(t,e,n){e.exports=!t(24)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{24:24}],20:[function(t,e,n){var a=t(38),r=t(29).document,i=a(r)&&a(r.createElement);e.exports=function(t){return i?r.createElement(t):{}}},{29:29,38:38}],21:[function(t,e,n){var a=t(46);e.exports=function(t){var e=a.getKeys(t),n=a.getSymbols;if(n)for(var r,i=n(t),o=a.isEnum,s=0;i.length>s;)o.call(t,r=i[s++])&&e.push(r);return e}},{46:46}],22:[function(t,e,n){var a=t(29),r=t(16),i=t(31),o=t(61),s=t(17),p="prototype",u=function(t,e,n){var c,l,f,d,h=t&u.F,m=t&u.G,v=t&u.S,g=t&u.P,b=t&u.B,y=m?a:v?a[e]||(a[e]={}):(a[e]||{})[p],_=m?r:r[e]||(r[e]={}),x=_[p]||(_[p]={});m&&(n=e);for(c in n)l=!h&&y&&c in y,f=(l?y:n)[c],d=b&&l?s(f,a):g&&"function"==typeof f?s(Function.call,f):f,y&&!l&&o(y,c,f),_[c]!=f&&i(_,c,d),g&&x[c]!=f&&(x[c]=f)};a.core=r,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,e.exports=u},{16:16,17:17,29:29,31:31,61:61}],23:[function(t,e,n){var a=t(83)("match");e.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[a]=!1,!"/./"[t](e)}catch(r){}}return!0}},{83:83}],24:[function(t,e,n){e.exports=function(t){try{return!!t()}catch(e){return!0}}},{}],25:[function(t,e,n){"use strict";var a=t(31),r=t(61),i=t(24),o=t(18),s=t(83);e.exports=function(t,e,n){var p=s(t),u=""[t];i(function(){var e={};return e[p]=function(){return 7},7!=""[t](e)})&&(r(String.prototype,t,n(o,p,u)),a(RegExp.prototype,p,2==e?function(t,e){return u.call(t,this,e)}:function(t){return u.call(t,this)}))}},{18:18,24:24,31:31,61:61,83:83}],26:[function(t,e,n){"use strict";var a=t(4);e.exports=function(){var t=a(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},{4:4}],27:[function(t,e,n){var a=t(17),r=t(40),i=t(35),o=t(4),s=t(79),p=t(84);e.exports=function(t,e,n,u){var c,l,f,d=p(t),h=a(n,u,e?2:1),m=0;if("function"!=typeof d)throw TypeError(t+" is not iterable!");if(i(d))for(c=s(t.length);c>m;m++)e?h(o(l=t[m])[0],l[1]):h(t[m]);else for(f=d.call(t);!(l=f.next()).done;)r(f,h,l.value,e)}},{17:17,35:35,4:4,40:40,79:79,84:84}],28:[function(t,e,n){var a=t(78),r=t(46).getNames,i={}.toString,o="object"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return r(t)}catch(e){return o.slice()}};e.exports.get=function(t){return o&&"[object Window]"==i.call(t)?s(t):r(a(t))}},{46:46,78:78}],29:[function(t,e,n){var a=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=a)},{}],30:[function(t,e,n){var a={}.hasOwnProperty;e.exports=function(t,e){return a.call(t,e)}},{}],31:[function(t,e,n){var a=t(46),r=t(59);e.exports=t(19)?function(t,e,n){return a.setDesc(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},{19:19,46:46,59:59}],32:[function(t,e,n){e.exports=t(29).document&&document.documentElement},{29:29}],33:[function(t,e,n){e.exports=function(t,e,n){var a=void 0===n;switch(e.length){case 0:return a?t():t.call(n);case 1:return a?t(e[0]):t.call(n,e[0]);case 2:return a?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return a?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return a?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},{}],34:[function(t,e,n){var a=t(11);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==a(t)?t.split(""):Object(t)}},{11:11}],35:[function(t,e,n){var a=t(45),r=t(83)("iterator"),i=Array.prototype;e.exports=function(t){return void 0!==t&&(a.Array===t||i[r]===t)}},{45:45,83:83}],36:[function(t,e,n){var a=t(11);e.exports=Array.isArray||function(t){return"Array"==a(t)}},{11:11}],37:[function(t,e,n){var a=t(38),r=Math.floor;e.exports=function(t){return!a(t)&&isFinite(t)&&r(t)===t}},{38:38}],38:[function(t,e,n){e.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},{}],39:[function(t,e,n){var a=t(38),r=t(11),i=t(83)("match");e.exports=function(t){var e;return a(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==r(t))}},{11:11,38:38,83:83}],40:[function(t,e,n){var a=t(4);e.exports=function(t,e,n,r){try{return r?e(a(n)[0],n[1]):e(n)}catch(i){var o=t["return"];throw void 0!==o&&a(o.call(t)),i}}},{4:4}],41:[function(t,e,n){"use strict";var a=t(46),r=t(59),i=t(66),o={};t(31)(o,t(83)("iterator"),function(){return this}),e.exports=function(t,e,n){t.prototype=a.create(o,{next:r(1,n)}),i(t,e+" Iterator")}},{31:31,46:46,59:59,66:66,83:83}],42:[function(t,e,n){"use strict";var a=t(48),r=t(22),i=t(61),o=t(31),s=t(30),p=t(45),u=t(41),c=t(66),l=t(46).getProto,f=t(83)("iterator"),d=!([].keys&&"next"in[].keys()),h="@@iterator",m="keys",v="values",g=function(){return this};e.exports=function(t,e,n,b,y,_,x){u(n,e,b);var w,k,P=function(t){if(!d&&t in A)return A[t];switch(t){case m:return function(){return new n(this,t)};case v:return function(){return new n(this,t)}}return function(){return new n(this,t)}},C=e+" Iterator",E=y==v,S=!1,A=t.prototype,O=A[f]||A[h]||y&&A[y],T=O||P(y);if(O){var M=l(T.call(new t));c(M,C,!0),!a&&s(A,h)&&o(M,f,g),E&&O.name!==v&&(S=!0,T=function(){return O.call(this)})}if(a&&!x||!d&&!S&&A[f]||o(A,f,T),p[e]=T,p[C]=g,y)if(w={values:E?T:P(v),keys:_?T:P(m),entries:E?P("entries"):T},x)for(k in w)k in A||i(A,k,w[k]);else r(r.P+r.F*(d||S),e,w);return w}},{22:22,30:30,31:31,41:41,45:45,46:46,48:48,61:61,66:66,83:83}],43:[function(t,e,n){var a=t(83)("iterator"),r=!1;try{var i=[7][a]();i["return"]=function(){r=!0},Array.from(i,function(){throw 2})}catch(o){}e.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var i=[7],o=i[a]();o.next=function(){n=!0},i[a]=function(){return o},t(i)}catch(s){}return n}},{83:83}],44:[function(t,e,n){e.exports=function(t,e){return{value:e,done:!!t}}},{}],45:[function(t,e,n){e.exports={}},{}],46:[function(t,e,n){var a=Object;e.exports={create:a.create,getProto:a.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:a.getOwnPropertyDescriptor,setDesc:a.defineProperty,setDescs:a.defineProperties,getKeys:a.keys,getNames:a.getOwnPropertyNames,getSymbols:a.getOwnPropertySymbols,each:[].forEach}},{}],47:[function(t,e,n){var a=t(46),r=t(78);e.exports=function(t,e){for(var n,i=r(t),o=a.getKeys(i),s=o.length,p=0;s>p;)if(i[n=o[p++]]===e)return n}},{46:46,78:78}],48:[function(t,e,n){e.exports=!1},{}],49:[function(t,e,n){e.exports=Math.expm1||function(t){return 0==(t=+t)?t:t>-1e-6&&1e-6>t?t+t*t/2:Math.exp(t)-1}},{}],50:[function(t,e,n){e.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&1e-8>t?t-t*t/2:Math.log(1+t)}},{}],51:[function(t,e,n){e.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:0>t?-1:1}},{}],52:[function(t,e,n){var a,r,i,o=t(29),s=t(75).set,p=o.MutationObserver||o.WebKitMutationObserver,u=o.process,c=o.Promise,l="process"==t(11)(u),f=function(){var t,e,n;for(l&&(t=u.domain)&&(u.domain=null,t.exit());a;)e=a.domain,n=a.fn,e&&e.enter(),n(),e&&e.exit(),a=a.next;r=void 0,t&&t.enter()};if(l)i=function(){u.nextTick(f)};else if(p){var d=1,h=document.createTextNode("");new p(f).observe(h,{characterData:!0}),i=function(){h.data=d=-d}}else i=c&&c.resolve?function(){c.resolve().then(f)}:function(){s.call(o,f)};e.exports=function(t){var e={fn:t,next:void 0,domain:l&&u.domain};r&&(r.next=e),a||(a=e,i()),r=e}},{11:11,29:29,75:75}],53:[function(t,e,n){var a=t(46),r=t(80),i=t(34);e.exports=t(24)(function(){var t=Object.assign,e={},n={},a=Symbol(),r="abcdefghijklmnopqrst";return e[a]=7,r.split("").forEach(function(t){n[t]=t}),7!=t({},e)[a]||Object.keys(t({},n)).join("")!=r})?function(t,e){for(var n=r(t),o=arguments,s=o.length,p=1,u=a.getKeys,c=a.getSymbols,l=a.isEnum;s>p;)for(var f,d=i(o[p++]),h=c?u(d).concat(c(d)):u(d),m=h.length,v=0;m>v;)l.call(d,f=h[v++])&&(n[f]=d[f]);return n}:Object.assign},{24:24,34:34,46:46,80:80}],54:[function(t,e,n){var a=t(22),r=t(16),i=t(24);e.exports=function(t,e){var n=(r.Object||{})[t]||Object[t],o={};o[t]=e(n),a(a.S+a.F*i(function(){n(1)}),"Object",o)}},{16:16,22:22,24:24}],55:[function(t,e,n){var a=t(46),r=t(78),i=a.isEnum;e.exports=function(t){return function(e){for(var n,o=r(e),s=a.getKeys(o),p=s.length,u=0,c=[];p>u;)i.call(o,n=s[u++])&&c.push(t?[n,o[n]]:o[n]);return c}}},{46:46,78:78}],56:[function(t,e,n){var a=t(46),r=t(4),i=t(29).Reflect;e.exports=i&&i.ownKeys||function(t){var e=a.getNames(r(t)),n=a.getSymbols;return n?e.concat(n(t)):e}},{29:29,4:4,46:46}],57:[function(t,e,n){"use strict";var a=t(58),r=t(33),i=t(2);e.exports=function(){for(var t=i(this),e=arguments.length,n=Array(e),o=0,s=a._,p=!1;e>o;)(n[o]=arguments[o++])===s&&(p=!0);return function(){var a,i=this,o=arguments,u=o.length,c=0,l=0;if(!p&&!u)return r(t,n,i);if(a=n.slice(),p)for(;e>c;c++)a[c]===s&&(a[c]=o[l++]);for(;u>l;)a.push(o[l++]);return r(t,a,i)}}},{2:2,33:33,58:58}],58:[function(t,e,n){e.exports=t(29)},{29:29}],59:[function(t,e,n){e.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},{}],60:[function(t,e,n){var a=t(61);e.exports=function(t,e){for(var n in e)a(t,n,e[n]);return t}},{61:61}],61:[function(t,e,n){var a=t(29),r=t(31),i=t(82)("src"),o="toString",s=Function[o],p=(""+s).split(o);t(16).inspectSource=function(t){return s.call(t)},(e.exports=function(t,e,n,o){"function"==typeof n&&(n.hasOwnProperty(i)||r(n,i,t[e]?""+t[e]:p.join(e+"")),n.hasOwnProperty("name")||r(n,"name",e)),t===a?t[e]=n:(o||delete t[e],r(t,e,n))})(Function.prototype,o,function(){return"function"==typeof this&&this[i]||s.call(this)})},{16:16,29:29,31:31,82:82}],62:[function(t,e,n){e.exports=function(t,e){var n=e===Object(e)?function(t){return e[t]}:e;return function(e){return(e+"").replace(t,n)}}},{}],63:[function(t,e,n){e.exports=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e}},{}],64:[function(t,e,n){var a=t(46).getDesc,r=t(38),i=t(4),o=function(t,e){if(i(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,n,r){try{r=t(17)(Function.call,a(Object.prototype,"__proto__").set,2),r(e,[]),n=!(e instanceof Array)}catch(i){n=!0}return function(t,e){return o(t,e),n?t.__proto__=e:r(t,e),t}}({},!1):void 0),check:o}},{17:17,38:38,4:4,46:46}],65:[function(t,e,n){"use strict";var a=t(29),r=t(46),i=t(19),o=t(83)("species");e.exports=function(t){var e=a[t];i&&e&&!e[o]&&r.setDesc(e,o,{configurable:!0,get:function(){return this}})}},{19:19,29:29,46:46,83:83}],66:[function(t,e,n){var a=t(46).setDesc,r=t(30),i=t(83)("toStringTag");e.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,i)&&a(t,i,{configurable:!0,value:e})}},{30:30,46:46,83:83}],67:[function(t,e,n){var a=t(29),r="__core-js_shared__",i=a[r]||(a[r]={});e.exports=function(t){return i[t]||(i[t]={})}},{29:29}],68:[function(t,e,n){var a=t(4),r=t(2),i=t(83)("species");e.exports=function(t,e){var n,o=a(t).constructor;return void 0===o||void 0==(n=a(o)[i])?e:r(n)}},{2:2,4:4,83:83}],69:[function(t,e,n){e.exports=function(t,e,n){if(!(t instanceof e))throw TypeError(n+": use the 'new' operator!");return t}},{}],70:[function(t,e,n){var a=t(77),r=t(18);e.exports=function(t){return function(e,n){var i,o,s=r(e)+"",p=a(n),u=s.length;return 0>p||p>=u?t?"":void 0:(i=s.charCodeAt(p),55296>i||i>56319||p+1===u||(o=s.charCodeAt(p+1))<56320||o>57343?t?s.charAt(p):i:t?s.slice(p,p+2):(i-55296<<10)+(o-56320)+65536)}}},{18:18,77:77}],71:[function(t,e,n){var a=t(39),r=t(18);e.exports=function(t,e,n){if(a(e))throw TypeError("String#"+n+" doesn't accept regex!");return r(t)+""}},{18:18,39:39}],72:[function(t,e,n){var a=t(79),r=t(73),i=t(18);e.exports=function(t,e,n,o){var s=i(t)+"",p=s.length,u=void 0===n?" ":n+"",c=a(e);if(p>=c)return s;""==u&&(u=" ");var l=c-p,f=r.call(u,Math.ceil(l/u.length));return f.length>l&&(f=f.slice(0,l)),o?f+s:s+f}},{18:18,73:73,79:79}],73:[function(t,e,n){"use strict";var a=t(77),r=t(18);e.exports=function(t){var e=r(this)+"",n="",i=a(t);if(0>i||i==1/0)throw RangeError("Count can't be negative");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},{18:18,77:77}],74:[function(t,e,n){var a=t(22),r=t(18),i=t(24),o=" \n\x0B\f\r   ᠎              \u2028\u2029\ufeff",s="["+o+"]",p="​…",u=RegExp("^"+s+s+"*"),c=RegExp(s+s+"*$"),l=function(t,e){var n={};n[t]=e(f),a(a.P+a.F*i(function(){return!!o[t]()||p[t]()!=p}),"String",n)},f=l.trim=function(t,e){return t=r(t)+"",1&e&&(t=t.replace(u,"")),2&e&&(t=t.replace(c,"")),t};e.exports=l},{18:18,22:22,24:24}],75:[function(t,e,n){var a,r,i,o=t(17),s=t(33),p=t(32),u=t(20),c=t(29),l=c.process,f=c.setImmediate,d=c.clearImmediate,h=c.MessageChannel,m=0,v={},g="onreadystatechange",b=function(){var t=+this;if(v.hasOwnProperty(t)){var e=v[t];delete v[t],e()}},y=function(t){b.call(t.data)};f&&d||(f=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return v[++m]=function(){s("function"==typeof t?t:Function(t),e)},a(m),m},d=function(t){delete v[t]},"process"==t(11)(l)?a=function(t){l.nextTick(o(b,t,1))}:h?(r=new h,i=r.port2,r.port1.onmessage=y,a=o(i.postMessage,i,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts?(a=function(t){c.postMessage(t+"","*")},c.addEventListener("message",y,!1)):a=g in u("script")?function(t){p.appendChild(u("script"))[g]=function(){p.removeChild(this),b.call(t)}}:function(t){setTimeout(o(b,t,1),0)}),e.exports={set:f,clear:d}},{11:11,17:17,20:20,29:29,32:32,33:33}],76:[function(t,e,n){var a=t(77),r=Math.max,i=Math.min;e.exports=function(t,e){return t=a(t),0>t?r(t+e,0):i(t,e)}},{77:77}],77:[function(t,e,n){var a=Math.ceil,r=Math.floor;e.exports=function(t){return isNaN(t=+t)?0:(t>0?r:a)(t)}},{}],78:[function(t,e,n){var a=t(34),r=t(18);e.exports=function(t){return a(r(t))}},{18:18,34:34}],79:[function(t,e,n){var a=t(77),r=Math.min;e.exports=function(t){return t>0?r(a(t),9007199254740991):0}},{77:77}],80:[function(t,e,n){var a=t(18);e.exports=function(t){return Object(a(t))}},{18:18}],81:[function(t,e,n){var a=t(38);e.exports=function(t,e){if(!a(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!a(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},{38:38}],82:[function(t,e,n){var a=0,r=Math.random();e.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++a+r).toString(36))}},{}],83:[function(t,e,n){var a=t(67)("wks"),r=t(82),i=t(29).Symbol;e.exports=function(t){return a[t]||(a[t]=i&&i[t]||(i||r)("Symbol."+t))}},{29:29,67:67,82:82}],84:[function(t,e,n){var a=t(10),r=t(83)("iterator"),i=t(45);e.exports=t(16).getIteratorMethod=function(t){return void 0!=t?t[r]||t["@@iterator"]||i[a(t)]:void 0}},{10:10,16:16,45:45,83:83}],85:[function(t,e,n){"use strict";var a,r=t(46),i=t(22),o=t(19),s=t(59),p=t(32),u=t(20),c=t(30),l=t(11),f=t(33),d=t(24),h=t(4),m=t(2),v=t(38),g=t(80),b=t(78),y=t(77),_=t(76),x=t(79),w=t(34),k=t(82)("__proto__"),P=t(8),C=t(7)(!1),E=Object.prototype,S=Array.prototype,A=S.slice,O=S.join,T=r.setDesc,M=r.getDesc,R=r.setDescs,j={};o||(a=!d(function(){return 7!=T(u("div"),"a",{get:function(){return 7}}).a}),r.setDesc=function(t,e,n){if(a)try{return T(t,e,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(h(t)[e]=n.value),t},r.getDesc=function(t,e){if(a)try{return M(t,e)}catch(n){}return c(t,e)?s(!E.propertyIsEnumerable.call(t,e),t[e]):void 0},r.setDescs=R=function(t,e){h(t);for(var n,a=r.getKeys(e),i=a.length,o=0;i>o;)r.setDesc(t,n=a[o++],e[n]);return t}),i(i.S+i.F*!o,"Object",{getOwnPropertyDescriptor:r.getDesc,defineProperty:r.setDesc,defineProperties:R});var L="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(","),N=L.concat("length","prototype"),D=L.length,F=function(){var t,e=u("iframe"),n=D,a=">";for(e.style.display="none",p.appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write("