From d278ce4fb047d57eaf109f3c02c37bd9f0c52648 Mon Sep 17 00:00:00 2001 From: Cadyn <35672377+cadyn@users.noreply.github.com> Date: Sat, 6 Apr 2024 00:58:45 -0700 Subject: [PATCH] TG overlay subsystem (#8147) Co-authored-by: Raeschen --- code/__defines/overlay_ch.dm | 26 ++ code/controllers/subsystems/overlays.dm | 2 + code/controllers/subsystems/overlays_ch.dm | 244 ++++++++++++++++++ code/game/machinery/atmoalter/canister.dm | 20 +- code/game/machinery/cell_charger.dm | 9 +- code/game/machinery/floodlight.dm | 2 +- code/game/machinery/spaceheater.dm | 4 +- code/game/objects/items/devices/defib.dm | 2 +- code/game/objects/items/devices/paicard.dm | 2 +- code/game/objects/structures/reflectors_ch.dm | 4 +- code/game/turfs/simulated/dungeon/wall.dm | 3 +- code/modules/assembly/holder.dm | 2 +- code/modules/food/food/z_custom_food_vr.dm | 2 +- code/modules/food/kitchen/gibber.dm | 4 +- .../modules/hydroponics/beekeeping/beehive.dm | 2 +- code/modules/multiz/turf.dm | 1 + code/modules/paperwork/adminpaper.dm | 2 +- code/modules/paperwork/clipboard.dm | 2 +- code/modules/paperwork/folders.dm | 2 +- code/modules/paperwork/paper.dm | 4 +- code/modules/paperwork/paperplane.dm | 2 +- code/modules/pda/ai.dm | 2 +- code/modules/pda/pda.dm | 6 +- code/modules/pda/pda_subtypes.dm | 18 +- code/modules/pda/pda_vr.dm | 2 +- code/modules/persistence/noticeboard.dm | 11 +- code/modules/persistence/noticeboard_yw.dm | 53 ++-- code/modules/power/cell.dm | 2 +- code/modules/power/cells/power_cells.dm | 10 +- code/modules/shieldgen/energy_shield.dm | 4 +- icons/Testing/greyscale_error.dmi | Bin 0 -> 870 bytes maps/southern_cross/southern_cross-6.dmm | 4 +- .../game/objects/items/devices/flipper.dm | 4 +- .../species/station/protean/protean_rig.dm | 2 +- .../code/modules/power/cells/power_cells.dm | 12 +- vorestation.dme | 3 +- 36 files changed, 379 insertions(+), 95 deletions(-) create mode 100644 code/__defines/overlay_ch.dm create mode 100644 code/controllers/subsystems/overlays_ch.dm create mode 100644 icons/Testing/greyscale_error.dmi diff --git a/code/__defines/overlay_ch.dm b/code/__defines/overlay_ch.dm new file mode 100644 index 0000000000..bb85da7fc8 --- /dev/null +++ b/code/__defines/overlay_ch.dm @@ -0,0 +1,26 @@ +// A reasonable number of maximum overlays an object needs +// If you think you need more, rethink it +#define MAX_ATOM_OVERLAYS 100 + +/// Checks if an atom has reached the overlay limit, and make a loud error if it does. +#define VALIDATE_OVERLAY_LIMIT(changed_on) \ + if(length(changed_on.overlays) >= MAX_ATOM_OVERLAYS) { \ + var/text_lays = overlays2text(changed_on.overlays); \ + stack_trace("Too many overlays on [changed_on.type] - [length(changed_on.overlays)], refusing to update and cutting.\ + \n What follows is a printout of all existing overlays at the time of the overflow \n[text_lays]"); \ + changed_on.overlays.Cut(); \ + changed_on.add_overlay(mutable_appearance('icons/Testing/greyscale_error.dmi')); \ + } \ + +/* Unneeded for now as our alternate appearances don't seem to support overlays in the same way TGs do. +/// Performs any operations that ought to run after an appearance change +#define POST_OVERLAY_CHANGE(changed_on) \ + if(alternate_appearances) { \ + for(var/I in changed_on.alternate_appearances){\ + var/datum/atom_hud/alternate_appearance/AA = changed_on.alternate_appearances[I];\ + if(AA.transfer_overlays){\ + AA.copy_overlays(changed_on, TRUE);\ + }\ + } \ + } +*/ diff --git a/code/controllers/subsystems/overlays.dm b/code/controllers/subsystems/overlays.dm index bbd9a506ac..108866a302 100644 --- a/code/controllers/subsystems/overlays.dm +++ b/code/controllers/subsystems/overlays.dm @@ -1,3 +1,5 @@ +//CHOMPEDIT -- this file is no longer ticked. See overlays_ch.dm for the new overlays subsystem. + SUBSYSTEM_DEF(overlays) name = "Overlay" flags = SS_TICKER diff --git a/code/controllers/subsystems/overlays_ch.dm b/code/controllers/subsystems/overlays_ch.dm new file mode 100644 index 0000000000..e307c088ae --- /dev/null +++ b/code/controllers/subsystems/overlays_ch.dm @@ -0,0 +1,244 @@ +SUBSYSTEM_DEF(overlays) + name = "Overlay" + flags = SS_NO_FIRE|SS_NO_INIT + var/list/stats + +/datum/controller/subsystem/overlays/PreInit() + stats = list() + +/datum/controller/subsystem/overlays/Shutdown() + WRITE_LOG("[log_path]-overlay.log", render_stats(stats)) + +/datum/controller/subsystem/overlays/Recover() + stats = SSoverlays.stats + +/// Converts an overlay list into text for debug printing +/// Of note: overlays aren't actually mutable appearances, they're just appearances +/// Don't have access to that type tho, so this is the best you're gonna get +/proc/overlays2text(list/overlays) + var/list/unique_overlays = list() + // As anything because we're basically doing type coerrsion, rather then actually filtering for mutable apperances + for(var/mutable_appearance/overlay as anything in overlays) + var/key = "[overlay.icon]-[overlay.icon_state]-[overlay.dir]" + unique_overlays[key] += 1 + var/list/output_text = list() + for(var/key in unique_overlays) + output_text += "([key]) = [unique_overlays[key]]" + return output_text.Join("\n") + +/proc/iconstate2appearance(icon, iconstate) + var/static/image/stringbro = new() + stringbro.icon = icon + stringbro.icon_state = iconstate + return stringbro.appearance + +/proc/icon2appearance(icon) + var/static/image/iconbro = new() + iconbro.icon = icon + return iconbro.appearance + +/atom/proc/build_appearance_list(list/build_overlays) + if (!islist(build_overlays)) + build_overlays = list(build_overlays) + for (var/overlay in build_overlays) + if(!overlay) + build_overlays -= overlay + continue + if (istext(overlay)) + // This is too expensive to run normally but running it during CI is a good test + /*if (PERFORM_ALL_TESTS(focus_only/invalid_overlays)) + var/list/icon_states_available = icon_states(icon) + if(!(overlay in icon_states_available)) + var/icon_file = "[icon]" || "Unknown Generated Icon" + stack_trace("Invalid overlay: Icon object '[icon_file]' [REF(icon)] used in '[src]' [type] is missing icon state [overlay].") + continue*/ + + var/index = build_overlays.Find(overlay) + build_overlays[index] = iconstate2appearance(icon, overlay) + else if(isicon(overlay)) + var/index = build_overlays.Find(overlay) + build_overlays[index] = icon2appearance(overlay) + return build_overlays + +/atom/proc/cut_overlays() + STAT_START_STOPWATCH + overlays = null + //POST_OVERLAY_CHANGE(src) + STAT_STOP_STOPWATCH + STAT_LOG_ENTRY(SSoverlays.stats, type) + +/atom/proc/cut_overlay(list/remove_overlays) + if(!overlays) + return + STAT_START_STOPWATCH + if(islist(remove_overlays)) + remove_overlays = remove_overlays.Copy() //May not be ideal to copy, but as build_appearance_list modifies lists in place which breaks certain things + overlays -= build_appearance_list(remove_overlays) + //POST_OVERLAY_CHANGE(src) + STAT_STOP_STOPWATCH + STAT_LOG_ENTRY(SSoverlays.stats, type) + +/atom/proc/add_overlay(list/add_overlays) + if(!overlays) + return + STAT_START_STOPWATCH + if(islist(add_overlays)) + add_overlays = add_overlays.Copy() //May not be ideal to copy, but as build_appearance_list modifies lists in place which breaks certain things + overlays += build_appearance_list(add_overlays) //May not be ideal to copy, but as build_appearance_list modifies lists in place which breaks certain things + VALIDATE_OVERLAY_LIMIT(src) + //POST_OVERLAY_CHANGE(src) + STAT_STOP_STOPWATCH + STAT_LOG_ENTRY(SSoverlays.stats, type) + +/atom/proc/copy_overlays(atom/other, cut_old) //copys our_overlays from another atom + if(!other) + if(cut_old) + cut_overlays() + return + + STAT_START_STOPWATCH + var/list/cached_other = other.overlays.Copy() + if(cut_old) + if(cached_other) + overlays = cached_other + else + overlays = null + VALIDATE_OVERLAY_LIMIT(src) + //POST_OVERLAY_CHANGE(src) + STAT_STOP_STOPWATCH + STAT_LOG_ENTRY(SSoverlays.stats, type) + else if(cached_other) + overlays += cached_other + VALIDATE_OVERLAY_LIMIT(src) + //POST_OVERLAY_CHANGE(src) + STAT_STOP_STOPWATCH + STAT_LOG_ENTRY(SSoverlays.stats, type) + +//TODO: Better solution for these? +/image/proc/add_overlay(x) + overlays |= x + +/image/proc/cut_overlay(x) + overlays -= x + +/image/proc/cut_overlays(x) + overlays.Cut() + +/image/proc/copy_overlays(atom/other, cut_old) + if(!other) + if(cut_old) + cut_overlays() + return + + var/list/cached_other = other.overlays.Copy() + if(cached_other) + if(cut_old || !overlays.len) + overlays = cached_other + else + overlays |= cached_other + else if(cut_old) + cut_overlays() + +// Debug procs + +/atom + /// List of overlay "keys" (info about the appearance) -> mutable versions of static appearances + /// Drawn from the overlays list + var/list/realized_overlays + /// List of underlay "keys" (info about the appearance) -> mutable versions of static appearances + /// Drawn from the underlays list + var/list/realized_underlays + +/image + /// List of overlay "keys" (info about the appearance) -> mutable versions of static appearances + /// Drawn from the overlays list + var/list/realized_overlays + /// List of underlay "keys" (info about the appearance) -> mutable versions of static appearances + /// Drawn from the underlays list + var/list/realized_underlays + +/// Takes the atoms's existing overlays and underlays, and makes them mutable so they can be properly vv'd in the realized_overlays/underlays list +/atom/proc/realize_overlays() + realized_overlays = realize_appearance_queue(overlays) + realized_underlays = realize_appearance_queue(underlays) + +/// Takes the image's existing overlays, and makes them mutable so they can be properly vv'd in the realized_overlays list +/image/proc/realize_overlays() + realized_overlays = realize_appearance_queue(overlays) + realized_underlays = realize_appearance_queue(underlays) + +/// Takes a list of appearnces, makes them mutable so they can be properly vv'd and inspected +/proc/realize_appearance_queue(list/appearances) + var/list/real_appearances = list() + var/list/queue = appearances.Copy() + var/queue_index = 0 + while(queue_index < length(queue)) + queue_index++ + // If it's not a command, we assert that it's an appearance + var/mutable_appearance/appearance = queue[queue_index] + if(!appearance) // Who fucking adds nulls to their sublists god you people are the worst + continue + + var/mutable_appearance/new_appearance = new /mutable_appearance() + new_appearance.appearance = appearance + var/key = "[appearance.icon]-[appearance.icon_state]-[appearance.plane]-[appearance.layer]-[appearance.dir]-[appearance.color]" + var/tmp_key = key + var/appearance_indx = 1 + while(real_appearances[tmp_key]) + tmp_key = "[key]-[appearance_indx]" + appearance_indx++ + + real_appearances[tmp_key] = new_appearance + var/add_index = queue_index + // Now check its children + for(var/mutable_appearance/child_appearance as anything in appearance.overlays) + add_index++ + queue.Insert(add_index, child_appearance) + for(var/mutable_appearance/child_appearance as anything in appearance.underlays) + add_index++ + queue.Insert(add_index, child_appearance) + return real_appearances + +/// Takes two appearances as args, prints out, logs, and returns a text representation of their differences +/// Including suboverlays +/proc/diff_appearances(mutable_appearance/first, mutable_appearance/second, iter = 0) + var/list/diffs = list() + var/list/firstdeet = first.vars + var/list/seconddeet = second.vars + var/diff_found = FALSE + for(var/name in first.vars) + var/firstv = firstdeet[name] + var/secondv = seconddeet[name] + if(firstv ~= secondv) + continue + if((islist(firstv) || islist(secondv)) && length(firstv) == 0 && length(secondv) == 0) + continue + if(name == "vars") // Go away + continue + if(name == "_listen_lookup") // This is just gonna happen with marked datums, don't care + continue + if(name == "overlays") + first.realize_overlays() + second.realize_overlays() + var/overlays_differ = FALSE + for(var/i in 1 to length(first.realized_overlays)) + if(diff_appearances(first.realized_overlays[i], second.realized_overlays[i], iter + 1)) + overlays_differ = TRUE + + if(!overlays_differ) + continue + + diff_found = TRUE + diffs += "Diffs detected at [name]: First ([firstv]), Second ([secondv])" + + var/text = "Depth of: [iter]\n\t[diffs.Join("\n\t")]" + message_admins(text) + log_world(text) + return diff_found + +//Legacy, does basically nothing +/atom/proc/ImmediateOverlayUpdate() + if (gc_destroyed) + if (length(overlays)) + overlays.Cut() + return diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 0354270505..45eff9c866 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -389,21 +389,21 @@ update_flag add_fingerprint(usr) update_icon() -/obj/machinery/portable_atmospherics/canister/phoron/New() +/obj/machinery/portable_atmospherics/canister/phoron/Initialize() //ChompEDIT New --> Initialize ..() src.air_contents.adjust_gas("phoron", MolesForPressure()) src.update_icon() return 1 -/obj/machinery/portable_atmospherics/canister/oxygen/New() +/obj/machinery/portable_atmospherics/canister/oxygen/Initialize() //ChompEDIT New --> Initialize ..() src.air_contents.adjust_gas("oxygen", MolesForPressure()) src.update_icon() return 1 -/obj/machinery/portable_atmospherics/canister/oxygen/prechilled/New() +/obj/machinery/portable_atmospherics/canister/oxygen/prechilled/Initialize() //ChompEDIT New --> Initialize ..() src.air_contents.adjust_gas("oxygen", MolesForPressure()) @@ -411,7 +411,7 @@ update_flag src.update_icon() return 1 -/obj/machinery/portable_atmospherics/canister/nitrous_oxide/New() +/obj/machinery/portable_atmospherics/canister/nitrous_oxide/Initialize() //ChompEDIT New --> Initialize ..() air_contents.adjust_gas("nitrous_oxide", MolesForPressure()) @@ -428,7 +428,7 @@ update_flag air_contents = new return 1 -/obj/machinery/portable_atmospherics/canister/nitrogen/New() +/obj/machinery/portable_atmospherics/canister/nitrogen/Initialize() //ChompEDIT New --> Initialize ..() @@ -436,14 +436,14 @@ update_flag src.update_icon() return 1 -/obj/machinery/portable_atmospherics/canister/carbon_dioxide/New() +/obj/machinery/portable_atmospherics/canister/carbon_dioxide/Initialize() //ChompEDIT New --> Initialize ..() src.air_contents.adjust_gas("carbon_dioxide", MolesForPressure()) src.update_icon() return 1 -/obj/machinery/portable_atmospherics/canister/air/New() +/obj/machinery/portable_atmospherics/canister/air/Initialize() //ChompEDIT New --> Initialize ..() var/list/air_mix = StandardAirMix() src.air_contents.adjust_multi("oxygen", air_mix["oxygen"], "nitrogen", air_mix["nitrogen"]) @@ -453,19 +453,19 @@ update_flag //R-UST port // Special types used for engine setup admin verb, they contain double amount of that of normal canister. -/obj/machinery/portable_atmospherics/canister/nitrogen/engine_setup/New() +/obj/machinery/portable_atmospherics/canister/nitrogen/engine_setup/Initialize() //ChompEDIT New --> Initialize ..() src.air_contents.adjust_gas("nitrogen", MolesForPressure()) src.update_icon() return 1 -/obj/machinery/portable_atmospherics/canister/carbon_dioxide/engine_setup/New() +/obj/machinery/portable_atmospherics/canister/carbon_dioxide/engine_setup/Initialize() //ChompEDIT New --> Initialize ..() src.air_contents.adjust_gas("carbon_dioxide", MolesForPressure()) src.update_icon() return 1 -/obj/machinery/portable_atmospherics/canister/phoron/engine_setup/New() +/obj/machinery/portable_atmospherics/canister/phoron/engine_setup/Initialize() //ChompEDIT New --> Initialize ..() src.air_contents.adjust_gas("phoron", MolesForPressure()) src.update_icon() diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index 28255c395a..efec31aa4b 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -19,8 +19,9 @@ add_overlay("ccharger1") /obj/machinery/cell_charger/update_icon() + cut_overlays() //ChompEDIT if(!anchored) - cut_overlays() + //cut_overlays() //ChompEDIT icon_state = "ccharger2" if(charging && !(stat & (BROKEN|NOPOWER))) @@ -29,7 +30,7 @@ if(chargelevel != newlevel) - cut_overlays() + //cut_overlays() //ChompEDIT add_overlay("ccharger-o[newlevel]") chargelevel = newlevel @@ -38,7 +39,7 @@ add_overlay("ccharger-[charging.connector_type]-on") else if(anchored) - cut_overlays() + //cut_overlays() //ChompEDIT icon_state = "ccharger0" add_overlay("ccharger1") @@ -137,4 +138,4 @@ var/E = 0 for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts) E += C.rating - efficiency = active_power_usage * (1+ (E - 1)*0.5) \ No newline at end of file + efficiency = active_power_usage * (1+ (E - 1)*0.5) diff --git a/code/game/machinery/floodlight.dm b/code/game/machinery/floodlight.dm index 3c4b3a7a13..c746c86698 100644 --- a/code/game/machinery/floodlight.dm +++ b/code/game/machinery/floodlight.dm @@ -13,7 +13,7 @@ var/open = 0 var/brightness_on = 8 //can't remember what the maxed out value is -/obj/machinery/floodlight/New() +/obj/machinery/floodlight/Initialize() //ChompEDIT New --> Initialize cell = new(src) ..() diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index a81b12da5c..ccf327cdaa 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -10,7 +10,7 @@ icon_state = "sheater0" name = "space heater" desc = "Made by Space Amish using traditional space techniques, this heater is guaranteed not to set the station on fire." - + light_system = STATIC_LIGHT //CHOMPEdit, runtime cleanup light_range = 3 light_power = 1 @@ -24,7 +24,7 @@ clicksound = "switch" interact_offline = TRUE -/obj/machinery/space_heater/New() +/obj/machinery/space_heater/Initialize() //ChompEDIT New --> Initialize ..() if(cell_type) cell = new cell_type(src) diff --git a/code/game/objects/items/devices/defib.dm b/code/game/objects/items/devices/defib.dm index 34833e5f86..e7b127c21a 100644 --- a/code/game/objects/items/devices/defib.dm +++ b/code/game/objects/items/devices/defib.dm @@ -23,7 +23,7 @@ /obj/item/device/defib_kit/get_cell() return bcell -/obj/item/device/defib_kit/New() //starts without a cell for rnd +/obj/item/device/defib_kit/Initialize() //starts without a cell for rnd //ChompEDIT New --> Initialize ..() if(ispath(paddles)) paddles = new paddles(src, src) diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index e9e5433c73..80bb88a2e3 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -45,7 +45,7 @@ GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/device/paicard) if(istype(rig)) rig.forced_move(direction, user) -/obj/item/device/paicard/New() +/obj/item/device/paicard/Initialize() //ChompEDIT New --> Initialize ..() add_overlay("pai-off") diff --git a/code/game/objects/structures/reflectors_ch.dm b/code/game/objects/structures/reflectors_ch.dm index 2175888238..accc4efbd8 100644 --- a/code/game/objects/structures/reflectors_ch.dm +++ b/code/game/objects/structures/reflectors_ch.dm @@ -308,6 +308,6 @@ /obj/machinery/portable_atmospherics/canister var/dont_burst = FALSE -/obj/machinery/portable_atmospherics/canister/phoron/cold/New() +/obj/machinery/portable_atmospherics/canister/phoron/cold/Initialize() //ChompEDIT New --> Initialize src.air_contents.temperature = 2.72 - ..() \ No newline at end of file + ..() diff --git a/code/game/turfs/simulated/dungeon/wall.dm b/code/game/turfs/simulated/dungeon/wall.dm index 227ca41979..2fa65ce1c1 100644 --- a/code/game/turfs/simulated/dungeon/wall.dm +++ b/code/game/turfs/simulated/dungeon/wall.dm @@ -66,6 +66,7 @@ return mining_overlay_cache["[cache_id]_[direction]"] /turf/simulated/wall/solidrock/update_icon(var/update_neighbors) + cut_overlays() //ChompEDIT if(density) var/image/I for(var/i = 1 to 4) @@ -116,4 +117,4 @@ for(var/direction in alldirs) if(istype(get_step(src, direction), /turf/simulated/wall/solidrock/mossyrockpoi)) var/turf/simulated/wall/solidrock/mossyrockpoi/M = get_step(src, direction) - M.update_icon() \ No newline at end of file + M.update_icon() diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index 32ee55d553..376d18574e 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -170,7 +170,7 @@ /obj/item/device/assembly_holder/timer_igniter name = "timer-igniter assembly" -/obj/item/device/assembly_holder/timer_igniter/New() +/obj/item/device/assembly_holder/timer_igniter/Initialize() //ChompEDIT New --> Initialize ..() var/obj/item/device/assembly/igniter/ign = new(src) diff --git a/code/modules/food/food/z_custom_food_vr.dm b/code/modules/food/food/z_custom_food_vr.dm index 3fcd9d990c..054fafee18 100644 --- a/code/modules/food/food/z_custom_food_vr.dm +++ b/code/modules/food/food/z_custom_food_vr.dm @@ -55,7 +55,7 @@ var/global/ingredientLimit = 20000 if(src.addTop) cut_overlay(topping) - if(!fullyCustom && !stackIngredients && LAZYLEN(our_overlays)) + if(!fullyCustom && !stackIngredients && LAZYLEN(overlays)) //CHOMPEdit cut_overlay(filling) //we can't directly modify the overlay, so we have to remove it and then add it again var/newcolor = S.filling_color != "#FFFFFF" ? S.filling_color : AverageColor(getFlatIcon(S, S.dir, 0), 1, 1) filling.color = BlendRGB(filling.color, newcolor, 1/ingredients.len) diff --git a/code/modules/food/kitchen/gibber.dm b/code/modules/food/kitchen/gibber.dm index ff64184a57..c4361362c0 100644 --- a/code/modules/food/kitchen/gibber.dm +++ b/code/modules/food/kitchen/gibber.dm @@ -57,7 +57,7 @@ M.gib() -/obj/machinery/gibber/New() +/obj/machinery/gibber/Initialize() //ChompEDIT New --> Initialize ..() add_overlay("grjam") @@ -252,5 +252,3 @@ thing.throw_at(get_edge_target_turf(src,gib_throw_dir),rand(0,3),emagged ? 100 : 50) // Being pelted with bits of meat and bone would hurt. update_icon() - - diff --git a/code/modules/hydroponics/beekeeping/beehive.dm b/code/modules/hydroponics/beekeeping/beehive.dm index 126232754b..a9cd677ea9 100644 --- a/code/modules/hydroponics/beekeeping/beehive.dm +++ b/code/modules/hydroponics/beekeeping/beehive.dm @@ -281,7 +281,7 @@ var/global/list/datum/stack_recipe/wax_recipes = list( \ icon_state = "beepack" var/full = 1 -/obj/item/bee_pack/New() +/obj/item/bee_pack/Initialize() //ChompEDIT New --> Initialize ..() add_overlay("beepack-full") diff --git a/code/modules/multiz/turf.dm b/code/modules/multiz/turf.dm index a8c80f7093..ff952d23ad 100644 --- a/code/modules/multiz/turf.dm +++ b/code/modules/multiz/turf.dm @@ -97,6 +97,7 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr /turf/simulated/open/update_icon() cut_overlays() update_icon_edge() + add_overlay(GLOB.openspace_backdrop_one_for_all, TRUE) //Special grey square for projecting backdrop darkness filter on it. //ChompEDIT - add this on icon update. // Straight copy from space. /turf/simulated/open/attackby(obj/item/C as obj, mob/user as mob) diff --git a/code/modules/paperwork/adminpaper.dm b/code/modules/paperwork/adminpaper.dm index 229bcf0869..c42756594a 100644 --- a/code/modules/paperwork/adminpaper.dm +++ b/code/modules/paperwork/adminpaper.dm @@ -16,7 +16,7 @@ var/footer = null var/footerOn = FALSE -/obj/item/weapon/paper/admin/New() +/obj/item/weapon/paper/admin/Initialize() //ChompEDIT New --> Initialize ..() generateInteractions() diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm index 58171494a1..651e239631 100644 --- a/code/modules/paperwork/clipboard.dm +++ b/code/modules/paperwork/clipboard.dm @@ -12,7 +12,7 @@ var/obj/item/weapon/toppaper //The topmost piece of paper. slot_flags = SLOT_BELT -/obj/item/weapon/clipboard/New() +/obj/item/weapon/clipboard/Initialize() //ChompEDIT New --> Initialize update_icon() /obj/item/weapon/clipboard/MouseDrop(obj/over_object as obj) //Quick clipboard fix. -Agouri diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index 8fe177598e..7c623d05f2 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -41,7 +41,7 @@ desc = "A white folder with RD markings." icon_state = "folder_rd" -/obj/item/weapon/folder/white_rd/New() +/obj/item/weapon/folder/white_rd/Initialize() //ChompEDIT New --> Initialize //add some memos var/obj/item/weapon/paper/P = new() P.name = "Memo RE: proper analysis procedure" diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index e16524875f..94431ed1a3 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -74,7 +74,7 @@ desc = "A gift card with a heart on the cover." icon_state = "greetingcard_heart" -/obj/item/weapon/paper/card/New() +/obj/item/weapon/paper/card/Initialize() //ChompEDIT New --> Initialize ..() pixel_y = rand(-8, 8) pixel_x = rand(-9, 9) @@ -116,7 +116,7 @@ if(mapload) // Jank, but we do this to prevent maploaded papers from somehow stacking across rounds if re-added to the board by a player. was_maploaded = TRUE -/obj/item/weapon/paper/New(var/newloc, var/text, var/title) +/obj/item/weapon/paper/Initialize(var/newloc, var/text, var/title) //ChompEDIT New --> Initialize ..() pixel_y = rand(-8, 8) pixel_x = rand(-9, 9) diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index a8cb28b873..64105e826d 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -11,7 +11,7 @@ var/obj/item/weapon/paper/internalPaper -/obj/item/weapon/paperplane/New(loc, obj/item/weapon/paper/newPaper) +/obj/item/weapon/paperplane/Initialize(loc, obj/item/weapon/paper/newPaper) //ChompEDIT New --> Initialize . = ..() pixel_y = rand(-8, 8) pixel_x = rand(-9, 9) diff --git a/code/modules/pda/ai.dm b/code/modules/pda/ai.dm index a12b7343ae..632858e1bc 100644 --- a/code/modules/pda/ai.dm +++ b/code/modules/pda/ai.dm @@ -44,7 +44,7 @@ ttone = "assist" var/our_owner = null // Ref to a pAI -/obj/item/device/pda/ai/pai/New(mob/living/silicon/pai/P) +/obj/item/device/pda/ai/pai/Initialize(mob/living/silicon/pai/P) //ChompEDIT New --> Initialize if(istype(P)) our_owner = REF(P) return ..() diff --git a/code/modules/pda/pda.dm b/code/modules/pda/pda.dm index 60d491e5ab..a18a92fc25 100644 --- a/code/modules/pda/pda.dm +++ b/code/modules/pda/pda.dm @@ -130,7 +130,7 @@ var/global/list/obj/item/device/pda/PDAs = list() close(usr) return 0 -/obj/item/device/pda/New(var/mob/living/carbon/human/H) +/obj/item/device/pda/Initialize(var/mob/living/carbon/human/H) //ChompEDIT New --> Initialize ..() PDAs += src PDAs = sortAtom(PDAs) @@ -146,7 +146,7 @@ var/global/list/obj/item/device/pda/PDAs = list() model_name = "Thinktronic 5230 Personal Data Assistant" if(2) icon = 'icons/obj/pda_slim.dmi' - model_name = "Ward-Takahashi SlimFit™ Personal Data Assistant" + model_name = "Ward-Takahashi SlimFit� Personal Data Assistant" if(3) icon = 'icons/obj/pda_old.dmi' model_name = "Thinktronic 5120 Personal Data Assistant" @@ -172,7 +172,7 @@ var/global/list/obj/item/device/pda/PDAs = list() ) if(7) icon = 'icons/obj/pda_slider.dmi' //VOREStation edit - model_name = "Slider® Personal Data Assistant" + model_name = "Slider� Personal Data Assistant" if(8) icon = 'icons/obj/pda_vintage.dmi' model_name = "\[ERR:INVALID_MANUFACTURER_ID\] Personal Data Assistant" diff --git a/code/modules/pda/pda_subtypes.dm b/code/modules/pda/pda_subtypes.dm index 11b684b678..946a070c33 100644 --- a/code/modules/pda/pda_subtypes.dm +++ b/code/modules/pda/pda_subtypes.dm @@ -43,7 +43,7 @@ default_cartridge = /obj/item/weapon/cartridge/mime icon_state = "pda-mime" -/obj/item/device/pda/mime/New() +/obj/item/device/pda/mime/Initialize() //ChompEDIT New --> Initialize . = ..() var/datum/data/pda/app/M = find_program(/datum/data/pda/app/messenger) if(M) @@ -128,7 +128,7 @@ desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a WGW-11 series e-reader." model_name = "Thinktronic 5290 WGW-11 Series E-reader and Personal Data Assistant" -/obj/item/device/pda/librarian/New() +/obj/item/device/pda/librarian/Initialize() //ChompEDIT New --> Initialize . = ..() var/datum/data/pda/app/M = find_program(/datum/data/pda/app/messenger) if(M) @@ -171,43 +171,43 @@ ) var/list/cartridges_to_send_to = list() -/obj/item/device/pda/multicaster/command/New() +/obj/item/device/pda/multicaster/command/Initialize() //ChompEDIT New --> Initialize ..() owner = "Command Department" name = "Command Department (Relay)" cartridges_to_send_to = command_cartridges -/obj/item/device/pda/multicaster/security/New() +/obj/item/device/pda/multicaster/security/Initialize() //ChompEDIT New --> Initialize ..() owner = "Security Department" name = "Security Department (Relay)" cartridges_to_send_to = security_cartridges -/obj/item/device/pda/multicaster/engineering/New() +/obj/item/device/pda/multicaster/engineering/Initialize() //ChompEDIT New --> Initialize ..() owner = "Engineering Department" name = "Engineering Department (Relay)" cartridges_to_send_to = engineering_cartridges -/obj/item/device/pda/multicaster/medical/New() +/obj/item/device/pda/multicaster/medical/Initialize() //ChompEDIT New --> Initialize ..() owner = "Medical Department" name = "Medical Department (Relay)" cartridges_to_send_to = medical_cartridges -/obj/item/device/pda/multicaster/research/New() +/obj/item/device/pda/multicaster/research/Initialize() //ChompEDIT New --> Initialize ..() owner = "Research Department" name = "Research Department (Relay)" cartridges_to_send_to = research_cartridges -/obj/item/device/pda/multicaster/cargo/New() +/obj/item/device/pda/multicaster/cargo/Initialize() //ChompEDIT New --> Initialize ..() owner = "Cargo Department" name = "Cargo Department (Relay)" cartridges_to_send_to = cargo_cartridges -/obj/item/device/pda/multicaster/civilian/New() +/obj/item/device/pda/multicaster/civilian/Initialize() //ChompEDIT New --> Initialize ..() owner = "Civilian Services Department" name = "Civilian Services Department (Relay)" diff --git a/code/modules/pda/pda_vr.dm b/code/modules/pda/pda_vr.dm index d0ec3c757b..00c9a1e5f6 100644 --- a/code/modules/pda/pda_vr.dm +++ b/code/modules/pda/pda_vr.dm @@ -1,7 +1,7 @@ /obj/item/device/pda var/delete_id = FALSE //Guaranteed deletion of ID upon deletion of PDA -/obj/item/device/pda/multicaster/exploration/New() +/obj/item/device/pda/multicaster/exploration/Initialize() //ChompEDIT New --> Initialize ..() owner = "Exploration Department" //CHOMP keep explo name = "Exploration Department (Relay)" //CHOMP keep explo diff --git a/code/modules/persistence/noticeboard.dm b/code/modules/persistence/noticeboard.dm index 54f07d2a58..5f9b3c6b09 100644 --- a/code/modules/persistence/noticeboard.dm +++ b/code/modules/persistence/noticeboard.dm @@ -20,6 +20,12 @@ LAZYADD(notices, note) if(LAZYLEN(notices) >= max_notices) break + //ChompEDIT START - notices in contents + for(var/obj/item/weapon/paper/note in contents) + LAZYADD(notices, note) + if(LAZYLEN(notices) >= max_notices) + break + //ChompEDIT END update_icon() @@ -173,7 +179,7 @@ notices = 5 icon_state = "nboard05" -/obj/structure/noticeboard/anomaly/New() +/obj/structure/noticeboard/anomaly/Initialize() //ChompEDIT New --> Initialize var/obj/item/weapon/paper/P = new() P.name = "Memo RE: proper analysis procedure" P.info = "
We keep test dummies in pens here for a reason, so standard procedure should be to activate newfound alien artifacts and place the two in close proximity. Promising items I might even approve monkey testing on." @@ -207,4 +213,5 @@ P.info = "Do you people think the anomaly suits are cheap to come by? I'm about a hair trigger away from instituting a log book for the damn things. Only wear them if you're going out for a dig, and for god's sake don't go tramping around in them unless you're field testing something, R" P.stamped = list(/obj/item/weapon/stamp/rd) P.add_overlay("paper_stamped_rd") - contents += P \ No newline at end of file + contents += P + . = ..() //ChompEDIT New --> Initialize diff --git a/code/modules/persistence/noticeboard_yw.dm b/code/modules/persistence/noticeboard_yw.dm index 50256d441a..f646961e62 100644 --- a/code/modules/persistence/noticeboard_yw.dm +++ b/code/modules/persistence/noticeboard_yw.dm @@ -1,70 +1,70 @@ +//ChompEDIT Start - Rework this whole thing, it was bad. /obj/structure/noticeboard/anomaly name = "xenoarchaeology notice board" /obj/structure/noticeboard/medical name = "medical notice board" - notices = 2 icon_state = "nboard02" -/obj/structure/noticeboard/medical/New() +/obj/structure/noticeboard/medical/Initialize() var/obj/item/weapon/paper/P = new() P.name = "Staff Notice: Patient rooms" P.info = "
No matter how many times I've said this, it doesn't seem to stick, so I'm leaving this reminder: Screwing patients in the patient rooms is a serious breach of professionality and your code of ethics. Take it to the dorms." P.stamped = list(/obj/item/weapon/stamp/cmo) - P.overlays = list("paper_stamped_cmo") + P.add_overlay("paper_stamped_cmo") src.contents += P - + P = new() P.name = "Staff Notice: Breakroom \& Storage" P.info = "
Enjoy the view from the new breakroom. You've also got a storage room full of leftover supplies from the shift before yours." P.stamped = list(/obj/item/weapon/stamp/cmo) - P.overlays = list("paper_stamped_cmo") + P.add_overlay("paper_stamped_cmo") src.contents += P + . = ..() /obj/structure/noticeboard/toxins name = "toxins lab notice board" - notices = 1 icon_state = "nboard01" -/obj/structure/noticeboard/toxins/New() +/obj/structure/noticeboard/toxins/Initialize() var/obj/item/weapon/paper/P = new() P.name = "Staff Notice: Toxins Mixing" P.info = "
Toxins Mixing is currently shut down for the time being, due to damage requiring parts from off station to fix. Please do not use at this time, or risk setting the entire outpost on fire." P.stamped = list(/obj/item/weapon/stamp/rd) - P.overlays = list("paper_stamped_rd") + P.add_overlay("paper_stamped_rd") src.contents += P + . = ..() /obj/structure/noticeboard/nanite name = "nanite lab notice board" - notices = 1 icon_state = "nboard01" -/obj/structure/noticeboard/nanite/New() +/obj/structure/noticeboard/nanite/Initialize() var/obj/item/weapon/paper/P = new() P.name = "Staff Notice: Nanite Laboratory" P.info = "
The Nanite Laboratory is nearly complete. We're simply awaiting specialized machinery and equipment from central. The lab is currently shut down. Please do not use at this time." P.stamped = list(/obj/item/weapon/stamp/rd) - P.overlays = list("paper_stamped_rd") + P.add_overlay("paper_stamped_rd") src.contents += P + . = ..() /obj/structure/noticeboard/blueshield name = "blueshield notice board" - notices = 1 icon_state = "nboard01" -/obj/structure/noticeboard/blueshield/New() +/obj/structure/noticeboard/blueshield/Initialize() var/obj/item/weapon/paper/P = new() P.name = "Staff Notice: Blueshield Special Reserve" P.info = "
This secure storage unit is intended to be used for special equipment specifically for the use of Blueshield Agents in the event of a Code Red threat to Heads of Staff. Heads of Staff found 'commandeering' this equipment can expect to be severely reprimanded.

(Underneath, there is a messy handwritten addition.)
Sorry, we haven't had time or spare funds to issue anything yet. You know how frontier budgets are! Sit tight, champ. -Z.V." P.stamped = list(/obj/item/weapon/stamp/centcomm) - P.overlays = list("paper_stamped_cent") + P.add_overlay("paper_stamped_cent") src.contents += P + . = ..() /obj/structure/noticeboard/library - notices = 2 icon_state = "nboard02" -/obj/structure/noticeboard/library/New() +/obj/structure/noticeboard/library/Initialize() var/obj/item/weapon/paper/P = new() P.name = "Library Warning: coffee stains" P.info = "
I seem to tell you guys this daily, but please, stop bringing coffee to carpeted areas. It's hard enough to get the stains off wood,let alone carpet." @@ -74,41 +74,44 @@ P.name = "Library Warning: loud noises" P.info = "Ssshh!
People are trying to read in the library, stop bringing the jukebox over there!" src.contents += P + . = ..() /obj/structure/noticeboard/exploration - notices = 3 icon_state = "nboard03" -/obj/structure/noticeboard/exploration/New() +/obj/structure/noticeboard/exploration/Initialize() var/obj/item/weapon/paper/P = new() P.name = "Memo: Prototype ship" P.info = "
With the lost of our last Research installation and the damage sustained to the old exploration shuttle,We've decided to finally approve the construction of the Prototype Star-Runner class Exploration Vessel. Keep in mind it's a prototype, so try not to scratch it's paint. We don't have a second." P.stamped = list(/obj/item/weapon/stamp/centcomm) - P.overlays = list("paper_stamped_cent") + P.add_overlay("paper_stamped_cent") src.contents += P P = new() P.name = "Memo RE: Expedition Requirements" P.info = "Jones,
For the last time, Expeditions regulations require atleast three crew members, including the Pathfinder and/or Research Director. The next time you activate your bluespace drive with less then that, and you're fired from the department.I won't have this conversation again.
- R.F" P.stamped = list(/obj/item/weapon/stamp/rd) - P.overlays = list("paper_stamped_rd") + P.add_overlay("paper_stamped_rd") src.contents += P P = new() P.name = "Memo RE: Pilot duties" P.info = "Pilots, As you're fully aware, we're on the edge of civilized space out here.
Leaving the shuttle area is dangerious. This is why the Prototype is equipped with a proper camera system to keep an eye on the explorers. If you get yourselves killed, and an explorer has to crash land the ship back here, the company is NOT going to be happy.
- R.F" P.stamped = list(/obj/item/weapon/stamp/rd) - P.overlays = list("paper_stamped_rd") + P.add_overlay("paper_stamped_rd") src.contents += P + . = ..() /obj/structure/noticeboard/airlock - notices = 1 icon_state = "nboard01" -/obj/structure/noticeboard/airlock/New() +/obj/structure/noticeboard/airlock/Initialize() var/obj/item/weapon/paper/P = new() P.name = "Staff Notice: Airlock Proceedure" P.info = "
Due to the large amount of new staff unfamiliar with our proceedures we've left you some instructions.
To exit through an airlock, simply hit the button to open the interior, and then cycle to exterior once inside. To re-enter the station, enter the airlock, Close the exterior hatch, and look for the customized thermal regulators installed on the wall.
This should heat up the air in the airlock, allowing you to open the interior door with no issues." P.stamped = list(/obj/item/weapon/stamp/captain) - P.overlays = list("paper_stamp-cap") - src.contents += P \ No newline at end of file + P.add_overlay("paper_stamp-cap") + src.contents += P + . = ..() + +//ChompEDIT End diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 50ce2d7f5f..5f30db98ec 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -35,7 +35,7 @@ var/standard_overlays = TRUE var/last_overlay_state = null // Used to optimize update_icon() calls. -/obj/item/weapon/cell/New() +/obj/item/weapon/cell/Initialize() //ChompEDIT New --> Initialize ..() c_uid = cell_uid++ charge = maxcharge diff --git a/code/modules/power/cells/power_cells.dm b/code/modules/power/cells/power_cells.dm index 17df91f2f2..8a14e634ca 100644 --- a/code/modules/power/cells/power_cells.dm +++ b/code/modules/power/cells/power_cells.dm @@ -2,7 +2,7 @@ /* * Empty */ -/obj/item/weapon/cell/empty/New() +/obj/item/weapon/cell/empty/Initialize() //ChompEDIT New --> Initialize ..() charge = 0 @@ -21,7 +21,7 @@ /obj/item/weapon/cell/crap/update_icon() //No visible charge indicator return -/obj/item/weapon/cell/crap/empty/New() +/obj/item/weapon/cell/crap/empty/Initialize() //ChompEDIT New --> Initialize ..() charge = 0 @@ -52,7 +52,7 @@ maxcharge = 10000 matter = list(MAT_STEEL = 700, MAT_GLASS = 60) -/obj/item/weapon/cell/high/empty/New() +/obj/item/weapon/cell/high/empty/Initialize() //ChompEDIT New --> Initialize ..() charge = 0 update_icon() @@ -67,7 +67,7 @@ maxcharge = 20000 matter = list(MAT_STEEL = 700, MAT_GLASS = 70) -/obj/item/weapon/cell/super/empty/New() +/obj/item/weapon/cell/super/empty/Initialize() //ChompEDIT New --> Initialize ..() charge = 0 update_icon() @@ -91,7 +91,7 @@ maxcharge = 30000 matter = list(MAT_STEEL = 700, MAT_GLASS = 80) -/obj/item/weapon/cell/hyper/empty/New() +/obj/item/weapon/cell/hyper/empty/Initialize() //ChompEDIT New --> Initialize ..() charge = 0 update_icon() diff --git a/code/modules/shieldgen/energy_shield.dm b/code/modules/shieldgen/energy_shield.dm index 68c03ff1fe..40ec968197 100644 --- a/code/modules/shieldgen/energy_shield.dm +++ b/code/modules/shieldgen/energy_shield.dm @@ -32,8 +32,8 @@ overlays.Cut() // Snowflake handling, avoiding SSoverlays else icon_state = enabled_icon_state - flags |= OVERLAY_QUEUED //Trick SSoverlays - SSoverlays.queue += src + //flags |= OVERLAY_QUEUED //Trick SSoverlays //CHOMPEdit + //SSoverlays.queue += src //CHOMPEdit /obj/effect/shield/proc/update_color() if(disabled_for || diffused_for) diff --git a/icons/Testing/greyscale_error.dmi b/icons/Testing/greyscale_error.dmi new file mode 100644 index 0000000000000000000000000000000000000000..6c781a70ad1911fce8b0f3984aaca861a1038738 GIT binary patch literal 870 zcmV-s1DX7ZP)9u}?;3$YmzvmO?09~hG% z7?U3uv>_P62?v)21)UQRp&S;ZAsfXP5y&4H$t4`6Bpu2p9=XmN)&Kwi0d!JMQvg8b z*k%9#0CIX%Sad{Xb7OL8aCB*JZU6vyoKseCa&`CgQ*iP10006xNkl?7D%Cspu{n+pxID)}$wKrBq8&$eCMr0x^M3$)4w)4x4pL!dZ@(WnWY(lP zNQadJ04_Dm6Tqd0IRSWdJZ@qdEh2e;O&hEZUO<9jYbN% zY&1Nec*g8#2%z~pW=CTJoK8IQ!1>H$1SnOOrOmiV_Iohwx>BtPcBTx|xYHqBSl44a66QoQGr05t&016uQ*&jK_6=rKS75CD__Bme4e@wewIeN=w@|=sJ8olKzea>9_robM6Vg`VM;z}9w}IKw5MZf4K;VAokq2h`17o_bvl$P`{t1R%H-=X9 z2Mj!H2B-G@Z{H7_0N`nVz&{(_^Id=*0ONs${vZM*00BU>qCYUhAqqeMkO%xB=K2E! z_yj2&;uM(e58^dG1o(k#Y-vS*fIyt*f!Y3G`%iiMV`|%O^p?BiIWP1F474-A4S=Wp w!BEl=a3zhBl9ufchN22aSiz$D>JPH<2U%87S-(@z>Hq)$07*qoM6N<$g7ai&ssI20 literal 0 HcmV?d00001 diff --git a/maps/southern_cross/southern_cross-6.dmm b/maps/southern_cross/southern_cross-6.dmm index 2207b8595a..506e0f7eb2 100644 --- a/maps/southern_cross/southern_cross-6.dmm +++ b/maps/southern_cross/southern_cross-6.dmm @@ -35828,7 +35828,7 @@ aa sj ad ad -ad +ab ab ab ab @@ -37892,7 +37892,7 @@ cv rd ad ad -ad +ab ab ac ac diff --git a/modular_chomp/code/game/objects/items/devices/flipper.dm b/modular_chomp/code/game/objects/items/devices/flipper.dm index 4dfc425835..e6238277e2 100644 --- a/modular_chomp/code/game/objects/items/devices/flipper.dm +++ b/modular_chomp/code/game/objects/items/devices/flipper.dm @@ -34,7 +34,7 @@ return module.attack_self(user) ..() -/obj/item/device/paicard/flipper/New() +/obj/item/device/paicard/flipper/Initialize() //ChompEDIT New --> Initialize ..() desc = "The [name] is a versatile security device designed to protect and empower users in a variety of contexts. With features such as wireless hacking, radio analysis, signal jamming, and physical lock picking, the [name] is the ultimate tool for security professionals, hobbyists, and anyone seeking to better understand and defend against modern threats. Whether you're investigating a security breach, testing your own defenses, or simply curious about the workings of wireless technology, the [name] has you covered." MultiTool = new /obj/item/device/multitool(src) @@ -243,4 +243,4 @@ vore_capacity = 1 vore_capacity_ex = list("stomach" = 1) resize(oursize, FALSE, TRUE, TRUE, FALSE) //And then back again now that we're sure the vis_height is correct. - update_icon() \ No newline at end of file + update_icon() diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm index e4858c036b..21203804aa 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm @@ -422,7 +422,7 @@ charge_amount = 100 var/mob/living/carbon/human/charger -/obj/item/weapon/cell/protean/New() +/obj/item/weapon/cell/protean/Initialize() //ChompEDIT New --> Initialize charge = maxcharge update_icon() addtimer(CALLBACK(src, PROC_REF(search_for_protean)), 60) diff --git a/modular_chomp/code/modules/power/cells/power_cells.dm b/modular_chomp/code/modules/power/cells/power_cells.dm index 0ed8546e1b..e20db386f9 100644 --- a/modular_chomp/code/modules/power/cells/power_cells.dm +++ b/modular_chomp/code/modules/power/cells/power_cells.dm @@ -9,7 +9,7 @@ maxcharge = 500 matter = list(MAT_STEEL = 700, MAT_GLASS = 40) -/obj/item/weapon/cell/crap/empty/New() +/obj/item/weapon/cell/crap/empty/Initialize() //ChompEDIT New --> Initialize ..() charge = 0 @@ -39,7 +39,7 @@ maxcharge = 2400 //who the hell thought 6 shots was enough for a dogborg taser? matter = list(MAT_STEEL = 700, MAT_GLASS = 40) -/obj/item/weapon/cell/secborg/empty/New() +/obj/item/weapon/cell/secborg/empty/Initialize() //ChompEDIT New --> Initialize ..() charge = 0 update_icon() @@ -64,7 +64,7 @@ maxcharge = 10000 matter = list(MAT_STEEL = 700, MAT_GLASS = 60) -/obj/item/weapon/cell/high/empty/New() +/obj/item/weapon/cell/high/empty/Initialize() //ChompEDIT New --> Initialize ..() charge = 0 update_icon() @@ -79,7 +79,7 @@ maxcharge = 20000 matter = list(MAT_STEEL = 700, MAT_GLASS = 70) -/obj/item/weapon/cell/super/empty/New() +/obj/item/weapon/cell/super/empty/Initialize() //ChompEDIT New --> Initialize ..() charge = 0 update_icon() @@ -94,7 +94,7 @@ maxcharge = 30000 matter = list(MAT_STEEL = 700, MAT_GLASS = 80) -/obj/item/weapon/cell/hyper/empty/New() +/obj/item/weapon/cell/hyper/empty/Initialize() //ChompEDIT New --> Initialize ..() charge = 0 update_icon() @@ -109,7 +109,7 @@ maxcharge = 40000 matter = list(MAT_STEEL = 1000, MAT_GLASS = 100) -/obj/item/weapon/cell/giga/empty/New() +/obj/item/weapon/cell/giga/empty/Initialize() //ChompEDIT New --> Initialize ..() charge = 0 update_icon() diff --git a/vorestation.dme b/vorestation.dme index 2c05925059..816067e14c 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -81,6 +81,7 @@ #include "code\__defines\mobs_yw.dm" #include "code\__defines\nifsoft.dm" #include "code\__defines\objects.dm" +#include "code\__defines\overlay_ch.dm" #include "code\__defines\overmap.dm" #include "code\__defines\pda.dm" #include "code\__defines\planets.dm" @@ -335,7 +336,7 @@ #include "code\controllers\subsystems\mobs.dm" #include "code\controllers\subsystems\nanoui.dm" #include "code\controllers\subsystems\nightshift.dm" -#include "code\controllers\subsystems\overlays.dm" +#include "code\controllers\subsystems\overlays_ch.dm" #include "code\controllers\subsystems\overmap_renamer_vr.dm" #include "code\controllers\subsystems\pathfinder_ch.dm" #include "code\controllers\subsystems\persist_vr.dm"