From fc032ebe0f345bde399029a5031b75db14126c74 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 6 Jan 2024 00:51:31 +0000 Subject: [PATCH 01/82] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-14677.yml | 5 ----- html/changelogs/AutoChangeLog-pr-14685.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14749.yml | 5 ----- html/changelogs/AutoChangeLog-pr-14756.yml | 4 ---- html/changelogs/archive/2024-01.yml | 10 ++++++++++ 5 files changed, 10 insertions(+), 18 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-14677.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14685.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14749.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14756.yml diff --git a/html/changelogs/AutoChangeLog-pr-14677.yml b/html/changelogs/AutoChangeLog-pr-14677.yml deleted file mode 100644 index ddd10f2521aee..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14677.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "ivanmixo" -delete-after: True -changes: - - qol: "AI eyes can hear stuff the camera eye hears" - - qol: "AI eyes can see runechat from mobs (and objects) talking around them" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14685.yml b/html/changelogs/AutoChangeLog-pr-14685.yml deleted file mode 100644 index 29fa2380289af..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14685.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Pariah919" -delete-after: True -changes: - - balance: "Readds AMR lase hit slowdown." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14749.yml b/html/changelogs/AutoChangeLog-pr-14749.yml deleted file mode 100644 index 4791dc29042b9..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14749.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "ivanmixo" -delete-after: True -changes: - - bugfix: "The \"Alt-click to rotate\" bit should pop up properly when examining now" - - code_imp: "Fixed some weird implementations of the examine signal" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14756.yml b/html/changelogs/AutoChangeLog-pr-14756.yml deleted file mode 100644 index dd9c117d89a73..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14756.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Lumipharon" -delete-after: True -changes: - - code_imp: "Fix icon2base64 for real" \ No newline at end of file diff --git a/html/changelogs/archive/2024-01.yml b/html/changelogs/archive/2024-01.yml index e1803e509bea5..1463e6bb81f24 100644 --- a/html/changelogs/archive/2024-01.yml +++ b/html/changelogs/archive/2024-01.yml @@ -39,3 +39,13 @@ Xander3359: - admin: move osay to admin category and view tags to debug category - code_imp: Lowercasify "Vars" +2024-01-06: + Lumipharon: + - code_imp: Fix icon2base64 for real + Pariah919: + - balance: Readds AMR lase hit slowdown. + ivanmixo: + - bugfix: The "Alt-click to rotate" bit should pop up properly when examining now + - code_imp: Fixed some weird implementations of the examine signal + - qol: AI eyes can hear stuff the camera eye hears + - qol: AI eyes can see runechat from mobs (and objects) talking around them From 413006c8d177f9e33f8c58d29bf2d04583efa855 Mon Sep 17 00:00:00 2001 From: ivanmixo Date: Sun, 7 Jan 2024 05:17:28 +0100 Subject: [PATCH 02/82] Hud icon and overlays cleanup (#14757) --- code/_onclick/hud/ai.dm | 18 +- code/_onclick/hud/ghost.dm | 4 +- code/_onclick/hud/hud.dm | 2 +- code/_onclick/hud/human.dm | 67 +++--- code/_onclick/hud/parallax.dm | 14 +- code/_onclick/hud/picture_in_picture.dm | 8 +- code/_onclick/hud/radial.dm | 2 +- code/_onclick/hud/rendering/plane_master.dm | 6 +- code/_onclick/hud/rendering/render_plate.dm | 2 +- .../hud/screen_objects/screen_objects.dm | 195 +++++++++++++++--- .../hud/screen_objects/text_objects.dm | 1 + code/_onclick/hud/xeno/hivemind.dm | 8 +- code/_onclick/hud/xeno/larva.dm | 8 +- code/_onclick/hud/xeno/xeno.dm | 38 ++-- code/controllers/subsystem/minimaps.dm | 4 +- code/datums/status_effects/debuffs.dm | 6 + code/game/objects/items/storage/storage.dm | 16 +- code/modules/buildmode/buildmode.dm | 2 +- code/modules/buildmode/buttons.dm | 7 +- .../human/life/handle_regular_hud_updates.dm | 104 +--------- .../mob/living/carbon/xenomorph/hive_datum.dm | 2 +- code/modules/mob/living/living.dm | 8 +- .../modules/mob/living/living_health_procs.dm | 16 +- code/modules/mob/living/living_verbs.dm | 6 +- .../modules/mob/living/silicon/ai/multicam.dm | 2 +- code/modules/mob/mob_movement.dm | 2 +- code/modules/screen_alert/misc_alert.dm | 2 +- code/modules/vehicles/mecha/_mecha.dm | 2 +- .../combat/greyscale/greyscale_constructor.dm | 2 +- code/modules/vehicles/mecha/mecha_ui.dm | 2 +- 30 files changed, 295 insertions(+), 261 deletions(-) diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm index 4785d51b105a0..807f7b822c312 100644 --- a/code/_onclick/hud/ai.dm +++ b/code/_onclick/hud/ai.dm @@ -122,47 +122,47 @@ var/atom/movable/screen/using //AI core - using = new /atom/movable/screen/ai/aicore() + using = new /atom/movable/screen/ai/aicore(null, src) using.screen_loc = ui_ai_core static_inventory += using //Camera list - using = new /atom/movable/screen/ai/camera_list() + using = new /atom/movable/screen/ai/camera_list(null, src) using.screen_loc = ui_ai_camera_list static_inventory += using //Track - using = new /atom/movable/screen/ai/camera_track() + using = new /atom/movable/screen/ai/camera_track(null, src) using.screen_loc = ui_ai_track_with_camera static_inventory += using //VOX - using = new /atom/movable/screen/ai/announcement() + using = new /atom/movable/screen/ai/announcement(null, src) using.screen_loc = ui_ai_announcement static_inventory += using //VOX Help - using = new /atom/movable/screen/ai/announcement_help() + using = new /atom/movable/screen/ai/announcement_help(null, src) using.screen_loc = ui_ai_announcement_help static_inventory += using //Camera light - using = new /atom/movable/screen/ai/camera_light() + using = new /atom/movable/screen/ai/camera_light(null, src) using.screen_loc = ui_ai_camera_light static_inventory += using //Multicamera mode - using = new /atom/movable/screen/ai/multicam() + using = new /atom/movable/screen/ai/multicam(null, src) using.screen_loc = ui_ai_multicam static_inventory += using //Add multicamera camera - using = new /atom/movable/screen/ai/add_multicam() + using = new /atom/movable/screen/ai/add_multicam(null, src) using.screen_loc = ui_ai_add_multicam static_inventory += using //bioscan - using = new /atom/movable/screen/ai/bioscan() + using = new /atom/movable/screen/ai/bioscan(null, src) using.screen_loc = ui_ai_bioscan static_inventory += using diff --git a/code/_onclick/hud/ghost.dm b/code/_onclick/hud/ghost.dm index 6ba4e208684e4..edc135b7d84ee 100644 --- a/code/_onclick/hud/ghost.dm +++ b/code/_onclick/hud/ghost.dm @@ -46,11 +46,11 @@ . = ..() var/atom/movable/screen/using - using = new /atom/movable/screen/ghost/follow_ghosts() + using = new /atom/movable/screen/ghost/follow_ghosts(null, src) using.screen_loc = ui_ghost_slot2 static_inventory += using - using = new /atom/movable/screen/ghost/reenter_corpse() + using = new /atom/movable/screen/ghost/reenter_corpse(null, src) using.screen_loc = ui_ghost_slot3 static_inventory += using diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index 8065b3caeaf6f..82b202bba304c 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -32,7 +32,7 @@ var/atom/movable/screen/toggle_firemode var/atom/movable/screen/unique_action - var/atom/movable/screen/zone_sel + var/atom/movable/screen/zone_sel/zone_sel var/atom/movable/screen/pull_icon var/atom/movable/screen/throw_icon var/atom/movable/screen/rest_icon diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 3f7de74995864..900722563b447 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -30,7 +30,7 @@ var/has_hidden_gear for(var/gear_slot in hud_data.gear) - inv_box = new /atom/movable/screen/inventory() + inv_box = new /atom/movable/screen/inventory(null, src) inv_box.icon = ui_style inv_box.color = ui_color inv_box.alpha = ui_alpha @@ -48,7 +48,7 @@ static_inventory += inv_box if(has_hidden_gear) - using = new /atom/movable/screen/toggle_inv() + using = new /atom/movable/screen/toggle_inv(null, src) using.icon = ui_style using.color = ui_color using.alpha = ui_alpha @@ -57,7 +57,7 @@ // Draw the attack intent dialogue. if(hud_data.has_a_intent) - using = new /atom/movable/screen/act_intent/corner() + using = new /atom/movable/screen/act_intent/corner(null, src) using.icon_state = owner.a_intent using.alpha = ui_alpha static_inventory += using @@ -66,7 +66,7 @@ if(hud_data.has_m_intent) - using = new /atom/movable/screen/mov_intent() + using = new /atom/movable/screen/mov_intent(null, src) using.icon = ui_style using.icon_state = (owner.m_intent == MOVE_INTENT_RUN ? "running" : "walking") using.color = ui_color @@ -75,7 +75,7 @@ move_intent = using if(hud_data.has_drop) - using = new /atom/movable/screen/drop() + using = new /atom/movable/screen/drop(null, src) using.icon = ui_style using.color = ui_color using.alpha = ui_alpha @@ -83,119 +83,108 @@ if(hud_data.has_hands) - using = new /atom/movable/screen/human/equip + using = new /atom/movable/screen/human/equip(null, src) using.icon = ui_style using.plane = ABOVE_HUD_PLANE using.color = ui_color using.alpha = ui_alpha static_inventory += using - inv_box = new /atom/movable/screen/inventory/hand/right() + inv_box = new /atom/movable/screen/inventory/hand/right(null, src) inv_box.icon = ui_style - if(owner && !owner.hand) //This being 0 or null means the right hand is in use - inv_box.add_overlay("hand_active") inv_box.slot_id = SLOT_R_HAND inv_box.color = ui_color inv_box.alpha = ui_alpha + inv_box.update_icon() r_hand_hud_object = inv_box static_inventory += inv_box - inv_box = new /atom/movable/screen/inventory/hand() + inv_box = new /atom/movable/screen/inventory/hand/left(null, src) inv_box.setDir(EAST) inv_box.icon = ui_style - if(owner?.hand) //This being 1 means the left hand is in use - inv_box.add_overlay("hand_active") inv_box.slot_id = SLOT_L_HAND inv_box.color = ui_color inv_box.alpha = ui_alpha + inv_box.update_icon() l_hand_hud_object = inv_box static_inventory += inv_box - using = new /atom/movable/screen/swap_hand/human() + using = new /atom/movable/screen/swap_hand/human(null, src) using.icon = ui_style using.color = ui_color using.alpha = ui_alpha static_inventory += using - using = new /atom/movable/screen/swap_hand/right() + using = new /atom/movable/screen/swap_hand/right(null, src) using.icon = ui_style using.color = ui_color using.alpha = ui_alpha static_inventory += using if(hud_data.has_resist) - using = new /atom/movable/screen/resist() + using = new /atom/movable/screen/resist(null, src) using.icon = ui_style using.color = ui_color using.alpha = ui_alpha hotkeybuttons += using if(hud_data.has_throw) - throw_icon = new /atom/movable/screen/throw_catch() + throw_icon = new /atom/movable/screen/throw_catch(null, src) throw_icon.icon = ui_style throw_icon.color = ui_color throw_icon.alpha = ui_alpha hotkeybuttons += throw_icon - pull_icon = new /atom/movable/screen/pull() + pull_icon = new /atom/movable/screen/pull(null, src) pull_icon.icon = ui_style pull_icon.update_icon(owner) hotkeybuttons += pull_icon if(hud_data.has_warnings) - oxygen_icon = new /atom/movable/screen/oxygen() + oxygen_icon = new /atom/movable/screen/oxygen(null, src) infodisplay += oxygen_icon - toxin_icon = new /atom/movable/screen() - toxin_icon.icon_state = "tox0" - toxin_icon.name = "toxin" - toxin_icon.screen_loc = ui_toxin + toxin_icon = new /atom/movable/screen/toxin(null, src) infodisplay += toxin_icon - fire_icon = new /atom/movable/screen/fire() + fire_icon = new /atom/movable/screen/fire(null, src) infodisplay += fire_icon - healths = new /atom/movable/screen/healths() + healths = new /atom/movable/screen/healths(null, src) infodisplay += healths - staminas = new + staminas = new /atom/movable/screen/stamina_hud(null, src) infodisplay += staminas if(hud_data.has_pressure) - pressure_icon = new /atom/movable/screen() - pressure_icon.icon_state = "pressure0" - pressure_icon.name = "pressure" - pressure_icon.screen_loc = ui_pressure + pressure_icon = new /atom/movable/screen/pressure(null, src) infodisplay += pressure_icon if(hud_data.has_bodytemp) - bodytemp_icon = new /atom/movable/screen/bodytemp() + bodytemp_icon = new /atom/movable/screen/bodytemp(null, src) infodisplay += bodytemp_icon if(hud_data.has_nutrition) - nutrition_icon = new /atom/movable/screen() - nutrition_icon.icon_state = "nutrition0" - nutrition_icon.name = "nutrition" - nutrition_icon.screen_loc = ui_nutrition + nutrition_icon = new /atom/movable/screen/nutrition(null, src) infodisplay += nutrition_icon - rest_icon = new /atom/movable/screen/rest() + rest_icon = new /atom/movable/screen/rest(null, src) rest_icon.icon = ui_style rest_icon.color = ui_color rest_icon.alpha = ui_alpha - rest_icon.update_icon(owner) + rest_icon.update_icon() static_inventory += rest_icon //squad leader locator - SL_locator = new /atom/movable/screen/SL_locator + SL_locator = new /atom/movable/screen/SL_locator(null, src) infodisplay += SL_locator - zone_sel = new /atom/movable/screen/zone_sel() + zone_sel = new /atom/movable/screen/zone_sel(null, src) zone_sel.icon = ui_style zone_sel.color = ui_color zone_sel.alpha = ui_alpha - zone_sel.update_icon(owner) + zone_sel.set_selected_zone(BODY_ZONE_CHEST, owner) static_inventory += zone_sel diff --git a/code/_onclick/hud/parallax.dm b/code/_onclick/hud/parallax.dm index 55c108e6e6720..8e2b8525b8ac9 100644 --- a/code/_onclick/hud/parallax.dm +++ b/code/_onclick/hud/parallax.dm @@ -7,12 +7,12 @@ if(!length(C.parallax_layers_cached)) C.parallax_layers_cached = list() - C.parallax_layers_cached += new /atom/movable/screen/parallax_layer/layer_1(null, C.view) - C.parallax_layers_cached += new /atom/movable/screen/parallax_layer/layer_2(null, C.view) - C.parallax_layers_cached += new /atom/movable/screen/parallax_layer/planet(null, C.view) + C.parallax_layers_cached += new /atom/movable/screen/parallax_layer/layer_1(null, src, C.view) + C.parallax_layers_cached += new /atom/movable/screen/parallax_layer/layer_2(null, src, C.view) + C.parallax_layers_cached += new /atom/movable/screen/parallax_layer/planet(null, src, C.view) if(SSparallax.random_layer) - C.parallax_layers_cached += new SSparallax.random_layer - C.parallax_layers_cached += new /atom/movable/screen/parallax_layer/layer_3(null, C.view) + C.parallax_layers_cached += new SSparallax.random_layer(null, src, C.view) + C.parallax_layers_cached += new /atom/movable/screen/parallax_layer/layer_3(null, src, C.view) C.parallax_layers = C.parallax_layers_cached.Copy() @@ -238,7 +238,7 @@ mouse_opacity = MOUSE_OPACITY_TRANSPARENT -/atom/movable/screen/parallax_layer/Initialize(mapload, view) +/atom/movable/screen/parallax_layer/Initialize(mapload, datum/hud/hud_owner, view) . = ..() if (!view) view = world.view @@ -289,7 +289,7 @@ /atom/movable/screen/parallax_layer/random/space_gas icon_state = "space_gas" -/atom/movable/screen/parallax_layer/random/space_gas/Initialize(mapload, view) +/atom/movable/screen/parallax_layer/random/space_gas/Initialize(mapload, datum/hud/hud_owner, view) . = ..() src.add_atom_colour(SSparallax.random_parallax_color, ADMIN_COLOUR_PRIORITY) diff --git a/code/_onclick/hud/picture_in_picture.dm b/code/_onclick/hud/picture_in_picture.dm index e5f96dbf3b5a8..3f47c2d6bb27d 100644 --- a/code/_onclick/hud/picture_in_picture.dm +++ b/code/_onclick/hud/picture_in_picture.dm @@ -15,7 +15,7 @@ var/const/max_dimensions = 10 -/atom/movable/screen/movable/pic_in_pic/Initialize(mapload) +/atom/movable/screen/movable/pic_in_pic/Initialize(mapload, datum/hud/hud_owner) . = ..() make_backgrounds() @@ -60,7 +60,7 @@ add_overlay(move_tab) if(!button_x) - button_x = new /atom/movable/screen/component_button(null, src) + button_x = new /atom/movable/screen/component_button(null, null, src) var/mutable_appearance/MA = new /mutable_appearance() MA.name = "close" MA.icon = 'icons/misc/pic_in_pic.dmi' @@ -73,7 +73,7 @@ vis_contents += button_x if(!button_expand) - button_expand = new /atom/movable/screen/component_button(null, src) + button_expand = new /atom/movable/screen/component_button(null, null, src) var/mutable_appearance/MA = new /mutable_appearance() MA.name = "expand" MA.icon = 'icons/misc/pic_in_pic.dmi' @@ -86,7 +86,7 @@ vis_contents += button_expand if(!button_shrink) - button_shrink = new /atom/movable/screen/component_button(null, src) + button_shrink = new /atom/movable/screen/component_button(null, null, src) var/mutable_appearance/MA = new /mutable_appearance() MA.name = "shrink" MA.icon = 'icons/misc/pic_in_pic.dmi' diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm index 94a0e95b7a8cf..9822401ebea53 100644 --- a/code/_onclick/hud/radial.dm +++ b/code/_onclick/hud/radial.dm @@ -125,7 +125,7 @@ GLOBAL_LIST_EMPTY(radial_menus) if(length(elements) < max_elements) var/elements_to_add = max_elements - length(elements) for(var/i in 1 to elements_to_add) //Create all elements - var/atom/movable/screen/radial/slice/new_element = new /atom/movable/screen/radial/slice + var/atom/movable/screen/radial/slice/new_element = new /atom/movable/screen/radial/slice() new_element.tooltips = use_tooltips new_element.parent = src elements += new_element diff --git a/code/_onclick/hud/rendering/plane_master.dm b/code/_onclick/hud/rendering/plane_master.dm index 4b62945149386..1c85b345fa58d 100644 --- a/code/_onclick/hud/rendering/plane_master.dm +++ b/code/_onclick/hud/rendering/plane_master.dm @@ -45,7 +45,7 @@ appearance_flags = PLANE_MASTER render_relay_plane = RENDER_PLANE_GAME -/atom/movable/screen/plane_master/openspace/Initialize(mapload) +/atom/movable/screen/plane_master/openspace/Initialize(mapload, datum/hud/hud_owner) . = ..() add_filter("first_stage_openspace", 1, drop_shadow_filter(color = "#04080FAA", size = -10)) add_filter("second_stage_openspace", 2, drop_shadow_filter(color = "#04080FAA", size = -15)) @@ -118,7 +118,7 @@ mymob.overlay_fullscreen("lighting_backdrop", /atom/movable/screen/fullscreen/lighting_backdrop/backplane) mymob.overlay_fullscreen("lighting_backdrop_lit_secondary", /atom/movable/screen/fullscreen/lighting_backdrop/lit_secondary) -/atom/movable/screen/plane_master/lighting/Initialize(mapload) +/atom/movable/screen/plane_master/lighting/Initialize(mapload, datum/hud/hud_owner) . = ..() add_filter("emissives", 1, alpha_mask_filter(render_source = EMISSIVE_RENDER_TARGET, flags = MASK_INVERSE)) add_filter("object_lighting", 2, alpha_mask_filter(render_source = O_LIGHTING_VISUAL_RENDER_TARGET, flags = MASK_INVERSE)) @@ -133,7 +133,7 @@ render_target = EMISSIVE_RENDER_TARGET render_relay_plane = null -/atom/movable/screen/plane_master/emissive/Initialize(mapload) +/atom/movable/screen/plane_master/emissive/Initialize(mapload, datum/hud/hud_owner) . = ..() add_filter("em_block_masking", 1, color_matrix_filter(GLOB.em_mask_matrix)) diff --git a/code/_onclick/hud/rendering/render_plate.dm b/code/_onclick/hud/rendering/render_plate.dm index d3e67e40f65ec..b4b45b512f996 100644 --- a/code/_onclick/hud/rendering/render_plate.dm +++ b/code/_onclick/hud/rendering/render_plate.dm @@ -40,7 +40,7 @@ plane = RENDER_PLANE_GAME render_relay_plane = RENDER_PLANE_MASTER -/atom/movable/screen/plane_master/rendering_plate/game_world/Initialize(mapload) +/atom/movable/screen/plane_master/rendering_plate/game_world/Initialize(mapload, datum/hud/hud_owner) . = ..() add_filter("displacer", 1, displacement_map_filter(render_source = GRAVITY_PULSE_RENDER_TARGET, size = 10)) diff --git a/code/_onclick/hud/screen_objects/screen_objects.dm b/code/_onclick/hud/screen_objects/screen_objects.dm index 163705af29ae2..c902907b7f7fd 100644 --- a/code/_onclick/hud/screen_objects/screen_objects.dm +++ b/code/_onclick/hud/screen_objects/screen_objects.dm @@ -23,6 +23,11 @@ */ var/del_on_map_removal = TRUE +/atom/movable/screen/Initialize(mapload, datum/hud/hud_owner) + . = ..() + if(hud_owner && istype(hud_owner)) + hud = hud_owner + /atom/movable/screen/Destroy() master = null hud = null @@ -94,15 +99,20 @@ return TRUE /atom/movable/screen/inventory/hand + ///The tag used by this hand, used for activate_hand() + var/hand_tag = "" + +/atom/movable/screen/inventory/hand/left name = "l_hand" icon_state = "hand_l" screen_loc = ui_lhand - var/hand_tag = "l" + hand_tag = "l" -/atom/movable/screen/inventory/hand/update_icon(active = FALSE) - cut_overlays() - if(active) - add_overlay("hand_active") +/atom/movable/screen/inventory/hand/left/update_overlays() + . = ..() + if(!hud?.mymob?.hand) + return + . += "hand_active" /atom/movable/screen/inventory/hand/Click(location, control, params) . = ..() @@ -116,6 +126,12 @@ screen_loc = ui_rhand hand_tag = "r" +/atom/movable/screen/inventory/hand/right/update_overlays() + . = ..() + if(!hud?.mymob || hud.mymob.hand) + return + . += "hand_active" + /atom/movable/screen/close name = "close" layer = ABOVE_HUD_LAYER @@ -168,11 +184,11 @@ usr.toggle_move_intent() -/atom/movable/screen/mov_intent/update_icon(mob/user) - if(!user) +/atom/movable/screen/mov_intent/update_icon_state() + if(!hud?.mymob) return - switch(user.m_intent) + switch(hud.mymob.m_intent) if(MOVE_INTENT_RUN) icon_state = "running" if(MOVE_INTENT_WALK) @@ -193,10 +209,10 @@ var/mob/living/L = usr L.lay_down() -/atom/movable/screen/rest/update_icon(mob/mymob) - if(!isliving(mymob)) +/atom/movable/screen/rest/update_icon_state() + if(!isliving(hud?.mymob)) return - var/mob/living/L = mymob + var/mob/living/L = hud?.mymob icon_state = "act_rest[L.resting ? "0" : ""]" /atom/movable/screen/pull @@ -212,10 +228,10 @@ usr.stop_pulling() -/atom/movable/screen/pull/update_icon(mob/user) - if(!user) +/atom/movable/screen/pull/update_icon_state() + if(!hud?.mymob) return - if(user.pulling) + if(hud.mymob.pulling) icon_state = "pull" else icon_state = "pull0" @@ -370,19 +386,19 @@ return BODY_ZONE_PRECISE_EYES return BODY_ZONE_HEAD -/atom/movable/screen/zone_sel/proc/set_selected_zone(choice, mob/user) +/atom/movable/screen/zone_sel/proc/set_selected_zone(choice = BODY_ZONE_CHEST, mob/user) if(isobserver(user)) return if(choice != selecting) selecting = choice - update_icon(user) + user.zone_selected = selecting + update_icon() return TRUE -/atom/movable/screen/zone_sel/update_icon(mob/user) - cut_overlays() - add_overlay(mutable_appearance('icons/mob/screen/zone_sel.dmi', "[z_prefix][selecting]")) - user.zone_selected = selecting +/atom/movable/screen/zone_sel/update_overlays() + . = ..() + . += mutable_appearance('icons/mob/screen/zone_sel.dmi', "[z_prefix][selecting]") /atom/movable/screen/zone_sel/alien icon = 'icons/mob/screen/alien.dmi' @@ -401,10 +417,24 @@ /atom/movable/screen/stamina_hud icon = 'icons/mob/screen/health.dmi' name = "stamina" - icon_state = "staminaloss0" + icon_state = "stamloss-14" screen_loc = UI_STAMINA mouse_opacity = MOUSE_OPACITY_ICON +/atom/movable/screen/stamina_hud/update_icon_state() + if(!ishuman(hud?.mymob)) + return + var/mob/living/carbon/human/mymob_human = hud.mymob + if(mymob_human.stat == DEAD) + icon_state = "stamloss200" + return + var/relative_stamloss = mymob_human.getStaminaLoss() + if(relative_stamloss < 0 && mymob_human.max_stamina) + relative_stamloss = round(((relative_stamloss * 14) / mymob_human.max_stamina), 1) + else + relative_stamloss = round(((relative_stamloss * 7) / (mymob_human.maxHealth * 2)), 1) + icon_state = "stamloss[relative_stamloss]" + /atom/movable/screen/stamina_hud/Click(location, control, params) if(!isliving(usr)) return @@ -418,7 +448,7 @@ /atom/movable/screen/component_button var/atom/movable/screen/parent -/atom/movable/screen/component_button/Initialize(mapload, atom/movable/screen/parent) +/atom/movable/screen/component_button/Initialize(mapload, datum/hud/hud_owner, atom/movable/screen/parent) . = ..() src.parent = parent @@ -498,18 +528,133 @@ icon_state = "temp0" screen_loc = ui_temp +/atom/movable/screen/bodytemp/update_icon_state() + if(!ishuman(hud?.mymob)) + return + var/mob/living/carbon/human/human_mymob = hud.mymob + if(!human_mymob.species) + switch(human_mymob.bodytemperature) //310.055 optimal body temp + if(370 to INFINITY) + icon_state = "temp4" + if(350 to 370) + icon_state = "temp3" + if(335 to 350) + icon_state = "temp2" + if(320 to 335) + icon_state = "temp1" + if(300 to 320) + icon_state = "temp0" + if(295 to 300) + icon_state = "temp-1" + if(280 to 295) + icon_state = "temp-2" + if(260 to 280) + icon_state = "temp-3" + else + icon_state = "temp-4" + return + + var/temp_step + if(human_mymob.bodytemperature >= human_mymob.species.body_temperature) + temp_step = (human_mymob.species.heat_level_1 - human_mymob.species.body_temperature) / 4 + + if(human_mymob.bodytemperature >= human_mymob.species.heat_level_1) + icon_state = "temp4" + else if(human_mymob.bodytemperature >= human_mymob.species.body_temperature + temp_step * 3) + icon_state = "temp3" + else if(human_mymob.bodytemperature >= human_mymob.species.body_temperature + temp_step * 2) + icon_state = "temp2" + else if(human_mymob.bodytemperature >= human_mymob.species.body_temperature + temp_step * 1) + icon_state = "temp1" + else + icon_state = "temp0" + return + + if(human_mymob.bodytemperature < human_mymob.species.body_temperature) + temp_step = (human_mymob.species.body_temperature - human_mymob.species.cold_level_1)/4 + + if(human_mymob.bodytemperature <= human_mymob.species.cold_level_1) + icon_state = "temp-4" + else if(human_mymob.bodytemperature <= human_mymob.species.body_temperature - temp_step * 3) + icon_state = "temp-3" + else if(human_mymob.bodytemperature <= human_mymob.species.body_temperature - temp_step * 2) + icon_state = "temp-2" + else if(human_mymob.bodytemperature <= human_mymob.species.body_temperature - temp_step * 1) + icon_state = "temp-1" + else + icon_state = "temp0" /atom/movable/screen/oxygen name = "oxygen" icon_state = "oxy0" screen_loc = ui_oxygen +/atom/movable/screen/oxygen/update_icon_state() + if(!ishuman(hud?.mymob)) + return + var/mob/living/carbon/human/human_mymob = hud.mymob + if(human_mymob.hal_screwyhud == 3 || human_mymob.oxygen_alert) + icon_state = "oxy1" + else + icon_state = "oxy0" + +/atom/movable/screen/toxin + name = "toxin" + icon_state = "tox0" + screen_loc = ui_toxin + +/atom/movable/screen/toxin/update_icon_state() + if(!ishuman(hud?.mymob)) + return + var/mob/living/carbon/human/human_mymob = hud.mymob + if(human_mymob.hal_screwyhud == 4) + icon_state = "tox1" + else + icon_state = "tox0" + +/atom/movable/screen/pressure + name = "pressure" + icon_state = "pressure0" + screen_loc = ui_pressure + +/atom/movable/screen/pressure/update_icon_state() + if(!ishuman(hud?.mymob)) + return + var/mob/living/carbon/human/human_mymob = hud.mymob + icon_state = "pressure[human_mymob.pressure_alert]" + +/atom/movable/screen/nutrition + name = "nutrition" + icon_state = "nutrition1" + screen_loc = ui_nutrition + +/atom/movable/screen/nutrition/update_icon_state() + if(!ishuman(hud?.mymob)) + return + var/mob/living/carbon/human/human_mymob = hud.mymob + switch(human_mymob.nutrition) + if(NUTRITION_OVERFED to INFINITY) + icon_state = "nutrition0" + if(NUTRITION_HUNGRY to NUTRITION_OVERFED) //Not-hungry. + icon_state = "nutrition1" //Empty icon. + if(NUTRITION_STARVING to NUTRITION_HUNGRY) + icon_state = "nutrition3" + else + icon_state = "nutrition4" /atom/movable/screen/fire - name = "fire" + name = "body temperature" icon_state = "fire0" screen_loc = ui_fire +/atom/movable/screen/fire/update_icon_state() + if(!ishuman(hud?.mymob)) + return + var/mob/living/carbon/human/human_mymob = hud.mymob + if(human_mymob.fire_alert) + icon_state = "fire[human_mymob.fire_alert]" //fire_alert is either 0 if no alert, 1 for cold and 2 for heat. + else + icon_state = "fire0" /atom/movable/screen/toggle_inv name = "toggle" @@ -547,7 +692,7 @@ ///List of possible screen locs var/static/list/ammo_screen_loc_list = list(ui_ammo1, ui_ammo2, ui_ammo3, ui_ammo4) -/atom/movable/screen/ammo/Initialize(mapload) +/atom/movable/screen/ammo/Initialize(mapload, datum/hud/hud_owner) . = ..() flash_holder = new flash_holder.icon_state = "frame" @@ -643,7 +788,7 @@ deltimer(del_timer) qdel(src) -/atom/movable/screen/arrow/Initialize(mapload) //Self-deletes +/atom/movable/screen/arrow/Initialize(mapload, datum/hud/hud_owner) //Self-deletes . = ..() START_PROCESSING(SSprocessing, src) del_timer = addtimer(CALLBACK(src, PROC_REF(kill_arrow)), duration, TIMER_STOPPABLE) diff --git a/code/_onclick/hud/screen_objects/text_objects.dm b/code/_onclick/hud/screen_objects/text_objects.dm index f717461f715db..3ef7cb80696d2 100644 --- a/code/_onclick/hud/screen_objects/text_objects.dm +++ b/code/_onclick/hud/screen_objects/text_objects.dm @@ -25,6 +25,7 @@ /atom/movable/screen/text/screen_timer/Initialize( mapload, + datum/hud/hud_owner, list/mobs, timer, text, diff --git a/code/_onclick/hud/xeno/hivemind.dm b/code/_onclick/hud/xeno/hivemind.dm index 1bc7fa6bc1225..5d8b0b0ccf2f0 100644 --- a/code/_onclick/hud/xeno/hivemind.dm +++ b/code/_onclick/hud/xeno/hivemind.dm @@ -2,18 +2,18 @@ ..() var/atom/movable/screen/using - using = new /atom/movable/screen/alien/nightvision() + using = new /atom/movable/screen/alien/nightvision(null, src) using.alpha = ui_alpha infodisplay += using - alien_plasma_display = new /atom/movable/screen/alien/plasmadisplay() + alien_plasma_display = new /atom/movable/screen/alien/plasmadisplay(null, src) alien_plasma_display.alpha = ui_alpha infodisplay += alien_plasma_display - healths = new /atom/movable/screen/healths/alien() + healths = new /atom/movable/screen/healths/alien(null, src) healths.alpha = ui_alpha infodisplay += healths - locate_leader = new /atom/movable/screen/alien/queen_locator() + locate_leader = new /atom/movable/screen/alien/queen_locator(null, src) locate_leader.alpha = ui_alpha infodisplay += locate_leader diff --git a/code/_onclick/hud/xeno/larva.dm b/code/_onclick/hud/xeno/larva.dm index abab3d001a75d..1bbbd866ddb38 100644 --- a/code/_onclick/hud/xeno/larva.dm +++ b/code/_onclick/hud/xeno/larva.dm @@ -2,20 +2,20 @@ ..() var/atom/movable/screen/using - using = new /atom/movable/screen/mov_intent/alien() + using = new /atom/movable/screen/mov_intent/alien(null, src) using.alpha = ui_alpha using.icon_state = (owner.m_intent == MOVE_INTENT_RUN ? "running" : "walking") static_inventory += using move_intent = using - using = new /atom/movable/screen/alien/nightvision() + using = new /atom/movable/screen/alien/nightvision(null, src) using.alpha = ui_alpha infodisplay += using - healths = new /atom/movable/screen/healths/alien() + healths = new /atom/movable/screen/healths/alien(null, src) healths.alpha = ui_alpha infodisplay += healths - locate_leader = new /atom/movable/screen/alien/queen_locator() + locate_leader = new /atom/movable/screen/alien/queen_locator(null, src) locate_leader.alpha = ui_alpha infodisplay += locate_leader diff --git a/code/_onclick/hud/xeno/xeno.dm b/code/_onclick/hud/xeno/xeno.dm index efe2f6183c38f..4019123c07976 100644 --- a/code/_onclick/hud/xeno/xeno.dm +++ b/code/_onclick/hud/xeno/xeno.dm @@ -50,87 +50,85 @@ var/atom/movable/screen/using var/atom/movable/screen/inventory/inv_box - using = new /atom/movable/screen/act_intent/corner() + using = new /atom/movable/screen/act_intent/corner(null, src) using.alpha = ui_alpha using.icon_state = owner.a_intent static_inventory += using action_intent = using - using = new /atom/movable/screen/mov_intent/alien() + using = new /atom/movable/screen/mov_intent/alien(null, src) using.alpha = ui_alpha using.icon_state = (owner.m_intent == MOVE_INTENT_RUN ? "running" : "walking") static_inventory += using move_intent = using - using = new /atom/movable/screen/drop() + using = new /atom/movable/screen/drop(null, src) using.icon = 'icons/mob/screen/alien.dmi' using.alpha = ui_alpha static_inventory += using - inv_box = new /atom/movable/screen/inventory/hand/right() + inv_box = new /atom/movable/screen/inventory/hand/right(null, src) inv_box.icon = 'icons/mob/screen/alien.dmi' using.alpha = ui_alpha - if(owner && !owner.hand) //This being 0 or null means the right hand is in use - using.add_overlay("hand_active") inv_box.slot_id = SLOT_R_HAND + inv_box.update_icon() r_hand_hud_object = inv_box static_inventory += inv_box - inv_box = new /atom/movable/screen/inventory/hand() + inv_box = new /atom/movable/screen/inventory/hand/left(null, src) inv_box.icon = 'icons/mob/screen/alien.dmi' using.alpha = ui_alpha - if(owner?.hand) //This being 1 means the left hand is in use - inv_box.add_overlay("hand_active") inv_box.slot_id = SLOT_L_HAND + inv_box.update_icon() l_hand_hud_object = inv_box static_inventory += inv_box - using = new /atom/movable/screen/swap_hand() + using = new /atom/movable/screen/swap_hand(null, src) using.icon = 'icons/mob/screen/alien.dmi' using.alpha = ui_alpha static_inventory += using - using = new /atom/movable/screen/swap_hand/right() + using = new /atom/movable/screen/swap_hand/right(null, src) using.icon = 'icons/mob/screen/alien.dmi' using.alpha = ui_alpha static_inventory += using - using = new /atom/movable/screen/resist() + using = new /atom/movable/screen/resist(null, src) using.icon = 'icons/mob/screen/alien.dmi' using.screen_loc = ui_above_movement using.alpha = ui_alpha hotkeybuttons += using - throw_icon = new /atom/movable/screen/throw_catch() + throw_icon = new /atom/movable/screen/throw_catch(null, src) throw_icon.icon = 'icons/mob/screen/alien.dmi' throw_icon.alpha = ui_alpha hotkeybuttons += throw_icon - healths = new /atom/movable/screen/healths/alien() + healths = new /atom/movable/screen/healths/alien(null, src) healths.alpha = ui_alpha infodisplay += healths - using = new /atom/movable/screen/alien/nightvision() + using = new /atom/movable/screen/alien/nightvision(null, src) using.alpha = ui_alpha infodisplay += using - alien_plasma_display = new /atom/movable/screen/alien/plasmadisplay() + alien_plasma_display = new /atom/movable/screen/alien/plasmadisplay(null, src) alien_plasma_display.alpha = ui_alpha infodisplay += alien_plasma_display - locate_leader = new /atom/movable/screen/alien/queen_locator() + locate_leader = new /atom/movable/screen/alien/queen_locator(null, src) locate_leader.alpha = ui_alpha infodisplay += locate_leader - pull_icon = new /atom/movable/screen/pull() + pull_icon = new /atom/movable/screen/pull(null, src) pull_icon.icon = 'icons/mob/screen/alien.dmi' pull_icon.screen_loc = ui_above_movement pull_icon.alpha = ui_alpha - pull_icon.update_icon(owner) + pull_icon.update_icon() hotkeybuttons += pull_icon - zone_sel = new /atom/movable/screen/zone_sel/alien() + zone_sel = new /atom/movable/screen/zone_sel/alien(null, src) zone_sel.update_icon(owner) static_inventory += zone_sel diff --git a/code/controllers/subsystem/minimaps.dm b/code/controllers/subsystem/minimaps.dm index 0c3d9135777f7..8a7a28a5389c0 100644 --- a/code/controllers/subsystem/minimaps.dm +++ b/code/controllers/subsystem/minimaps.dm @@ -353,7 +353,7 @@ SUBSYSTEM_DEF(minimaps) var/hash = "[zlevel]-[flags]" if(hashed_minimaps[hash]) return hashed_minimaps[hash] - var/atom/movable/screen/minimap/map = new(null, zlevel, flags) + var/atom/movable/screen/minimap/map = new(null, null, zlevel, flags) if (!map.icon) //Don't wanna save an unusable minimap for a z-level. CRASH("Empty and unusable minimap generated for '[zlevel]-[flags]'") //Can be caused by atoms calling this proc before minimap subsystem initializing. hashed_minimaps[hash] = map @@ -381,7 +381,7 @@ SUBSYSTEM_DEF(minimaps) ///assoc list of mob choices by clicking on coords. only exists fleetingly for the wait loop in [/proc/get_coords_from_click] var/list/mob/choices_by_mob -/atom/movable/screen/minimap/Initialize(mapload, target, flags) +/atom/movable/screen/minimap/Initialize(mapload, datum/hud/hud_owner, target, flags) . = ..() if(!SSminimaps.minimaps_by_z["[target]"]) return diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index c4587bf9e5847..b8492f724f476 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -426,6 +426,7 @@ return ..() /datum/status_effect/spacefreeze + alert_type = /atom/movable/screen/alert/status_effect/spacefreeze id = "spacefreeze" /datum/status_effect/spacefreeze/on_creation(mob/living/new_owner) @@ -820,3 +821,8 @@ scale = generator(GEN_VECTOR, list(0.6, 0.6), list(1, 1), NORMAL_RAND) friction = -0.05 color = "#818181" + +/atom/movable/screen/alert/status_effect/spacefreeze + name = "Freezing" + desc = "Space is very very cold, who would've thought?" + icon_state = "cold3" diff --git a/code/game/objects/items/storage/storage.dm b/code/game/objects/items/storage/storage.dm index 03d34fead0a5c..90a8b66cfa6c5 100644 --- a/code/game/objects/items/storage/storage.dm +++ b/code/game/objects/items/storage/storage.dm @@ -671,7 +671,7 @@ if(!allow_drawing_method) verbs -= /obj/item/storage/verb/toggle_draw_mode - boxes = new + boxes = new() boxes.name = "storage" boxes.master = src boxes.icon_state = "block" @@ -679,21 +679,21 @@ boxes.layer = HUD_LAYER boxes.plane = HUD_PLANE - storage_start = new /atom/movable/screen/storage( ) + storage_start = new /atom/movable/screen/storage() storage_start.name = "storage" storage_start.master = src storage_start.icon_state = "storage_start" storage_start.screen_loc = "7,7 to 10,8" storage_start.layer = HUD_LAYER storage_start.plane = HUD_PLANE - storage_continue = new /atom/movable/screen/storage( ) + storage_continue = new /atom/movable/screen/storage() storage_continue.name = "storage" storage_continue.master = src storage_continue.icon_state = "storage_continue" storage_continue.screen_loc = "7,7 to 10,8" storage_continue.layer = HUD_LAYER storage_continue.plane = HUD_PLANE - storage_end = new /atom/movable/screen/storage( ) + storage_end = new /atom/movable/screen/storage() storage_end.name = "storage" storage_end.master = src storage_end.icon_state = "storage_end" @@ -701,20 +701,20 @@ storage_end.layer = HUD_LAYER storage_end.plane = HUD_PLANE - stored_start = new /obj //we just need these to hold the icon + stored_start = new /obj() //we just need these to hold the icon stored_start.icon_state = "stored_start" stored_start.layer = HUD_LAYER stored_start.plane = HUD_PLANE - stored_continue = new /obj + stored_continue = new /obj() stored_continue.icon_state = "stored_continue" stored_continue.layer = HUD_LAYER stored_continue.plane = HUD_PLANE - stored_end = new /obj + stored_end = new /obj() stored_end.icon_state = "stored_end" stored_end.layer = HUD_LAYER stored_end.plane = HUD_PLANE - closer = new + closer = new() closer.master = src /obj/item/storage/Destroy() diff --git a/code/modules/buildmode/buildmode.dm b/code/modules/buildmode/buildmode.dm index 3701b3b7879b1..1e92fb8c0f515 100644 --- a/code/modules/buildmode/buildmode.dm +++ b/code/modules/buildmode/buildmode.dm @@ -153,7 +153,7 @@ /datum/buildmode/proc/change_dir(newdir) build_dir = newdir close_dirswitch() - dirbutton.update_icon() + dirbutton.update_dir() return TRUE diff --git a/code/modules/buildmode/buttons.dm b/code/modules/buildmode/buttons.dm index 884828f44d358..cfe90e8396a64 100644 --- a/code/modules/buildmode/buttons.dm +++ b/code/modules/buildmode/buttons.dm @@ -38,7 +38,7 @@ return TRUE -/atom/movable/screen/buildmode/mode/update_icon() +/atom/movable/screen/buildmode/mode/update_icon_state() icon_state = bd.mode.get_button_iconstate() @@ -58,12 +58,11 @@ screen_loc = "NORTH,WEST+2" name = "Change Dir" - -/atom/movable/screen/buildmode/bdir/update_icon() +///Updates the direction of the buildmode +/atom/movable/screen/buildmode/bdir/proc/update_dir() dir = bd.build_dir - /atom/movable/screen/buildmode/bdir/Click() bd.toggle_dirswitch() update_icon() diff --git a/code/modules/mob/living/carbon/human/life/handle_regular_hud_updates.dm b/code/modules/mob/living/carbon/human/life/handle_regular_hud_updates.dm index f271c9db7f385..5a0b801e57f20 100644 --- a/code/modules/mob/living/carbon/human/life/handle_regular_hud_updates.dm +++ b/code/modules/mob/living/carbon/human/life/handle_regular_hud_updates.dm @@ -12,19 +12,6 @@ clear_fullscreen("brute") clear_fullscreen("oxy") clear_fullscreen("crit") - - if(!hud_used) - return - if(hud_used.nutrition_icon) - hud_used.nutrition_icon.icon_state = "nutrition1" - if(hud_used.toxin_icon) - hud_used.toxin_icon.icon_state = "tox0" - if(hud_used.oxygen_icon) - hud_used.oxygen_icon.icon_state = "oxy0" - if(hud_used.fire_icon) - hud_used.fire_icon.icon_state = "fire0" - if(hud_used.bodytemp_icon) - hud_used.bodytemp_icon.icon_state = "temp0" return if(stat == UNCONSCIOUS && health <= get_crit_threshold()) @@ -102,86 +89,17 @@ if(!hud_used) return - if(hud_used.nutrition_icon) - switch(nutrition) - if(NUTRITION_OVERFED to INFINITY) - hud_used.nutrition_icon.icon_state = "nutrition0" - if(NUTRITION_HUNGRY to NUTRITION_OVERFED) //Not-hungry. - hud_used.nutrition_icon.icon_state = "nutrition1" //Empty icon. - if(NUTRITION_STARVING to NUTRITION_HUNGRY) - hud_used.nutrition_icon.icon_state = "nutrition3" - else - hud_used.nutrition_icon.icon_state = "nutrition4" - - if(hud_used.pressure_icon) - hud_used.pressure_icon.icon_state = "pressure[pressure_alert]" - - if(hud_used.toxin_icon) - if(hal_screwyhud == 4) - hud_used.toxin_icon.icon_state = "tox1" - else - hud_used.toxin_icon.icon_state = "tox0" - if(hud_used.oxygen_icon) - if(hal_screwyhud == 3 || oxygen_alert) - hud_used.oxygen_icon.icon_state = "oxy1" - else - hud_used.oxygen_icon.icon_state = "oxy0" - if(hud_used.fire_icon) - if(fire_alert) - hud_used.fire_icon.icon_state = "fire[fire_alert]" //fire_alert is either 0 if no alert, 1 for cold and 2 for heat. - else - hud_used.fire_icon.icon_state = "fire0" - - if(hud_used.bodytemp_icon) - if(!species) - switch(bodytemperature) //310.055 optimal body temp - if(370 to INFINITY) - hud_used.bodytemp_icon.icon_state = "temp4" - if(350 to 370) - hud_used.bodytemp_icon.icon_state = "temp3" - if(335 to 350) - hud_used.bodytemp_icon.icon_state = "temp2" - if(320 to 335) - hud_used.bodytemp_icon.icon_state = "temp1" - if(300 to 320) - hud_used.bodytemp_icon.icon_state = "temp0" - if(295 to 300) - hud_used.bodytemp_icon.icon_state = "temp-1" - if(280 to 295) - hud_used.bodytemp_icon.icon_state = "temp-2" - if(260 to 280) - hud_used.bodytemp_icon.icon_state = "temp-3" - else - hud_used.bodytemp_icon.icon_state = "temp-4" - else - var/temp_step - if(bodytemperature >= species.body_temperature) - temp_step = (species.heat_level_1 - species.body_temperature) / 4 - - if(bodytemperature >= species.heat_level_1) - hud_used.bodytemp_icon.icon_state = "temp4" - else if(bodytemperature >= species.body_temperature + temp_step * 3) - hud_used.bodytemp_icon.icon_state = "temp3" - else if(bodytemperature >= species.body_temperature + temp_step * 2) - hud_used.bodytemp_icon.icon_state = "temp2" - else if(bodytemperature >= species.body_temperature + temp_step * 1) - hud_used.bodytemp_icon.icon_state = "temp1" - else - hud_used.bodytemp_icon.icon_state = "temp0" - - else if(bodytemperature < species.body_temperature) - temp_step = (species.body_temperature - species.cold_level_1)/4 - - if(bodytemperature <= species.cold_level_1) - hud_used.bodytemp_icon.icon_state = "temp-4" - else if(bodytemperature <= species.body_temperature - temp_step * 3) - hud_used.bodytemp_icon.icon_state = "temp-3" - else if(bodytemperature <= species.body_temperature - temp_step * 2) - hud_used.bodytemp_icon.icon_state = "temp-2" - else if(bodytemperature <= species.body_temperature - temp_step * 1) - hud_used.bodytemp_icon.icon_state = "temp-1" - else - hud_used.bodytemp_icon.icon_state = "temp0" + hud_used?.nutrition_icon?.update_icon() + + hud_used?.pressure_icon?.update_icon() + + hud_used?.toxin_icon?.update_icon() + + hud_used?.oxygen_icon?.update_icon() + + hud_used?.fire_icon?.update_icon() + + hud_used?.bodytemp_icon?.update_icon() /mob/living/carbon/human/handle_healths_hud_updates() diff --git a/code/modules/mob/living/carbon/xenomorph/hive_datum.dm b/code/modules/mob/living/carbon/xenomorph/hive_datum.dm index 313219fecb5f0..774f303f8582b 100644 --- a/code/modules/mob/living/carbon/xenomorph/hive_datum.dm +++ b/code/modules/mob/living/carbon/xenomorph/hive_datum.dm @@ -543,7 +543,7 @@ var/obj/machinery/nuclearbomb/nuke = thing if(!nuke.timer) CRASH("hive_status's setup_nuke_hud_timer called with invalid nuke object") - nuke_hud_timer = new(null, get_all_xenos() , nuke.timer, "Nuke ACTIVE: ${timer}") + nuke_hud_timer = new(null, null, get_all_xenos() , nuke.timer, "Nuke ACTIVE: ${timer}") /datum/hive_status/Destroy(force, ...) . = ..() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 8d840e1f8a0c3..2278d4f405753 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -803,12 +803,8 @@ below 100 is not dizzy hand = !hand SEND_SIGNAL(src, COMSIG_CARBON_SWAPPED_HANDS) if(hud_used.l_hand_hud_object && hud_used.r_hand_hud_object) - hud_used.l_hand_hud_object.update_icon(hand) - hud_used.r_hand_hud_object.update_icon(!hand) - if(hand) //This being 1 means the left hand is in use - hud_used.l_hand_hud_object.add_overlay("hand_active") - else - hud_used.r_hand_hud_object.add_overlay("hand_active") + hud_used.l_hand_hud_object.update_icon() + hud_used.r_hand_hud_object.update_icon() return ///Swap to the hand clicked on the hud diff --git a/code/modules/mob/living/living_health_procs.dm b/code/modules/mob/living/living_health_procs.dm index e0a69c6a8bb5e..d9b62099939f9 100644 --- a/code/modules/mob/living/living_health_procs.dm +++ b/code/modules/mob/living/living_health_procs.dm @@ -92,6 +92,7 @@ updateStamina(feedback) /mob/living/proc/updateStamina(feedback = TRUE) + hud_used?.staminas?.update_icon() if(staminaloss < max(health * 1.5,0) || !(COOLDOWN_CHECK(src, last_stamina_exhaustion))) //If we're on cooldown for stamina exhaustion, don't bother return @@ -105,21 +106,6 @@ adjust_blurriness(STAMINA_EXHAUSTION_DEBUFF_STACKS) COOLDOWN_START(src, last_stamina_exhaustion, LIVING_STAMINA_EXHAUSTION_COOLDOWN - (skills.getRating(SKILL_STAMINA) * STAMINA_SKILL_COOLDOWN_MOD)) //set the cooldown. - -/mob/living/carbon/human/updateStamina(feedback = TRUE) - . = ..() - if(!hud_used?.staminas) - return - if(stat == DEAD) - hud_used.staminas.icon_state = "stamloss200" - return - var/relative_stamloss = getStaminaLoss() - if(relative_stamloss < 0 && max_stamina) - relative_stamloss = round(((relative_stamloss * 14) / max_stamina), 1) - else - relative_stamloss = round(((relative_stamloss * 7) / (maxHealth * 2)), 1) - hud_used.staminas.icon_state = "stamloss[relative_stamloss]" - /// Adds an entry to our stamina_regen_modifiers and updates stamina_regen_multiplier /mob/living/proc/add_stamina_regen_modifier(mod_name, mod_value) if(stamina_regen_modifiers[mod_name] == mod_value) diff --git a/code/modules/mob/living/living_verbs.dm b/code/modules/mob/living/living_verbs.dm index d2e1de3338f06..06b1cf1adfd51 100644 --- a/code/modules/mob/living/living_verbs.dm +++ b/code/modules/mob/living/living_verbs.dm @@ -45,11 +45,7 @@ if(!silent) to_chat(src, span_notice("You get up.")) SEND_SIGNAL(src, COMSIG_XENOMORPH_UNREST) - update_resting() - - -/mob/living/proc/update_resting() - hud_used?.rest_icon?.update_icon(src) + hud_used?.rest_icon?.update_icon() /mob/living/verb/ghost() diff --git a/code/modules/mob/living/silicon/ai/multicam.dm b/code/modules/mob/living/silicon/ai/multicam.dm index 680244b23c8fd..652c6bb19198f 100644 --- a/code/modules/mob/living/silicon/ai/multicam.dm +++ b/code/modules/mob/living/silicon/ai/multicam.dm @@ -222,7 +222,7 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room) if(!silent) to_chat(src, span_warning("Cannot place more than [max_multicams] multicamera windows.")) return - var/atom/movable/screen/movable/pic_in_pic/ai/C = new /atom/movable/screen/movable/pic_in_pic/ai() + var/atom/movable/screen/movable/pic_in_pic/ai/C = new() C.set_view_size(3, 3, FALSE) C.set_view_center(get_turf(eyeobj)) C.set_ai(src) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index c0aa95f9c50ec..6a305e14febe4 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -357,7 +357,7 @@ if(hud_used?.static_inventory) for(var/atom/movable/screen/mov_intent/selector in hud_used.static_inventory) - selector.update_icon(src) + selector.update_icon() return TRUE diff --git a/code/modules/screen_alert/misc_alert.dm b/code/modules/screen_alert/misc_alert.dm index 9f206bfbecd3d..0a28b80b24401 100644 --- a/code/modules/screen_alert/misc_alert.dm +++ b/code/modules/screen_alert/misc_alert.dm @@ -17,7 +17,7 @@ ///x offset of image var/image_to_play_offset_x = 0 -/atom/movable/screen/text/screen_text/picture/Initialize(mapload) +/atom/movable/screen/text/screen_text/picture/Initialize(mapload, datum/hud/hud_owner) . = ..() overlays += image('icons/UI_Icons/screen_alert_images.dmi', icon_state = image_to_play, pixel_y = image_to_play_offset_y, pixel_x = image_to_play_offset_x) diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm index 0883f6de7c386..a965228207c86 100644 --- a/code/modules/vehicles/mecha/_mecha.dm +++ b/code/modules/vehicles/mecha/_mecha.dm @@ -196,7 +196,7 @@ /obj/vehicle/sealed/mecha/Initialize(mapload) . = ..() - ui_view = new(null, src) + ui_view = new(null, null, src) if(enclosed) internal_tank = new (src) RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(play_stepsound)) diff --git a/code/modules/vehicles/mecha/combat/greyscale/greyscale_constructor.dm b/code/modules/vehicles/mecha/combat/greyscale/greyscale_constructor.dm index cb8067cda5551..468144b850d5c 100644 --- a/code/modules/vehicles/mecha/combat/greyscale/greyscale_constructor.dm +++ b/code/modules/vehicles/mecha/combat/greyscale/greyscale_constructor.dm @@ -71,7 +71,7 @@ GLOBAL_LIST_INIT(greyscale_weapons_data, generate_greyscale_weapons_data()) ///list of plane masters to apply to owners var/list/plane_masters = list() -/atom/movable/screen/mech_builder_view/Initialize(mapload) +/atom/movable/screen/mech_builder_view/Initialize(mapload, datum/hud/hud_owner) . = ..() assigned_map = "mech_preview_[REF(src)]" set_position(1, 1) diff --git a/code/modules/vehicles/mecha/mecha_ui.dm b/code/modules/vehicles/mecha/mecha_ui.dm index c3b44719b8311..5091dbc93f09b 100644 --- a/code/modules/vehicles/mecha/mecha_ui.dm +++ b/code/modules/vehicles/mecha/mecha_ui.dm @@ -10,7 +10,7 @@ ///list of plane masters to apply to owners var/list/plane_masters = list() -/atom/movable/screen/mech_view/Initialize(mapload, obj/vehicle/sealed/mecha/newowner) +/atom/movable/screen/mech_view/Initialize(mapload, datum/hud/hud_owner, obj/vehicle/sealed/mecha/newowner) . = ..() owner = newowner assigned_map = "mech_view_[REF(owner)]" From 539bac7b1fc55f7472cd4b51158812aa75589410 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 7 Jan 2024 04:17:47 +0000 Subject: [PATCH 03/82] Automatic changelog for PR #14757 [ci skip] --- html/changelogs/AutoChangeLog-pr-14757.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14757.yml diff --git a/html/changelogs/AutoChangeLog-pr-14757.yml b/html/changelogs/AutoChangeLog-pr-14757.yml new file mode 100644 index 0000000000000..f7913953a91c8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14757.yml @@ -0,0 +1,4 @@ +author: "ivanmixo" +delete-after: True +changes: + - refactor: "Cleaned up hud icons and overlays" \ No newline at end of file From 8a11d2cb9c0f002359b22d0dd944635833d3ba56 Mon Sep 17 00:00:00 2001 From: Pariah919 <46353991+Pariah919@users.noreply.github.com> Date: Sun, 7 Jan 2024 00:29:08 -0600 Subject: [PATCH 04/82] Removes Tangle grenades from Marine access. (#14736) --- code/game/objects/machinery/vending/marine_vending.dm | 2 -- code/modules/reqs/supplypacks.dm | 7 ------- 2 files changed, 9 deletions(-) diff --git a/code/game/objects/machinery/vending/marine_vending.dm b/code/game/objects/machinery/vending/marine_vending.dm index 69068c1ce502d..6ef43ebda2880 100644 --- a/code/game/objects/machinery/vending/marine_vending.dm +++ b/code/game/objects/machinery/vending/marine_vending.dm @@ -117,7 +117,6 @@ /obj/item/explosive/grenade/smokebomb = 25, /obj/item/explosive/grenade/smokebomb/cloak = 25, /obj/item/explosive/grenade/sticky/cloaker = 10, - /obj/item/explosive/grenade/smokebomb/drain = 10, /obj/item/explosive/grenade/mirage = 100, /obj/item/storage/box/m94 = 200, /obj/item/storage/box/m94/cas = 30, @@ -324,7 +323,6 @@ /obj/item/explosive/grenade/sticky = 125, /obj/item/explosive/grenade/incendiary = 50, /obj/item/explosive/grenade/smokebomb/cloak = 25, - /obj/item/explosive/grenade/smokebomb/drain = 10, /obj/item/explosive/grenade/mirage = 100, /obj/item/storage/box/m94 = 200, /obj/item/storage/box/m94/cas = 50, diff --git a/code/modules/reqs/supplypacks.dm b/code/modules/reqs/supplypacks.dm index f645285fb1511..24a9535e5f238 100644 --- a/code/modules/reqs/supplypacks.dm +++ b/code/modules/reqs/supplypacks.dm @@ -870,13 +870,6 @@ EXPLOSIVES contains = list(/obj/item/storage/box/visual/grenade/phosphorus) cost = 700 -/datum/supply_packs/explosives/explosives_plasmadrain - name = "M40-T gas grenade box crate" - notes = "Contains 25 grenades" - contains = list(/obj/item/storage/box/visual/grenade/drain) - cost = 700 - available_against_xeno_only = TRUE - /datum/supply_packs/explosives/plastique name = "C4 plastic explosive" contains = list(/obj/item/explosive/plastique) From a703b746feecc4d943bbc737c2c7135426d65d32 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 7 Jan 2024 06:29:25 +0000 Subject: [PATCH 05/82] Automatic changelog for PR #14736 [ci skip] --- html/changelogs/AutoChangeLog-pr-14736.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14736.yml diff --git a/html/changelogs/AutoChangeLog-pr-14736.yml b/html/changelogs/AutoChangeLog-pr-14736.yml new file mode 100644 index 0000000000000..1591487278dce --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14736.yml @@ -0,0 +1,4 @@ +author: "Pariah919" +delete-after: True +changes: + - balance: "Marines can no longer access handheld tanglefoot grenades, all other forms of tangle (AGLS, Mortar, etc) are untouched." \ No newline at end of file From 01e155a3b6e33fa9ed824bb477247587bc0590f3 Mon Sep 17 00:00:00 2001 From: Pariah919 <46353991+Pariah919@users.noreply.github.com> Date: Sun, 7 Jan 2024 00:29:46 -0600 Subject: [PATCH 06/82] Laser pouch can no longer be used as a magazine for Lasguns or Tesla guns. (#14695) --- code/modules/projectiles/guns/energy.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 4f662d299dd51..ab9aab2abcfd9 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -276,7 +276,7 @@ damage_falloff_mult = 0.25 fire_delay = 2 default_ammo_type = /obj/item/cell/lasgun/lasrifle - allowed_ammo_types = list(/obj/item/cell/lasgun/lasrifle, /obj/item/cell/lasgun/volkite/powerpack/marine, /obj/item/cell/lasgun/lasrifle/recharger) + allowed_ammo_types = list(/obj/item/cell/lasgun/lasrifle, /obj/item/cell/lasgun/lasrifle/recharger) /// A list of available modes this gun can switch to var/list/datum/lasrifle/mode_list = list() /// The index of the current mode selected, used for non radial mode switches @@ -372,7 +372,7 @@ flags_equip_slot = ITEM_SLOT_BACK w_class = WEIGHT_CLASS_BULKY default_ammo_type = /obj/item/cell/lasgun/lasrifle - allowed_ammo_types = list(/obj/item/cell/lasgun/lasrifle, /obj/item/cell/lasgun/volkite/powerpack/marine) + allowed_ammo_types = list(/obj/item/cell/lasgun/lasrifle) flags_gun_features = GUN_WIELDED_FIRING_ONLY|GUN_ENERGY|GUN_AMMO_COUNTER|GUN_AMMO_COUNT_BY_SHOTS_REMAINING|GUN_NO_PITCH_SHIFT_NEAR_EMPTY|GUN_SHOWS_AMMO_REMAINING muzzle_flash_color = COLOR_TESLA_BLUE ammo_level_icon = "tesla" From 0768367b005842d08648b0f5505e9112af6c19f6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 7 Jan 2024 06:30:03 +0000 Subject: [PATCH 07/82] Automatic changelog for PR #14695 [ci skip] --- html/changelogs/AutoChangeLog-pr-14695.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14695.yml diff --git a/html/changelogs/AutoChangeLog-pr-14695.yml b/html/changelogs/AutoChangeLog-pr-14695.yml new file mode 100644 index 0000000000000..ede9f2e017a5e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14695.yml @@ -0,0 +1,4 @@ +author: "Pariah919" +delete-after: True +changes: + - balance: "You can no longer attach lasguns nor tesla to lasgun pouches for magazine use." \ No newline at end of file From 9d64b30591f9bba260fa9beb4e2ceb12bb80bdb5 Mon Sep 17 00:00:00 2001 From: yyzsong <65325586+yyzsong@users.noreply.github.com> Date: Sun, 7 Jan 2024 01:05:41 -0800 Subject: [PATCH 08/82] Ravager and Gorger are now pepperball immune (#14759) --- code/modules/projectiles/ammo_datums.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/projectiles/ammo_datums.dm b/code/modules/projectiles/ammo_datums.dm index 7c47b31e9d477..83143f0e8c19c 100644 --- a/code/modules/projectiles/ammo_datums.dm +++ b/code/modules/projectiles/ammo_datums.dm @@ -4082,8 +4082,9 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh /datum/ammo/bullet/pepperball/on_hit_mob(mob/living/victim, obj/projectile/proj) if(isxeno(victim)) var/mob/living/carbon/xenomorph/X = victim - X.use_plasma(drain_multiplier * X.xeno_caste.plasma_max * X.xeno_caste.plasma_regen_limit) - X.use_plasma(plasma_drain) + if(!(X.xeno_caste.caste_flags & CASTE_PLASMADRAIN_IMMUNE)) + X.use_plasma(drain_multiplier * X.xeno_caste.plasma_max * X.xeno_caste.plasma_regen_limit) + X.use_plasma(plasma_drain) /datum/ammo/bullet/pepperball/pepperball_mini damage = 40 From ce045ed9c9df35cbeebefa63d37fcb33cc6ed156 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 7 Jan 2024 09:05:57 +0000 Subject: [PATCH 09/82] Automatic changelog for PR #14759 [ci skip] --- html/changelogs/AutoChangeLog-pr-14759.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14759.yml diff --git a/html/changelogs/AutoChangeLog-pr-14759.yml b/html/changelogs/AutoChangeLog-pr-14759.yml new file mode 100644 index 0000000000000..37ba634c7208c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14759.yml @@ -0,0 +1,4 @@ +author: "yyzsong" +delete-after: True +changes: + - balance: "Ravager, Gorger, and puppeteer will no longer be affected by pepperball" \ No newline at end of file From 0303f13acbf0d7f1b3981b3700c4ad0ceed0dd9e Mon Sep 17 00:00:00 2001 From: Helg2 <93882977+Helg2@users.noreply.github.com> Date: Sun, 7 Jan 2024 11:06:53 +0200 Subject: [PATCH 10/82] Tweaks health in status tab. (#14764) --- code/modules/mob/living/carbon/xenomorph/xenoprocs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xenoprocs.dm b/code/modules/mob/living/carbon/xenomorph/xenoprocs.dm index 82189add11ff2..9dd754e238e87 100644 --- a/code/modules/mob/living/carbon/xenomorph/xenoprocs.dm +++ b/code/modules/mob/living/carbon/xenomorph/xenoprocs.dm @@ -113,7 +113,7 @@ else //Upgrade process finished or impossible . += "Upgrade Progress: (FINISHED)" - . += "Health: [overheal ? "[overheal] + ": ""][health]/[maxHealth]" //Changes with balance scalar, can't just use the caste + . += "Health: [health]/[maxHealth][overheal ? " + [overheal]": ""]" //Changes with balance scalar, can't just use the caste if(xeno_caste.plasma_max > 0) . += "Plasma: [plasma_stored]/[xeno_caste.plasma_max]" From f78f5478ded585e07b2e048fb35bf1081d81a7ce Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 7 Jan 2024 09:07:12 +0000 Subject: [PATCH 11/82] Automatic changelog for PR #14764 [ci skip] --- html/changelogs/AutoChangeLog-pr-14764.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14764.yml diff --git a/html/changelogs/AutoChangeLog-pr-14764.yml b/html/changelogs/AutoChangeLog-pr-14764.yml new file mode 100644 index 0000000000000..7186ca8433287 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14764.yml @@ -0,0 +1,4 @@ +author: "Helg2" +delete-after: True +changes: + - qol: "Overheal is now located after the main health in status tab." \ No newline at end of file From e2034dc4588dc45930c328102dc90b971001372c Mon Sep 17 00:00:00 2001 From: Pariah919 <46353991+Pariah919@users.noreply.github.com> Date: Sun, 7 Jan 2024 03:09:10 -0600 Subject: [PATCH 12/82] CAS Munitions Revamp, Addition of Bombs. (#14738) --- _maps/map_files/Arachne/TGS_Arachne.dmm | 19 +- .../Pillar_of_Spring/TGS_Pillar_of_Spring.dmm | 30 ++- _maps/map_files/Sulaco/TGS_Sulaco.dmm | 24 +- _maps/map_files/Theseus/TGS_Theseus.dmm | 42 +++- _maps/map_files/debugdalus/tgs_debugdalus.dmm | 25 +- code/__DEFINES/dropship_equipment.dm | 2 + code/game/objects/effects/overlays.dm | 17 ++ code/game/objects/structures/dropship_ammo.dm | 228 ++++++++++++++---- .../objects/structures/dropship_equipment.dm | 40 ++- icons/Marine/mainship_props.dmi | Bin 153290 -> 158342 bytes icons/Marine/mainship_props64.dmi | Bin 51765 -> 64606 bytes icons/effects/lases.dmi | Bin 9225 -> 10762 bytes sound/voice/plane_vws/shot_bomb.ogg | Bin 0 -> 6826 bytes 13 files changed, 345 insertions(+), 82 deletions(-) create mode 100644 sound/voice/plane_vws/shot_bomb.ogg diff --git a/_maps/map_files/Arachne/TGS_Arachne.dmm b/_maps/map_files/Arachne/TGS_Arachne.dmm index c210174cb5e82..ed50469f1c5be 100644 --- a/_maps/map_files/Arachne/TGS_Arachne.dmm +++ b/_maps/map_files/Arachne/TGS_Arachne.dmm @@ -7040,6 +7040,7 @@ /area/mainship/medical/lounge) "fZU" = ( /obj/machinery/light/mainship, +/obj/structure/dropship_equipment/cas/weapon/bomblet_pod, /turf/open/floor/mainship/cargo/arrow{ dir = 1 }, @@ -21872,6 +21873,10 @@ dir = 8 }, /area/mainship/medical/upper_medical) +"rZa" = ( +/obj/structure/ship_ammo/cas/bomblet, +/turf/open/floor/plating, +/area/mainship/hallways/hangar) "rZc" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /obj/machinery/light/mainship{ @@ -22702,6 +22707,10 @@ dir = 1 }, /area/mainship/hallways/port_ert) +"sLf" = ( +/obj/structure/dropship_equipment/cas/weapon/bomb_pod, +/turf/open/floor/mainship/red, +/area/mainship/hallways/hangar) "sLm" = ( /obj/machinery/flasher{ id = "Containment Cell 3"; @@ -26963,6 +26972,10 @@ }, /turf/open/floor/mainship/floor, /area/mainship/engineering/starboard_atmos) +"wzy" = ( +/obj/structure/ship_ammo/cas/bomb/fourhundred, +/turf/open/floor/plating, +/area/mainship/hallways/hangar) "wzR" = ( /obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -38572,7 +38585,7 @@ rIp twS hIO smT -ngt +sLf hnt hfk uJJ @@ -40103,7 +40116,7 @@ oUe oHG nTG mGC -mGC +wzy mGC jfL jcy @@ -40205,7 +40218,7 @@ oUe oHG nTG mGC -mGC +rZa mGC mGC mtP diff --git a/_maps/map_files/Pillar_of_Spring/TGS_Pillar_of_Spring.dmm b/_maps/map_files/Pillar_of_Spring/TGS_Pillar_of_Spring.dmm index 1ff8b96b4fad5..bcec3c834af11 100644 --- a/_maps/map_files/Pillar_of_Spring/TGS_Pillar_of_Spring.dmm +++ b/_maps/map_files/Pillar_of_Spring/TGS_Pillar_of_Spring.dmm @@ -667,6 +667,13 @@ /obj/structure/bed/chair/wood/wings, /turf/open/floor/wood, /area/mainship/living/numbertwobunks) +"aPM" = ( +/obj/effect/turf_decal/warning_stripes/thin{ + dir = 4 + }, +/obj/structure/ship_ammo/cas/bomb/fourhundred, +/turf/open/floor/mainship/mono, +/area/mainship/hallways/hangar) "aQj" = ( /obj/effect/turf_decal/warning_stripes/thin{ dir = 1 @@ -7149,6 +7156,10 @@ }, /turf/open/floor/mainship/cargo, /area/mainship/hallways/hangar/droppod) +"jhO" = ( +/obj/structure/dropship_equipment/cas/weapon/bomb_pod, +/turf/open/floor/mainship/floor, +/area/mainship/hallways/hangar) "jiE" = ( /obj/effect/turf_decal/warning_stripes/thin{ dir = 9 @@ -12012,6 +12023,10 @@ }, /turf/open/floor/grass, /area/mainship/living/starboard_garden) +"pha" = ( +/obj/structure/ship_ammo/cas/bomblet, +/turf/open/floor/mainship/mono, +/area/mainship/hallways/hangar) "phr" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -15085,6 +15100,13 @@ /obj/structure/closet/firecloset, /turf/open/floor/mainship/cargo, /area/mainship/engineering/lower_engineering) +"sZZ" = ( +/obj/effect/turf_decal/warning_stripes/thin{ + dir = 4 + }, +/obj/structure/dropship_equipment/cas/weapon/bomblet_pod, +/turf/open/floor/mainship/mono, +/area/mainship/hallways/hangar) "tbT" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -52890,7 +52912,7 @@ fwq kcJ fwq dpY -fwq +sZZ tyN wEZ tyN @@ -54693,7 +54715,7 @@ lET tyN rYr tyN -fwq +aPM fwq skU fmN @@ -55203,7 +55225,7 @@ hcF hcF agP hcF -hcF +jhO tyN lvi tyN @@ -55213,7 +55235,7 @@ bFX fPH hEa uzm -dpY +pha dpY dpY lue diff --git a/_maps/map_files/Sulaco/TGS_Sulaco.dmm b/_maps/map_files/Sulaco/TGS_Sulaco.dmm index fbb28c0bc16de..2afc737a26494 100644 --- a/_maps/map_files/Sulaco/TGS_Sulaco.dmm +++ b/_maps/map_files/Sulaco/TGS_Sulaco.dmm @@ -10914,6 +10914,10 @@ /obj/effect/spawner/random/misc/gnome, /turf/open/floor/plating, /area/sulaco/maintenance/lower_maint3) +"dal" = ( +/obj/structure/ship_ammo/cas/bomb/fourhundred, +/turf/open/floor/plating, +/area/sulaco/hangar/cas) "dde" = ( /obj/effect/turf_decal/warning_stripes/thin, /turf/open/floor/prison/bright_clean, @@ -15313,6 +15317,10 @@ /obj/machinery/light/mainship, /turf/open/floor/wood, /area/sulaco/cap_office) +"iNr" = ( +/obj/structure/dropship_equipment/cas/weapon/bomblet_pod, +/turf/open/floor/plating, +/area/sulaco/hangar/cas) "iNC" = ( /obj/structure/ship_ammo/cas/rocket/widowmaker, /turf/open/floor/prison, @@ -16804,6 +16812,10 @@ /obj/machinery/atmospherics/pipe/simple/yellow/hidden, /turf/open/floor/prison/bright_clean, /area/sulaco/bridge) +"kJu" = ( +/obj/structure/ship_ammo/cas/bomblet, +/turf/open/floor/plating, +/area/sulaco/hangar/cas) "kKg" = ( /obj/structure/cable, /obj/effect/spawner/random/misc/structure/flavorvending/colaweighted, @@ -25872,6 +25884,10 @@ dir = 4 }, /area/mainship/shipboard/weapon_room) +"wkH" = ( +/obj/structure/dropship_equipment/cas/weapon/bomb_pod, +/turf/open/floor/plating, +/area/sulaco/hangar/cas) "wkI" = ( /obj/machinery/light/mainship/small, /obj/effect/ai_node, @@ -57070,8 +57086,8 @@ fsb pwv jIo dKl -pwv -pwv +kJu +dal pwv pwv pwv @@ -57320,7 +57336,7 @@ cdy rpN ddK pwv -pwv +iNr pwv qct pwv @@ -57577,7 +57593,7 @@ dZG qAV ddK pwv -pwv +wkH pwv qct pwv diff --git a/_maps/map_files/Theseus/TGS_Theseus.dmm b/_maps/map_files/Theseus/TGS_Theseus.dmm index a9175874bfcf6..dda475967ad4a 100644 --- a/_maps/map_files/Theseus/TGS_Theseus.dmm +++ b/_maps/map_files/Theseus/TGS_Theseus.dmm @@ -7677,6 +7677,7 @@ /obj/effect/turf_decal/warning_stripes/thin{ dir = 10 }, +/obj/effect/turf_decal/warning_stripes/thin, /turf/open/floor/mainship/orange{ dir = 4 }, @@ -10356,6 +10357,10 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1, /turf/open/floor/mainship/sterile/dark, /area/mainship/medical/medical_science) +"gJS" = ( +/obj/structure/dropship_equipment/cas/weapon/bomb_pod, +/turf/open/floor/mainship/floor, +/area/mainship/hallways/hangar) "gLI" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced/windowstake{ @@ -11075,6 +11080,17 @@ }, /turf/open/floor/mainship/mono, /area/mainship/hallways/aft_umbilical) +"hVR" = ( +/obj/effect/turf_decal/warning_stripes/thin{ + dir = 4 + }, +/obj/structure/ship_ammo/cas/bomb/fourhundred, +/obj/effect/turf_decal/warning_stripes/thin{ + dir = 1; + pixel_y = 1 + }, +/turf/open/floor/mainship/cargo, +/area/mainship/hallways/hangar) "hVU" = ( /obj/machinery/light/mainship{ dir = 8 @@ -12222,18 +12238,11 @@ /area/mainship/command/cic) "kaw" = ( /obj/machinery/light/mainship, -/obj/effect/turf_decal/warning_stripes/thin{ - dir = 4 - }, /obj/effect/turf_decal/warning_stripes/thin{ dir = 10 }, -/obj/effect/turf_decal/warning_stripes/thin{ - dir = 8 - }, -/turf/open/floor/mainship/orange{ - dir = 6 - }, +/obj/structure/dropship_equipment/cas/weapon/bomblet_pod, +/turf/open/floor/mainship/floor, /area/mainship/hallways/hangar) "kbP" = ( /obj/machinery/processor{ @@ -17721,6 +17730,13 @@ /obj/structure/cable, /turf/open/floor/mainship/floor, /area/mainship/living/cafeteria_starboard) +"sTv" = ( +/obj/effect/turf_decal/warning_stripes/thin{ + dir = 4 + }, +/obj/structure/ship_ammo/cas/bomblet, +/turf/open/floor/mainship/cargo, +/area/mainship/hallways/hangar) "sVt" = ( /turf/open/floor/mainship/purple{ dir = 1 @@ -41506,8 +41522,8 @@ ann ann bdj bhd -aMR -aMR +hVR +sTv bgb bOy bbR @@ -42827,7 +42843,7 @@ uns uns uns qiO -lvI +qYe bgb fZA aVk @@ -43084,7 +43100,7 @@ uns uns uns qiO -qYe +gJS bgb qae aVk diff --git a/_maps/map_files/debugdalus/tgs_debugdalus.dmm b/_maps/map_files/debugdalus/tgs_debugdalus.dmm index 5241845d76415..217fd50e1cdd6 100644 --- a/_maps/map_files/debugdalus/tgs_debugdalus.dmm +++ b/_maps/map_files/debugdalus/tgs_debugdalus.dmm @@ -2310,6 +2310,10 @@ "bOu" = ( /turf/open/floor/plating, /area/mainship/hallways/hangar) +"bXE" = ( +/obj/structure/ship_ammo/cas/bomb/fourhundred, +/turf/open/floor/mainship, +/area/mainship/hallways/hangar) "bXN" = ( /obj/structure/cable, /obj/structure/closet/secure_closet/medical_doctor, @@ -2531,6 +2535,11 @@ }, /turf/open/floor/mainship, /area/mainship/hallways/hangar) +"kQa" = ( +/obj/machinery/light, +/obj/structure/dropship_equipment/cas/weapon/bomb_pod, +/turf/open/floor/mainship, +/area/mainship/hallways/hangar) "lcb" = ( /obj/structure/cable, /obj/machinery/camera/autoname/mainship, @@ -2615,6 +2624,10 @@ /obj/machinery/cic_maptable, /turf/open/floor/mainship, /area/mainship/command/cic) +"nRd" = ( +/obj/structure/ship_ammo/cas/bomblet, +/turf/open/floor/mainship, +/area/mainship/hallways/hangar) "oNT" = ( /obj/machinery/light{ dir = 1 @@ -2785,6 +2798,10 @@ /obj/structure/cable, /turf/open/floor/mainship, /area/mainship/engineering/engineering_workshop) +"ttO" = ( +/obj/structure/dropship_equipment/cas/weapon/bomblet_pod, +/turf/open/floor/mainship, +/area/mainship/hallways/hangar) "tQD" = ( /obj/machinery/light, /turf/open/floor/mainship, @@ -3990,7 +4007,7 @@ xBy ldZ bgb rmt -dwY +bXE dwY dwY dwY @@ -4050,7 +4067,7 @@ ljw dwY bgb acJ -dwY +nRd dwY dwY dwY @@ -4117,7 +4134,7 @@ gUp dwY dwY dwY -dwY +ttO aji agd agt @@ -4177,7 +4194,7 @@ afg dwY dwY dwY -ldZ +kQa aji aji aji diff --git a/code/__DEFINES/dropship_equipment.dm b/code/__DEFINES/dropship_equipment.dm index 49cb471d38f89..b13f432068f62 100644 --- a/code/__DEFINES/dropship_equipment.dm +++ b/code/__DEFINES/dropship_equipment.dm @@ -17,6 +17,8 @@ #define CAS_MISSILE 3 #define CAS_30MM 4 #define RAILGUN_AMMO 5 +#define CAS_BOMBLET 6 +#define CAS_BOMB 7 //Ammo impact type defines #define CAS_AMMO_EXPLOSIVE 1//Uses explosive ammo. Missiles/bombs, etc. diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index 6ebd589ba19f0..40c7a0b7fc0c2 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -105,6 +105,23 @@ /obj/effect/overlay/blinking_laser/napalm icon_state = "napalm_target" +/obj/effect/overlay/blinking_laser/monarch + icon_state = "monarch_target" + +/obj/effect/overlay/blinking_laser/swansong + icon_state = "swansong_target" + +// Bombs, then bomblets + +/obj/effect/overlay/blinking_laser/bomb + icon_state = "bomb_target" + +/obj/effect/overlay/blinking_laser/bomb_fat + icon_state = "fat_bomb_target" + +/obj/effect/overlay/blinking_laser/bomblet + icon_state = "bomblet_target" + //Marine-only visuals. Prediction HUD, etc. Does not show without marine headset /obj/effect/overlay/blinking_laser/marine name = "prediction matrix" diff --git a/code/game/objects/structures/dropship_ammo.dm b/code/game/objects/structures/dropship_ammo.dm index 1940f5ce93004..edd611d0f6a9a 100644 --- a/code/game/objects/structures/dropship_ammo.dm +++ b/code/game/objects/structures/dropship_ammo.dm @@ -275,7 +275,7 @@ name = "high-velocity 30mm ammo crate" icon_state = "30mm_crate_hv" desc = "A crate full of 30mm high-velocity bullets used on the dropship heavy guns. Moving this will require some sort of lifter." - travelling_time = 3 SECONDS + travelling_time = 2 SECONDS point_cost = 225 @@ -374,7 +374,7 @@ T.ignite(5, 30) //short but intense -//Rockets +//Rockets are defined by being one shot and done, and generally having solid payloads and low travel times. /obj/structure/ship_ammo/cas/rocket name = "abstract rocket" @@ -393,39 +393,76 @@ ammo_type = CAS_MISSILE /obj/structure/ship_ammo/cas/rocket/detonate_on(turf/impact, attackdir = NORTH) + impact.ceiling_debris_check(3) + explosion(impact, devastating_explosion_range, heavy_explosion_range, light_explosion_range) qdel(src) +//ATGMs, defined by 3 second travel time and tight explosion sizes. -//this one is air-to-air only +// The widowmaker is defined by being the fastest ATGM on offer, however it suffers in explosive potiential due to being so fast. /obj/structure/ship_ammo/cas/rocket/widowmaker - name = "\improper AIM-224 'Widowmaker'" - desc = "The AIM-224 is the latest in air to air missile technology. Earning the nickname of 'Widowmaker' from various dropship pilots after improvements to its guidence warhead prevents it from being jammed leading to its high kill rate. Not well suited for ground bombardment, but its high velocity makes it reach its target quickly. Moving this will require some sort of lifter." + name = "\improper AGM-224 'Widowmaker'" + desc = "The AGM-224 is the latest in air to ground missile technology. Earning the nickname of 'Widowmaker' from various pilots after improvements allow it to land at incredibly high speeds, at the cost of explosive payload. Well suited for ground bombardment, its high velocity making it reach its target quickly. Moving this will require some sort of lifter." icon_state = "single" - travelling_time = 3 SECONDS //not powerful, but reaches target fast + travelling_time = 2 SECONDS //The epitome of ATGMs. ammo_id = "" + point_cost = 300 + devastating_explosion_range = 2 + heavy_explosion_range = 3 + prediction_type = CAS_AMMO_EXPLOSIVE + cas_effect = /obj/effect/overlay/blinking_laser/widowmaker + +/obj/structure/ship_ammo/cas/rocket/keeper + name = "\improper AGM-67 'Keeper II" + desc = "The AGM-67 'Keeper II' is the latest in a generation of laser guided weaponry that spans all the way back to the 20th century. Earning its nickname from a contract that developed its guidance system and the various uses of it during peacekeeping conflicts. Its payload is designed to devastate armored targets. Moving this will require some sort of lifter." + icon_state = "keeper" + ammo_id = "k" point_cost = 225 devastating_explosion_range = 2 heavy_explosion_range = 4 - light_explosion_range = 7 + travelling_time = 3 SECONDS prediction_type = CAS_AMMO_EXPLOSIVE - cas_effect = /obj/effect/overlay/blinking_laser/widowmaker -/obj/structure/ship_ammo/cas/rocket/widowmaker/detonate_on(turf/impact, attackdir = NORTH) +// Da warcrime ATGM. Lower explosive yield, but long lasting fire. +/obj/structure/ship_ammo/cas/rocket/napalm + name = "\improper AGM-99 'Napalm'" + desc = "The AGM-99 'Napalm' is an incendiary rocket used to turn specific targeted areas into giant balls of fire for quite a long time, it has a smaller outer explosive payload than other AGMs, however. Moving this will require some sort of lifter." + icon_state = "napalm" + ammo_id = "n" + point_cost = 275 + devastating_explosion_range = 2 + heavy_explosion_range = 3 + light_explosion_range = 4 + fire_range = 3 + travelling_time = 3 SECONDS + prediction_type = CAS_AMMO_INCENDIARY + cas_effect = /obj/effect/overlay/blinking_laser/napalm + +/obj/structure/ship_ammo/cas/rocket/napalm/detonate_on(turf/impact, attackdir = NORTH) impact.ceiling_debris_check(3) explosion(impact, devastating_explosion_range, heavy_explosion_range, light_explosion_range) + flame_radius(fire_range, impact, 60, 30) //cooking for a long time + var/datum/effect_system/smoke_spread/phosphorus/warcrime = new + warcrime.set_up(fire_range + 1, impact, 7) + warcrime.start() qdel(src) + +// High yield missiles are defined by having... high yields and high travel time, usually around six seconds. + +//The Banshee is defined by combining both explosive and fire into one, literally. At the cost of some outer payload yield. /obj/structure/ship_ammo/cas/rocket/banshee - name = "\improper AGM-227 'Banshee'" - desc = "The AGM-227 missile is a mainstay of the overhauled dropship fleet against any mobile or armored ground targets. It's earned the nickname of 'Banshee' from the sudden wail that it emitts right before hitting a target. Useful to clear out large areas. Moving this will require some sort of lifter." + name = "\improper PGHM-227 'Banshee'" + desc = "The PGHM-227 missile is a mainstay of the fleet against any mobile or armored ground targets. It's earned the nickname of 'Banshee' from the sudden wail that it emitts right before hitting a target. Useful to clear out large areas. Moving this will require some sort of lifter." icon_state = "banshee" ammo_id = "b" - point_cost = 225 + point_cost = 275 devastating_explosion_range = 2 heavy_explosion_range = 4 - light_explosion_range = 7 + light_explosion_range = 5 fire_range = 7 prediction_type = CAS_AMMO_INCENDIARY + travelling_time = 6 SECONDS cas_effect = /obj/effect/overlay/blinking_laser/banshee /obj/structure/ship_ammo/cas/rocket/banshee/detonate_on(turf/impact, attackdir = NORTH) @@ -433,32 +470,18 @@ explosion(impact, devastating_explosion_range, heavy_explosion_range, light_explosion_range, flame_range = fire_range) //more spread out, with flames qdel(src) -/obj/structure/ship_ammo/cas/rocket/keeper - name = "\improper GBU-67 'Keeper II'" - desc = "The GBU-67 'Keeper II' is the latest in a generation of laser guided weaponry that spans all the way back to the 20th century. Earning its nickname from a shortening of 'Peacekeeper' which comes from the program that developed its guidance system and the various uses of it during peacekeeping conflicts. Its payload is designed to devastate armored targets. Moving this will require some sort of lifter." - icon_state = "keeper" - ammo_id = "k" - point_cost = 300 - devastating_explosion_range = 4 - heavy_explosion_range = 4 - light_explosion_range = 5 - prediction_type = CAS_AMMO_EXPLOSIVE - -/obj/structure/ship_ammo/cas/rocket/keeper/detonate_on(turf/impact, attackdir = NORTH) - impact.ceiling_debris_check(3) - explosion(impact, devastating_explosion_range, heavy_explosion_range, light_explosion_range) //tighter blast radius, but more devastating near center - qdel(src) - +//The fatty is well.. Fat. /obj/structure/ship_ammo/cas/rocket/fatty - name = "\improper SM-17 'Fatty'" - desc = "The SM-17 'Fatty' is the most devestating rocket in TGMC arsenal, only second after its big cluster brother in Orbital Cannon. These rocket are also known for highest number of Friendly-on-Friendly incidents due to secondary cluster explosions as well as range of these explosions, TGMC recommends pilots to encourage usage of signal flares or laser for 'Fatty' support. Moving this will require some sort of lifter." + name = "\improper PHGM-17 'Fatty'" + desc = "The PHGM-17 'Fatty' is the most devestating rocket in TGMC arsenal, only second after its big cluster brother in Orbital Cannon. These rocket are also known for highest number of Friendly-on-Friendly incidents due to secondary cluster explosions as well as range of these explosions, TGMC recommends pilots to encourage usage of signal flares or laser for 'Fatty' support. Moving this will require some sort of lifter." icon_state = "fatty" ammo_id = "f" - point_cost = 325 + point_cost = 300 devastating_explosion_range = 2 heavy_explosion_range = 3 light_explosion_range = 4 prediction_type = CAS_AMMO_EXPLOSIVE + travelling_time = 6 SECONDS cas_effect = /obj/effect/overlay/blinking_laser/fatty /obj/structure/ship_ammo/cas/rocket/fatty/detonate_on(turf/impact, attackdir = NORTH) @@ -482,31 +505,36 @@ explosion(detonation_target, devastating_explosion_range, heavy_explosion_range, light_explosion_range, adminlog = FALSE) qdel(src) -/obj/structure/ship_ammo/cas/rocket/napalm - name = "\improper XN-99 'Napalm'" - desc = "The XN-99 'Napalm' is an incendiary rocket used to turn specific targeted areas into giant balls of fire for a long time. Moving this will require some sort of lifter." - icon_state = "napalm" - ammo_id = "n" +// This is the "Default" heavy rocket. +/obj/structure/ship_ammo/cas/rocket/monarch + name = "\improper PHGM-7 'Monarch'" + desc = "The PHGM-7 'Monarch' is a well tried and tested dumb rocket design due to being a mere dumb rocket. Its payload is designed to devastate areas for cheap. Moving this will require some sort of lifter." + icon_state = "monarch" + ammo_id = "m" point_cost = 250 - devastating_explosion_range = 2 - heavy_explosion_range = 3 - light_explosion_range = 4 - fire_range = 5 - prediction_type = CAS_AMMO_INCENDIARY - cas_effect = /obj/effect/overlay/blinking_laser/incendiary - -/obj/structure/ship_ammo/cas/rocket/napalm/detonate_on(turf/impact, attackdir = NORTH) - impact.ceiling_debris_check(3) - explosion(impact, devastating_explosion_range, heavy_explosion_range, light_explosion_range) //relatively weak - flame_radius(fire_range, impact, 60, 30) //cooking for a long time - var/datum/effect_system/smoke_spread/phosphorus/warcrime = new - warcrime.set_up(fire_range + 1, impact, 7) - warcrime.start() - qdel(src) + devastating_explosion_range = 3 + heavy_explosion_range = 5 + light_explosion_range = 7 + travelling_time = 6 SECONDS + prediction_type = CAS_AMMO_EXPLOSIVE + cas_effect = /obj/effect/overlay/blinking_laser/monarch +// High speed missiles are defined by their four second deploy time, solid yield. -//minirockets +//The Swansong is the bogstandard missile, it missiles. +/obj/structure/ship_ammo/cas/rocket/swansong + name = "\improper PLGM-50 'Swansong'" + desc = "The PLGM-7 'Swansong' is the bogstandard air to ground missile load of the Navy. Named after barely dodging discontinuation dozens of times to more expensive design types. Moving this will require some sort of lifter." + icon_state = "swansong" + ammo_id = "s" + point_cost = 200 + devastating_explosion_range = 2 + heavy_explosion_range = 4 + light_explosion_range = 6 + prediction_type = CAS_AMMO_EXPLOSIVE + cas_effect = /obj/effect/overlay/blinking_laser/swansong +//Minirockets are effectively just da small rockets. /obj/structure/ship_ammo/cas/minirocket name = "mini rocket stack" desc = "A pack of explosive laser guided mini rockets. Moving this will require some sort of lifter." @@ -612,3 +640,97 @@ /obj/structure/ship_ammo/cas/minirocket/illumination/proc/drop_cas_flare(turf/impact) new /obj/effect/temp_visual/above_flare(impact) + +// Bombs have a long travel time but are decently numerous, ranging in payloads from 200 to 1000lbs. Higher is bigger. +/obj/structure/ship_ammo/cas/bomb + name = "\improper AOE-200lb 'Tiny' stack" + desc = "A decent-sized payload of explosive bombs, will only fit in a full-sized bomb pod. Moving this will require some sort of lifter." + icon_state = "minirocket" + icon = 'icons/Marine/mainship_props.dmi' + equipment_type = /obj/structure/dropship_equipment/cas/weapon/bomb_pod + ammo_count = 8 + max_ammo_count = 8 + ammo_name = "bomb_200" + firing_voiceline = 'sound/voice/plane_vws/shot_bomb.ogg' + travelling_time = 12 SECONDS + transferable_ammo = TRUE + point_cost = 200 // Bombs are numerous. + ammo_type = CAS_BOMB + devastating_explosion_range = 0 + heavy_explosion_range = 3 + light_explosion_range = 4 + prediction_type = CAS_AMMO_EXPLOSIVE + cas_effect = /obj/effect/overlay/blinking_laser/bomb + + +/obj/structure/ship_ammo/cas/bomb/detonate_on(turf/impact, attackdir = NORTH) + impact.ceiling_debris_check(2) + explosion(impact, devastating_explosion_range, heavy_explosion_range, light_explosion_range, adminlog = FALSE)//no messaging admin, that'd spam them. + +// Four hundos have no real gimmick beyond being a bigger payload. +/obj/structure/ship_ammo/cas/bomb/fourhundred + name = "\improper AOE-400lb 'Mighty' stack" + desc = "A decently-sized payload of explosive bombs, will only fit in a full-sized bomb pod. Moving this will require some sort of lifter." + icon_state = "bomb_400" + icon = 'icons/Marine/mainship_props.dmi' + equipment_type = /obj/structure/dropship_equipment/cas/weapon/bomb_pod + ammo_count = 4 + max_ammo_count = 4 + ammo_name = "bomb_400" + point_cost = 225 // Bombs are numerous. + heavy_explosion_range = 4 + light_explosion_range = 5 + prediction_type = CAS_AMMO_EXPLOSIVE + cas_effect = /obj/effect/overlay/blinking_laser/bomb + +// The mother of all bombs, Jack. +/obj/structure/ship_ammo/cas/bomb/moab + name = "\improper AOE-1000lb 'MOAB' stack" + desc = "A incredibly high yield payload bomb used to utterly ruin someone's day, generally termed as the 'Mother of all Bombs'. will only fit in a full-sized bomb pod. Moving this will require some sort of lifter." + icon_state = "bomb_1000" + ammo_count = 2 + max_ammo_count = 2 + devastating_explosion_range = 6 + heavy_explosion_range = 8 + light_explosion_range = 0 + ammo_name = "bomb_1000" + travelling_time = 14 SECONDS + point_cost = 600 // This is literally a minituare OB. + cas_effect = /obj/effect/overlay/blinking_laser/bomb_fat + +// Bomblets are small and numerious, with small paylods but high quantity. +/obj/structure/ship_ammo/cas/bomblet + name = "\improper AOE-50lb 'Dandelions' stack" + desc = "A large litter of explosive bomblets, will only fit in a bomblet pod. Moving this will require some sort of lifter." + icon_state = "bomb_50" + icon = 'icons/Marine/mainship_props.dmi' + equipment_type = /obj/structure/dropship_equipment/cas/weapon/bomblet_pod + ammo_count = 40 + max_ammo_count = 40 + ammo_name = "bomb_50" + firing_voiceline = 'sound/voice/plane_vws/shot_bomb.ogg' + travelling_time = 10 SECONDS + transferable_ammo = TRUE + point_cost = 150 + ammo_type = CAS_BOMBLET + light_explosion_range = 2 + heavy_explosion_range = 0 + prediction_type = CAS_AMMO_EXPLOSIVE + cas_effect = /obj/effect/overlay/blinking_laser/bomblet + + +/obj/structure/ship_ammo/cas/bomblet/detonate_on(turf/impact, attackdir = NORTH) + impact.ceiling_debris_check(2) + explosion(impact, heavy_explosion_range, light_explosion_range, adminlog = FALSE)//no messaging admin, that'd spam them. + +/obj/structure/ship_ammo/cas/bomblet/medium + name = "\improper AOE-75lb 'Poppies' stack" + desc = "A large litter of explosive bomblets. Moving this will require some sort of lifter." + icon_state = "bomblet_75" + ammo_count = 20 + max_ammo_count = 20 + ammo_name = "bomb_75" + travelling_time = 12 SECONDS + point_cost = 175 + light_explosion_range = 3 + prediction_type = CAS_AMMO_EXPLOSIVE diff --git a/code/game/objects/structures/dropship_equipment.dm b/code/game/objects/structures/dropship_equipment.dm index 4cffa03e26ba0..1d42586489ebf 100644 --- a/code/game/objects/structures/dropship_equipment.dm +++ b/code/game/objects/structures/dropship_equipment.dm @@ -716,7 +716,7 @@ /obj/structure/dropship_equipment/cas/weapon/heavygun name = "\improper GAU-21 30mm cannon" - desc = "A dismounted GAU-21 'Rattler' 30mm rotary cannon. It seems to be missing its feed links and has exposed connection wires. Capable of firing 5200 rounds a minute, feared by many for its power. Earned the nickname 'Rattler' from the vibrations it would cause on dropships in its inital production run. Moving this will require some sort of lifter." + desc = "A dismounted GAU-21 'Rattler' 30mm rotary cannon. Capable of firing 5200 rounds a minute, feared by many for its power. Earned the nickname 'Rattler' from the vibrations it would cause on ships in its inital production run. Moving this will require some sort of lifter." icon_state = "30mm_cannon" firing_sound = 'sound/weapons/gunship_chaingun.ogg' point_cost = 300 @@ -867,3 +867,41 @@ deployed_table.layer = ABOVE_OBJ_LAYER + 0.01 //make sure its directly ABOVE the layer deployed_table.loc = loc icon_state = "table2-idle" + +/obj/structure/dropship_equipment/cas/weapon/bomblet_pod + name = "bomblet pod" + icon_state = "bomblet_pod" + desc = "A pnuematic thrower machine capable of up to 40 smaller bombs, generally called 'bomblets'. Moving this will require some sort of lifter." + icon = 'icons/Marine/mainship_props64.dmi' + firing_sound = 'sound/weapons/gunship_rocketpod.ogg' + firing_delay = 0.5 SECONDS + point_cost = 450 + dropship_equipment_flags = USES_AMMO|IS_WEAPON|IS_INTERACTABLE + ammo_type_used = CAS_BOMBLET + +/obj/structure/dropship_equipment/cas/weapon/bomblet_pod/update_icon_state() + if(ammo_equipped?.ammo_count) + icon_state = "bomblet_pod_loaded" + else if(ship_base) + icon_state = "bomblet_pod_installed" + else + icon_state = "bomblet_pod" + +/obj/structure/dropship_equipment/cas/weapon/bomb_pod + name = "bomb pod" + icon_state = "bomb_pod" + desc = "A bomb pod capable of launching several large bombs. Moving this will require some sort of lifter." + icon = 'icons/Marine/mainship_props64.dmi' + firing_sound = 'sound/weapons/gunship_rocketpod.ogg' + firing_delay = 2 SECONDS + point_cost = 450 + dropship_equipment_flags = USES_AMMO|IS_WEAPON|IS_INTERACTABLE + ammo_type_used = CAS_BOMB + +/obj/structure/dropship_equipment/cas/weapon/bomb_pod/update_icon_state() + if(ammo_equipped?.ammo_count) + icon_state = "bomb_pod_loaded" + else if(ship_base) + icon_state = "bomb_pod_installed" + else + icon_state = "bomb_pod" diff --git a/icons/Marine/mainship_props.dmi b/icons/Marine/mainship_props.dmi index 9e91a22f01bed9310473a6483c320641a7ff21be..672f97d9d2e17372f8f886d20e4040db0cb14165 100644 GIT binary patch literal 158342 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 fqxawzsOX@QMF7=S67B literal 153290 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

<~5W|5r< zvUwc!foy)=&V~}0$352G@GS7Na?Z_2A zR&%^BNK~zC5A{O6_iSLz1?3+ularF ze9B~qo|0Zd6$9gR8K-F?6@H<%E<4<_0d{NYok+MP`g`k$_IS4DYa0$`fB5}@61~0? ziqH+5`;hZ|iT%O(%ljWcetgE}{BV##>HDvw)m3Y0*YZHLpfr<^oiRAd{sc($753BX zc(o(jzsZIqRmqNQ^VQY5$AtIK;P8mBzjf@oxdI*2m999yAK!VS_N?3Q>3Vyh*bxX-EKLR9`kP1OQ=I7@J445aN-Iq}|i@%?#WTfVe+1(8K`r)E;H<6pT z$LPuGz}K|fs_)ig_Xb(E+8zzKXc3_TPGXs$(yeexaVd%T4QgIjX&FaBo?XxW=E+-G zSq!p|8YH0`lFNLPK*5SX8z$Jk{3ge{9gPmn2O+{s)JrAu8&YMMzfasUOe8gNp~?D# z1k_d0o9k&L94r0A z@4B~vh7rxuJ}upddY;z(_ZYhIrfKsM-fX9#_e^$PO&(_e-*jM25 zx)Ro3N2T(apQT<<#Qc0ZL22hB^Ym2xBpiHu)SMHr{-NR(0$4U{ztR@S$+n?`a(n+? z&`^-}Sa;sYghbO&U3Pn9!y%9ydse74_N71GAf#$dg9(SiHBP=SpNEe)s~Tld1yuE_iZ9TJKw%ImZ7 zt&2Z=SP$_9p=tBHD-L-EsdqcMPj%L8bF~*6gv5k}=^m3l%!5K;W&72#WAhjN$&{-J zPQw?0>+n&v4t*fL%iG%Z30y zNUp#J(qgGsKOTnei-p7SF)K?$rq~>oyAfA!U$x;*Z>~y2oP_>S5$~`NBNMAlCWnUo zwR6c(>>dkB6pe~XYN%RUHz_4Lxgv!v-prkdg^*)oqdgoS91zZF4IHH41~9;z`=K!k zS%~1p1q-JB3+vz0*&6Nf7v)yU%{(qRD< zB(LQWE*lH0=JJS!!JYz09n=H-1&W<5%tN{68<-r_bM@)7OeOfS>4~q?L#Ic7RA_ac zP5kGj*YL@nvVI5ZRI6qk;uXDiaOolZkjBO-=!X*8PM z7R5(#CjXxk*cHwl@cN<$GK!7<&sqQNmf}I+9%k&H7i(udAp|brKR5k98}R9x#It7s zgbILTbAa?BLr(J>%4Wy(y_+qMsabPDGIjj#M&Z{Xw$v(OvAHVmt$*-A04%zX>F`m%PsK-&;Tp z#f?uZBtW*@i6C!p1)<<*d~D_ENift1tb;W}H(p9q_V)KLpf8W$yd$ne`J-=Wl1#s+ zTSeh^x`SfVrelB=ka{sl(&F^vg+??fx91hJjIw(U}ZsS5|@xZ7XEY7Os|CqI%JeSqX(ww0wNNE51Uz~5bGdc*FuwtG)jkd=O z;aE(;d&;xhf#UF|rMnv04~@pWd~n(g)V-V2zi6;uH;bx_hpTo1-$iMrtWZ|U;msc7 z-lZTN0lB{Ee5fDVJ6x(BZP#zSzLx~#9Ip53I_)}TK>3;k6NDg&Qmn3#h*cohUa=(p zS;qCyqE&EJ0t^~V-Ux5QS9EiuM<60XZr$j4^B6Sr^{H}mb59Y7Im>|z0L*?lI?9L)Y)M@XI9;$$=nFVb4!`jLuWW-K?t-3#;p5>EHT(LX9TYyq z!N|MNu}F2_S5<9GO;@c+p;Umi(uZSN{8_d;6>mZgbr%0Y25IU3Hz5KD&fwr*l|N|0 zn+*;3YHD^4p2rqeBt5D4SF^sd*>|ExZW zIB*-e5zDap3CLRnBdcN4TskwSAS9hn8I%qWi`}gq}ry zgc-PE(N4>?+wdBWZ0`K*eK>_iM0b z@@@7W9c|;+mRhT?V_71Z`W@dBzIYqz7WZ3! zo(?lmY@7BcQd-x3A))x9di0HDJ;jG+iB-$ZSBw=r%EQAGvl2s>eX6a(eKl$Dmcs<{ zqUuPqvI?i-d+Ujmv`@k4#HyYjro9U6(X5~xZgRY!V|jT4*-4Op6F%r2vI&znz(WW` zmBFS}P{WGyC_DU}8ZyomPa2amQG(rpScRb*@T*tTWdkprYyD9yNo27K-YXWdMTD`q zMoT=wKfXO84!|9Lcj9%&Z>Q^C6~?^``&0Qr!=*&Q0o)DKUVsJs{+lWzPm)_F?ndl9z9|zDE3OY!NYEmDef*y^mER#OP2P2M7FmdXB*_X|&w3 zv;~Rqb9re0weMwdvFO^t^AY^(LC%!FtoPWch9bmR?=9U$aJ+s6BULaB#ACNyQgnOA z83=xBd##6OLd6mZ{zTcjlJf%1EfsPWLZ3jNr+t}3elBJ{)KM4F)=qp>jRsDpZz9P+ zzDI`LH6Wdy9k!|jo>TPb8R4P}&fZnSYpAlvG_bU*u=$RLHbwqrMD9A`=t%kAW2O)s zA8CNp{s2S!O=L{PJ|N*LDgM{~$!%dTF4;a2gBJ8U8_I~=Q;@f)4W(R~$7ZO!F{>Z! z$oRM)&Tn9?Nr&Kj)E<&wGvwN*)936+{@7g9bt1A%S_y$wlgVEyeEj66fL0eizqRgs zNX5V)=@60xhVO$PHbC3ji0w89EPL!&P*sAm^{s~eUMt6h7Z zBJEP<0}BQsp>tgtluafiPrlxH^7UF;-b#E}Jpt~;`e!3WAul`}hlbX!)?{_{`QXqH zhxn{ws2otm5a$CuG4(I5@X&sD2d)oybzVd+<}C|>9J_wlZ#;CK6E3Uqpdx2n#F_iq z9vjMoPk@7?@1m*l{8dE-k&oIYY_lzXMzCWnUbdns>Q$v%+}J&Owe zW{Laey%J1*H|imS3=9nUi_#2Oce82EV+9|l={kQi?A(7rnL&^n2lwxa?}!6}?5Y<|c(zUTa73vqGrrP65rkCoYL)ztYB!dS}svL>TMTz32p z3aakz?vsm)lA4+n$4?7?C-E}XyQe)_zdgoB--Lyr6Io=PZ009bn3xVe#8H$gRA}YJ z(Ln-nU$cj5J38{(+tYp1dHUp!fVF%5>AGJ;6M-mcXLiMN!J$4l8FnF1-iyp>@9e0! zilXGI2nSVtUW6L*`X=9=cnWj3+n>rb2-+}bsXMQGlf)3aWI3a^u&+N1l7DgXf^=SQ zFF>jkY=M03;Ws(wnqDJuv5?9EDH(503yD(DF&6@wr})HUbOfctwVe|6ICpBOT3txC zwa8Z+nW?Jy!wmzQE;rnow%63uoMtI^7!Jf0XMV0&Iz_DjmJgl_>jU78D^c1VItx$S zXJU10zn9x)o{6LX*Kk31+$FOH6DaUcmKTV0e+oF5gtRgoZWt?eiw9y|psuS?Z>z8= z(Ukgduu8k8i6KXmx<%+1cNm&_C16A6`ZG1CO3xQ5r!;S8r`|cYuTXJ-v+-yr?qcp7 zzI+q>6)du=ATFN4d2ylrA&Fa7Hs|kO6FfY;LnTF}+ZzpMkIbhKq-hoM;%e$(gA+?s zMoF?7m!|mzjYb2B?Efq*JhGdan@eF*7S{;o9^V*A4k(P*~!lwlKwGa455OeQOO z?=FZ^-^66_s2L`&VhR}dx`EgySD&6$papYo&a4H8+(tq$Jhs(2TBtTgt`b6E9*}(5 z!ib&6R}nnlivAsSB3BJb)uuH{>l888X>L6RPUL=dx0|u!mwh;84UjnjU+DbRMVi0y zQ|`s@gRSM!$qz}1MXo=q=k1lCnmss82p%Tic%DSiW&2-D`u!X5w)@v$Yq z)s!dTVJ>$r@0FNTT=n6U!#x5p=QH?z2|7IM678_gnVEKVRfG6y+bJ;_4*o&`)4(Sr zZuY9>VP*#}e?jodU{_|L&5JN&bLbjy^*(JZao|kN+0yes;3^+!1@nWi`QTOXBB9ch zD9VOaW9lJH>Fgpad*PHb8r*<DWKj^rC$c`g1CC%)d z#9<=~5Y&kh32djInH`1<%*`#LtzMb`1_mmvt9S|%NMR|0S={tP%b-TA9<8HXNBC|D zhJfov@!A{(U)I~*l^7X zj^q}e$M5a>;j`?09^Vx8Td1Lu?2(QPA53<&jwgx;bR{NN?YM0VL~PDNu5Z#V0C;(7 zZ?6!;C4j4`1{}AiS4SnOmBQ~8QuBuA>3`b|(rBLFS^+7vwD*ztV&6VKB>Az!K>!F; zOtB@}>}PYiV=c&f%0>@%Jl(l7itzm`lGL$j?bu)~2f!n^5}}-wl2U%cCh4H$ITH3D z7mh5S0nzGUvoW!0;*?b{_S{f5%K9ks)W%1t$X=BuutD!6yO1@UeqK9^Mgx_|IKA+) zOXGB})UvpwYq~t*{POapsWbPt#aLe0QK^8Owqh6p4fsZ&6G^l((8@*_SHeK#8m4hEWzqVtRA8f_6$E}X=W!sEB!sutp*3is}J zB{D`07-tP6gVDB}j&dJ~9G;e>7%i4qeh;drRSr*%t0zZZUmKi2h?F?->?tkcM01KV zj1b6Fs+H^4{0EeY?U=MI?1y}?N0S0~n3EHqj9)`qIw3xO{#=yDWsoTS|nBi(!^Y514IZ` zZ(m{!EYz<<1-H)MlElwq`dK13odMhh1Yk8>HAtTJbU(hj7~D(e=*-8wqXZ;-2VuoMtjLETrnV$@+jg^g95fLr?6=fo4wo12@>pB_W_Y_8(8 zZ_GVQr<{t%tvl!5_C0$XZYpx~qXf>%lg5$_*t`fQR94l=($Ks%KDaytfv4T|(f!DSCbWWk^1xD=SgG&h;i_ebtYEiEhOTQfgj`neB}5~eEaEQExX zlaQB;&Se5%qHuK17!#&yKrOMgJ-mZHTzy_G=ZTXhbcOWf;EO<`E&O(==rcc4%}@2D zkdl5l*k51&M1vzWUEK3#T|=J=@RGE?SL{B{+JrkAzw&&i`5|NlFlgRg1O#@aGi^(6FfJ1O4&SS&*q<`BEf=N8T}1M!9uZ%Y&^BjZq(?&1R@C&X zQe;m|KG*!@ZcI!!eemk}`*lt4Otx6j*Q;k9q+i6eLSRd;=hXcXIPL1aO1-_ksj_ZN z^RSSf=``J~404%%)LlutY|1rWsS;S$GB2{XiNdV|Z$&##f5z(|vtm>6+! zePeF>5J2^TBK#jJQd14y=NI4Jo*j(o`o%=+v#<%5GN3v$%#o2jvGdH#T7eoQ4p9+< zd2D0VW!8Z6>d>B7FYt(uf|9qWF}=O6js*l7Z~AMpkB>jV7WuHlonC=^gEYVL2ZgTt zcA{@HRU663^IUDHG)vdRZ&nFONqqwYvAK)TE~jTd>;{tGwd2td^_Fys1aJ{f6|&LL z#~{Xp5n^Bz#7NZFfB_+ZzeV+LM0lcBf6M@%CieQVcg+~6NcgGc+8VLt-9Kc)D~{5q z-S=&;V9X@PNkx8!nYqM&OGPzSj9SYRMzkUC*0cl+9IV(m9c`Rs_#AA?kS+9HejiL3 zLPDqn@fyD_NWtAj$<0IEzmF=`Qc*qb5Tr`W{qN)k1u_SlVu8Q?AP1wg`|%ouE*1MH zF+@pX3vMV^diIU=(k>vM)_d~gf*UXjW0=yI#AvuHUdD#CEZxUyUQ1vM^;QEdri0C! zhCU(at(==$ULO6i|8|1Z-TMTXsK|y0I~?Fv*G$8N0o!8Y@f(dt1?wXf6$Y{SCg(vd z!9kKM4mn!yRvpY+o->RPV(e5|Ka-xkX;|n7r!f?^oD5QDa`4Ib@K=`*K6<F9s!(ftanWhdPkWtDN>+DesHeIV(D z+vpKWjHyl~wE4bLaALQKvCU)b z%X1SDgyqx251aSFfQbttCkhG;*+frrjnM!2@#o@VVrL_2UiLK7$x>dv?Q5Q}^qMOY zFl$t<;=eigKWSJY^j^N)3|XBFbEesD-P^Mkw-aS}ETfsS`-EUCv%V*e;t;4P1>vU0 z(j=0<3b|#pJhC)dApXPbdvDHUNc+m>tQDQ(pBI5&Vx$X_O<9OXyDkaWhDZ_I-u{`S z?S^@q_n+TI@`@6LEL3r6PyN=i)UpNG6*7s`uU2Mq0k3FWM* z|EuT%>|Hz8)2!raCKL*#HWQ!#B$0YLRtx41+blYMx1mlR4#loEzBDwH^4X;VM1T!n zn7`DEf8tbU`tpQ3rmZ#GzQ)avHphRX?+x@;7>A!%cufL+#6sKA5B0xLpk4sINTrB^ zj+J1@JJv7v9CMxzWsKK0nAu19FNzD)KjoMPsjs*7Rn8;RXR%Ov4nFmM-{mge(ltu| z9i?Yx=+|Zc86j-5&AiZ^#J>pb4N2$|zadD6g)r z5=?bQwhe@Oi+WRb_dfDkqi=btf7;k0V;n3jEVK|Xa1kv&1O}o-3)=DFto3twwzyv5Lx%Q(?1cD zbo`GjOahhE$`inkq1Z8s&l_+xsqGBpWFQaIqkP3u9o<7k=g{z*w45~d%Le{qRdS-4 zuV0D2&4A=CM(YP4_Y43BXq?>O3muFBI3Qx~41=YU2KhG?#Z%OV<%7sn{ z@(}r}c{5tj=Bp{>l5li^z_P%O znD{WQ0INdD1`G5`phIi&?;l0Bb=k&`|8_n#GvE4wC4zCZ5I=V6LS*NTv*$H_qv-Kz-Kh3x+&A8XwtL?Py<4NPqcY$mS zuOGU76xw|LuW5iPY8Dyh@jDs4?;3yq>5vbUx&dB8Zf|p$puo`8Wq+pD4R1(_{X`%Y zT~A;xh+H^{5~524qIxHm{oz;prOIP-hc_O)%Wim@j{C^t9(P@9nb`eG!Qg8vTR4`q zxN|J$k#0MGG^_uX*S-#iYj8`hy)j|J0EAsJ%yi=m^9%h+pNfhjWBtks7a~QNWcXUW z{J9$I#f1?W(O;_-)pH-#*A5XC!<^CY-%mKibSuSavj!`>)&5-|tKB!2s9VeG`e_VE zXxgD6S<%soH^aVPMs0IkeOr?w!Y1q(VD<&W{RTz$AxL!!v+Eg9m2=^F z{rL3AAaB8;F{bQFG%XPh=uTL-ryG1;w|bBIR>66Q6%L8V&li zc6!=!BcBn{KBgjNGd%w`VEB+|_>TFchvPgAQFD9g44CVkKQh8+wA}3WR=z>O<4ob> zxrk2NXEM({L#c@$_>yOTIK+!fhG1Iw_+5UkFcPgPO5Vv{EoY^Y^YR?0d2SNHvdYbb zVy^38`ylDR$*dHx5?su}*h8yU#X6fzw`YM?K0EEH0TMXlD2U|z;k8b?A4DW%!P*~X zVsAO-`8$(Tk_buZ-mGc(70F20kirUHoalmkp!c#0B-wF%<}tCu=3k*w-!Ko?z=6+u zzKk!s$?UM#h$k|G{yiWF$&tt6ShvAGsG?M7M~C$;+lvMaII++|XAA+bzRP{4&t%6h6A<_7W5g(OeB zz0Yg3f5D=8UrrXlmz1tBnVZ`>lI}R9GTF&L9SFyNbRcr4qW=?XPosvM-sT3Z6?t`c8M=<5f$2(H!e2-ADXoY=_X+_@{z7J>jP`D%$75pF6JU};#GrlhWSp8 z$WFTdM>H|*szVWGW25Wu{NHfDo>7Rx@!6k~Z~qfms5>Dgy(=5Z#w7j@2>Z7+SB-9U zuDb8Nesk~7Kl#M}BPihI4GT8^s@3y%c~U;&-?6Ac>NfuWzdE4iRV9~H)`_nqWVHAL zPqtIx|GtzxkOvC5Of}^H?-#(X0hO9Lmlyw!QsVzg9{&3-jXh`g*?p%cMy6idUIhi; z;-z+~A9x%%*wTFZdp%E=TZ#aOoQVW(`~nBDfF3Cy9tvLjhlW)T46o|A0_uw!=qy$& zE63|DNqx9>UlZOc&Ph7)p{B=1t9eKRPsxx8*Ar>0j_dIkdWG@|AO6mps%#(AXEVFJ zhT||kbzCHu7rpZ^Oid?U-{K2=0@u?hhz5uFMMYe0ZXXTRG#g2JR82Hx0D<`@%v_iN zj!$SEZus(j{G40O^a1y<%*tPe`m<<7&HHfKvodwW!I}5G?9qdW(i){n)m`W#*_Sbw z%r6PJkK=!A0B78yW_3b?4gil8(uM}nej)7U@0?4}U2my@)&)}qyi26SmB#^3P>x1> z!EvM;o3&stpC8zGT%WfdnH}IgxXc@@vs@^!L+|rViZf1fqUW#nUv)+o{jjAaTV|xU zl>SR@N|i+`4@B9H0PqAE&*s1wPKd|f%9{s*Hgh{WUi}sKQD{u8{qne!|9f?!wSPCo zpescmuDFQf=@p+><;Z&{k0F|~Xyb?ol!e_5NMQ({Tm?ZOzmMZ_#~R!yWkc^DxdP86 z8h9>mP=oz{vthtN(<%LAZRxMhf57SlyHMr0Iwaa|f7MhLx zgkat7KX5kG7h{~l!Ktl2AZL18A*ugTRaxi01Y5|mJ2ZPmWN5=6wH4A<^_72cS>*rg z>#GBzdfNR#zLcb(fTT!+q;!f%OGrq&C?Jw6AS@+Is&to>5+bc29ZN4I(w$3#bnU{j z=Xbd8ecyZUKR-uyPRxm!dFH9lb7rVIM*<`YK%%(7T7J&3_!Jd&PfRS>P*RZ}3jJPW zz|shwy53unlB)e4v)fZ~T2cmfk}@lvd@o{*C?9TrsW42*%8>TE(o@wdyA|vXBLS65 z3cld{{c>T+AI?^{sK^JNXTknmgGNBTQ-}6dN8t~*d2?N5a{PFl9)5%W`*4b!$4}RP@vVpFFix^bMj8>+BoLeAKSYcD_)yK!1Ae897%f z64KB-D`v`@%)UQd{LY8VZ&j@DsuJYQ?m2Y`!-62Jw>5HTvAMSns7|P&92@yKseLba zNe|e-(v8!kEhRhGy{&%sU@Nd(YAQ>7smPC2lr(oEPf;ngr-!5v5lMDzeBLS{RU4Ns zLElTuy=4PaRWy;bFzyPFEXqnu-JG_1>9?%}BRs{_-(KB2Cn3&h#!}kP5aF#Y?P%ht zl0JR-lx07lf&~erZ_0q7J%Zv#ItA-!$jJ;Q%2>db1AR=9q0kpL0aW8EPJ!N0U_-En zlU+7b4rmM)5DxJuPw&?ObWk+Q1g>?jh0+m@+%L7H3CP4S{)Xv}Xuz^IWeD>Vt&`5a zzoTIANCv4xXr(UYlaB(Kh`gOVnoVN1e(r=&&+=jFQt~BoHHdAP zfR&nt7l>8s_Qh(Tn83{vH>}31o1{s=xO717Y|FK5OlFaLrdGcy-Q#zm^qZsgmNVudj@Zq`qj z+^9-jjPG{`2Ld?8Sx-ABHa2MFP=hTXbyLp@}6|D*@k;1iY&U5+)ItxOpW#0DyJZ2c3+OK(Ps5nI~8W@mVj4) z6AV3B@cE^E{+%{6zUESPX_2e}K^_7KM5=DQc}ifpIQPwuPt3W;hr>lG?4QRT8S|&W zOL5()3o0Iv*^wm>KV}Z)_)DZ3rmmITs~1H0gu97jc_Z6tgc$?3XiLUHS za7jEPiQXX3y&-5jkh$x{0{#kWbpMHk;b`ZxhxE>qqnTckC=M(CyFm{ITUL6^s_XYL0Lg8fLOm1f7pZ?PI9ItkA&r||1h z2R}LkQX0fq?lJQ^pkfiXnuqXWaegejm)nPY4yX;es)7}xt{lS9!Pw;J{j>L{V6oit z21^MrkiTiqXTE7_HWbR%5Kp@w5T8p0*cN^yn^Y7%(@b;Je)Q>h=(b)s6wJu=!udFd z9NzSu7vU0+nhBtci9=`?_2geUB8ZF@ND7!Ld79b!l=U#?;@s?-0bGAwS$Hc1eXPW) z*88Mh=ye9oMBT(+>Y6s0@d*Z*mcAUBs@uyJU9rxjOl{AzCv@Z)Zaf+M|(dn2NB$N9haC0~3pMU@++D8gC6VA4iO%ah z_vC1aMf7f+$49*_kiuRX!MCcvt$N0}p2dWGeP?3{iq+b|?$m=drs(@bh7s_jCIgg? zTRHzUUOrRys*AzI>@-w@2ne3L@|sL-itQ6?@HO0%yi@(Sm*)*s@4wTjhGkQ*5i{fgWlFucA6P^_#BES)hXgPR* zXxyUnxl9z6?_WQ@A4gNHJ8BH?jhDP(STC5ji1ablzEq?F_@O|MYmz%E$;747+zwfEmK%QrvXYk z5{~EWcZG2G$*&s##m9Wiz7`dQgt2>ba_+?MiaHU9iDjB_%PSLWEh$I=@ko{@th82u zgX12rX|h-y3c?tdWOvLBWP20tz1j2$`7heMmT856K=h)vaF$N%FYmp38P`?9eBga; zkx{qOc~7_QEq=OP^$$geeh0~ORF!Ck6!9*!{6N*yUsE!Np8fBRwl#z;jsFNQEwMT| z3}9sgD)ILQRNg-zsxI-c3d;i(ZPrNTt!+z_WrjidG2|=#M%hVY>4@4LrIEziF-)WX zgLl=FRj9t5OvQA$7FKz>XF?6j&J%ur|CX{71RZ_*tE-n;$qbHcEduWGNv|l!dQ)LD zkHV$zP$W~OxM=vFn!530u~4ADxgT*d>qh-tcgTGM^}uEcQcX?Xi$3564BoR)u$KXP zF*xDz$)A55u7HoTK!s*B^*}FaDI^D3kQy;-&>ljfgn97T3y${)W+u2ZxnZLVF1pgd zxSXsaC|iB-unLuKmHDSMiiGm^wIH%E_Fq$JUEXBS)u8Qw9N{<^m+(hX)5jiYtKVkr zeihBR0pxYDy~r(?Ubu3Q!vRst@aD-SRT&QCNx>td<7+nTiu@@v-+WUyrkWY$x=Ek? z{w?TL(agcYkvZsX;%eBE>se^>_^3|CS3zC|)0-TVl(QEg==%WMnCD7Uo3JtNc5t`6 zX>WZ|^u+r9(f(ksY0MQ|+;jW_psEF8lfmAFBQ6oPSRqSh6+elAzEAh8&E?Zu|Dyc8 z@T&-i@hH>iz}lFfowl`iiQ>761}CHMBdTp*cX@0TRN)UZq}FJobo~p!3#}p5@%zOB zq&mOq);=qWr0uQ_|7eS1gw=TVhQY;z9!sx292@fEmQmxSW2hFzy)pfwFCsEFD`a=+ zZ4w0kc>``^8LGec58Ti_>aD5uSodb*%b>@-t@_Zaq}|n$ska!%!m-*ubfe)nk^k6-cY6J*+&I>y%Z?w+{-bT`ttNZgrX9+rP?M#ifFj>pXi!VdY8MtV$J02S zJjU&((##I``B-$x%5<}KbABp`*L>JokfC3K;Z>6L;9F*2#sh;?(=D2;l^U1t^EZU7 z`D&Y%d8+Tac19C6N}t5`6F#HoqHG{RrVC|`&ra8GC>`j5t9q} z6iAtEd5INWWDbB$Ixf#byE2PcRsiQV<1F=lc%Ka_aAtm5G!(ReFnT$6)x0&Nd9tN{ z3;M>PQ{S;uyrm6?7w8I^dd`SWTGXTR#(+jSITDhatnQ^otl@dIbi(l+gxkj+$Z;U4 zL@}lSfWf?a5?5jf;XNInT&gwg029W{Y>`f8n?RO+o>SnOZB+6XiGA}c#YWC@#Pkx( z&rh>6jpgkE9a$cwSb-`$8O68W8F2NiIw#|qsMUX3AG_I6n7B5j1${C+BoMQ2>fHIW z?tV32xLk|%B?=rcO!PT!hnb}@aAd>2ca@=2=if6Pr$Y8m>M*UXDXHF<%l@?}0lTHj z=}=cEJnKK@L_&?1;$nJz*7s0GZ>E(oyC8& zajpBLG3-8ZUbE`#j1RCC~?6bkx}RoD6Ah-@9}| z2Ouj-I37Bc%Y$op05;kt)N4aBa?B8%zm+3B*iLN;z{Uw;>2pn&W^Y>|ak5VztiK^uok&PKMOBuh37MSy8iYfFI@7QXQUn9 zNA={zu7L8k#GHO zjRmqB`Vt}Xb*Cb!FbCdM-a)LE@#c+dT&*B>)hZVn5Lm|c{sFYa_s=H@vAI3N1d7^B zqSg=uVv;ZWmzC_`a7O~L>W=p!$DYBRz|qxp`P2u+6mf3_k62r46>g`{Eug0a+yr+l z_mt?Yq)X1`>eeifud|0Ph7PIHq0kX0W(v2+-73aW+)nj2R*e`5}-APRT zWq2#1QAIyO!0G#&-PIV{kfr4LO{o^O{n6NG2Scg0UFp2uo7%qMoLpDkli;~Iw^!6) z!sM0EOAs##(I$uJiC~DScU3V zw14{)zY|{J_;#i)r%YPxn;LL5T<+$XAR%-By~}~iTIobIly-0Vm?S@s-twK4s?|YX zR5YATdbvS=#xFlAaSnYiO+AP){Q6~;WGjeh5Pl@5#kgI6m05oz!3uaQZHeaA?nhNy z;MZ-GmtfEzJXH?%>USImF{9jrrj5zGY|=pQJ~cVk!A4~O_H^x>@RKI zIXADV0;5{~Mh&WxtI5OWGnWi+_QzP9vY5bqbtUM*;@pJC0G6$UH3>_m5JE8PF?{$- zml~H78N*{Bimv$#&WuFBW$bkYDSnt^bW6tLEbb|Jqhc@p`K){hsPnwy4HQ)A^*%^G zT+{-4Q+=81POMw3Nge1dFv-brO8wxPTK1rC%-eDORmzdIwk*`uHNOALUto_vBrgWp zhiGK=?e0g&Q9R=VYV(A+Z(NTME4#R+CQ$RCygk`>IMH!7i=sQCI2@W;eU7~|=KjTW z_2Fo`hZO8ByoJ3_5Iwm4eE2nErQoO}e$rhY)(m_hrf$l^Hn0zeu4MVt-oEx;Oc1jh zbG0@R0Hedn!D$SQBsR0%g5la-x8|#CT4B}hs~R5;$L%B@^ z+XC7bLYyF;d-ztD{Ohi?>wB!`F0=Vl6BhRB22HhrJw4ty`n$^C63x&+N%%b)UTI6p zz@mzrgC&x=$_gI>iy42uIhz!Hg028nrS-P$)Ho#@ zp?C>nFD!6gvu1fZL^Rh0PlX^3YMJyB`o)*gkj(B=J!dyEK;;r%@ne>u4am%2Z~{31 z{GmN9X(`Fp9kGP2quUm~K6aT``&ss^$aC@F-(#r_Kov=Q^p2TN?tn z%)Hk0dS@Hb@31!)+gjrtCSSPPgfedk-VN@v&k2a(dA zJwMY0KUF%DFAJHC}V1wuBX z;1>5wzet}kY^*?7cWZ0l=ze*AMd6>a=vSp^I;j=12sMp`?4;fGYOkumdlp%~)Pq4|y`jE94hE1P@tj~;#Zvt4_~BO}L*?fUfyRe$UO zj|x=CN9hXd zPl=crn3bo?4a|519{XZUN#wY#@Km-H=IUb_l+-7=7ybLal4-yq(27g$C0-1qY01dT zZvTJ*sN6tyBf#0K+-Xu0;IMw%4ahcJtHUDwqv^D8Ay@?jbH@|j-l@CVKDd>r(F&InGj#Ps&tPx4dm~}Xp`xhG^jM z1pc^lrK{I(?~Xl|&Ff8U_7X%Zj3F^DpC8~`&b=k@(Q*zalx~Jbgi* z1BqW2m{&!ZJA3NUxgquK6-0{dP?x{2>XRjZxT#n#<=jXhY*NtR~)!F z4$A}n*E>wJYfPBsBA#1`akiKBjqzYkR7b-4_z3{+FB>rjZ(}y5|i( zs#gkQGaOd+FCL($;t>*6$jn&~RNRk5oiW9B0_A^MUaUdHZZPwFd2U z)&q#-qbo!z%jn30KawpKT`V4}X74Fm%vpdf`xoD(O5tTjqn~Za(+k&bj6I4=4^Mx3 zVdLcVshvuWF53(T=Zm9I{{@S(E8D;PTpTh%CRMN>-fcx*1m(Z(=Nx?-9h!SYF6xe% zFH4LK6A^QkI`cbEd3p0d>9v*g#OxYRk6K!&-~Iv-E|-_--S=+bTBLqR1@_smYp0CHr-L~+^kif84y?bCfIN@V#;IZ@CwEtLakA~+Spp_>Ds-0F!NehY^L=EOx zZ8hNS)#4}?IkPRS5a$~V-wIOa4>89g+`p^BqN4#5%IeJ&wX}b3e|Y_7O_@YRQc!z$7ugywGFSMted?CN#XrW;s)Eh)1@EW-ras^v+n#->oK)l6|rCZ?S1~WFt0)ltN>d8^Uec`Rs(0$ z;GdfB-3ak1ErRSk{B=?sTk+_$J4>n#2~KH*=Lj@QPtxbIJ+&oy^SOqSD=w2?KPH+yanjBjf_3&!jR%Cx4CXW96G;+5`&>@`KtTw zJeZm|^1$0!4DKl1j>$VM51$dhKb4KYygx;UO87d|<-IbmzKhSM!(7{F)2wczA9I>^ z*!KoiH_x)8aBExmE^++B!kZ%kOJ-)h`Gc9)1}U+-KvD7cd!QfbEUM1w7GA;F#>PzZ z(ca!)5UXf+{YmIhAP%!_VbGd1G?HghvBDf_LV1I})Lam}S@+j= zF(Q(}doZQ>EEe*UI>drORzVams3ywcfa8jDTU@gCb07|bR5AtK+e%;2wE{Ue?{}fK zTm->~ulwen!X*ko6>npo?SaN=GI=|Q57aU#m7`OemJBw-I>XKR&`GT8>+5vsP~;+Q z0pJ%5N9yzH9q%&)a3$;LI1l%f-leg*>c!m$naNxVlOHFxZ9n8g{fcC@?LJPS0Ti}v zKOfkndvA^4rM{|quX1Dec{}sqkk{*X+5#{5?Zn;I4V)`QIfq=idX~v`?9~c?q4M%J zV4U%=2**p_7n02m{46W`X9NmF>HxxTJ*p ze#+wwq`O$>NY~!Z2+HA@D5^VUs`mpz zH5sC0Oz0Pl&0+{Ai-@tN(Gu!gtShGvT)Wwv-j}L3&PPCT+2f1JygWds#O*4UG#8il z&mtxZFD%n4%=2PFpz!1f3K~G1l(znipEXFSa-Gg@qMakRv!FHA;kUJgKNe=^`&00F zZ*ymgden$)%-yN9f8&dhGBTB$E*C5BM*MdIR#zcg_-wzuj9C?(X$1U6Y$?^CZ;fUEXP_oxF*5JEkhd z#oX`0NHFCFnjcX-ds1A7E$5Il)XQz-)j?M-tE*Y-XxvC%0al5PXSFOSy4!sH?h_`{ zXxH->eys-QMW|+7ezXGl?*w;0tT?%l?fd!k2{Tno=$eq;i8mTXT#iJgh+}Y(w_*Ik zr%sXhAKIkFB_JI>Ob{A4V2w{?gI^$4q(G`hV>f35B0BQ7G=FQFG6MfjiK&3k@j5Bq zyr8FKUgL|@cxHj^`}ZlS4G)XD;qImPmfzKm^`c{DjcP-j)4)PVODLQ8uIR?3!)IGcjqYHi%=J^gGDuIq z%-}(%ibTpi0N;U1_+?)2`2?Dkd$2gS+HfH|KC@M#=vMHo+#+vkiVi8&D~HgVr14gt zKA*Bu(f_-$|H^4|;J*pVdp}jqzT&JM$9q)U#p_Cb^J9wdc5plX_bQPS1}RM|eQD2{ zE_D{s4+0r87jXw;#piG8^;1;;_xr8@ACZXv4cY$>c>iBp{z|KUsf25{sbAx#N4OBS z;x7qMjUi{z{|n^zN7xOBE=dJ{5m%fPlnqyfz&lKGZx!GD!Ww6GFY|_f^CoBc$w*JGQ* z3^5fPRTf+S_IQbcBUTROw@n0s6*pLgLu{__V;4ffZ-1lzllBh)l|(R#nYV*cR`T~9 z#Q-}cXu2LxIUUWn(1$jHJRl@BbOPd*x^N++Mu7P{AO zk!6FZZJWS(yJe~+H7rH`du zPsYD4E5GOMIFy0#PnhBO+~CPp7uNV30?zNh^)qAqYBHS43*s@g zC*c|nD~ve$ICZh0p#15%N|%Y(^&rgjK99Wp9?jF}{$1g2M+RtU>^%h%@gZhJTilyE zxY_e?GS+LM`ky4`d)I?5iGWLIzyOOouckLNsHRQKxd?M95*W3rJ0tyxFPqd$yQ+<* z%2rgD{>pE*fSa$;+QZ!cV-x-78qrMt?pH*h;j3@a)T`7Q=9Dw!6A32;s-=`}ixJWA z3YD>Q2nL~A8OzQ6T96p2^TEz%RN3pmBTZUv#AC370nHAC)S>c`c!Z_iKRDukaT#fRu>nTJ@uXA0a#Cp4X{e|)TFegm&)G(p}O2(M$SFnjfWK{z@U$PpC|Fug5?)}+z3e`-W0g> z22tRy;Op_ew>plYaq*dt-sIZ#w46C|fNs$y(DE>5k@vn}R&Iw@NQ!N&di;%2(L17w ztG%>IT6;E1os5P#6VRMzuP(Y_&u;@UF85^I!b~s~r3-&=?ZLmJ9%d(&Urqv3$Hyd~ zr7ojC7c65(na}w{CQr@uFkY780BkOy=68}HT2~+9jJs&BT4l-wRUQ=R-j!Z%C$vo& zZ@=(Yrcluj|I_WfP|7?93llD0(XPZak-UUJZd_ip8pRX0W|o#cz``PtjL}kP2xB_m z0EGzNb0P0-g>3A&su&=JTTxJ~JM~&8V)!0CaC=PTpCokk`x^=P4>X%9bdCKBZkc+X zXBpvJm|yx}SEMwuQvOMOLBOvYSY1-mj&8ZiWUG>&Qy0oGCj#xmd%!E1C%Dv{_hKJM zXr%X>)>wA|w)eln#vC-8NW_4{mhD5}ub%zQgyDw*3VnmKQUVGQRT~kBC}EvnB(>OD z{X!yKwiN~FmX1?ykGs0|KD#+C3Ak}$QGJXN0>JNP7_h*xpjR-U6^jz4QXsN6VU>tp z42!gxswz>IY$(9x(6Ii~3gU$Me;ujEM1qMARj&kg_^)2nNfSNNA0OFY(BJlI`c zympE}KOMaROtuv`WR!(6cvv3=Xo#)LFVS0hM*rB@xRuN9m`Iz#<G_u4cfg4qg6u}irn<`bXC%O6z8Z;xLs4a+ zgcrsk^DraQ%pdb$5dFKWQ%FhY?8&!+f`%*H<#kxZuU|%D3ADC09nbRLgI8SBzOi>) z)T6BcftOkr2TvI5qG9vg8nUSe1xF7one+Olczm*xnWs+SVS5h~XpQay$&)5WW!N%0 z92mo`0Q-Qv1g1Ugy`uoON_5@I{epsz&K0&%1AjgRb_lvc-|dcz2&jl-#e$~0Fn=G5 z1*-lz`7a!Jd4lH|m*OMk@;8AH-!11yU}RX0cJ4&t0f>2@88czZ8%DOA^r7LOvD(XY zAQPB6>UDiY-Y9*(Y~piyC3T&vQi;T!4COsgy0jg<9j(&F!hTE3pKq=`ITQ2Eln#ax zSc7HYK8~P`xw8_Y-d1-#qe@sV85;(4(@GeD{y&OltOu1YISK4dVZ9wnj|?25OE1MT z6y@3P_L9E(>*o-SeU$Iaw6_X5@`u-!CD5i699emC{jtPoPc-55FlqMXSS~!U3H`y7 zpuZ^Fig|@j?-w}Ft5W)Yjd6qg^LmJ&o_8Y($M%^QmvXWk{_ZW!hy3HACz1145Wze{ zMtHJ|hy}P}U&QAX;LVe=Lqu+MV$^mhJ67OyxdF*}-zUv1^lZ3a*MGKi0UO(Ytn<^tIYmkrZps-UnM=S@Md(a&}VQz$A`?2P};3QoW=(>#Wj z=6N@9cT6CgCu!i}Cd{_ldQMa8E?Q{zn+|<~1{JSk#0bfAMe^@1CjuCgnl8fS9-=K< z6y!5r@hSrQs9gO52!6Zzku@BSjAMq~h3t;2J*E`|(Zfe?io#HRMAM*)QLkb(3{d3y zNT6}48q(`MP|<0%EcfsNbbimp>^nb5U>5fClF%QX;X~kqjZW&b-UsQEt(X!{QEmY2 zmloXgWN;r+%>PFD7YXvSD0d}O6h{Mj>yUy&B`*0lB!IzYav>OSvm?b;v!YZWMq(~c zPbs%Wez2T9Fjj{zz%=`&zg=k6L>cKz;MKYBG93izEK-Ttb(voF@;70nzH1-+3G{R= zs26NJ6LU5waJAUZ-ASDonx1wr`8GJHdlw=` zGas}+u&I@m^2E&{+LE;(epBeA zSlrtcC=H}meNgV7vk+#n7vHfgM+;k#>*KkMd_sWit>$|FT`)%0B*tg2{5b9qMlYli zn8~tnb_gfO`n|%YvbHqwU7N+xz-RouCzYtD2Ys$5qx^hRX*$YoWY!5epEeM?FaGF( zs60rFAmSJoHEZ=;yY0fi@^z+0n+im%BERDDpkSF zLKzm^L} z;Ep!Ldaes$0F2atyx*{?F`ia8CMDLh7KhNog5gm;N5|(H09CZ?_AMO5 z7aQP{j4+u{sIbr~e7hB~1%8rsx`dwa28E3fI@wLG@;FS{q zaz?as>%%MfGKwKR1lV=ulyJpAesyK$U!V46Fv~NgdlA%A<_%=S!XgF5YAS)$6xQ5V zz>?b@D^Rc#^8pS+$-Tdq#L4ly9GCqU2w_HdNXdjipZuau`Z@h>rQy~THwP=P>rW?U zu&2Cc=Z2T^@3!PM?*&~0i_ebg_u5m-|K+<{cYd!SIy%S$hQmz>2qfG$U_)7V;_3o!C%j6GQ(2G z>uw^kzeA{IPuW9{#Y?FrdN=;`hc8fvi~BX&>WMy{(w6(#3`>ji?;m{)(dc8cy`Q(M{y#I}QHA8-<90u7O zwUW2hU5W<;V5=+XSF>tyzwO|e(Thhr^(UWMngTo}&mpzu=;MYBV@<+$fM-bzfWnLFhb2x*$^pCofaNtjL?n~CKb~A&TX)B|HxvTM(TGf& ze~A6(vRtj5y{1N<}Qo)g@i!oCMrSooN?~S}F_xl#EgZ_5Mk2%06Dt;;-o0986|l z=?2&@QZEn>uS!I4vEguu?(3kD`HS~E|E!@aRu>bmAico8YlAB0OhsGedkTIw4eJvj z{kNBmwy$@;S-)4bPKe$I^}eT6YxT`>uWVd%m(HYm255LbZ+SQc*`7c*MlCqkIRtyk z>=v*&jV_XP?+8*4UD(;u%^G({4m4R0f>CtqRzKfrWShe@ulbF2Bd+v>w+_2;TmIyq zYXHp5G~wCKx-i8PCT28ZHDWd`nU#ymTNN5m#0Z?rqj_Sy-ci#qlee<%`2_Bi-+{oi zX4#so(;cze=$4iMFSj1>x2bvAxF(?CS+_|DP%G8cR}`@O3r2ASu{7_P(37e>9gSw* z-CTkynHBK^i2CE&O58?HQ=qmGP(J|I@5NtO_@OC*gC8qBL*gAbI^B~_2dli`f1u~i zgr3!VuFH=TZeA6892{cz-a8kdH<|cR;lKffdM6{UIz6ydjB=>f9HvZi773NU?{q*6 zy8K-}9gwhG&;%fkClI?QZoTr!m_?_W(fUfD#MnOdq82n$0p<7J#eiP|{5KxVIju{O znHLOWiSx1D;$I8D1+stvO2fi0GN%e?fp#V^itv#}rBzP{INE(terd^jiUTDnZZ`!6XG306*BFzIF9FNyIVlyw$-)$-=SQ+KMm&YMPsPlZ zHQSCdCtpC7m6;gF7I5NF-hlEq{&Bq}bBu&m$Wm<&#Km`?O)4hvpw^wQmWcZSyOMIE znXK*AX}$Qksg;7KiV?Gw{TG`@=7F z*b&k-S}d{iaEdFCE@~(79@@wlmn@Tx&l<2KgF_c)*sWN6E-j)1MmXi|i#GG?RzcZiB7uYW9joBS zrLx8%P8ekbKG_D&a^n|s*DhYrD?0?*=X2>d;_f`M{LK7zC*h*oB)U}Z<+bN|AXpOMvv@mr%mnH_}*}VD8!2gOCKkURcR$ z@A{p(@|W2d#16$kr^D=@7n{R40L|l<+1;j1#XfVjczh0lE&}7-ljxke6@cnl_nlx= znxnceqp=0XfRPo+oR;%fIN|u2?+thz&)aId|A9!dxBVAZA?a6b>G=6x+(Zt!^BQZ0 z7R)>Qd@B}W<(w)*W-?=RYoUh7T}S(W(n+ua4`VfC&+`ujPXX{fc<0cu=O2FIgCX+s zfK{s9{W(Cv*xm)3lX?9XCo2lz6ZlNxS2&sq$~t{MKAS<{~|bNm#DJY5pJ z(!1@ymdleZhUHFp+Iiud`&6q%z+BD@UF8QN70e^7+)Tj2HjupzX$184ELt1i-ZTTo`tPt+eE0~d zUQyA(RbK+DEr1hN&lM*@FxN{P$D8ed4M~$wd4aDv>)`OLn!K;BaJj}um)<*nfi?{I zky*=EUb@@`Og-l@?99`YQkCF(u;J3@Z0EhEAE_HbMoz#e|KqOPUk@HdjRa~CaeZV3DtKYW!neBEog9ucfbe$>pOSQve1^oZG!~X3U%dNy;$o6Nhe+1KJ!S6-h znl@0c>I*Y|MRS`{@N|qY%+Nk4@RKwNk-583M+Mo@Y^696foc&GGbc#BgvWc~@&MS#R11RP3 zhFnB%#LYU!AxhW>MUpGN;B7x3SLoKc-@Kl%UEIk~?(DduQUsUSE<3FFKWSeO2k$uo Yv~sDLA|EmB;er1&Rdt_~Kei73e?5D9bN~PV diff --git a/icons/Marine/mainship_props64.dmi b/icons/Marine/mainship_props64.dmi index 427b1d9dbe9e8c8e02c146482726968c4c6c259b..0b2338a7068395831e2d6bbfdd69b36a68b84e2e 100644 GIT binary patch literal 64606 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਼oBOYZDc` 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 literal 51765 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 TTh?PB;H4<5CQ~J48uEVtaoF{9 diff --git a/icons/effects/lases.dmi b/icons/effects/lases.dmi index 99c929c7dfd2392306f98a0854a1005c6fad052d..0e346016fdd619411950260f7f5252dc080ff9a2 100644 GIT binary patch literal 10762 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 literal 9225 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 dy}NU*XY@^ Date: Sun, 7 Jan 2024 09:09:31 +0000 Subject: [PATCH 13/82] Automatic changelog for PR #14738 [ci skip] --- html/changelogs/AutoChangeLog-pr-14738.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14738.yml diff --git a/html/changelogs/AutoChangeLog-pr-14738.yml b/html/changelogs/AutoChangeLog-pr-14738.yml new file mode 100644 index 0000000000000..91d60a04c53dc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14738.yml @@ -0,0 +1,7 @@ +author: "Pariah919" +delete-after: True +changes: + - rscadd: "Two new type of missiles, the Swansong and Monarch." + - rscadd: "CAS bombs and bomblets. 200, 400, and 1000lb bombs. 50lb and 75lb bombs." + - balance: "CAS Missiles have been entirely rebalanced into classes." + - balance: "The classes are ATGM (3s/AGM), Heavy(6s/PGHM), Normal (4s/PGLM)." \ No newline at end of file From c9c74dba50ac87a96d7d238e372ef2f17fb201c8 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Mon, 8 Jan 2024 00:53:51 +0000 Subject: [PATCH 14/82] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-14695.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14736.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14738.yml | 7 ------- html/changelogs/AutoChangeLog-pr-14757.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14759.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14764.yml | 4 ---- html/changelogs/archive/2024-01.yml | 16 ++++++++++++++++ 7 files changed, 16 insertions(+), 27 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-14695.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14736.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14738.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14757.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14759.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14764.yml diff --git a/html/changelogs/AutoChangeLog-pr-14695.yml b/html/changelogs/AutoChangeLog-pr-14695.yml deleted file mode 100644 index ede9f2e017a5e..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14695.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Pariah919" -delete-after: True -changes: - - balance: "You can no longer attach lasguns nor tesla to lasgun pouches for magazine use." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14736.yml b/html/changelogs/AutoChangeLog-pr-14736.yml deleted file mode 100644 index 1591487278dce..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14736.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Pariah919" -delete-after: True -changes: - - balance: "Marines can no longer access handheld tanglefoot grenades, all other forms of tangle (AGLS, Mortar, etc) are untouched." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14738.yml b/html/changelogs/AutoChangeLog-pr-14738.yml deleted file mode 100644 index 91d60a04c53dc..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14738.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Pariah919" -delete-after: True -changes: - - rscadd: "Two new type of missiles, the Swansong and Monarch." - - rscadd: "CAS bombs and bomblets. 200, 400, and 1000lb bombs. 50lb and 75lb bombs." - - balance: "CAS Missiles have been entirely rebalanced into classes." - - balance: "The classes are ATGM (3s/AGM), Heavy(6s/PGHM), Normal (4s/PGLM)." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14757.yml b/html/changelogs/AutoChangeLog-pr-14757.yml deleted file mode 100644 index f7913953a91c8..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14757.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ivanmixo" -delete-after: True -changes: - - refactor: "Cleaned up hud icons and overlays" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14759.yml b/html/changelogs/AutoChangeLog-pr-14759.yml deleted file mode 100644 index 37ba634c7208c..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14759.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "yyzsong" -delete-after: True -changes: - - balance: "Ravager, Gorger, and puppeteer will no longer be affected by pepperball" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14764.yml b/html/changelogs/AutoChangeLog-pr-14764.yml deleted file mode 100644 index 7186ca8433287..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14764.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Helg2" -delete-after: True -changes: - - qol: "Overheal is now located after the main health in status tab." \ No newline at end of file diff --git a/html/changelogs/archive/2024-01.yml b/html/changelogs/archive/2024-01.yml index 1463e6bb81f24..092ecee3b0537 100644 --- a/html/changelogs/archive/2024-01.yml +++ b/html/changelogs/archive/2024-01.yml @@ -49,3 +49,19 @@ - code_imp: Fixed some weird implementations of the examine signal - qol: AI eyes can hear stuff the camera eye hears - qol: AI eyes can see runechat from mobs (and objects) talking around them +2024-01-08: + Helg2: + - qol: Overheal is now located after the main health in status tab. + Pariah919: + - rscadd: Two new type of missiles, the Swansong and Monarch. + - rscadd: CAS bombs and bomblets. 200, 400, and 1000lb bombs. 50lb and 75lb bombs. + - balance: CAS Missiles have been entirely rebalanced into classes. + - balance: The classes are ATGM (3s/AGM), Heavy(6s/PGHM), Normal (4s/PGLM). + - balance: You can no longer attach lasguns nor tesla to lasgun pouches for magazine + use. + - balance: Marines can no longer access handheld tanglefoot grenades, all other + forms of tangle (AGLS, Mortar, etc) are untouched. + ivanmixo: + - refactor: Cleaned up hud icons and overlays + yyzsong: + - balance: Ravager, Gorger, and puppeteer will no longer be affected by pepperball From 1bb87afff2236d3cfb8b916b2729bff644696663 Mon Sep 17 00:00:00 2001 From: Helg2 <93882977+Helg2@users.noreply.github.com> Date: Mon, 8 Jan 2024 02:55:26 +0200 Subject: [PATCH 15/82] Adds missing pipe to second landing zone on Icy caves. (#14765) --- _maps/map_files/icy_caves/icy_caves.dmm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/_maps/map_files/icy_caves/icy_caves.dmm b/_maps/map_files/icy_caves/icy_caves.dmm index 44052dd30268e..8e54664b203eb 100644 --- a/_maps/map_files/icy_caves/icy_caves.dmm +++ b/_maps/map_files/icy_caves/icy_caves.dmm @@ -9485,6 +9485,9 @@ dir = 4 }, /obj/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/green/hidden{ + dir = 8 + }, /turf/open/floor/tile/dark, /area/icy_caves/outpost/LZ2) "Xc" = ( From 8e9bb0255c94906ffbd3f3628db0a58218881aa5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 00:55:43 +0000 Subject: [PATCH 16/82] Automatic changelog for PR #14765 [ci skip] --- html/changelogs/AutoChangeLog-pr-14765.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14765.yml diff --git a/html/changelogs/AutoChangeLog-pr-14765.yml b/html/changelogs/AutoChangeLog-pr-14765.yml new file mode 100644 index 0000000000000..2ee32b9236889 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14765.yml @@ -0,0 +1,4 @@ +author: "Helg2" +delete-after: True +changes: + - bugfix: "[Icy Caves] Added missing pipe for the second landing zone." \ No newline at end of file From db8817399f3b43d5332ab66e2eac77befd616f9e Mon Sep 17 00:00:00 2001 From: ivanmixo Date: Mon, 8 Jan 2024 21:09:15 +0100 Subject: [PATCH 17/82] Removes the HE GL54 nades from req (#14770) --- code/modules/reqs/supplypacks.dm | 6 ------ 1 file changed, 6 deletions(-) diff --git a/code/modules/reqs/supplypacks.dm b/code/modules/reqs/supplypacks.dm index 24a9535e5f238..3811a980648cc 100644 --- a/code/modules/reqs/supplypacks.dm +++ b/code/modules/reqs/supplypacks.dm @@ -373,12 +373,6 @@ WEAPONS contains = list(/obj/item/ammo_magazine/rifle/tx54/smoke/tangle) cost = 48 -/datum/supply_packs/weapons/tx54_he - name = "GL-54 HE grenade magazine" - contains = list(/obj/item/ammo_magazine/rifle/tx54/he) - cost = 50 - available_against_xeno_only = TRUE - /datum/supply_packs/weapons/tx55 name = "AR-55 OICW Rifle" contains = list(/obj/item/weapon/gun/rifle/tx55) From 8a7b095df1fc0bfa79b40b371cbe3feed2112609 Mon Sep 17 00:00:00 2001 From: ivanmixo Date: Mon, 8 Jan 2024 21:09:47 +0100 Subject: [PATCH 18/82] Fixes various strip related bugs (+ an extra runtime) (#14768) --- code/_onclick/hud/screen_objects/screen_objects.dm | 2 +- code/modules/mob/inventory.dm | 4 +++- code/modules/mob/living/carbon/carbon_helpers.dm | 2 +- code/modules/mob/living/carbon/carbon_stripping.dm | 12 +++++++++++- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/code/_onclick/hud/screen_objects/screen_objects.dm b/code/_onclick/hud/screen_objects/screen_objects.dm index c902907b7f7fd..1ba9d5b06e04b 100644 --- a/code/_onclick/hud/screen_objects/screen_objects.dm +++ b/code/_onclick/hud/screen_objects/screen_objects.dm @@ -710,7 +710,7 @@ /atom/movable/screen/ammo/proc/add_hud(mob/living/user, datum/ammo_owner) if(isnull(ammo_owner)) CRASH("/atom/movable/screen/ammo/proc/add_hud() has been called from [src] without the required param of ammo_owner") - user?.client.screen += src + user?.client?.screen += src ///wrapper to removing this ammo hud from the users screen /atom/movable/screen/ammo/proc/remove_hud(mob/living/user) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 62a4468be532e..e9acb9d0660ce 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -173,7 +173,9 @@ return FALSE //nonliving mobs don't have hands /mob/living/put_in_hand_check(obj/item/I, hand_index) - if((I.flags_item & ITEM_ABSTRACT)) + if((I.flags_item & ITEM_ABSTRACT) || !istype(I)) + return FALSE + if(incapacitated() || lying_angle || (status_flags & INCORPOREAL)) return FALSE return TRUE diff --git a/code/modules/mob/living/carbon/carbon_helpers.dm b/code/modules/mob/living/carbon/carbon_helpers.dm index b3f86cb7506aa..c6e229fda6958 100644 --- a/code/modules/mob/living/carbon/carbon_helpers.dm +++ b/code/modules/mob/living/carbon/carbon_helpers.dm @@ -33,7 +33,7 @@ else return get_limb(BODY_ZONE_PRECISE_R_HAND) -/mob/Living/carbon/put_in_hand_check(obj/item/I, hand_index) +/mob/living/carbon/put_in_hand_check(obj/item/I, hand_index) if(!index_to_hand(hand_index)) return FALSE return ..() diff --git a/code/modules/mob/living/carbon/carbon_stripping.dm b/code/modules/mob/living/carbon/carbon_stripping.dm index 35e87f5fa33ae..3e42ce3ad9be2 100644 --- a/code/modules/mob/living/carbon/carbon_stripping.dm +++ b/code/modules/mob/living/carbon/carbon_stripping.dm @@ -48,7 +48,7 @@ var/mob/mob_source = source if(!mob_source.can_put_in_hand(equipping, hand_index)) - to_chat(src, "\The [equipping] doesn't fit in that place!") + to_chat(user, "[mob_source] can't hold [equipping] right now!") return FALSE return TRUE @@ -105,6 +105,9 @@ hand_index = 1 /datum/strippable_item/hand/left/get_alternate_action(atom/source, mob/user) + var/obj/item/source_item = get_item(source) + if(!HAS_TRAIT(source_item, TRAIT_STRAPPABLE)) + return null return get_strippable_alternate_action_strap(get_item(source), source) /datum/strippable_item/hand/left/alternate_action(atom/source, mob/user) @@ -115,6 +118,9 @@ hand_index = 2 /datum/strippable_item/hand/right/get_alternate_action(atom/source, mob/user) + var/obj/item/source_item = get_item(source) + if(!HAS_TRAIT(source_item, TRAIT_STRAPPABLE)) + return null return get_strippable_alternate_action_strap(get_item(source), source) /datum/strippable_item/hand/right/alternate_action(atom/source, mob/user) @@ -131,6 +137,10 @@ /datum/strippable_item/proc/strippable_alternate_action_strap(obj/item/item, atom/source, mob/user) if(!HAS_TRAIT(item, TRAIT_STRAPPABLE)) return + + if(length(user.do_actions)) + user.balloon_alert(user, "Busy!") + return var/strapped = HAS_TRAIT_FROM(item, TRAIT_NODROP, STRAPPABLE_ITEM_TRAIT) user.balloon_alert_to_viewers("[strapped ? "Loosening" : "Tightening"] strap...") From c7a72f699cef45c83a34c51d1fdff20733d32c8a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 20:15:46 +0000 Subject: [PATCH 19/82] Automatic changelog for PR #14770 [ci skip] --- html/changelogs/AutoChangeLog-pr-14770.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14770.yml diff --git a/html/changelogs/AutoChangeLog-pr-14770.yml b/html/changelogs/AutoChangeLog-pr-14770.yml new file mode 100644 index 0000000000000..88f31825985a5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14770.yml @@ -0,0 +1,4 @@ +author: "ivanmixo" +delete-after: True +changes: + - rscdel: "Removes the HE GL54 nades from req" \ No newline at end of file From 5d6628375f0a239336a84e753042963e37152cdc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 20:18:15 +0000 Subject: [PATCH 20/82] Automatic changelog for PR #14768 [ci skip] --- html/changelogs/AutoChangeLog-pr-14768.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14768.yml diff --git a/html/changelogs/AutoChangeLog-pr-14768.yml b/html/changelogs/AutoChangeLog-pr-14768.yml new file mode 100644 index 0000000000000..914576e04fd97 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14768.yml @@ -0,0 +1,4 @@ +author: "ivanmixo" +delete-after: True +changes: + - bugfix: "Various fixes to the strip menu, check the PR" \ No newline at end of file From 89a391ef88198274634491dc8d5c3e29a48db567 Mon Sep 17 00:00:00 2001 From: Lumipharon Date: Tue, 9 Jan 2024 10:27:28 +1300 Subject: [PATCH 21/82] CQC skill tweaks (#14773) --- code/__DEFINES/skills.dm | 2 ++ code/modules/mob/living/carbon/human/human_attackhand.dm | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/code/__DEFINES/skills.dm b/code/__DEFINES/skills.dm index 81941381c0679..2eeb44cb7bc2e 100644 --- a/code/__DEFINES/skills.dm +++ b/code/__DEFINES/skills.dm @@ -115,6 +115,8 @@ #define SKILL_CQC_MP 2 //no risk of accidental weapon discharge upon disarming (MP) #define SKILL_CQC_MASTER 5 +///unarmed damage mod from CQC skill +#define CQC_SKILL_DAMAGE_MOD 5 ///disarm chance mod from CQC skill #define CQC_SKILL_DISARM_MOD 5 diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 83ec44552f87e..29f8c7d683670 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -107,7 +107,7 @@ return FALSE H.do_attack_animation(src, ATTACK_EFFECT_YELLOWPUNCH) - var/max_dmg = H.melee_damage + H.skills.getRating(SKILL_CQC) + var/max_dmg = max(H.melee_damage + (H.skills.getRating(SKILL_CQC) * CQC_SKILL_DAMAGE_MOD), 3) var/damage = rand(1, max_dmg) var/target_zone = ran_zone(H.zone_selected) @@ -116,7 +116,7 @@ visible_message(span_danger("[H] [pick(attack.attack_verb)]ed [src]!"), null, null, 5) var/list/hit_report = list() - if(damage >= 5 && prob(50)) + if(damage >= 4 && prob(25)) visible_message(span_danger("[H] has weakened [src]!"), null, null, 5) apply_effect(modify_by_armor(6 SECONDS, MELEE, def_zone = target_zone), WEAKEN) hit_report += "(KO)" From 98a055e691f2faf5e3cc6603124742403847998a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 21:27:44 +0000 Subject: [PATCH 22/82] Automatic changelog for PR #14773 [ci skip] --- html/changelogs/AutoChangeLog-pr-14773.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14773.yml diff --git a/html/changelogs/AutoChangeLog-pr-14773.yml b/html/changelogs/AutoChangeLog-pr-14773.yml new file mode 100644 index 0000000000000..6c625dc4e8420 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14773.yml @@ -0,0 +1,4 @@ +author: "Lumipharon" +delete-after: True +changes: + - balance: "CQC skill now does +5 max damage instead of +1" \ No newline at end of file From e87f0d085dfae8699e282381c8febd7f98b622ff Mon Sep 17 00:00:00 2001 From: SplinterGP Date: Mon, 8 Jan 2024 18:32:20 -0300 Subject: [PATCH 23/82] Fix glass being able to be merged into any other glass type (#14760) --- _maps/map_files/BigRed_v2/BigRed_v2.dmm | 4 ++-- .../patricks_rest/patricks_rest.dmm | 2 +- _maps/map_files/LV624/LV624.dmm | 4 ++-- .../Pillar_of_Spring/TGS_Pillar_of_Spring.dmm | 2 +- .../Research_Outpost/Research_Outpost.dmm | 2 +- _maps/map_files/Sulaco/TGS_Sulaco.dmm | 4 ++-- _maps/map_files/Theseus/TGS_Theseus.dmm | 4 ++-- .../Whiskey_Outpost/Whiskey_Outpost_v2.dmm | 4 ++-- _maps/map_files/debugdalus/tgs_debugdalus.dmm | 2 +- _maps/map_files/generic/Admin_Level.dmm | 18 +++++++++--------- .../map_files/oscar_outpost/oscar_outpost.dmm | 12 ++++++------ _maps/map_files/slumbridge/slumbridge.dmm | 2 +- .../big_red/bigredengineeringvar1.dmm | 2 +- .../big_red/bigredengineeringvar2.dmm | 2 +- .../big_red/bigredengineeringvar3.dmm | 2 +- .../big_red/bigredengineeringvar4.dmm | 2 +- _maps/modularmaps/big_red/bigredofficevar2.dmm | 2 +- _maps/modularmaps/lv624/robotics.dmm | 2 +- _maps/shuttles/big_ert.dmm | 4 ++-- _maps/shuttles/tgs_bigbury.dmm | 2 +- .../effects/spawners/random/engineering.dm | 4 ++-- code/game/objects/items/shards.dm | 2 +- code/game/objects/items/stacks/sheets/glass.dm | 10 +++++++--- code/game/objects/structures/window.dm | 2 +- code/modules/codex/entries/stacks_codex.dm | 2 +- code/modules/reqs/supplypacks.dm | 2 +- 26 files changed, 52 insertions(+), 48 deletions(-) diff --git a/_maps/map_files/BigRed_v2/BigRed_v2.dmm b/_maps/map_files/BigRed_v2/BigRed_v2.dmm index 72180d730bef3..12dd15aede83f 100644 --- a/_maps/map_files/BigRed_v2/BigRed_v2.dmm +++ b/_maps/map_files/BigRed_v2/BigRed_v2.dmm @@ -11689,7 +11689,7 @@ /area/bigredv2/outside/marshal_office) "kOk" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass/glass, /turf/open/floor, /area/bigredv2/outside/engineering) "kPA" = ( @@ -12839,7 +12839,7 @@ /obj/structure/table, /obj/effect/decal/cleanable/dirt, /obj/item/stock_parts/smes_coil, -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 30 }, /turf/open/floor, diff --git a/_maps/map_files/Campaign maps/patricks_rest/patricks_rest.dmm b/_maps/map_files/Campaign maps/patricks_rest/patricks_rest.dmm index 92f34179f79b2..227d496f370dd 100644 --- a/_maps/map_files/Campaign maps/patricks_rest/patricks_rest.dmm +++ b/_maps/map_files/Campaign maps/patricks_rest/patricks_rest.dmm @@ -9348,7 +9348,7 @@ /area/patricks_rest/surface/building/residential_cent) "RL" = ( /obj/structure/closet/crate/mass_produced_crate/supply, -/obj/item/stack/sheet/glass/large_stack, +/obj/item/stack/sheet/glass/glass/large_stack, /turf/open/floor/prison/darkbrown/full, /area/patricks_rest/surface/building/ore_storage) "RN" = ( diff --git a/_maps/map_files/LV624/LV624.dmm b/_maps/map_files/LV624/LV624.dmm index c1525df887608..9fb9ed45674de 100644 --- a/_maps/map_files/LV624/LV624.dmm +++ b/_maps/map_files/LV624/LV624.dmm @@ -5812,7 +5812,7 @@ /turf/open/floor/plating/ground/dirt, /area/lv624/ground/sand4) "eSp" = ( -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 30 }, /obj/structure/rack, @@ -10802,7 +10802,7 @@ /area/lv624/lazarus/atmos) "kyP" = ( /obj/structure/rack, -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 30 }, /turf/open/floor/plating/platebot, diff --git a/_maps/map_files/Pillar_of_Spring/TGS_Pillar_of_Spring.dmm b/_maps/map_files/Pillar_of_Spring/TGS_Pillar_of_Spring.dmm index bcec3c834af11..62855f86a4d20 100644 --- a/_maps/map_files/Pillar_of_Spring/TGS_Pillar_of_Spring.dmm +++ b/_maps/map_files/Pillar_of_Spring/TGS_Pillar_of_Spring.dmm @@ -13293,7 +13293,7 @@ /area/mainship/squads/req) "qHv" = ( /obj/structure/table/mainship/nometal, -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 50; pixel_x = 3; pixel_y = 3 diff --git a/_maps/map_files/Research_Outpost/Research_Outpost.dmm b/_maps/map_files/Research_Outpost/Research_Outpost.dmm index 245d0a7056fd6..2e5ea2adb0379 100644 --- a/_maps/map_files/Research_Outpost/Research_Outpost.dmm +++ b/_maps/map_files/Research_Outpost/Research_Outpost.dmm @@ -2943,7 +2943,7 @@ pixel_x = 4; pixel_y = 4 }, -/obj/item/stack/sheet/glass/large_stack, +/obj/item/stack/sheet/glass/glass/large_stack, /obj/item/stack/sheet/mineral/phoron/medium_stack, /turf/open/floor/tile/dark/purple2, /area/outpost/science/research) diff --git a/_maps/map_files/Sulaco/TGS_Sulaco.dmm b/_maps/map_files/Sulaco/TGS_Sulaco.dmm index 2afc737a26494..ed8fdd16a744e 100644 --- a/_maps/map_files/Sulaco/TGS_Sulaco.dmm +++ b/_maps/map_files/Sulaco/TGS_Sulaco.dmm @@ -14029,7 +14029,7 @@ dir = 4 }, /obj/structure/table/reinforced, -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 50; pixel_x = 3; pixel_y = 3 @@ -14561,7 +14561,7 @@ /obj/machinery/light/mainship/small{ dir = 1 }, -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 50; pixel_x = 3; pixel_y = 3 diff --git a/_maps/map_files/Theseus/TGS_Theseus.dmm b/_maps/map_files/Theseus/TGS_Theseus.dmm index dda475967ad4a..c07cf82d430b0 100644 --- a/_maps/map_files/Theseus/TGS_Theseus.dmm +++ b/_maps/map_files/Theseus/TGS_Theseus.dmm @@ -6914,7 +6914,7 @@ amount = 25 }, /obj/item/storage/briefcase/inflatable, -/obj/item/stack/sheet/glass/large_stack, +/obj/item/stack/sheet/glass/glass/large_stack, /turf/open/floor/mainship/floor, /area/mainship/hallways/repair_bay) "bVF" = ( @@ -17183,7 +17183,7 @@ /area/mainship/hull/starboard_hull) "rYA" = ( /obj/structure/table/mainship/nometal, -/obj/item/stack/sheet/glass/large_stack, +/obj/item/stack/sheet/glass/glass/large_stack, /obj/effect/spawner/random/misc/gnome, /turf/open/floor/mainship/mono, /area/mainship/engineering/lower_engineering) diff --git a/_maps/map_files/Whiskey_Outpost/Whiskey_Outpost_v2.dmm b/_maps/map_files/Whiskey_Outpost/Whiskey_Outpost_v2.dmm index 8b0ea070afd71..abbee4fd7d57a 100644 --- a/_maps/map_files/Whiskey_Outpost/Whiskey_Outpost_v2.dmm +++ b/_maps/map_files/Whiskey_Outpost/Whiskey_Outpost_v2.dmm @@ -3928,10 +3928,10 @@ /area/whiskey_outpost/outside/east) "tP" = ( /obj/structure/closet/crate, -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 30 }, -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 30 }, /turf/open/floor/marking/bot, diff --git a/_maps/map_files/debugdalus/tgs_debugdalus.dmm b/_maps/map_files/debugdalus/tgs_debugdalus.dmm index 217fd50e1cdd6..83ca57a8163e5 100644 --- a/_maps/map_files/debugdalus/tgs_debugdalus.dmm +++ b/_maps/map_files/debugdalus/tgs_debugdalus.dmm @@ -629,7 +629,7 @@ "acX" = ( /obj/item/storage/box/crate/sentry, /obj/structure/rack, -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 50; pixel_x = 3; pixel_y = 3 diff --git a/_maps/map_files/generic/Admin_Level.dmm b/_maps/map_files/generic/Admin_Level.dmm index dfc411f7ae805..9c519c6f3c16b 100644 --- a/_maps/map_files/generic/Admin_Level.dmm +++ b/_maps/map_files/generic/Admin_Level.dmm @@ -6132,7 +6132,7 @@ /obj/item/stack/sheet/metal{ amount = 30 }, -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 30 }, /obj/effect/turf_decal/warning_stripes/thick, @@ -7498,7 +7498,7 @@ "jXn" = ( /obj/structure/table/reinforced, /obj/item/stack/sheet/metal/large_stack, -/obj/item/stack/sheet/glass/large_stack, +/obj/item/stack/sheet/glass/glass/large_stack, /obj/item/stack/rods, /obj/item/cell/high, /obj/item/cell/high, @@ -10520,8 +10520,8 @@ /obj/structure/table/reinforced, /obj/item/stack/sheet/metal/large_stack, /obj/item/stack/sheet/metal/large_stack, -/obj/item/stack/sheet/glass/large_stack, -/obj/item/stack/sheet/glass/large_stack, +/obj/item/stack/sheet/glass/glass/large_stack, +/obj/item/stack/sheet/glass/glass/large_stack, /obj/item/stack/sheet/plasteel/large_stack, /obj/item/tool/crowbar, /obj/effect/turf_decal/warning_stripes/thick{ @@ -11988,7 +11988,7 @@ /area/centcom/valhalla) "qcP" = ( /obj/structure/table/reinforced, -/obj/item/stack/sheet/glass/large_stack, +/obj/item/stack/sheet/glass/glass/large_stack, /obj/item/stack/rods, /obj/machinery/air_alarm, /obj/effect/turf_decal/tile/yellow{ @@ -12305,7 +12305,7 @@ /area/tdome/tdomeadmin) "qBl" = ( /obj/item/tool/wrench, -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 30 }, /obj/item/stack/sheet/metal{ @@ -13519,7 +13519,7 @@ /obj/item/stack/sheet/metal{ amount = 30 }, -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 30 }, /turf/open/floor/tile/dark/gray, @@ -14650,8 +14650,8 @@ /obj/structure/table, /obj/item/stack/cable_coil, /obj/item/stack/cable_coil, -/obj/item/stack/sheet/glass, -/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass/glass, +/obj/item/stack/sheet/glass/glass, /turf/open/floor/wood, /area/centcom/valhalla) "tuC" = ( diff --git a/_maps/map_files/oscar_outpost/oscar_outpost.dmm b/_maps/map_files/oscar_outpost/oscar_outpost.dmm index 5d4d22f52605a..d873a9adb2b32 100644 --- a/_maps/map_files/oscar_outpost/oscar_outpost.dmm +++ b/_maps/map_files/oscar_outpost/oscar_outpost.dmm @@ -2903,10 +2903,10 @@ /area/oscar_outpost/outside/west) "tM" = ( /obj/structure/closet/crate, -/obj/item/stack/sheet/glass/large_stack, -/obj/item/stack/sheet/glass/large_stack, -/obj/item/stack/sheet/glass/large_stack, -/obj/item/stack/sheet/glass/large_stack, +/obj/item/stack/sheet/glass/glass/large_stack, +/obj/item/stack/sheet/glass/glass/large_stack, +/obj/item/stack/sheet/glass/glass/large_stack, +/obj/item/stack/sheet/glass/glass/large_stack, /obj/machinery/camera/autoname/mainship{ dir = 1 }, @@ -8512,10 +8512,10 @@ /area/oscar_outpost) "Tv" = ( /obj/structure/closet/crate, -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 30 }, -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 30 }, /turf/open/floor/tile/dark, diff --git a/_maps/map_files/slumbridge/slumbridge.dmm b/_maps/map_files/slumbridge/slumbridge.dmm index d40072490862a..d5343ba239e23 100644 --- a/_maps/map_files/slumbridge/slumbridge.dmm +++ b/_maps/map_files/slumbridge/slumbridge.dmm @@ -4781,7 +4781,7 @@ /area/slumbridge/outside/southeast) "dDF" = ( /obj/structure/rack, -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 30 }, /turf/open/floor/tile/dark, diff --git a/_maps/modularmaps/big_red/bigredengineeringvar1.dmm b/_maps/modularmaps/big_red/bigredengineeringvar1.dmm index 8b030c77edab0..e8f578221c967 100644 --- a/_maps/modularmaps/big_red/bigredengineeringvar1.dmm +++ b/_maps/modularmaps/big_red/bigredengineeringvar1.dmm @@ -366,7 +366,7 @@ /turf/open/floor, /area/bigredv2/outside/engineering) "wg" = ( -/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass/glass, /obj/structure/cable, /turf/open/floor, /area/bigredv2/outside/engineering) diff --git a/_maps/modularmaps/big_red/bigredengineeringvar2.dmm b/_maps/modularmaps/big_red/bigredengineeringvar2.dmm index 16c6af69fdbe3..64198449fba5c 100644 --- a/_maps/modularmaps/big_red/bigredengineeringvar2.dmm +++ b/_maps/modularmaps/big_red/bigredengineeringvar2.dmm @@ -564,7 +564,7 @@ /turf/open/floor/plating/ground/mars/random/dirt, /area/bigredv2/caves/southwest) "Ge" = ( -/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass/glass, /obj/structure/cable, /turf/open/floor, /area/bigredv2/outside/engineering) diff --git a/_maps/modularmaps/big_red/bigredengineeringvar3.dmm b/_maps/modularmaps/big_red/bigredengineeringvar3.dmm index ac8ea070fa8b6..b6095ad212d80 100644 --- a/_maps/modularmaps/big_red/bigredengineeringvar3.dmm +++ b/_maps/modularmaps/big_red/bigredengineeringvar3.dmm @@ -428,7 +428,7 @@ /turf/open/floor, /area/bigredv2/outside/engineering) "uj" = ( -/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass/glass, /obj/structure/cable, /turf/open/floor, /area/bigredv2/outside/engineering) diff --git a/_maps/modularmaps/big_red/bigredengineeringvar4.dmm b/_maps/modularmaps/big_red/bigredengineeringvar4.dmm index 7c336abf7808e..8853d0c3f2658 100644 --- a/_maps/modularmaps/big_red/bigredengineeringvar4.dmm +++ b/_maps/modularmaps/big_red/bigredengineeringvar4.dmm @@ -934,7 +934,7 @@ /turf/open/floor, /area/bigredv2/outside/engineering) "Zv" = ( -/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass/glass, /obj/structure/cable, /turf/open/floor, /area/bigredv2/outside/engineering) diff --git a/_maps/modularmaps/big_red/bigredofficevar2.dmm b/_maps/modularmaps/big_red/bigredofficevar2.dmm index 1e398128e39f4..a5270f643dd90 100644 --- a/_maps/modularmaps/big_red/bigredofficevar2.dmm +++ b/_maps/modularmaps/big_red/bigredofficevar2.dmm @@ -271,7 +271,7 @@ "hw" = ( /obj/structure/cable, /obj/effect/spawner/random/weaponry/gun, -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 50; pixel_x = 3; pixel_y = 3 diff --git a/_maps/modularmaps/lv624/robotics.dmm b/_maps/modularmaps/lv624/robotics.dmm index dbcc032111e50..d9b26ffaae6a7 100644 --- a/_maps/modularmaps/lv624/robotics.dmm +++ b/_maps/modularmaps/lv624/robotics.dmm @@ -1,6 +1,6 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "ar" = ( -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 30 }, /obj/structure/rack, diff --git a/_maps/shuttles/big_ert.dmm b/_maps/shuttles/big_ert.dmm index b4462c11ccf5d..0ce329b580dc8 100644 --- a/_maps/shuttles/big_ert.dmm +++ b/_maps/shuttles/big_ert.dmm @@ -588,10 +588,10 @@ /obj/item/stack/sheet/plasteel{ amount = 30 }, -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 50 }, -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 50 }, /obj/item/stack/cable_coil, diff --git a/_maps/shuttles/tgs_bigbury.dmm b/_maps/shuttles/tgs_bigbury.dmm index bae7481e39a07..ca0bc190fc712 100644 --- a/_maps/shuttles/tgs_bigbury.dmm +++ b/_maps/shuttles/tgs_bigbury.dmm @@ -360,7 +360,7 @@ /obj/item/clothing/suit/storage/hazardvest, /obj/item/clothing/suit/storage/hazardvest, /obj/item/facepaint/black, -/obj/item/stack/sheet/glass{ +/obj/item/stack/sheet/glass/glass{ amount = 50; pixel_x = 3; pixel_y = 3 diff --git a/code/game/objects/effects/spawners/random/engineering.dm b/code/game/objects/effects/spawners/random/engineering.dm index 0c095d960dea5..581781d83a311 100644 --- a/code/game/objects/effects/spawners/random/engineering.dm +++ b/code/game/objects/effects/spawners/random/engineering.dm @@ -204,8 +204,8 @@ icon_state = "random_glass" spawn_loot_chance = 90 loot = list( - /obj/item/stack/sheet/glass = 25, - /obj/item/stack/sheet/glass/large_stack = 1, + /obj/item/stack/sheet/glass/glass = 25, + /obj/item/stack/sheet/glass/glass/large_stack = 1, ) /obj/effect/spawner/random/engineering/insulatedgloves diff --git a/code/game/objects/items/shards.dm b/code/game/objects/items/shards.dm index bd7897f561a56..ccf71982b48a0 100644 --- a/code/game/objects/items/shards.dm +++ b/code/game/objects/items/shards.dm @@ -16,7 +16,7 @@ ) item_state = "shard-glass" attack_verb = list("stabbed", "slashed", "sliced", "cut") - var/source_sheet_type = /obj/item/stack/sheet/glass + var/source_sheet_type = /obj/item/stack/sheet/glass/glass var/shardsize /obj/item/shard/suicide_act(mob/user) diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 3dbd6282c5bbf..34f5718758632 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -15,7 +15,6 @@ singular_name = "glass sheet" icon_state = "sheet-glass" item_state = "sheet-glass" - merge_type = /obj/item/stack/sheet/glass var/created_window = /obj/structure/window var/reinforced_type = /obj/item/stack/sheet/glass/reinforced var/is_reinforced = FALSE @@ -74,8 +73,9 @@ GLOBAL_LIST_INIT(glass_radial_images, list( V.use(1) if(!src && !RG) user.put_in_hands(RG) - -/obj/item/stack/sheet/glass/large_stack +/obj/item/stack/sheet/glass/glass //this exists because otherwise glass can be merger into any ofthe other glass types. + merge_type = /obj/item/stack/sheet/glass/glass +/obj/item/stack/sheet/glass/glass/large_stack amount = 50 @@ -88,6 +88,7 @@ GLOBAL_LIST_INIT(glass_radial_images, list( singular_name = "reinforced glass sheet" icon_state = "sheet-rglass" item_state = "sheet-rglass" + merge_type = /obj/item/stack/sheet/glass/reinforced created_window = /obj/structure/window/reinforced is_reinforced = TRUE @@ -101,9 +102,11 @@ GLOBAL_LIST_INIT(glass_radial_images, list( desc = "Phoron glass is a silicate-phoron alloy turned into a non-crystalline solid. It is transparent just like glass, even if visibly tainted pink, and very resistant to damage and heat." singular_name = "phoron glass sheet" icon_state = "sheet-phoronglass" + merge_type = /obj/item/stack/sheet/glass/phoronglass created_window = /obj/structure/window/phoronbasic reinforced_type = /obj/item/stack/sheet/glass/phoronrglass + /* * Reinforced phoron glass sheets */ @@ -112,5 +115,6 @@ GLOBAL_LIST_INIT(glass_radial_images, list( desc = "Reinforced phoron glass is made out of squares of silicate-phoron alloy glass layered on a metallic rod matrice. It is insanely resistant to both physical shock and heat." singular_name = "reinforced phoron glass sheet" icon_state = "sheet-phoronrglass" + merge_type = /obj/item/stack/sheet/glass/phoronrglass created_window = /obj/structure/window/phoronreinforced is_reinforced = TRUE diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index d3b40eba36ca9..1468d4d48682b 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -195,7 +195,7 @@ if(reinf) new /obj/item/stack/sheet/glass/reinforced(loc, 2) else - new /obj/item/stack/sheet/glass(loc, 2) + new /obj/item/stack/sheet/glass/glass(loc, 2) else new shardtype(loc) if(is_full_window()) diff --git a/code/modules/codex/entries/stacks_codex.dm b/code/modules/codex/entries/stacks_codex.dm index 55d271c6437fc..d9532c90b3551 100644 --- a/code/modules/codex/entries/stacks_codex.dm +++ b/code/modules/codex/entries/stacks_codex.dm @@ -5,7 +5,7 @@ Clicking on a floor without any tiles will reinforce the floor. You can make reinforced glass by combining rods and normal glass sheets." /datum/codex_entry/glass - associated_paths = list(/obj/item/stack/sheet/glass) + associated_paths = list(/obj/item/stack/sheet/glass/glass) mechanics_text = "Use in your hand to build a window. Can be upgraded to reinforced glass by adding metal rods, which are made from metal sheets." /datum/codex_entry/glass_reinf diff --git a/code/modules/reqs/supplypacks.dm b/code/modules/reqs/supplypacks.dm index 3811a980648cc..3103efb9b8659 100644 --- a/code/modules/reqs/supplypacks.dm +++ b/code/modules/reqs/supplypacks.dm @@ -1330,7 +1330,7 @@ ENGINEERING /datum/supply_packs/engineering/glass50 name = "50 glass sheets" - contains = list(/obj/item/stack/sheet/glass/large_stack) + contains = list(/obj/item/stack/sheet/glass/glass/large_stack) cost = 100 /datum/supply_packs/engineering/wood50 From acb8eeebfc9325e5ebb8cf9e71266be22d95b45b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 21:32:38 +0000 Subject: [PATCH 24/82] Automatic changelog for PR #14760 [ci skip] --- html/changelogs/AutoChangeLog-pr-14760.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14760.yml diff --git a/html/changelogs/AutoChangeLog-pr-14760.yml b/html/changelogs/AutoChangeLog-pr-14760.yml new file mode 100644 index 0000000000000..cddc875d6e72d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14760.yml @@ -0,0 +1,4 @@ +author: "SplinterGP" +delete-after: True +changes: + - bugfix: "glass can't turn into other glass types by merging it into a reinforced/phoron glass stack" \ No newline at end of file From cd9404b617f5a3454b218da11ba704e96e79c633 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 9 Jan 2024 00:53:17 +0000 Subject: [PATCH 25/82] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-14760.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14765.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14768.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14770.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14773.yml | 4 ---- html/changelogs/archive/2024-01.yml | 11 +++++++++++ 6 files changed, 11 insertions(+), 20 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-14760.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14765.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14768.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14770.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14773.yml diff --git a/html/changelogs/AutoChangeLog-pr-14760.yml b/html/changelogs/AutoChangeLog-pr-14760.yml deleted file mode 100644 index cddc875d6e72d..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14760.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SplinterGP" -delete-after: True -changes: - - bugfix: "glass can't turn into other glass types by merging it into a reinforced/phoron glass stack" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14765.yml b/html/changelogs/AutoChangeLog-pr-14765.yml deleted file mode 100644 index 2ee32b9236889..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14765.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Helg2" -delete-after: True -changes: - - bugfix: "[Icy Caves] Added missing pipe for the second landing zone." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14768.yml b/html/changelogs/AutoChangeLog-pr-14768.yml deleted file mode 100644 index 914576e04fd97..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14768.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ivanmixo" -delete-after: True -changes: - - bugfix: "Various fixes to the strip menu, check the PR" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14770.yml b/html/changelogs/AutoChangeLog-pr-14770.yml deleted file mode 100644 index 88f31825985a5..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14770.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ivanmixo" -delete-after: True -changes: - - rscdel: "Removes the HE GL54 nades from req" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14773.yml b/html/changelogs/AutoChangeLog-pr-14773.yml deleted file mode 100644 index 6c625dc4e8420..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14773.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Lumipharon" -delete-after: True -changes: - - balance: "CQC skill now does +5 max damage instead of +1" \ No newline at end of file diff --git a/html/changelogs/archive/2024-01.yml b/html/changelogs/archive/2024-01.yml index 092ecee3b0537..923cacc8e28df 100644 --- a/html/changelogs/archive/2024-01.yml +++ b/html/changelogs/archive/2024-01.yml @@ -65,3 +65,14 @@ - refactor: Cleaned up hud icons and overlays yyzsong: - balance: Ravager, Gorger, and puppeteer will no longer be affected by pepperball +2024-01-09: + Helg2: + - bugfix: '[Icy Caves] Added missing pipe for the second landing zone.' + Lumipharon: + - balance: CQC skill now does +5 max damage instead of +1 + SplinterGP: + - bugfix: glass can't turn into other glass types by merging it into a reinforced/phoron + glass stack + ivanmixo: + - bugfix: Various fixes to the strip menu, check the PR + - rscdel: Removes the HE GL54 nades from req From e308f4da9f38a04b5e93be4758b5df1a7d04c13e Mon Sep 17 00:00:00 2001 From: Dikozda Date: Wed, 10 Jan 2024 04:10:20 +1100 Subject: [PATCH 26/82] fixes typo in jelly message (#14777) Co-authored-by: Dikozda --- .../carbon/xenomorph/castes/hivelord/abilities_hivelord.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/hivelord/abilities_hivelord.dm b/code/modules/mob/living/carbon/xenomorph/castes/hivelord/abilities_hivelord.dm index 7dd72944b86d0..aacf7d4bb904b 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/hivelord/abilities_hivelord.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/hivelord/abilities_hivelord.dm @@ -298,7 +298,7 @@ /datum/action/ability/xeno_action/create_jelly/action_activate() var/obj/item/resin_jelly/jelly = new(owner.loc) owner.put_in_hands(jelly) - to_chat(owner, span_xenonotice("We create a globule of resin from our ovipostor.")) // Ewww... + to_chat(owner, span_xenonotice("We create a globule of resin from our ovipositor.")) // Ewww... add_cooldown() succeed_activate() From 308633ff0b8f997322c936e20128a9997d57c434 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 9 Jan 2024 17:10:40 +0000 Subject: [PATCH 27/82] Automatic changelog for PR #14777 [ci skip] --- html/changelogs/AutoChangeLog-pr-14777.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14777.yml diff --git a/html/changelogs/AutoChangeLog-pr-14777.yml b/html/changelogs/AutoChangeLog-pr-14777.yml new file mode 100644 index 0000000000000..97de4138607e2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14777.yml @@ -0,0 +1,4 @@ +author: "Dikozda" +delete-after: True +changes: + - spellcheck: "fix typo in jelly message" \ No newline at end of file From 8f853a338f3593d0d2c0998b8239f9866a68837a Mon Sep 17 00:00:00 2001 From: DeltaFire <46569814+DeltaFire15@users.noreply.github.com> Date: Tue, 9 Jan 2024 18:11:01 +0100 Subject: [PATCH 28/82] Possibly fixes some situations that would incorrectly DNR you. (#14778) --- code/modules/mob/living/carbon/human/life.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index d8c90a1d10992..a49b950b68b26 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -34,8 +34,9 @@ else //Dead dead_ticks ++ var/mob/dead/observer/related_ghost = get_ghost() + var/datum/limb/headcheck = get_limb("head") // boolean, determines if the body's ghost can reenter the body - var/ghost_left = !client && !related_ghost?.can_reenter_corpse + var/ghost_left = !mind && (!(!headcheck || (headcheck.limb_status & LIMB_DESTROYED)) || (!(species.species_flags & DETACHABLE_HEAD))) && !related_ghost?.can_reenter_corpse if(dead_ticks > TIME_BEFORE_DNR || ghost_left) set_undefibbable(ghost_left) else From 66cdb432b43775b3890fc5d129f4d3c1b4c73ef3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 9 Jan 2024 17:11:22 +0000 Subject: [PATCH 29/82] Automatic changelog for PR #14778 [ci skip] --- html/changelogs/AutoChangeLog-pr-14778.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14778.yml diff --git a/html/changelogs/AutoChangeLog-pr-14778.yml b/html/changelogs/AutoChangeLog-pr-14778.yml new file mode 100644 index 0000000000000..b154bec329a3e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14778.yml @@ -0,0 +1,4 @@ +author: "DeltaFire15" +delete-after: True +changes: + - bugfix: "It should be less likely for you to go DNR in cases where you shouldn't be DNR." \ No newline at end of file From 288dcfeed13222835f1adba1652c1435bbadedbf Mon Sep 17 00:00:00 2001 From: ivanmixo Date: Wed, 10 Jan 2024 00:01:51 +0100 Subject: [PATCH 30/82] Adds the retired veteran ERT (bounty) (#14697) Co-authored-by: XElectricX Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com> --- code/__DEFINES/_radio.dm | 2 + code/__DEFINES/traits.dm | 1 + code/datums/components/mounted_gun.dm | 89 +++++++++++++++++++ .../components/riding/riding_vehicle.dm | 5 +- code/datums/emergency_calls/retired.dm | 60 +++++++++++++ code/datums/jobs/job/retired.dm | 84 +++++++++++++++++ .../game/objects/items/radio/encryptionkey.dm | 5 ++ code/game/objects/items/radio/headset.dm | 5 ++ code/modules/organs/limbs.dm | 5 ++ code/modules/projectiles/guns/rifles.dm | 7 +- code/modules/projectiles/guns/specialist.dm | 28 ++++++ .../projectiles/magazines/specialist.dm | 14 +++ code/modules/vehicles/_vehicle.dm | 4 + code/modules/vehicles/mecha/_mecha.dm | 2 +- code/modules/vehicles/wheelchair.dm | 28 +++++- tgmc.dme | 3 + 16 files changed, 338 insertions(+), 4 deletions(-) create mode 100644 code/datums/components/mounted_gun.dm create mode 100644 code/datums/emergency_calls/retired.dm create mode 100644 code/datums/jobs/job/retired.dm diff --git a/code/__DEFINES/_radio.dm b/code/__DEFINES/_radio.dm index eb62966842572..2cf001d613bb2 100644 --- a/code/__DEFINES/_radio.dm +++ b/code/__DEFINES/_radio.dm @@ -52,6 +52,7 @@ #define RADIO_CHANNEL_COLONIST "Colonist" #define RADIO_CHANNEL_PMC "NT PMC" +#define RADIO_CHANNEL_RETIRED "Terragov Retirees" #define RADIO_CHANNEL_USL "USL" #define RADIO_CHANNEL_DEATHSQUAD "Deathsquad" #define RADIO_CHANNEL_IMPERIAL "Imperial" @@ -77,6 +78,7 @@ #define MIN_ERT_FREQ 1331 #define FREQ_PMC 1331 +#define FREQ_RETIRED 1334 #define FREQ_COLONIST 1335 #define FREQ_USL 1337 #define FREQ_DEATHSQUAD 1339 diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index ca6d29b29cf53..f3ba2caadfa3e 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -113,6 +113,7 @@ #define WEIGHTBENCH_TRAIT "weightbench" #define BOILER_ROOTED_TRAIT "boiler_rooted" #define STRAPPABLE_ITEM_TRAIT "strappable_item" +#define MOUNTED_TRAIT "mounted" #define VALI_TRAIT "vali" #define HELDGLOVE_TRAIT "heldglove" #define SECTOID_TRAIT "sectoid" diff --git a/code/datums/components/mounted_gun.dm b/code/datums/components/mounted_gun.dm new file mode 100644 index 0000000000000..4b9f222143e37 --- /dev/null +++ b/code/datums/components/mounted_gun.dm @@ -0,0 +1,89 @@ +///This component allows gun mounting on vehicle types +/datum/component/vehicle_mounted_weapon + ///The gun mounted on a vehicle + var/obj/item/weapon/gun/mounted_gun + +/datum/component/vehicle_mounted_weapon/Initialize(gun_type) + . = ..() + if(!istype(parent, /obj/vehicle)) + return COMPONENT_INCOMPATIBLE + if(!(gun_type in subtypesof(/obj/item/weapon/gun))) + return COMPONENT_INCOMPATIBLE + mounted_gun = new gun_type(parent) + //NODROP so that you can't just drop the gun or have someone take it off your hands + ADD_TRAIT(mounted_gun, TRAIT_NODROP, MOUNTED_TRAIT) + +/datum/component/vehicle_mounted_weapon/RegisterWithParent() + RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE, PROC_REF(on_buckle)) + RegisterSignal(parent, COMSIG_MOVABLE_UNBUCKLE, PROC_REF(on_unbuckle)) + RegisterSignal(parent, COMSIG_MOUSEDROP_ONTO, PROC_REF(on_mousedrop)) + RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, PROC_REF(on_attackby)) + RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, PROC_REF(on_attack_hand)) + RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) + RegisterSignal(mounted_gun, COMSIG_ITEM_DROPPED, PROC_REF(on_weapon_drop)) + +/datum/component/vehicle_mounted_weapon/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_MOVABLE_BUCKLE, + COMSIG_MOVABLE_UNBUCKLE, + COMSIG_MOUSEDROP_ONTO, + COMSIG_ATOM_ATTACKBY, + COMSIG_ATOM_EXAMINE, + COMSIG_ATOM_ATTACK_HAND, + )) + QDEL_NULL(mounted_gun) + return ..() + +///Behaviour on buckle. Puts the gun in the buckled mob's hands. +/datum/component/vehicle_mounted_weapon/proc/on_buckle(datum/source, mob/living/buckling_mob, force = FALSE, check_loc = TRUE, lying_buckle = FALSE, hands_needed = 0, target_hands_needed = 0, silent) + SIGNAL_HANDLER + var/obj/vehicle/parent_vehicle = source + if(!parent_vehicle.is_equipment_controller(buckling_mob)) + return + if(!buckling_mob.put_in_active_hand(mounted_gun) && !buckling_mob.put_in_inactive_hand(mounted_gun)) + to_chat(buckling_mob, span_warning("Could not equip weapon! Click [parent] with a free hand to equip.")) + return + +///Behaviour on unbuckle. Force drops the gun from the unbuckled mob's hands. +/datum/component/vehicle_mounted_weapon/proc/on_unbuckle(datum/source, mob/living/unbuckled_mob, force = FALSE) + SIGNAL_HANDLER + unbuckled_mob.dropItemToGround(mounted_gun, TRUE) + +///Behaviour on mouse drop. If the user has clickdragged the chair to themselves they will unload it. +/datum/component/vehicle_mounted_weapon/proc/on_mousedrop(datum/source, atom/over, mob/user) + SIGNAL_HANDLER + if(!isliving(user) || over != usr || !in_range(source, user)) + return + + mounted_gun.unload(user) + +///Behaviour on attackby. When a user clicks the wheelchair with an ammo magazine they reload the mounted weapon. +/datum/component/vehicle_mounted_weapon/proc/on_attackby(datum/source, obj/item/I, mob/user, params) + SIGNAL_HANDLER + if(isammomagazine(I)) + INVOKE_ASYNC(mounted_gun, TYPE_PROC_REF(/obj/item/weapon/gun, reload), I, user) + return COMPONENT_NO_AFTERATTACK + +///Behaviour on attack hand. Puts the gun in the user's hands if they're riding the vehicle and don't have the gun in their hands. +/datum/component/vehicle_mounted_weapon/proc/on_attack_hand(datum/source, mob/user) + SIGNAL_HANDLER + var/obj/vehicle/parent_vehicle = source + if(parent_vehicle.is_equipment_controller(user) && !user.is_holding(mounted_gun)) + user.put_in_active_hand(mounted_gun) + return COMPONENT_NO_ATTACK_HAND + +///Adds stuff to the examine of the vehicle. +/datum/component/vehicle_mounted_weapon/proc/on_examine(datum/source, mob/user, list/examine_list) + SIGNAL_HANDLER + examine_list += span_warning("It has a [mounted_gun.name] attached.") + if(mounted_gun.rounds) + examine_list += span_notice("Ammo: [span_bold("[mounted_gun.rounds]/[mounted_gun.max_rounds]")]") + examine_list += span_notice("Drag to yourself to unload the mounted weapon.") + else + examine_list += span_notice("Reload it by clicking it with the appropriate ammo type.") + +///Handles the weapon being dropped. The only way this should happen is if they unbuckle, and this makes sure they can't just take the gun and run off with it. +/datum/component/vehicle_mounted_weapon/proc/on_weapon_drop(obj/item/dropped, mob/user) + SIGNAL_HANDLER + var/obj/vehicle/vehicle_parent = parent + vehicle_parent.visible_message(span_warning("[dropped] violently snaps back into it's place in [parent]!")) + dropped.forceMove(vehicle_parent) diff --git a/code/datums/components/riding/riding_vehicle.dm b/code/datums/components/riding/riding_vehicle.dm index f16d526e5a584..2bd83685b786a 100644 --- a/code/datums/components/riding/riding_vehicle.dm +++ b/code/datums/components/riding/riding_vehicle.dm @@ -130,7 +130,7 @@ if(!right_hand?.is_usable() || user.get_item_for_held_index(2)) working_hands-- if(!working_hands) - to_chat(user, span_warning("You have no arms to propel [src]!")) + to_chat(user, span_warning("You have no arms to propel [movable_parent]!")) return COMPONENT_DRIVER_BLOCK_MOVE // No hands to drive your chair? Tough luck! return ..() @@ -161,6 +161,9 @@ set_vehicle_dir_layer(EAST, OBJ_LAYER) set_vehicle_dir_layer(WEST, OBJ_LAYER) +/datum/component/riding/vehicle/wheelchair/weaponized + vehicle_move_delay = 5 + /datum/component/riding/vehicle/motorbike vehicle_move_delay = 2 ride_check_flags = RIDER_NEEDS_LEGS | RIDER_NEEDS_ARMS | UNBUCKLE_DISABLED_RIDER diff --git a/code/datums/emergency_calls/retired.dm b/code/datums/emergency_calls/retired.dm new file mode 100644 index 0000000000000..044e6dcbb8116 --- /dev/null +++ b/code/datums/emergency_calls/retired.dm @@ -0,0 +1,60 @@ +/datum/emergency_call/retired + name = "Retired TGMC Veteran Squad" + base_probability = 15 + alignement_factor = -1 + +/datum/emergency_call/retired/print_backstory(mob/living/carbon/human/H) + to_chat(H, "You are an old, retired member of the TerraGov marine corps.") + to_chat(H, "Althought you may be past your prime, high command has deemed you capable enough to be sent to the [SSmapping.configs[SHIP_MAP].map_name], which has recently sent out a distress signal.") + to_chat(H, "Investigate why the distress signal was sent and show the younger generation how it's done!") + +/datum/emergency_call/retired/create_member(datum/mind/mind_to_assign) + . = ..() + if(!.) + return + var/mob/original = mind_to_assign.current + var/mob/living/carbon/human/H = . + + if(H.gender == MALE) + H.h_style = pick("Bald", "Balding Hair", "Balding Fade", "Balding ponytail", "Balding medium") + else + H.h_style = pick("Overeye Very Short", "Updo", "Ponytail 1") + H.r_hair = 235 + H.g_hair = 235 + H.b_hair = 235 + H.r_facial = 235 + H.g_facial = 235 + H.b_facial = 235 + H.update_hair() + + mind_to_assign.transfer_to(H, TRUE) + H.fully_replace_character_name(mind_to_assign.name, H.real_name) + + if(original) + qdel(original) + + print_backstory(H) + + if(!leader) + leader = H + var/datum/job/J = SSjob.GetJobType(/datum/job/retired/leader) + H.apply_assigned_role_to_spawn(J) + var/obj/vehicle/ridden/wheelchair/weaponized/wheelchair = new(H.drop_location()) + wheelchair.buckle_mob(H, TRUE) + to_chat(H, "

You are the TGMC retired veteran expedition leader! Lead your fellow veterans to one last hurrah!

") + return + + if(prob(30)) + var/datum/job/J = SSjob.GetJobType(/datum/job/retired/augmented) + H.apply_assigned_role_to_spawn(J) + to_chat(H, "

You are an augmented TGMC veteran, you may have had a few limbs replaced with synthetic versions, but at least you can walk! Follow the expedition leader and relive your glory days!

") + return + + H.amputate_limb(BODY_ZONE_L_LEG) + H.amputate_limb(BODY_ZONE_R_LEG) + var/obj/vehicle/ridden/wheelchair/new_wheelchair = new(H.drop_location()) + new_wheelchair.buckle_mob(H, TRUE) + + var/datum/job/J = SSjob.GetJobType(/datum/job/retired) + H.apply_assigned_role_to_spawn(J) + to_chat(H, "

You are a TGMC veteran, follow the expedition leader and relive your glory days!

") diff --git a/code/datums/jobs/job/retired.dm b/code/datums/jobs/job/retired.dm new file mode 100644 index 0000000000000..4760ac442ce4d --- /dev/null +++ b/code/datums/jobs/job/retired.dm @@ -0,0 +1,84 @@ +/datum/job/retired + title = "TGMC retired veteran" + job_category = JOB_CAT_MARINE + paygrade = "MSGT" + access = ALL_ANTAGONIST_ACCESS + minimal_access = ALL_ANTAGONIST_ACCESS + skills_type = /datum/skills/fo //they're old, they know their stuff + faction = FACTION_TERRAGOV + outfit = /datum/outfit/job/retired + +/datum/outfit/job/retired + name = "TGMC retired veteran" + jobtype = /datum/job/retired + + id = /obj/item/card/id/dogtag + wear_suit = /obj/item/clothing/suit/storage/marine/officer/req //it's pas + glasses = /obj/item/clothing/glasses/eyepatch + w_uniform = /obj/item/clothing/under/marine/service + mask = /obj/item/clothing/mask/cigarette/pipe + head = /obj/item/clothing/head/servicecap + back = /obj/item/storage/backpack/satchel + belt = /obj/item/storage/belt/marine + gloves = /obj/item/clothing/gloves/marine/black + l_store = /obj/item/storage/pouch/medkit/firstaid + r_store = /obj/item/storage/holster/flarepouch/full + suit_store = /obj/item/weapon/gun/rifle/m41a/magharness + ears = /obj/item/radio/headset/distress/retired + +/datum/outfit/job/retired/post_equip(mob/living/carbon/human/H, visualsOnly) + H.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41a, SLOT_IN_BELT) + H.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41a, SLOT_IN_BELT) + H.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41a, SLOT_IN_BELT) + H.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41a, SLOT_IN_BELT) + H.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41a, SLOT_IN_BELT) + H.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41a, SLOT_IN_BELT) + + H.equip_to_slot_or_del(new /obj/item/reagent_containers/food/snacks/burger/tofu, SLOT_IN_BACKPACK) + H.equip_to_slot_or_del(new /obj/item/reagent_containers/food/drinks/flask/marine, SLOT_IN_BACKPACK) + H.equip_to_slot_or_del(new /obj/item/explosive/grenade/incendiary, SLOT_IN_BACKPACK) + H.equip_to_slot_or_del(new /obj/item/explosive/grenade/incendiary, SLOT_IN_BACKPACK) + H.equip_to_slot_or_del(new /obj/item/explosive/grenade, SLOT_IN_BACKPACK) + H.equip_to_slot_or_del(new /obj/item/explosive/grenade, SLOT_IN_BACKPACK) + H.equip_to_slot_or_del(new /obj/item/explosive/grenade, SLOT_IN_BACKPACK) + H.equip_to_slot_or_del(new /obj/item/explosive/grenade, SLOT_IN_BACKPACK) + + H.equip_to_slot_or_del(new /obj/item/storage/fancy/chemrettes, SLOT_IN_SUIT) + H.equip_to_slot_or_del(new /obj/item/explosive/grenade/m15, SLOT_IN_SUIT) + +/datum/job/retired/leader + title = "TGMC retired veteran expedition leader" + paygrade = "LtCol" + skills_type = /datum/skills/captain //The leader gets even more skills + outfit = /datum/outfit/job/retired/leader + +/datum/outfit/job/retired/leader + name = "TGMC retired veteran expedition leader" + jobtype = /datum/job/retired/leader + + id = /obj/item/card/id/dogtag/fc + head = /obj/item/clothing/head/tgmcberet/fc + gloves = /obj/item/clothing/gloves/marine/officer + w_uniform = /obj/item/clothing/under/marine/officer/exec + belt = /obj/item/storage/holster/blade/officer/full + suit_store = /obj/item/storage/holster/belt/mateba/full + back = /obj/item/ammo_magazine/minigun_wheelchair + +/datum/outfit/job/retired/leader/post_equip(mob/living/carbon/human/H, visualsOnly) + H.equip_to_slot_or_del(new /obj/item/storage/fancy/chemrettes, SLOT_IN_SUIT) + H.equip_to_slot_or_del(new /obj/item/explosive/grenade/m15, SLOT_IN_SUIT) + +/datum/job/retired/augmented + title = "TGMC augmented veteran" + outfit = /datum/outfit/job/retired/augmented + +/datum/outfit/job/retired/augmented + name = "TGMC augmented veteran" + jobtype = /datum/job/retired/augmented + +/datum/outfit/job/retired/augmented/post_equip(mob/living/carbon/human/H, visualsOnly) + . = ..() // Same gear as the regular outfit, but we give them some robot limbs + for(var/i in 1 to 2) + var/datum/limb/picked_limb = H.get_limb(pick_n_take(list(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG))) + picked_limb.robotize() + diff --git a/code/game/objects/items/radio/encryptionkey.dm b/code/game/objects/items/radio/encryptionkey.dm index 1d4d60343636b..204d4459dd634 100644 --- a/code/game/objects/items/radio/encryptionkey.dm +++ b/code/game/objects/items/radio/encryptionkey.dm @@ -124,6 +124,11 @@ GLOBAL_LIST_EMPTY_TYPED(custom_updating_encryptkeys, /obj/item/encryptionkey) channels = list(RADIO_CHANNEL_ICC = TRUE) independent = TRUE +/obj/item/encryptionkey/retired + name = "\improper retirement home encryption key" + channels = list(RADIO_CHANNEL_RETIRED = TRUE) + independent = TRUE + /obj/item/encryptionkey/sectoid name = "\improper alien encryption key" channels = list(RADIO_CHANNEL_SECTOID = TRUE) diff --git a/code/game/objects/items/radio/headset.dm b/code/game/objects/items/radio/headset.dm index cfeb6bd2f7a71..2ca66618b59f5 100644 --- a/code/game/objects/items/radio/headset.dm +++ b/code/game/objects/items/radio/headset.dm @@ -645,6 +645,11 @@ GLOBAL_LIST_INIT(channel_tokens, list( name = "\improper Echo Task Force headset" keyslot = /obj/item/encryptionkey/echo +/obj/item/radio/headset/distress/retired + name = "retirement home headset" + keyslot = /obj/item/encryptionkey/retired + frequency = FREQ_RETIRED + //SOM headsets /obj/item/radio/headset/mainship/som diff --git a/code/modules/organs/limbs.dm b/code/modules/organs/limbs.dm index 1d70246baa7e5..fa05d11dcfc78 100644 --- a/code/modules/organs/limbs.dm +++ b/code/modules/organs/limbs.dm @@ -662,6 +662,11 @@ Note that amputating the affected organ does in fact remove the infection from t return limb_name return null +///Amputates the limb in the specified limb zone +/mob/living/carbon/human/proc/amputate_limb(limb_zone) + var/datum/limb/limb_to_drop = get_limb(limb_zone) + limb_to_drop?.droplimb(TRUE, TRUE) + //Handles dismemberment /datum/limb/proc/droplimb(amputation, delete_limb = FALSE) if(limb_status & LIMB_DESTROYED) diff --git a/code/modules/projectiles/guns/rifles.dm b/code/modules/projectiles/guns/rifles.dm index 4873e198e7e6e..c82e4c92af797 100644 --- a/code/modules/projectiles/guns/rifles.dm +++ b/code/modules/projectiles/guns/rifles.dm @@ -504,7 +504,12 @@ scatter = 0 fire_delay = 0.2 SECONDS - +/obj/item/weapon/gun/rifle/m41a/magharness + starting_attachment_types = list( + /obj/item/attachable/stock/m41a, + /obj/item/attachable/magnetic_harness, + /obj/item/weapon/gun/grenade_launcher/underslung/invisible, + ) //------------------------------------------------------- diff --git a/code/modules/projectiles/guns/specialist.dm b/code/modules/projectiles/guns/specialist.dm index e2c68bd7f44cc..670bf145e008e 100644 --- a/code/modules/projectiles/guns/specialist.dm +++ b/code/modules/projectiles/guns/specialist.dm @@ -440,6 +440,34 @@ Note that this means that snipers will have a slowdown of 3, due to the scope /obj/item/weapon/gun/minigun/valhalla obj_flags = NONE +//A minigun that requires only one hand. Meant for use with vehicles +/obj/item/weapon/gun/minigun/one_handed + name = "\improper Modified MG-100 Vindicator Minigun" + desc = "A minigun that's been modified to be used one handed. Intended for use mounted on a vehicle." + + max_shells = 1000 //codex + reload_sound = 'sound/weapons/guns/interact/working_the_bolt.ogg' + default_ammo_type = /obj/item/ammo_magazine/minigun_wheelchair + allowed_ammo_types = list(/obj/item/ammo_magazine/minigun_wheelchair) + obj_flags = NONE //Do not affect autobalance + flags_item = NONE //To remove wielding + flags_equip_slot = NONE + flags_gun_features = GUN_AMMO_COUNTER|GUN_SMOKE_PARTICLES + reciever_flags = AMMO_RECIEVER_CYCLE_ONLY_BEFORE_FIRE|AMMO_RECIEVER_MAGAZINES + gun_firemode_list = list(GUN_FIREMODE_AUTOMATIC) + actions_types = list() + attachable_allowed = list() + + recoil = 0 + recoil_unwielded = 0 + + windup_delay = 0.7 SECONDS + movement_acc_penalty_mult = 0 + +//So that it displays the minigun on the mob as if always wielded +/obj/item/weapon/gun/minigun/one_handed/update_item_state() + item_state = "[base_gun_icon]_w" + // SG minigun /obj/item/weapon/gun/minigun/smart_minigun diff --git a/code/modules/projectiles/magazines/specialist.dm b/code/modules/projectiles/magazines/specialist.dm index d27699b2903f4..cdb166a335417 100644 --- a/code/modules/projectiles/magazines/specialist.dm +++ b/code/modules/projectiles/magazines/specialist.dm @@ -426,6 +426,20 @@ caliber = CALIBER_10x26_CASELESS flags_item_map_variant = null +//"External magazine" for the wheelchair-mounted minigun +/obj/item/ammo_magazine/minigun_wheelchair + name = "\improper Mounted MG-100 Vindicator ammo rack" + desc = "A case filled to the brim with ammunition. Appears custom made to be slotted into a feeding system." + icon = 'icons/obj/items/ammo.dmi' + icon_state = "minigun" + flags_atom = CONDUCT + flags_magazine = MAGAZINE_REFILLABLE + flags_equip_slot = ITEM_SLOT_BACK + w_class = WEIGHT_CLASS_HUGE + default_ammo = /datum/ammo/bullet/minigun + current_rounds = 1000 + max_rounds = 1000 + reload_delay = 0.75 SECONDS // ICC coilgun diff --git a/code/modules/vehicles/_vehicle.dm b/code/modules/vehicles/_vehicle.dm index 64236ebe0e9c4..2e7a681eac3d9 100644 --- a/code/modules/vehicles/_vehicle.dm +++ b/code/modules/vehicles/_vehicle.dm @@ -92,6 +92,10 @@ /obj/vehicle/proc/is_driver(mob/M) return is_occupant(M) && occupants[M] & VEHICLE_CONTROL_DRIVE +///Is the passed mob an equipment controller? +/obj/vehicle/proc/is_equipment_controller(mob/M) + return is_occupant(M) && occupants[M] & VEHICLE_CONTROL_EQUIPMENT + /obj/vehicle/proc/is_occupant(mob/M) return !isnull(LAZYACCESS(occupants, M)) diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm index a965228207c86..6cc71dc101cae 100644 --- a/code/modules/vehicles/mecha/_mecha.dm +++ b/code/modules/vehicles/mecha/_mecha.dm @@ -532,7 +532,7 @@ if(internal_damage & MECHA_INT_CONTROL_LOST) target = pick(view(3,target)) var/mob/living/livinguser = user - if(!(livinguser in return_controllers_with_flag(VEHICLE_CONTROL_EQUIPMENT))) + if(!is_equipment_controller(user)) balloon_alert(user, "wrong seat for equipment!") return var/obj/item/mecha_parts/mecha_equipment/selected diff --git a/code/modules/vehicles/wheelchair.dm b/code/modules/vehicles/wheelchair.dm index bbafc2ba035a1..0104c18930440 100644 --- a/code/modules/vehicles/wheelchair.dm +++ b/code/modules/vehicles/wheelchair.dm @@ -33,10 +33,23 @@ . = ..() update_icon() -/obj/vehicle/ridden/wheelchair/post_unbuckle_mob() +/obj/vehicle/ridden/wheelchair/post_unbuckle_mob(mob/living/M) . = ..() update_icon() +/obj/vehicle/ridden/wheelchair/after_add_occupant(mob/M) + . = ..() + if(isliving(M)) //Properly update whether we're lying or not; no more people lying on chairs; ridiculous + var/mob/living/buckled_target = M + buckled_target.set_lying_angle(0) + +/obj/vehicle/ridden/wheelchair/after_remove_occupant(mob/M) + . = ..() + if(isliving(M)) //Properly update whether we're lying or not + var/mob/living/unbuckled_target = M + if(HAS_TRAIT(unbuckled_target, TRAIT_FLOORED)) + unbuckled_target.set_lying_angle(pick(90, 270)) + /obj/vehicle/ridden/wheelchair/wrench_act(mob/living/user, obj/item/I) //Attackby should stop it attacking the wheelchair after moving away during decon ..() to_chat(user, span_notice("You begin to detach the wheels...")) @@ -68,3 +81,16 @@ /obj/vehicle/ridden/wheelchair/proc/make_ridable() AddElement(/datum/element/ridable, /datum/component/riding/vehicle/wheelchair) +// Battlechair - A wheelchair with a mounted minigun +/obj/vehicle/ridden/wheelchair/weaponized + name = "\improper Battlechair" + desc = "A sturdy wheelchair fitted with a minigun. Your legs may have failed you, but your weapon won't." + max_integrity = 400 + +/obj/vehicle/ridden/wheelchair/weaponized/Initialize(mapload) + . = ..() + AddComponent(/datum/component/vehicle_mounted_weapon, /obj/item/weapon/gun/minigun/one_handed) + +/obj/vehicle/ridden/wheelchair/weaponized/auto_assign_occupant_flags(mob/M) + . = ..() + add_control_flags(M, VEHICLE_CONTROL_EQUIPMENT) diff --git a/tgmc.dme b/tgmc.dme index 6f94b59a0f827..c223f3f91db1e 100644 --- a/tgmc.dme +++ b/tgmc.dme @@ -409,6 +409,7 @@ #include "code\datums\components\largeobjecttransparency.dm" #include "code\datums\components\larva_queue.dm" #include "code\datums\components\mobile_power.dm" +#include "code\datums\components\mounted_gun.dm" #include "code\datums\components\orbiter.dm" #include "code\datums\components\overlay_lighting.dm" #include "code\datums\components\reequip.dm" @@ -459,6 +460,7 @@ #include "code\datums\emergency_calls\imperium.dm" #include "code\datums\emergency_calls\pizza.dm" #include "code\datums\emergency_calls\pmc.dm" +#include "code\datums\emergency_calls\retired.dm" #include "code\datums\emergency_calls\sectoid.dm" #include "code\datums\emergency_calls\skeleton.dm" #include "code\datums\emergency_calls\sons_of_mars_breachers.dm" @@ -530,6 +532,7 @@ #include "code\datums\jobs\job\mercenaries.dm" #include "code\datums\jobs\job\other.dm" #include "code\datums\jobs\job\pmc.dm" +#include "code\datums\jobs\job\retired.dm" #include "code\datums\jobs\job\sectoid.dm" #include "code\datums\jobs\job\shipside.dm" #include "code\datums\jobs\job\skeleton.dm" From db9a78d341dc95fdb32034f2ffffdd9fee720744 Mon Sep 17 00:00:00 2001 From: Pariah919 <46353991+Pariah919@users.noreply.github.com> Date: Tue, 9 Jan 2024 17:02:06 -0600 Subject: [PATCH 31/82] CAS Icon fixes (#14781) --- code/game/objects/structures/dropship_ammo.dm | 5 ++--- icons/Marine/mainship_props.dmi | Bin 158342 -> 157288 bytes 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/code/game/objects/structures/dropship_ammo.dm b/code/game/objects/structures/dropship_ammo.dm index edd611d0f6a9a..228b5bed8ce03 100644 --- a/code/game/objects/structures/dropship_ammo.dm +++ b/code/game/objects/structures/dropship_ammo.dm @@ -645,7 +645,7 @@ /obj/structure/ship_ammo/cas/bomb name = "\improper AOE-200lb 'Tiny' stack" desc = "A decent-sized payload of explosive bombs, will only fit in a full-sized bomb pod. Moving this will require some sort of lifter." - icon_state = "minirocket" + icon_state = "bomb_200" icon = 'icons/Marine/mainship_props.dmi' equipment_type = /obj/structure/dropship_equipment/cas/weapon/bomb_pod ammo_count = 8 @@ -672,7 +672,6 @@ name = "\improper AOE-400lb 'Mighty' stack" desc = "A decently-sized payload of explosive bombs, will only fit in a full-sized bomb pod. Moving this will require some sort of lifter." icon_state = "bomb_400" - icon = 'icons/Marine/mainship_props.dmi' equipment_type = /obj/structure/dropship_equipment/cas/weapon/bomb_pod ammo_count = 4 max_ammo_count = 4 @@ -726,7 +725,7 @@ /obj/structure/ship_ammo/cas/bomblet/medium name = "\improper AOE-75lb 'Poppies' stack" desc = "A large litter of explosive bomblets. Moving this will require some sort of lifter." - icon_state = "bomblet_75" + icon_state = "bomb_75" ammo_count = 20 max_ammo_count = 20 ammo_name = "bomb_75" diff --git a/icons/Marine/mainship_props.dmi b/icons/Marine/mainship_props.dmi index 672f97d9d2e17372f8f886d20e4040db0cb14165..5e25dc4eb507a78e34123d0c49f71366421f3a99 100644 GIT binary patch literal 157288 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
%DlVbolG> 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 z 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 fqxawzsOX@QMF7=S67B From 03bdc3ba11c986d2e0bda398ffa3d19cff1facde Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 9 Jan 2024 23:10:02 +0000 Subject: [PATCH 32/82] Automatic changelog for PR #14697 [ci skip] --- html/changelogs/AutoChangeLog-pr-14697.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14697.yml diff --git a/html/changelogs/AutoChangeLog-pr-14697.yml b/html/changelogs/AutoChangeLog-pr-14697.yml new file mode 100644 index 0000000000000..f8be88cdd0406 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14697.yml @@ -0,0 +1,4 @@ +author: "XElectricX, ivanmixo" +delete-after: True +changes: + - rscadd: "Added a TGMC retired veteran ERT" \ No newline at end of file From 570b9d29e84ca18fa195209d5d59c6c710428a64 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 9 Jan 2024 23:10:47 +0000 Subject: [PATCH 33/82] Automatic changelog for PR #14781 [ci skip] --- html/changelogs/AutoChangeLog-pr-14781.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14781.yml diff --git a/html/changelogs/AutoChangeLog-pr-14781.yml b/html/changelogs/AutoChangeLog-pr-14781.yml new file mode 100644 index 0000000000000..cefd41ba445bc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14781.yml @@ -0,0 +1,4 @@ +author: "Pariah919" +delete-after: True +changes: + - bugfix: "Some CAS bombs were broken in the CAS update icon wise, this should fix them." \ No newline at end of file From e336f01d1f4e231d913d4acfd389ea7a8a59fe8c Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 10 Jan 2024 00:53:28 +0000 Subject: [PATCH 34/82] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-14697.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14777.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14778.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14781.yml | 4 ---- html/changelogs/archive/2024-01.yml | 11 +++++++++++ 5 files changed, 11 insertions(+), 16 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-14697.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14777.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14778.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14781.yml diff --git a/html/changelogs/AutoChangeLog-pr-14697.yml b/html/changelogs/AutoChangeLog-pr-14697.yml deleted file mode 100644 index f8be88cdd0406..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14697.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "XElectricX, ivanmixo" -delete-after: True -changes: - - rscadd: "Added a TGMC retired veteran ERT" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14777.yml b/html/changelogs/AutoChangeLog-pr-14777.yml deleted file mode 100644 index 97de4138607e2..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14777.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Dikozda" -delete-after: True -changes: - - spellcheck: "fix typo in jelly message" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14778.yml b/html/changelogs/AutoChangeLog-pr-14778.yml deleted file mode 100644 index b154bec329a3e..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14778.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "DeltaFire15" -delete-after: True -changes: - - bugfix: "It should be less likely for you to go DNR in cases where you shouldn't be DNR." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14781.yml b/html/changelogs/AutoChangeLog-pr-14781.yml deleted file mode 100644 index cefd41ba445bc..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14781.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Pariah919" -delete-after: True -changes: - - bugfix: "Some CAS bombs were broken in the CAS update icon wise, this should fix them." \ No newline at end of file diff --git a/html/changelogs/archive/2024-01.yml b/html/changelogs/archive/2024-01.yml index 923cacc8e28df..838bbe623c958 100644 --- a/html/changelogs/archive/2024-01.yml +++ b/html/changelogs/archive/2024-01.yml @@ -76,3 +76,14 @@ ivanmixo: - bugfix: Various fixes to the strip menu, check the PR - rscdel: Removes the HE GL54 nades from req +2024-01-10: + DeltaFire15: + - bugfix: It should be less likely for you to go DNR in cases where you shouldn't + be DNR. + Dikozda: + - spellcheck: fix typo in jelly message + Pariah919: + - bugfix: Some CAS bombs were broken in the CAS update icon wise, this should fix + them. + XElectricX, ivanmixo: + - rscadd: Added a TGMC retired veteran ERT From 5eaf00ba5250803de4cd3ebeafe9ba62df736691 Mon Sep 17 00:00:00 2001 From: yyzsong <65325586+yyzsong@users.noreply.github.com> Date: Wed, 10 Jan 2024 05:18:19 -0800 Subject: [PATCH 35/82] removes the shutters on this one big red office variant (#14744) --- .../modularmaps/big_red/bigredofficevar4.dmm | 2116 ----------------- code/modules/mapping/modular_mapping.dm | 7 - 2 files changed, 2123 deletions(-) delete mode 100644 _maps/modularmaps/big_red/bigredofficevar4.dmm diff --git a/_maps/modularmaps/big_red/bigredofficevar4.dmm b/_maps/modularmaps/big_red/bigredofficevar4.dmm deleted file mode 100644 index c8c749e255a1d..0000000000000 --- a/_maps/modularmaps/big_red/bigredofficevar4.dmm +++ /dev/null @@ -1,2116 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ak" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/prop1, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"ao" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden{ - dir = 6 - }, -/obj/effect/decal/cleanable/blood, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"av" = ( -/obj/machinery/atmospherics/pipe/manifold/green/hidden, -/obj/structure/cable, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"az" = ( -/obj/structure/table, -/obj/item/trash/semki, -/turf/open/floor/tile/dark, -/area/bigredv2/outside/office_complex) -"bb" = ( -/turf/open/floor/marking/asteroidwarning{ - dir = 9 - }, -/area/bigredv2/outside/c) -"bQ" = ( -/obj/structure/janitorialcart, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"bS" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/grimy, -/area/bigredv2/outside/office_complex) -"bY" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/obj/effect/landmark/corpsespawner/colonist, -/obj/item/ammo_casing/bullet, -/turf/open/floor/grimy, -/area/bigredv2/outside/office_complex) -"cd" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/obj/structure/cable, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 8 - }, -/area/bigredv2/outside/office_complex) -"ch" = ( -/obj/structure/bed/chair/office/light, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"cj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/job/survivor, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"cE" = ( -/obj/effect/landmark/weed_node, -/turf/open/floor/marking/asteroidwarning, -/area/bigredv2/outside/se) -"cM" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 8 - }, -/area/bigredv2/outside/office_complex) -"dk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/gibs, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"do" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/item/trash/syndi_cakes, -/turf/open/floor/tile/dark, -/area/bigredv2/outside/office_complex) -"dp" = ( -/obj/effect/landmark/weed_node, -/turf/open/floor/marking/asteroidwarning{ - dir = 4 - }, -/area/bigredv2/outside/se) -"ds" = ( -/obj/effect/spawner/random/misc/structure/broken_window/colonyspawn, -/turf/open/floor/plating, -/area/bigredv2/outside/office_complex) -"du" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/mainship/generic{ - dir = 1; - name = "\improper Private Office" - }, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"dv" = ( -/obj/effect/landmark/corpsespawner/engineer, -/obj/effect/landmark/weed_node, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"dC" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/landmark/weed_node, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"dX" = ( -/turf/open/floor/marking/asteroidwarning{ - dir = 4 - }, -/area/bigredv2/outside/e) -"es" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 4 - }, -/area/bigredv2/outside/office_complex) -"ey" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/obj/effect/turf_decal/tracks/wheels/bloody, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"eV" = ( -/obj/effect/landmark/weed_node, -/obj/structure/cable, -/turf/open/floor/wood, -/area/bigredv2/outside/office_complex) -"fr" = ( -/obj/effect/landmark/weed_node, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"fu" = ( -/obj/item/ammo_casing/bullet, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 4 - }, -/area/bigredv2/outside/office_complex) -"fw" = ( -/obj/machinery/door/airlock/mainship/generic{ - dir = 1; - name = "\improper Private Office" - }, -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/obj/effect/mapping_helpers/airlock/locked, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"fy" = ( -/obj/item/mass_spectrometer, -/obj/effect/landmark/weed_node, -/turf/open/floor/tile/white, -/area/bigredv2/outside/office_complex) -"ga" = ( -/obj/effect/landmark/weed_node, -/turf/open/floor/marking/asteroidwarning, -/area/bigredv2/outside/c) -"gs" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"gw" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 4 - }, -/area/bigredv2/outside/office_complex) -"gy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/corpsespawner/colonist, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"gP" = ( -/obj/effect/landmark/weed_node, -/turf/open/floor/plating/ground/mars/dirttosand/autosmooth, -/area/bigredv2/outside/c) -"gW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood, -/obj/effect/landmark/corpsespawner/colonist, -/turf/open/floor/tile/white, -/area/bigredv2/outside/office_complex) -"hk" = ( -/obj/machinery/door/airlock/multi_tile/mainship/generic{ - name = "\improper Office Complex Janitor Room" - }, -/obj/machinery/door/poddoor/shutters/mainship{ - dir = 2; - id = "Office Complex 1"; - name = "\improper Office Complex Shutters" - }, -/obj/effect/mapping_helpers/airlock/locked, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"hl" = ( -/turf/open/floor/tile/red/redtaupecorner{ - dir = 8 - }, -/area/bigredv2/outside/office_complex) -"ht" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"hE" = ( -/obj/structure/table, -/obj/item/tool/multitool, -/turf/open/floor/tile/dark, -/area/bigredv2/outside/office_complex) -"hL" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/landmark/weed_node, -/turf/open/floor/tile/dark, -/area/bigredv2/outside/office_complex) -"hP" = ( -/turf/open/floor/tile/dark, -/area/bigredv2/outside/office_complex) -"hS" = ( -/turf/open/floor/marking/asteroidwarning{ - dir = 6 - }, -/area/bigredv2/outside/se) -"ic" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/obj/effect/landmark/weed_node, -/obj/effect/decal/cleanable/blood/gibs, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 8 - }, -/area/bigredv2/outside/office_complex) -"in" = ( -/obj/effect/landmark/weed_node, -/turf/open/floor/marking/asteroidwarning{ - dir = 8 - }, -/area/bigredv2/outside/c) -"iB" = ( -/obj/structure/table, -/obj/item/clothing/mask/cigarette, -/turf/open/floor/tile/dark, -/area/bigredv2/outside/office_complex) -"iH" = ( -/turf/open/floor/marking/asteroidwarning, -/area/bigredv2/outside/se) -"iQ" = ( -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"iX" = ( -/turf/open/floor/grimy, -/area/bigredv2/outside/office_complex) -"je" = ( -/obj/effect/decal/cleanable/blood/gibs, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 4 - }, -/area/bigredv2/outside/office_complex) -"jj" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/wood, -/area/bigredv2/outside/office_complex) -"jw" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 8 - }, -/area/bigredv2/outside/office_complex) -"ke" = ( -/obj/structure/cable, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"ks" = ( -/obj/effect/decal/cleanable/blood, -/obj/item/ammo_casing/bullet, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 8 - }, -/area/bigredv2/outside/office_complex) -"kt" = ( -/obj/machinery/vending/cola, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"kL" = ( -/obj/machinery/atmospherics/pipe/manifold/green/hidden{ - dir = 1 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 8 - }, -/area/bigredv2/outside/office_complex) -"kU" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/table, -/obj/item/paper, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"ld" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/grimy, -/area/bigredv2/outside/office_complex) -"le" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/effect/ai_node, -/obj/effect/turf_decal/tracks/wheels/bloody{ - dir = 4 - }, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"lJ" = ( -/obj/structure/table, -/turf/open/floor/tile/white, -/area/bigredv2/outside/office_complex) -"mi" = ( -/obj/effect/landmark/weed_node, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"ms" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/ai_node, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"my" = ( -/obj/effect/landmark/start/job/survivor, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 8 - }, -/area/bigredv2/outside/office_complex) -"mG" = ( -/obj/structure/bed/chair/office/light{ - dir = 8 - }, -/turf/open/floor/grimy, -/area/bigredv2/outside/office_complex) -"ne" = ( -/obj/structure/table, -/obj/structure/flora/pottedplant/fifteen{ - pixel_y = 10 - }, -/turf/open/floor/tile/white, -/area/bigredv2/outside/office_complex) -"ni" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden{ - dir = 4 - }, -/turf/open/floor/tile/dark, -/area/bigredv2/outside/office_complex) -"ns" = ( -/obj/effect/landmark/weed_node, -/turf/open/floor/tile/dark, -/area/bigredv2/outside/office_complex) -"nR" = ( -/obj/item/clothing/shoes/galoshes, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"nZ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"pe" = ( -/obj/effect/landmark/weed_node, -/turf/open/floor/asteroidfloor, -/area/bigredv2/outside/e) -"pf" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/obj/structure/cable, -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 8 - }, -/area/bigredv2/outside/office_complex) -"px" = ( -/turf/open/floor/plating/ground/mars/random/dirt, -/area/bigredv2/outside/e) -"pA" = ( -/obj/structure/table, -/obj/item/paper, -/turf/open/floor/grimy, -/area/bigredv2/outside/office_complex) -"pH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/misc/trash, -/turf/open/floor/tile/white, -/area/bigredv2/outside/office_complex) -"pO" = ( -/turf/open/floor/plating/ground/mars/dirttosand/autosmooth, -/area/bigredv2/outside/c) -"pV" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden{ - dir = 9 - }, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"qd" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/obj/effect/landmark/weed_node, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"ql" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"qL" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"qR" = ( -/obj/effect/spawner/random/misc/structure/broken_window/colonyspawn, -/obj/machinery/door/poddoor/shutters/mainship{ - dir = 2; - id = "Office Complex 1"; - name = "\improper Office Complex Shutters" - }, -/turf/open/floor/plating, -/area/bigredv2/outside/office_complex) -"rf" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/flask, -/turf/open/floor/tile/dark, -/area/bigredv2/outside/office_complex) -"ro" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/obj/machinery/door/airlock/multi_tile/mainship/generic{ - name = "\improper Office Complex" - }, -/obj/machinery/door/poddoor/shutters/mainship{ - dir = 2; - id = "Office Complex 1"; - name = "\improper Office Complex Shutters" - }, -/obj/effect/mapping_helpers/airlock/locked, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"rE" = ( -/obj/docking_port/stationary/crashmode, -/turf/closed/wall, -/area/bigredv2/outside/office_complex) -"sb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/drip, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/tile/white, -/area/bigredv2/outside/office_complex) -"sw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/tile/white, -/area/bigredv2/outside/office_complex) -"sy" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tracks/wheels/bloody, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"sL" = ( -/obj/machinery/vending/snack, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"sO" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"td" = ( -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/weed_node, -/turf/closed/wall, -/area/bigredv2/outside/office_complex) -"tz" = ( -/obj/structure/bed/chair/comfy/lime{ - dir = 4 - }, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"tE" = ( -/obj/item/ammo_casing/bullet, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"tO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/tool/lighter/random, -/obj/effect/ai_node, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"tQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/weed_node, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"uh" = ( -/obj/effect/landmark/corpsespawner/engineer{ - corpseback = /obj/item/storage/backpack; - corpseidjob = "Engineer"; - corpseshoes = /obj/item/clothing/shoes/black; - corpseuniform = /obj/item/clothing/under/colonist; - name = "Colonist Everett Mison" - }, -/obj/item/reagent_containers/pill/cyanide, -/obj/item/ammo_magazine/pistol/holdout, -/obj/effect/decal/cleanable/blood, -/obj/item/ammo_casing/shell, -/turf/open/floor/tile/dark, -/area/bigredv2/outside/office_complex) -"ui" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 8 - }, -/area/bigredv2/outside/office_complex) -"uj" = ( -/obj/effect/spawner/random/misc/structure/broken_window/colonyspawn, -/obj/machinery/door/poddoor/shutters/mainship{ - dir = 2; - id = "Office Complex 1"; - name = "\improper Office Complex Shutters" - }, -/turf/open/floor/asteroidfloor, -/area/bigredv2/outside/office_complex) -"um" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/ai_node, -/obj/effect/landmark/weed_node, -/obj/item/ammo_casing/bullet, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"ur" = ( -/obj/effect/spawner/random/misc/trash, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"uD" = ( -/obj/structure/bed/chair/comfy/black{ - dir = 8 - }, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"vu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/weed_node, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"vU" = ( -/turf/open/floor/marking/asteroidwarning{ - dir = 10 - }, -/area/bigredv2/outside/c) -"wj" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/bed/chair/office/light{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"wq" = ( -/obj/structure/noticeboard{ - dir = 1; - pixel_y = -27 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"wz" = ( -/obj/machinery/door/airlock/mainship/generic{ - dir = 1; - name = "\improper Private Office" - }, -/obj/effect/mapping_helpers/airlock/locked, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"wG" = ( -/obj/structure/closet/jcloset, -/obj/item/clothing/head/beret/jan, -/obj/item/clothing/head/beret/jan, -/obj/item/clothing/head/beret/jan, -/obj/item/clothing/head/beret/jan, -/obj/item/clothing/head/beret/jan, -/obj/item/clothing/head/beret/jan, -/obj/item/clothing/head/beret/jan, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"wO" = ( -/obj/structure/mopbucket, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"wP" = ( -/obj/structure/table, -/obj/item/paper, -/obj/item/tool/pen/blue, -/turf/open/floor/tile/white, -/area/bigredv2/outside/office_complex) -"xx" = ( -/obj/structure/bed/chair/comfy/black{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"xQ" = ( -/obj/structure/table, -/obj/item/tool/pen/blue, -/turf/open/floor/grimy, -/area/bigredv2/outside/office_complex) -"xY" = ( -/turf/open/floor/plating/ground/mars/dirttosand/autosmooth{ - dir = 6 - }, -/area/bigredv2/outside/c) -"ya" = ( -/obj/effect/landmark/weed_node, -/obj/effect/spawner/random/misc/trash, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"yd" = ( -/turf/open/floor/plating/ground/mars/random/sand, -/area/bigredv2/outside/c) -"ye" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 1; - on = 1 - }, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"yg" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/obj/effect/landmark/weed_node, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"yh" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 8 - }, -/area/bigredv2/outside/office_complex) -"yD" = ( -/turf/open/floor/wood, -/area/bigredv2/outside/office_complex) -"yR" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters/mainship{ - dir = 2; - id = "Office Complex 1"; - name = "\improper Office Complex Shutters" - }, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 8 - }, -/area/bigredv2/outside/office_complex) -"zm" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden{ - dir = 10 - }, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"zq" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"zu" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"zw" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"Af" = ( -/obj/machinery/light, -/obj/machinery/atmospherics/pipe/simple/green/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/effect/turf_decal/tracks/wheels/bloody{ - dir = 4 - }, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"AL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/weed_node, -/turf/open/floor/marking/asteroidwarning, -/area/bigredv2/outside/se) -"AQ" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 4 - }, -/area/bigredv2/outside/office_complex) -"Bp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/wood, -/area/bigredv2/outside/office_complex) -"Bu" = ( -/obj/machinery/door_control{ - dir = 4; - id = "Office Complex 1"; - name = "Storm Shutters" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/obj/effect/landmark/weed_node, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 8 - }, -/area/bigredv2/outside/office_complex) -"BD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/green/hidden, -/obj/structure/cable, -/obj/effect/landmark/weed_node, -/obj/effect/turf_decal/tracks/wheels/bloody{ - dir = 4 - }, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"BF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"BH" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"BV" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/marking/asteroidwarning, -/area/bigredv2/outside/se) -"Ck" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/turf_decal/tracks/wheels/bloody{ - dir = 4 - }, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"Cw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/obj/structure/cable, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 8 - }, -/area/bigredv2/outside/office_complex) -"CQ" = ( -/obj/structure/table, -/turf/open/floor/tile/dark, -/area/bigredv2/outside/office_complex) -"CT" = ( -/obj/structure/table, -/obj/effect/spawner/random/misc/paperbin, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"DD" = ( -/obj/effect/ai_node, -/turf/open/floor/asteroidfloor, -/area/bigredv2/outside/e) -"DV" = ( -/turf/open/floor/marking/asteroidwarning{ - dir = 8 - }, -/area/bigredv2/outside/e) -"Ea" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 1; - on = 1 - }, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"Ei" = ( -/obj/structure/table, -/obj/machinery/computer3/laptop/secure_data, -/turf/open/floor/tile/white, -/area/bigredv2/outside/office_complex) -"El" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/mainship/generic{ - name = "\improper Office Complex Storage" - }, -/obj/effect/mapping_helpers/airlock/locked, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"EF" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/door/poddoor/shutters/mainship{ - dir = 2; - id = "Office Complex 1"; - name = "\improper Office Complex Shutters" - }, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"EH" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/ai_node, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"Fb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"Fj" = ( -/obj/effect/landmark/corpsespawner/colonist, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 4 - }, -/area/bigredv2/outside/office_complex) -"Fm" = ( -/turf/open/floor/marking/asteroidwarning{ - dir = 5 - }, -/area/bigredv2/outside/e) -"Fu" = ( -/obj/structure/flora/pottedplant, -/turf/open/floor/wood, -/area/bigredv2/outside/office_complex) -"FC" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"FF" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tracks/wheels/bloody, -/obj/item/ammo_casing/bullet, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"FH" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 4 - }, -/area/bigredv2/outside/office_complex) -"FN" = ( -/obj/machinery/light, -/obj/effect/decal/cleanable/dirt, -/obj/effect/ai_node, -/turf/open/floor/tile/white, -/area/bigredv2/outside/office_complex) -"FW" = ( -/obj/structure/closet/jcloset, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"FY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc, -/obj/structure/cable, -/obj/effect/ai_node, -/turf/open/floor, -/area/bigredv2/outside/e) -"Gm" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 4 - }, -/area/bigredv2/outside/office_complex) -"GB" = ( -/obj/effect/landmark/weed_node, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"GD" = ( -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"GM" = ( -/turf/open/floor/asteroidfloor, -/area/bigredv2/outside/e) -"Hu" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/mainship/generic{ - dir = 1; - name = "\improper Private Office" - }, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"HV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/trash/eat, -/obj/effect/decal/cleanable/blood, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"Ia" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"If" = ( -/obj/structure/cable, -/obj/effect/ai_node, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 4 - }, -/area/bigredv2/outside/office_complex) -"Iu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"IH" = ( -/obj/effect/decal/cleanable/dirt, -/turf/closed/wall, -/area/bigredv2/outside/office_complex) -"IU" = ( -/obj/structure/sign/safety/breakroom, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"Jk" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"Jy" = ( -/turf/open/floor/tile/red/redtaupecorner{ - dir = 4 - }, -/area/bigredv2/outside/office_complex) -"JL" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden{ - dir = 4 - }, -/obj/item/trash/cheesie, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"JT" = ( -/obj/structure/table, -/obj/item/trash/kepler, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"Kd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/paper, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"Km" = ( -/obj/structure/table, -/obj/machinery/microwave, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"Kt" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/spawner/random/misc/trash, -/obj/effect/turf_decal/tracks/wheels/bloody{ - dir = 4 - }, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"Kx" = ( -/turf/open/floor/asteroidfloor, -/area/bigredv2/outside/c) -"Lv" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/obj/effect/decal/cleanable/dirt, -/obj/item/ammo_casing/bullet, -/obj/effect/spawner/random/misc/folder/nooffset, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"LF" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/tile/dark, -/area/bigredv2/outside/office_complex) -"LG" = ( -/obj/machinery/door/poddoor/shutters/mainship{ - dir = 2; - id = "Office Complex 1"; - name = "\improper Office Complex Shutters" - }, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"LY" = ( -/obj/effect/landmark/corpsespawner/colonist, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"Md" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/bed/chair/comfy/black{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/weed_node, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"My" = ( -/turf/open/floor/marking/asteroidwarning{ - dir = 1 - }, -/area/bigredv2/outside/e) -"MN" = ( -/obj/machinery/door_control{ - dir = 4; - id = "Office Complex 1"; - name = "Storm Shutters" - }, -/obj/effect/landmark/weed_node, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 8 - }, -/area/bigredv2/outside/office_complex) -"Nq" = ( -/obj/machinery/atmospherics/pipe/manifold/green/hidden{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/effect/turf_decal/tracks/wheels/bloody{ - dir = 5 - }, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"NG" = ( -/obj/structure/janitorialcart, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"NH" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/table, -/obj/item/storage/box/m94, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"NW" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden{ - dir = 4 - }, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"Ok" = ( -/obj/structure/flora/pottedplant/ten, -/turf/open/floor/wood, -/area/bigredv2/outside/office_complex) -"Op" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 8 - }, -/area/bigredv2/outside/office_complex) -"ON" = ( -/obj/item/trash/raisins, -/turf/open/floor/tile/dark, -/area/bigredv2/outside/office_complex) -"Ph" = ( -/obj/effect/landmark/weed_node, -/turf/open/floor/plating/ground/mars/random/sand, -/area/bigredv2/outside/c) -"Pz" = ( -/obj/effect/decal/cleanable/blood/gibs, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"PG" = ( -/turf/open/floor/marking/asteroidwarning{ - dir = 4 - }, -/area/bigredv2/outside/se) -"PO" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/obj/machinery/door/airlock/multi_tile/mainship/generic{ - name = "\improper Office Complex Janitor Room" - }, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"PS" = ( -/obj/effect/spawner/random/misc/structure/broken_window/colonyspawn, -/obj/machinery/door/poddoor/shutters/mainship{ - id = "Office Complex 1"; - name = "\improper Office Complex Shutters" - }, -/turf/open/floor/plating, -/area/bigredv2/outside/office_complex) -"PX" = ( -/obj/effect/landmark/weed_node, -/turf/open/floor/tile/white, -/area/bigredv2/outside/office_complex) -"Qb" = ( -/obj/structure/table, -/obj/machinery/computer/pod/old{ - name = "Personal Computer" - }, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"Qd" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/item/paper/janitor, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"QF" = ( -/obj/effect/landmark/weed_node, -/obj/machinery/atmospherics/components/unary/vent_pump, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"QI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/docking_port/stationary/crashmode, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"QQ" = ( -/obj/structure/table, -/obj/machinery/computer3/laptop/secure_data, -/turf/open/floor/grimy, -/area/bigredv2/outside/office_complex) -"Rm" = ( -/obj/machinery/door/airlock/multi_tile/mainship/generic{ - name = "\improper Office Complex" - }, -/obj/machinery/door/poddoor/shutters/mainship{ - dir = 2; - id = "Office Complex 1"; - name = "\improper Office Complex Shutters" - }, -/obj/effect/mapping_helpers/airlock/locked, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"Rq" = ( -/obj/effect/landmark/weed_node, -/turf/open/floor/marking/asteroidwarning{ - dir = 4 - }, -/area/bigredv2/outside/e) -"Rs" = ( -/obj/effect/landmark/weed_node, -/turf/open/floor/wood, -/area/bigredv2/outside/office_complex) -"RA" = ( -/obj/structure/table, -/obj/structure/flora/pottedplant/fifteen{ - pixel_y = 10 - }, -/turf/open/floor/grimy, -/area/bigredv2/outside/office_complex) -"RD" = ( -/obj/structure/bed/chair/office/light{ - dir = 1 - }, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"RT" = ( -/turf/open/floor/marking/asteroidwarning{ - dir = 8 - }, -/area/bigredv2/outside/c) -"RZ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/bigredv2/outside/office_complex) -"Sg" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/tile/dark, -/area/bigredv2/outside/office_complex) -"Sl" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"Sq" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/marking/asteroidwarning, -/area/bigredv2/outside/c) -"Su" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/obj/machinery/door/airlock/multi_tile/mainship/generic{ - name = "\improper Robotics" - }, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"Sy" = ( -/obj/structure/table, -/obj/structure/sign/prop3, -/obj/effect/landmark/weed_node, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"SC" = ( -/turf/open/floor/marking/asteroidwarning, -/area/bigredv2/outside/c) -"SE" = ( -/obj/effect/decal/cleanable/blood/gibs/down, -/turf/open/floor/tile/dark, -/area/bigredv2/outside/office_complex) -"Tr" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/obj/structure/cable, -/obj/item/ammo_casing/cartridge, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 8 - }, -/area/bigredv2/outside/office_complex) -"Un" = ( -/obj/effect/decal/cleanable/blood/gibs, -/turf/open/floor/marking/asteroidwarning, -/area/bigredv2/outside/c) -"Uw" = ( -/obj/machinery/door/airlock/mainship/generic{ - name = "\improper Private Office" - }, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"UR" = ( -/turf/open/floor/marking/asteroidwarning{ - dir = 1 - }, -/area/bigredv2/outside/c) -"UY" = ( -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/tile/white, -/area/bigredv2/outside/office_complex) -"Vh" = ( -/turf/open/floor/plating/ground/mars/dirttosand/autosmooth{ - dir = 1 - }, -/area/bigredv2/outside/e) -"Vk" = ( -/obj/structure/table, -/obj/item/paper, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"Vp" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/effect/ai_node, -/obj/effect/landmark/weed_node, -/obj/effect/turf_decal/tracks/wheels/bloody{ - dir = 4 - }, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"VR" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden{ - dir = 4 - }, -/obj/effect/landmark/weed_node, -/turf/open/floor/tile/red/redtaupecorner, -/area/bigredv2/outside/office_complex) -"Wg" = ( -/obj/machinery/door/poddoor/shutters/mainship{ - id = "Office Complex 1"; - name = "\improper Office Complex Shutters" - }, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"Wq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - on = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/tile/dark, -/area/bigredv2/outside/office_complex) -"Ws" = ( -/obj/machinery/photocopier, -/turf/open/floor/tile/white, -/area/bigredv2/outside/office_complex) -"Ww" = ( -/obj/effect/ai_node, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 4 - }, -/area/bigredv2/outside/office_complex) -"WQ" = ( -/obj/effect/landmark/excavation_site_spawner, -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"Xo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/ammo_casing/bullet, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"XX" = ( -/obj/machinery/air_alarm{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/tile/red/redtaupecorner{ - dir = 8 - }, -/area/bigredv2/outside/office_complex) -"Yf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/power/apc/drained, -/turf/open/floor/wood, -/area/bigredv2/outside/office_complex) -"Yq" = ( -/turf/open/floor/tile/whiteyellow/full, -/area/bigredv2/outside/office_complex) -"Ys" = ( -/obj/structure/bed/chair/comfy/lime{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/gibs, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"Yv" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/landmark/start/job/survivor, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"YB" = ( -/turf/open/floor/tile/white, -/area/bigredv2/outside/office_complex) -"YQ" = ( -/obj/machinery/door/airlock/mainship/generic{ - name = "\improper Private Office" - }, -/obj/structure/cable, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"Za" = ( -/obj/structure/table, -/obj/item/paper, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"Zi" = ( -/obj/item/taperecorder, -/obj/effect/landmark/weed_node, -/turf/open/floor/tile/white, -/area/bigredv2/outside/office_complex) -"Zp" = ( -/obj/machinery/door/airlock/multi_tile/mainship/generic{ - dir = 1; - name = "\improper Office Complex" - }, -/obj/machinery/door/poddoor/shutters/mainship{ - id = "Office Complex 1"; - name = "\improper Office Complex Shutters" - }, -/obj/effect/mapping_helpers/airlock/locked, -/turf/open/floor, -/area/bigredv2/outside/office_complex) -"Zu" = ( -/turf/closed/wall, -/area/bigredv2/outside/office_complex) -"ZQ" = ( -/obj/machinery/prop/autolathe, -/turf/open/floor/tile/white, -/area/bigredv2/outside/office_complex) - -(1,1,1) = {" -pO -yd -yd -bb -RT -RT -RT -in -RT -RT -RT -in -RT -RT -RT -in -RT -RT -RT -in -vU -yd -yd -"} -(2,1,1) = {" -pO -yd -yd -UR -Kx -Kx -Kx -Kx -Zu -Zu -Zu -Zu -Zu -Zu -Zu -PS -PS -PS -Zu -Zu -SC -yd -yd -"} -(3,1,1) = {" -gP -yd -yd -UR -Kx -Kx -Kx -Kx -Zu -YB -Ws -Ws -ZQ -Zu -rf -CQ -hP -CQ -az -Zu -SC -yd -yd -"} -(4,1,1) = {" -pO -yd -yd -UR -Zu -IH -IH -Zu -IH -pH -gW -fy -YB -Zu -CQ -ON -LF -LF -iB -qR -ga -yd -yd -"} -(5,1,1) = {" -pO -yd -yd -UR -Zu -ch -Vk -RD -IH -sb -UY -pH -FN -Zu -hL -hP -SE -ns -hP -ds -Un -yd -yd -"} -(6,1,1) = {" -pO -yd -yd -UR -uj -GB -GB -GD -du -YB -ne -sw -Zi -Zu -Wq -LF -uh -hP -hE -qR -SC -yd -Ph -"} -(7,1,1) = {" -gP -yd -yd -UR -Zu -Zu -Zu -td -IH -PX -lJ -wP -Ei -Zu -ni -hP -hP -do -Sg -Zu -Sq -yd -yd -"} -(8,1,1) = {" -pO -yd -yd -UR -Zu -ch -Vk -RD -Zu -Uw -Zu -Zu -Zu -Zu -El -Zu -Zu -Zu -Zu -Zu -IH -Zu -Zu -"} -(9,1,1) = {" -pO -yd -yd -UR -uj -GB -GD -GD -wz -gs -Ys -tz -Zu -jw -kL -cd -cd -cd -Tr -pf -Cw -yR -yh -"} -(10,1,1) = {" -xY -yd -yd -UR -Zu -Zu -IH -IH -Zu -GD -vu -GD -Zu -fu -um -sO -gy -ht -fr -Pz -iQ -EF -dv -"} -(11,1,1) = {" -Ph -yd -yd -UR -Zu -ch -Vk -RD -Zu -ao -Lv -qd -Su -gw -av -Zu -Zu -YQ -Zu -Zu -Zu -Zu -Zu -"} -(12,1,1) = {" -Zu -Zu -Zu -Zu -Zu -GB -QF -zw -fw -pV -GB -zq -GD -Jy -EH -Zu -Yf -eV -yD -Rs -Ok -Zu -iH -"} -(13,1,1) = {" -Zu -sL -kt -Km -Zu -Zu -Zu -Zu -Zu -Zu -Zu -Zu -Zu -Gm -Af -Zu -yD -jj -RZ -Bp -yD -qR -BV -"} -(14,1,1) = {" -ro -FC -FC -yg -yh -yh -ui -ic -Op -Op -yh -Bu -yh -Iu -BD -Zu -bS -iX -bY -RZ -RZ -Zu -AL -"} -(15,1,1) = {" -LG -GD -LY -zq -sO -Sl -sO -ur -ms -Jk -sO -sO -qL -cj -le -Zu -QQ -xQ -pA -Rs -yD -qR -BV -"} -(16,1,1) = {" -qR -Xo -HV -IU -Zu -Zu -Zu -Zu -Zu -Zu -Zu -Zu -Zu -AQ -Kt -Zu -RA -mG -ld -yD -Fu -Zu -BV -"} -(17,1,1) = {" -Zu -xx -Md -uD -Zu -ch -Za -RD -Zu -ql -ql -Sy -Zu -Jy -Ck -Zu -Zu -Zu -Zu -Zu -Zu -Zu -iH -"} -(18,1,1) = {" -Zu -Zu -Zu -Zu -Zu -GD -dC -GD -wz -zq -tE -BH -Zu -FH -Vp -cM -XX -hl -MN -my -ks -Rm -cE -"} -(19,1,1) = {" -Vh -My -pe -DD -Zu -rE -Zu -Zu -Zu -FY -ke -BF -Hu -If -Nq -FF -ey -FF -sy -ye -iQ -LG -iH -"} -(20,1,1) = {" -px -My -GM -GM -qR -ch -Za -RD -Zu -zq -GD -ak -Zu -je -JL -Zu -Zu -Zu -Zu -Zu -Zu -Zu -iH -"} -(21,1,1) = {" -DV -My -GM -GM -Zu -GB -Yv -GD -wz -LY -ya -zu -Zu -Fj -NW -Zu -bQ -Yq -NH -JT -Qd -Zu -BV -"} -(22,1,1) = {" -dX -My -GM -GM -Zu -Zu -Zu -Zu -Zu -GD -QI -BH -Zu -es -VR -Zu -bQ -WQ -tQ -nZ -nR -Zu -AL -"} -(23,1,1) = {" -px -My -pe -GM -Zu -GD -LY -GB -wz -tE -zq -BH -Zu -fu -NW -Zu -NG -Ia -dk -nZ -Ia -hk -BV -"} -(24,1,1) = {" -Vh -My -GM -GM -qR -ch -kU -RD -Zu -Zu -Uw -Zu -Zu -Ww -zm -PO -Fb -Fb -Ea -tO -nZ -LG -BV -"} -(25,1,1) = {" -Vh -My -GM -GM -Zu -Zu -Zu -Zu -Zu -CT -GB -GD -Zu -Jy -iQ -Yq -Yq -nZ -tQ -Kd -wq -Zu -iH -"} -(26,1,1) = {" -Vh -My -GM -DD -GM -GM -GM -GM -Zu -Qb -wj -zq -Zu -Jy -mi -Zu -wO -wO -Yq -wG -FW -Zu -cE -"} -(27,1,1) = {" -Vh -My -pe -GM -GM -GM -GM -GM -Zu -Zu -Zu -Zu -Zu -Wg -Zp -Zu -Zu -Zu -Zu -Zu -Zu -Zu -iH -"} -(28,1,1) = {" -Vh -Fm -dX -dX -dX -dX -Rq -dX -dX -dX -Rq -dX -PG -PG -PG -dp -PG -PG -PG -dp -PG -PG -hS -"} diff --git a/code/modules/mapping/modular_mapping.dm b/code/modules/mapping/modular_mapping.dm index 643ff278a2409..abbdbf919636e 100644 --- a/code/modules/mapping/modular_mapping.dm +++ b/code/modules/mapping/modular_mapping.dm @@ -471,13 +471,6 @@ template_width = 28 template_height = 23 -/datum/map_template/modular/bigred/officefour - name = "Big red office" - mappath = "_maps/modularmaps/big_red/bigredofficevar4.dmm" - modular_id = "broffice" - template_width = 28 - template_height = 23 - /datum/map_template/modular/bigred/atmosone name = "Big red atmos" mappath = "_maps/modularmaps/big_red/bigredatmosvar1.dmm" From 23cea9ace7598854b4e9d531c1535cdbbaf77df7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 10 Jan 2024 13:18:39 +0000 Subject: [PATCH 36/82] Automatic changelog for PR #14744 [ci skip] --- html/changelogs/AutoChangeLog-pr-14744.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14744.yml diff --git a/html/changelogs/AutoChangeLog-pr-14744.yml b/html/changelogs/AutoChangeLog-pr-14744.yml new file mode 100644 index 0000000000000..12e9af203f7b0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14744.yml @@ -0,0 +1,4 @@ +author: "yyzsong" +delete-after: True +changes: + - rscdel: "Removes Big Red office variant 4" \ No newline at end of file From 652fe63e7a44239f3691bb53e031bd4d11c1a45a Mon Sep 17 00:00:00 2001 From: ivanmixo Date: Wed, 10 Jan 2024 22:05:31 +0100 Subject: [PATCH 37/82] Spatial agent glasses have all huds now (#14786) --- code/datums/jobs/job/other.dm | 2 +- code/modules/clothing/glasses/glasses.dm | 16 -------- code/modules/clothing/glasses/hud.dm | 50 ++++++++++++++++++++---- 3 files changed, 43 insertions(+), 25 deletions(-) diff --git a/code/datums/jobs/job/other.dm b/code/datums/jobs/job/other.dm index f3cab152069df..9dd2384eeffbf 100644 --- a/code/datums/jobs/job/other.dm +++ b/code/datums/jobs/job/other.dm @@ -64,7 +64,7 @@ belt = /obj/item/storage/belt/utility/full shoes = /obj/item/clothing/shoes/marinechief/sa gloves = /obj/item/clothing/gloves/marine/officer/chief/sa - glasses = /obj/item/clothing/glasses/sunglasses/sa/nodrop + glasses = /obj/item/clothing/glasses/hud/sa/nodrop back = /obj/item/storage/backpack/marine/satchel /datum/job/spatial_agent/galaxy_red diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 711f3a9705ff7..a3524d22663f5 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -358,22 +358,6 @@ name = "prescription sunglasses" prescription = TRUE -/obj/item/clothing/glasses/sunglasses/sa - name = "spatial agent's sunglasses" - desc = "Glasses worn by a spatial agent." - eye_protection = 2 - darkness_view = 8 - vision_flags = SEE_TURFS|SEE_MOBS|SEE_OBJS - lighting_alpha = LIGHTING_PLANE_ALPHA_INVISIBLE - -/obj/item/clothing/glasses/sunglasses/sa/Initialize(mapload) - . = ..() - AddComponent(/datum/component/clothing_tint, TINT_NONE) - -/obj/item/clothing/glasses/sunglasses/sa/nodrop - desc = "Glasses worn by a spatial agent. cannot be dropped" - flags_item = DELONDROP - /obj/item/clothing/glasses/sunglasses/sechud name = "HUDSunglasses" desc = "Sunglasses with a HUD." diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index bc320679e2f3f..9a59748446852 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -2,7 +2,9 @@ name = "HUD" desc = "A heads-up display that provides important info in (almost) real time." flags_atom = null //doesn't protect eyes because it's a monocle, duh + ///The hud type(s) to give this type of glasses var/hud_type + ///The user wearing the glasses var/mob/living/carbon/human/affected_user @@ -43,18 +45,31 @@ . = ..() if(QDELETED(affected_user)) return - deactivate_hud() - + var/mob/living/carbon/human/hud_user = user + if(hud_user.glasses != src) + return + deactivate_hud(hud_user) +///Activates the hud(s) these glasses have /obj/item/clothing/glasses/hud/proc/activate_hud(mob/living/carbon/human/user) - var/datum/atom_hud/hud_datum = GLOB.huds[hud_type] - hud_datum.add_hud_to(user) + if(islist(hud_type)) + for(var/hud in hud_type) + var/datum/atom_hud/hud_datum = GLOB.huds[hud] + hud_datum.add_hud_to(user) + else + var/datum/atom_hud/hud_datum = GLOB.huds[hud_type] + hud_datum.add_hud_to(user) affected_user = user - -/obj/item/clothing/glasses/hud/proc/deactivate_hud() - var/datum/atom_hud/hud_datum = GLOB.huds[hud_type] - hud_datum.remove_hud_from(affected_user) +///Deactivates the hud(s) these glasses have +/obj/item/clothing/glasses/hud/proc/deactivate_hud(mob/user) + if(islist(hud_type)) + for(var/hud in hud_type) + var/datum/atom_hud/hud_datum = GLOB.huds[hud] + hud_datum.remove_hud_from(user) + else + var/datum/atom_hud/hud_datum = GLOB.huds[hud_type] + hud_datum.remove_hud_from(user) affected_user = null @@ -212,3 +227,22 @@ toggleable = TRUE hud_type = DATA_HUD_MEDICAL_PAIN actions_types = list(/datum/action/item_action/toggle) + +/obj/item/clothing/glasses/hud/sa + name = "spatial agent's sunglasses" + desc = "Glasses worn by a spatial agent." + icon_state = "sun" + item_state = "sunglasses" + eye_protection = 2 + darkness_view = 8 + hud_type = list(DATA_HUD_MEDICAL_OBSERVER, DATA_HUD_XENO_STATUS, DATA_HUD_SECURITY_ADVANCED, DATA_HUD_SQUAD_TERRAGOV, DATA_HUD_SQUAD_SOM, DATA_HUD_ORDER) + vision_flags = SEE_TURFS|SEE_MOBS|SEE_OBJS + lighting_alpha = LIGHTING_PLANE_ALPHA_INVISIBLE + +/obj/item/clothing/glasses/hud/sa/Initialize(mapload) + . = ..() + AddComponent(/datum/component/clothing_tint, TINT_NONE) + +/obj/item/clothing/glasses/hud/sa/nodrop + desc = "Glasses worn by a spatial agent. They delete themselves if you take them off!" + flags_item = DELONDROP From 28957fd9c7fb92385ec7a7c19ed3ab883d088a70 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 10 Jan 2024 21:05:49 +0000 Subject: [PATCH 38/82] Automatic changelog for PR #14786 [ci skip] --- html/changelogs/AutoChangeLog-pr-14786.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14786.yml diff --git a/html/changelogs/AutoChangeLog-pr-14786.yml b/html/changelogs/AutoChangeLog-pr-14786.yml new file mode 100644 index 0000000000000..19d3c4e6d830d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14786.yml @@ -0,0 +1,4 @@ +author: "ivanmixo" +delete-after: True +changes: + - qol: "Spatial agent glasses have all huds now" \ No newline at end of file From 25d2fec38eb2b708e83d1e9e7bd94a19a79ee55a Mon Sep 17 00:00:00 2001 From: Barnet Date: Wed, 10 Jan 2024 13:58:15 -0800 Subject: [PATCH 39/82] Removes hatchling rank, adds prime (#14787) --- .../mob/living/carbon/xenomorph/castes/king/king.dm | 12 ++++++------ .../living/carbon/xenomorph/castes/queen/queen.dm | 12 ++++++------ .../modules/mob/living/carbon/xenomorph/xenomorph.dm | 12 ++++++------ 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/king/king.dm b/code/modules/mob/living/carbon/xenomorph/castes/king/king.dm index 878ed936a858a..9306789b51929 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/king/king.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/king/king.dm @@ -30,17 +30,17 @@ var/prefix = (hive.prefix || xeno_caste.upgrade_name) ? "[hive.prefix][xeno_caste.upgrade_name] " : "" switch(playtime_mins) if(0 to 600) - name = prefix + "Hatchling King ([nicknumber])" - if(601 to 1500) name = prefix + "Young King ([nicknumber])" + if(601 to 1500) + name = prefix + "Mature King ([nicknumber])" if(1501 to 4200) - name = prefix + "Mature Emperor ([nicknumber])" - if(4201 to 10500) name = prefix + "Elder Emperor ([nicknumber])" - if(10501 to INFINITY) + if(4201 to 10500) name = prefix + "Ancient Emperor ([nicknumber])" + if(10501 to INFINITY) + name = prefix + "Prime Emperor ([nicknumber])" else - name = prefix + "Hatchling King ([nicknumber])" + name = prefix + "Young King ([nicknumber])" real_name = name if(mind) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/queen/queen.dm b/code/modules/mob/living/carbon/xenomorph/castes/queen/queen.dm index 340acfb0a0d2b..c3a1ea78f0b2e 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/queen/queen.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/queen/queen.dm @@ -76,17 +76,17 @@ var/prefix = (hive.prefix || xeno_caste.upgrade_name) ? "[hive.prefix][xeno_caste.upgrade_name] " : "" switch(playtime_mins) if(0 to 600) - name = prefix + "Hatchling Queen ([nicknumber])" - if(601 to 1500) name = prefix + "Young Queen ([nicknumber])" + if(601 to 1500) + name = prefix + "Mature Queen ([nicknumber])" if(1501 to 4200) - name = prefix + "Mature Empress ([nicknumber])" - if(4201 to 10500) name = prefix + "Elder Empress ([nicknumber])" - if(10501 to INFINITY) + if(4201 to 10500) name = prefix + "Ancient Empress ([nicknumber])" + if(10501 to INFINITY) + name = prefix + "Prime Empress ([nicknumber])" else - name = prefix + "Hatchling Queen ([nicknumber])" + name = prefix + "Young Queen ([nicknumber])" real_name = name if(mind) diff --git a/code/modules/mob/living/carbon/xenomorph/xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/xenomorph.dm index e5b7027b372c4..c093d6b5f1894 100644 --- a/code/modules/mob/living/carbon/xenomorph/xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/xenomorph.dm @@ -156,17 +156,17 @@ var/rank_name switch(playtime_mins) if(0 to 600) - rank_name = "Hatchling" - if(601 to 1500) //10 hours rank_name = "Young" - if(1501 to 4200) //25 hours + if(601 to 1500) //10 hours rank_name = "Mature" - if(4201 to 10500) //70 hours + if(1501 to 4200) //25 hours rank_name = "Elder" - if(10501 to INFINITY) //175 hours + if(4201 to 10500) //70 hours rank_name = "Ancient" + if(10501 to INFINITY) //175 hours + rank_name = "Prime" else - rank_name = "Hatchling" + rank_name = "Young" var/prefix = (hive.prefix || xeno_caste.upgrade_name) ? "[hive.prefix][xeno_caste.upgrade_name] " : "" name = prefix + "[rank_name ? "[rank_name] " : ""][xeno_caste.display_name] ([nicknumber])" From 1326148add3fa1b092335dcfd4e520337ad9f176 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 10 Jan 2024 21:58:32 +0000 Subject: [PATCH 40/82] Automatic changelog for PR #14787 [ci skip] --- html/changelogs/AutoChangeLog-pr-14787.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14787.yml diff --git a/html/changelogs/AutoChangeLog-pr-14787.yml b/html/changelogs/AutoChangeLog-pr-14787.yml new file mode 100644 index 0000000000000..b9e1dad8bb64f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14787.yml @@ -0,0 +1,4 @@ +author: "Barnet2" +delete-after: True +changes: + - spellcheck: "Hatchling xeno rank is replaced with young, prime is now the top xeno rank" \ No newline at end of file From 038ece96d180006a2c2384dae87f0cd6d54ca783 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Thu, 11 Jan 2024 00:53:21 +0000 Subject: [PATCH 41/82] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-14744.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14786.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14787.yml | 4 ---- html/changelogs/archive/2024-01.yml | 8 ++++++++ 4 files changed, 8 insertions(+), 12 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-14744.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14786.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14787.yml diff --git a/html/changelogs/AutoChangeLog-pr-14744.yml b/html/changelogs/AutoChangeLog-pr-14744.yml deleted file mode 100644 index 12e9af203f7b0..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14744.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "yyzsong" -delete-after: True -changes: - - rscdel: "Removes Big Red office variant 4" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14786.yml b/html/changelogs/AutoChangeLog-pr-14786.yml deleted file mode 100644 index 19d3c4e6d830d..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14786.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ivanmixo" -delete-after: True -changes: - - qol: "Spatial agent glasses have all huds now" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14787.yml b/html/changelogs/AutoChangeLog-pr-14787.yml deleted file mode 100644 index b9e1dad8bb64f..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14787.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Barnet2" -delete-after: True -changes: - - spellcheck: "Hatchling xeno rank is replaced with young, prime is now the top xeno rank" \ No newline at end of file diff --git a/html/changelogs/archive/2024-01.yml b/html/changelogs/archive/2024-01.yml index 838bbe623c958..bf9a69f768a29 100644 --- a/html/changelogs/archive/2024-01.yml +++ b/html/changelogs/archive/2024-01.yml @@ -87,3 +87,11 @@ them. XElectricX, ivanmixo: - rscadd: Added a TGMC retired veteran ERT +2024-01-11: + Barnet2: + - spellcheck: Hatchling xeno rank is replaced with young, prime is now the top xeno + rank + ivanmixo: + - qol: Spatial agent glasses have all huds now + yyzsong: + - rscdel: Removes Big Red office variant 4 From 5a9c5dc96347f7a2c02d5e3b33b12354fe877f42 Mon Sep 17 00:00:00 2001 From: Lumipharon Date: Fri, 12 Jan 2024 01:07:21 +1300 Subject: [PATCH 42/82] Throw bounce improvements (#14791) --- code/__HELPERS/unsorted.dm | 13 +++++++++++++ code/game/atoms_movable.dm | 6 +++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 2d7e8575286cb..ac2e8600626bc 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -137,6 +137,7 @@ else if(. >= 360) . -= 360 +///Returns one of the 8 directions based on an angle /proc/angle_to_dir(angle) switch(angle) if(338 to 360, 0 to 22) @@ -156,6 +157,18 @@ if(293 to 337) return NORTHWEST +///Returns one of the 4 cardinal directions based on an angle +/proc/angle_to_cardinal_dir(angle) + switch(angle) + if(316 to 360, 0 to 45) + return NORTH + if(46 to 135) + return EAST + if(136 to 225) + return SOUTH + if(226 to 315) + return WEST + ///returns degrees between two angles /proc/get_between_angles(degree_one, degree_two) var/angle = abs(degree_one - degree_two) % 360 diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 02c000ed87a87..c2d17b6932fbf 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -488,7 +488,7 @@ return if(!isturf(loc)) return - var/dir_to_proj = get_dir(hit_atom, old_throw_source) + var/dir_to_proj = angle_to_cardinal_dir(Get_Angle(hit_atom, old_throw_source)) if(ISDIAGONALDIR(dir_to_proj)) var/list/cardinals = list(turn(dir_to_proj, 45), turn(dir_to_proj, -45)) for(var/direction in cardinals) @@ -497,8 +497,8 @@ cardinals -= direction dir_to_proj = pick(cardinals) - var/perpendicular_angle = Get_Angle(hit_atom, get_step(hit_atom, dir_to_proj)) - var/new_angle = (perpendicular_angle + (perpendicular_angle - Get_Angle(old_throw_source, src) - 180) + rand(-10, 10)) + var/perpendicular_angle = Get_Angle(hit_atom, get_step(hit_atom, ISDIAGONALDIR(dir_to_proj) ? get_dir(hit_atom, old_throw_source) - dir_to_proj : dir_to_proj)) + var/new_angle = (perpendicular_angle + (perpendicular_angle - Get_Angle(old_throw_source, (loc == old_throw_source ? hit_atom : src)) - 180) + rand(-10, 10)) if(new_angle < -360) new_angle += 720 //north is 0 instead of 360 From 2277105fcf961582db84e8cf519bea5108d6faa3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 11 Jan 2024 12:07:40 +0000 Subject: [PATCH 43/82] Automatic changelog for PR #14791 [ci skip] --- html/changelogs/AutoChangeLog-pr-14791.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14791.yml diff --git a/html/changelogs/AutoChangeLog-pr-14791.yml b/html/changelogs/AutoChangeLog-pr-14791.yml new file mode 100644 index 0000000000000..dfc7689ae9e09 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14791.yml @@ -0,0 +1,4 @@ +author: "Lumipharon" +delete-after: True +changes: + - bugfix: "Fixed some instances where throw bounces would behave funnily" \ No newline at end of file From e319db5aea871fbfd622ce7d5630e3d1f84c09d8 Mon Sep 17 00:00:00 2001 From: Lumipharon Date: Fri, 12 Jan 2024 01:08:26 +1300 Subject: [PATCH 44/82] Throw signal fix (#14790) --- code/game/atoms_movable.dm | 15 ++++++--------- code/game/objects/items/jetpack.dm | 2 +- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index c2d17b6932fbf..bd8241fbc1024 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -617,13 +617,13 @@ flags_atom &= ~DIRLOCK if(isobj(src) && throwing) throw_impact(get_turf(src), speed) - if(loc) - stop_throw(flying, original_layer) - SEND_SIGNAL(loc, COMSIG_TURF_THROW_ENDED_HERE, src) - SEND_SIGNAL(src, COMSIG_MOVABLE_POST_THROW) + stop_throw(flying, original_layer) -/// Annul all throw var to ensure a clean exit out of throw state +///Clean up all throw vars /atom/movable/proc/stop_throw(flying = FALSE, original_layer) + SEND_SIGNAL(src, COMSIG_MOVABLE_POST_THROW) + if(loc) + SEND_SIGNAL(loc, COMSIG_TURF_THROW_ENDED_HERE, src) set_throwing(FALSE) if(flying) set_flying(FALSE, original_layer) @@ -1201,10 +1201,7 @@ grab_state = newstate ///Toggles AM between throwing states -/atom/movable/proc/set_throwing(new_throwing, flying) - if(new_throwing == throwing) - return - . = throwing +/atom/movable/proc/set_throwing(new_throwing) throwing = new_throwing if(throwing) pass_flags |= PASS_THROW diff --git a/code/game/objects/items/jetpack.dm b/code/game/objects/items/jetpack.dm index 24fe22c49e1fe..dfa1bed3043c3 100644 --- a/code/game/objects/items/jetpack.dm +++ b/code/game/objects/items/jetpack.dm @@ -105,8 +105,8 @@ human_user.update_inv_back() update_icon() new /obj/effect/temp_visual/smoke(get_turf(human_user)) - human_user.fly_at(A, calculate_range(human_user), speed) RegisterSignal(human_user, COMSIG_MOVABLE_POST_THROW, PROC_REF(reset_flame)) + human_user.fly_at(A, calculate_range(human_user), speed) return TRUE ///Calculate the max range of the jetpack, changed by some item slowdown From dd0f0443eda12c48cc40134e5364a9c6ab402115 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 11 Jan 2024 12:08:45 +0000 Subject: [PATCH 45/82] Automatic changelog for PR #14790 [ci skip] --- html/changelogs/AutoChangeLog-pr-14790.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14790.yml diff --git a/html/changelogs/AutoChangeLog-pr-14790.yml b/html/changelogs/AutoChangeLog-pr-14790.yml new file mode 100644 index 0000000000000..9cabd4393bf0c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14790.yml @@ -0,0 +1,4 @@ +author: "Lumipharon" +delete-after: True +changes: + - bugfix: "fixed a couple of uncommon throw bugs" \ No newline at end of file From d5dfc4502d0b566ddc29c3797e6fa6995bb40113 Mon Sep 17 00:00:00 2001 From: Barnet Date: Thu, 11 Jan 2024 09:12:34 -0800 Subject: [PATCH 46/82] Daedalus Changes (#1) (#14792) --- .../DaedalusPrison/DaedalusPrison.dmm | 552 ++++++++++-------- code/game/area/daedalusprison.dm | 2 + code/game/turfs/closed.dm | 4 + config/maps.txt | 2 +- 4 files changed, 300 insertions(+), 260 deletions(-) diff --git a/_maps/map_files/DaedalusPrison/DaedalusPrison.dmm b/_maps/map_files/DaedalusPrison/DaedalusPrison.dmm index 627daf97c837e..7aa821a640fdd 100644 --- a/_maps/map_files/DaedalusPrison/DaedalusPrison.dmm +++ b/_maps/map_files/DaedalusPrison/DaedalusPrison.dmm @@ -1962,6 +1962,11 @@ dir = 1 }, /area/daedalusprison/inside/security/warden) +"bHC" = ( +/obj/effect/landmark/weed_node, +/obj/effect/landmark/xeno_resin_wall, +/turf/open/floor/plating/ground/snow/layer2, +/area/daedalusprison/outside/south) "bIA" = ( /turf/open/floor/prison/red/corner, /area/daedalusprison/inside/habitationsouth) @@ -2527,7 +2532,7 @@ "chJ" = ( /obj/effect/landmark/lv624/fog_blocker/xeno_spawn, /obj/effect/landmark/lv624/fog_blocker/xeno_spawn, -/turf/closed/mineral/smooth/darkfrostwall, +/turf/closed/mineral/smooth/darkfrostwall/cuttable, /area/daedalusprison/caves/rock) "chS" = ( /obj/structure/table, @@ -6722,6 +6727,10 @@ /obj/effect/landmark/weed_node, /turf/open/floor/tile/purple/taupepurple, /area/daedalusprison/inside/hydroponicstesting) +"fBv" = ( +/obj/effect/landmark/xeno_resin_wall, +/turf/open/floor/plating/ground/snow/layer1, +/area/daedalusprison/outside/south) "fBx" = ( /obj/structure/rack, /obj/item/weapon/gun/shotgun/pump/cmb, @@ -7394,6 +7403,11 @@ }, /turf/open/floor/prison/kitchen, /area/daedalusprison/inside/prisonshower) +"ghP" = ( +/obj/item/stack/sheet/metal, +/obj/effect/landmark/xeno_resin_wall, +/turf/open/floor/plating/ground/snow/layer2, +/area/daedalusprison/outside/northeast) "giM" = ( /obj/machinery/atmospherics/pipe/simple/green/hidden{ dir = 4 @@ -7494,9 +7508,9 @@ }, /area/daedalusprison/inside/colonydorms) "gmu" = ( -/obj/machinery/miner/damaged, +/obj/effect/landmark/xeno_resin_wall, /turf/open/floor/plating/ground/snow/layer2, -/area/daedalusprison/outside/north) +/area/daedalusprison/outside/south) "gmx" = ( /obj/machinery/light{ dir = 1 @@ -8670,7 +8684,7 @@ /area/daedalusprison/inside/mechanicshop) "hoO" = ( /obj/effect/landmark/lv624/fog_blocker/xeno_spawn, -/turf/closed/mineral/smooth/darkfrostwall, +/turf/closed/mineral/smooth/darkfrostwall/cuttable, /area/daedalusprison/caves/rock) "hoW" = ( /obj/structure/table/reinforced, @@ -9019,6 +9033,10 @@ /obj/effect/landmark/weed_node, /turf/open/floor/tile/dark/yellow2/corner, /area/daedalusprison/inside/engineering) +"hEM" = ( +/obj/effect/landmark/xeno_resin_wall, +/turf/open/floor/plating/ground/snow/layer1, +/area/daedalusprison/outside/north) "hFj" = ( /obj/item/ammo_casing, /turf/open/floor/prison, @@ -13489,7 +13507,7 @@ }, /area/daedalusprison/inside/centralhalls) "liI" = ( -/turf/closed/mineral/smooth/darkfrostwall, +/turf/closed/mineral/smooth/darkfrostwall/cuttable, /area/daedalusprison/caves/rock) "lja" = ( /obj/machinery/atmospherics/pipe/simple/green/hidden{ @@ -14090,6 +14108,10 @@ /obj/effect/landmark/weed_node, /turf/open/floor/prison/red, /area/daedalusprison/inside/habitationsouth) +"lHH" = ( +/obj/effect/landmark/xeno_resin_wall, +/turf/open/floor/plating/ground/snow/layer2, +/area/daedalusprison/outside/northeast) "lHO" = ( /obj/machinery/atmospherics/pipe/manifold/green/hidden{ dir = 1 @@ -17189,6 +17211,10 @@ /obj/structure/cable, /turf/open/floor/prison/plate, /area/daedalusprison/inside/security/warden) +"ojR" = ( +/obj/effect/landmark/xeno_resin_wall, +/turf/open/floor/plating/ground/snow/layer2, +/area/daedalusprison/outside/north) "ojY" = ( /obj/structure/table/reinforced, /turf/open/floor/wood, @@ -17285,7 +17311,7 @@ /turf/open/floor/tile/dark/purple2/corner, /area/daedalusprison/inside/colonydorms) "opr" = ( -/turf/closed/mineral/smooth/darkfrostwall, +/turf/closed/mineral/smooth/darkfrostwall/cuttable, /area/daedalusprison/caves/northwest) "opN" = ( /turf/open/floor/tile/green/greentaupe{ @@ -17982,6 +18008,10 @@ /obj/effect/ai_node, /turf/open/floor/prison/sterilewhite, /area/daedalusprison/inside/medical) +"oPp" = ( +/obj/effect/landmark/xeno_resin_wall, +/turf/open/floor/plating/ground/snow/layer0, +/area/daedalusprison/outside/northeast) "oPy" = ( /obj/structure/table/mainship, /obj/effect/landmark/weed_node, @@ -20866,6 +20896,10 @@ dir = 6 }, /area/daedalusprison/inside/northmeetingroom) +"rin" = ( +/obj/effect/landmark/xeno_resin_wall, +/turf/open/floor/plating/ground/snow/layer1, +/area/daedalusprison/outside/northeast) "rit" = ( /obj/effect/acid_hole, /turf/closed/wall/prison, @@ -31699,7 +31733,7 @@ wTh ira ira ira -ira +wTh liI liI liI @@ -31912,8 +31946,8 @@ wTh miz kzq ira -ira wTh +miz liI sLx sLx @@ -32125,7 +32159,7 @@ miz miz ira ira -ira +miz liI sLx sLx @@ -32337,7 +32371,7 @@ ira ira ira ira -ira +miz liI liI liI @@ -32549,9 +32583,9 @@ ira mEN ira ira -ira -mEN -ira +miz +kzq +miz liI sLx sLx @@ -32763,7 +32797,7 @@ ira ira ira ira -ira +miz liI liI sLx @@ -32972,11 +33006,11 @@ sLx sLx liI ira -mEN -ira -ira +vbd ira ira +miz +miz liI liI sLx @@ -33164,13 +33198,13 @@ sLx liI kzq miz -ira -ira -ira -ira -ira -ira -ira +miz +wTf +wTf +miz +miz +wTf +wTf liI sLx sLx @@ -33188,8 +33222,8 @@ ira wTh ira ira -mEN -ira +kzq +miz liI liI sLx @@ -33379,8 +33413,8 @@ ira ira ira ira -ira -ira +miz +miz ira ira liI @@ -33401,8 +33435,8 @@ ira wTh ira ira -ira -ira +miz +miz liI liI sLx @@ -33609,13 +33643,13 @@ liI mEN ira ira -mEN -ira +vbd ira ira ira -mEN ira +kzq +miz liI liI sLx @@ -33827,8 +33861,8 @@ miz ira ira ira -ira -ira +miz +miz liI sLx sLx @@ -34040,7 +34074,7 @@ ira mEN ira ira -mEN +kzq liI sLx sLx @@ -34230,10 +34264,10 @@ liI liI liI liI +miz wTf wTf -wTf -wTf +miz liI liI sLx @@ -34252,7 +34286,7 @@ ira ira ira ira -ira +miz liI liI sLx @@ -34434,10 +34468,10 @@ sLx sLx liI kzq -ira -ira -ira -mEN +wTf +miz +miz +uAB liI sLx sLx @@ -35093,7 +35127,7 @@ sLx sLx sLx liI -ira +wTh ira miz kzq @@ -35740,8 +35774,8 @@ miz miz ira ira -ira -ira +miz +miz ira ira miz @@ -35952,8 +35986,8 @@ ira ira ira ngx -ira -ira +miz +miz ira ira ira @@ -36364,7 +36398,7 @@ sLx sLx liI liI -ira +miz ira ira miz @@ -36561,12 +36595,12 @@ ira ira liI liI +miz wTf +miz +miz wTf -wTf -wTf -wTf -wTf +miz liI liI sLx @@ -36575,8 +36609,8 @@ sLx sLx sLx liI -ira -ira +miz +miz ira ira wTf @@ -36787,7 +36821,7 @@ sLx sLx sLx liI -ira +miz ira ira ira @@ -36908,13 +36942,13 @@ sLx liI liI dVz +vBS dVz dVz dVz dVz dVz -dVz -dVz +dLg dVz dVz dVz @@ -36999,7 +37033,7 @@ sLx sLx sLx liI -mEN +kzq ira ira vbd @@ -37121,7 +37155,7 @@ sLx liI liI dLg -dVz +vBS dVz dVz dLg @@ -37130,7 +37164,7 @@ dVz dVz dVz dVz -dVz +vBS dVz sLx sLx @@ -37198,7 +37232,7 @@ ira ira ira ira -ira +wTh ira liI liI @@ -37211,7 +37245,7 @@ sLx sLx sLx liI -ira +miz ira ira ira @@ -37340,7 +37374,7 @@ dVz dVz dVz dVz -dVz +dLg dVz dVz dVz @@ -37407,8 +37441,8 @@ liI ira ira ira -mEN -ira +kzq +miz ira ira liI @@ -37423,7 +37457,7 @@ sLx sLx sLx liI -ira +miz ira ira ira @@ -37619,8 +37653,8 @@ liI ira ira ira -ira -ira +miz +miz ira mEN liI @@ -37635,7 +37669,7 @@ sLx sLx sLx liI -ira +miz ira ira ira @@ -37766,8 +37800,8 @@ sLx sLx dVz dVz -dVz -dVz +vBS +dLg dVz sLx sLx @@ -37847,7 +37881,7 @@ sLx sLx liI liI -mEN +kzq ira ira mEN @@ -37979,7 +38013,7 @@ sLx sLx dVz dVz -dVz +vBS dVz sLx sLx @@ -38058,8 +38092,8 @@ sLx sLx liI liI -ira -ira +miz +miz ira ira ngx @@ -38269,7 +38303,7 @@ liI liI liI liI -wTh +kwE ira ira ira @@ -38403,7 +38437,7 @@ sLx sLx sLx dVz -dVz +dLg dVz sLx sLx @@ -38682,7 +38716,7 @@ ira ira miz miz -ira +wTh ira miz miz @@ -39251,7 +39285,7 @@ kIn kIn nmO dmP -dVz +dLg dVz sLx prV @@ -39463,7 +39497,7 @@ kIn sEf nmO dmP -dmP +nmg dVz sLx prV @@ -40194,8 +40228,8 @@ ira ira ira ira -ira -ira +miz +miz liI liI vXd @@ -40405,8 +40439,8 @@ liI ira ira ira -ira -ira +miz +miz liI liI liI @@ -40617,7 +40651,7 @@ ira mEN ira ira -mEN +kzq liI liI sLx @@ -40829,7 +40863,7 @@ ira ira ira ira -ira +miz liI sLx sLx @@ -47402,8 +47436,8 @@ fvb hch fvb fvb -fvb -fvb +eHi +eHi fvb fvb liI @@ -47614,8 +47648,8 @@ fvb fvb fvb fvb -fvb -fvb +eHi +eHi fvb liI liI @@ -48187,14 +48221,14 @@ bOo cXA sNf maf +gmu +gmu qqi +gmu +gmu qqi -qqi -qqi -qqi -qqi -qqi -qqi +gmu +gmu sLx sLx sLx @@ -48246,8 +48280,8 @@ fvb fvb fvb fvb -fvb -fvb +eHi +eHi fvb fvb fvb @@ -48399,14 +48433,14 @@ pbo bOo sNf maf -qqi -qqi -kaT -qqi -qqi -qqi +gmu +gmu kaT +gmu +gmu qqi +bHC +gmu sLx sLx sLx @@ -48458,8 +48492,8 @@ eHi eHi eHi fvb -fvb -fvb +eHi +eHi fvb fvb fvb @@ -48823,12 +48857,12 @@ lJM lJM sNf aok +bUI +gmu +gmu qqi -qqi -qqi -qqi -qqi -qqi +gmu +gmu qqi sLx sLx @@ -49036,10 +49070,10 @@ maf aok aok qqi +gmu +gmu qqi -qqi -qqi -qqi +gmu qqi qqi sLx @@ -49243,11 +49277,11 @@ jpF aok kaT qqi -qqi +bUI qqi kaT qqi -qqi +bUI qqi kaT qqi @@ -49303,8 +49337,8 @@ sLx sLx sLx liI -fvb -fvb +eHi +eHi fvb inc fvb @@ -49459,8 +49493,8 @@ qqi qqi qqi qqi -qqi -qqi +gmu +gmu qqi qqi qqi @@ -49515,7 +49549,7 @@ sLx sLx sLx liI -fvb +eHi fvb inc hch @@ -49667,15 +49701,15 @@ aXz cdG qqi qqi -bUI -qqi -qqi -qqi -qqi -bUI qqi +gmu +gmu qqi +gmu +gmu qqi +gmu +gmu qqi sLx sLx @@ -49727,7 +49761,7 @@ sLx sLx liI liI -oFt +gdW fvb fvb oFt @@ -49880,14 +49914,14 @@ cdG qqi qqi qqi +gmu +gmu qqi qqi qqi qqi -qqi -qqi -qqi -qqi +gmu +gmu qqi tCL sLx @@ -49938,8 +49972,8 @@ sLx sLx liI liI -fvb -fvb +eHi +eHi fvb fvb fvb @@ -49988,7 +50022,7 @@ liI uSn uSn riX -riX +uSn uSn liI sLx @@ -50095,11 +50129,11 @@ qqi qqi kaT qqi +gmu +gmu +syf qqi -qqi -kaT -qqi -qqi +bUI qqi aiF tCL @@ -50148,9 +50182,9 @@ sLx sLx liI liI -fvb -fvb -fvb +eHi +eHi +eHi fvb fvb fvb @@ -50303,15 +50337,15 @@ aXz cdG qqi qqi -bUI -qqi -qqi -qqi qqi -bUI +gmu +gmu qqi +gmu +gmu qqi -tCL +gmu +fBv bUI tCL tCL @@ -50359,8 +50393,8 @@ sLx sLx liI liI -fvb -fvb +eHi +eHi fvb fvb fvb @@ -50516,14 +50550,14 @@ cdG qqi qqi qqi +gmu +gmu qqi qqi qqi qqi -qqi -qqi -qqi -qqi +gmu +gmu qqi tCL nls @@ -50731,8 +50765,8 @@ qqi qqi qqi qqi -qqi -qqi +gmu +gmu qqi qqi qqi @@ -50940,14 +50974,14 @@ aok kaT qqi qqi +gmu +bHC qqi +gmu +gmu kaT -qqi -qqi -qqi -kaT -qqi -qqi +gmu +gmu qqi nHn nls @@ -51151,14 +51185,14 @@ aok qqi qqi qqi -bUI -qqi qqi +gmu +gmu qqi qqi -bUI qqi qqi +gmu qqi bUI liI @@ -51367,8 +51401,8 @@ qqi qqi qqi qqi -qqi -qqi +gmu +gmu qqi qqi qqi @@ -51576,11 +51610,11 @@ qqi qqi qqi qqi +gmu +gmu qqi -qqi -qqi -qqi -qqi +gmu +gmu qqi qqi liI @@ -51788,12 +51822,12 @@ qqi kaT qqi qqi -qqi -kaT -qqi +gmu +bHC +bUI qqi qqi -kaT +syf liI liI sLx @@ -51999,9 +52033,9 @@ qqi qqi qqi qqi +bUI qqi -qqi -qqi +bUI qqi qqi liI @@ -58270,8 +58304,8 @@ tOL dXL dXL dXL -dXL -dXL +ojR +ojR mqf dXL dXL @@ -58482,8 +58516,8 @@ jXr dXL dXL dXL -dXL -dXL +ojR +ojR dXL dXL dXL @@ -58906,7 +58940,7 @@ dXL dXL spn dXL -gmu +dXL dXL spn dXL @@ -59120,8 +59154,8 @@ dXL dXL dXL dXL -dXL -dXL +ojR +ojR dXL jxY mUr @@ -59326,14 +59360,14 @@ jXr dXL dXL dXL +ojR +ojR dXL dXL dXL dXL -dXL -dXL -kEG -dXL +ojR +ojR dXL qgt mUr @@ -59538,8 +59572,8 @@ jts dXL dXL oJZ -dXL -dXL +ojR +ojR dXL dXL dXL @@ -60808,8 +60842,8 @@ sWn bKc lpZ dXL -dXL -dXL +ojR +ojR dXL dXL eJo @@ -61020,8 +61054,8 @@ oUJ xIF tOL dXL -dXL -dXL +ojR +ojR dXL dXL eJo @@ -61869,8 +61903,8 @@ dXL dXL dXL dXL -dXL -dXL +ojR +ojR dXL eJo dNI @@ -62081,8 +62115,8 @@ dXL dXL dXL mqf -dXL -dXL +ojR +ojR dXL eJo iGv @@ -62925,12 +62959,12 @@ qFB xIF jXr dXL +ojR +ojR dXL dXL dXL -dXL -dXL -dXL +ojR dXL dXL dXL @@ -63137,13 +63171,13 @@ jEN xIF jXr spn -dXL -dXL +ojR +ojR dXL spn dXL -dXL -dXL +ojR +ojR spn dXL dXL @@ -63357,8 +63391,8 @@ ewM dXL ewM dXL -ewM -dXL +hEM +ojR kEG dXL dXL @@ -63569,8 +63603,8 @@ maY kAD maY loZ -kAD -kAD +rin +rin maY maY maY @@ -63757,8 +63791,8 @@ dbI wOa maY maY -maY -maY +lHH +lHH lNW maY maY @@ -63969,8 +64003,8 @@ kAD maY kAD luQ -maY -maY +lHH +lHH maY luQ kAD @@ -64207,8 +64241,8 @@ loZ loZ maY maY -maY -maY +lHH +lHH maY fjx bDH @@ -64413,14 +64447,14 @@ lZm dpB maY maY -kAD -loZ +rin +oPp loZ kAD kAD maY -maY -maY +lHH +lHH maY fjx vvJ @@ -64625,8 +64659,8 @@ bqD bOX loZ maY -maY -loZ +lHH +oPp kAD maY maY @@ -65266,8 +65300,8 @@ maY lNW maY maY -maY -maY +lHH +lHH maY maY fjx @@ -65478,8 +65512,8 @@ maY maY maY kAD -maY -maY +lHH +lHH kAD maY cTb @@ -66733,12 +66767,12 @@ maY jEO maY maY -maY -maY +lHH +lHH maY vJy -maY -gOC +lHH +ghP maY tsN maY @@ -66945,19 +66979,19 @@ maY maY maY maY +lHH +lHH maY maY +lHH +lHH maY maY maY maY maY -maY -maY -maY -maY -kAD -loZ +rin +oPp nHX hUa vQh @@ -67168,8 +67202,8 @@ maY maY maY kAD -kAD -loZ +rin +oPp nHX hUa uMQ @@ -67587,8 +67621,8 @@ eeZ eeZ maY maY -maY -maY +lHH +lHH maY kAD loZ @@ -67799,8 +67833,8 @@ rsg eeZ vJy maY -maY -kAD +lHH +rin kAD kAD loZ @@ -68437,8 +68471,8 @@ maY asY kAD loZ -loZ -kAD +oPp +rin kAD kAD kAD @@ -68649,8 +68683,8 @@ maY lMW kAD loZ -kAD -kAD +rin +rin maY maY maY @@ -68810,7 +68844,7 @@ mkY mkY bce jxu -aoX +jxu mkY bce mkY @@ -69495,8 +69529,8 @@ mHI uaa bLV hgg -loZ -kAD +oPp +rin kAD maY maY @@ -69707,8 +69741,8 @@ eeZ eeZ nBd kAD -kAD -maY +rin +lHH maY maY maY @@ -70558,8 +70592,8 @@ maY maY maY maY -maY -maY +lHH +lHH maY maY uRA @@ -70770,8 +70804,8 @@ maY maY luQ maY -maY -maY +lHH +lHH luQ sLx uRA @@ -71190,8 +71224,8 @@ eeZ eeZ eeZ vJy -maY -maY +lHH +lHH maY maY maY @@ -71402,8 +71436,8 @@ maY maY maY maY -maY -maY +lHH +lHH maY maY maY diff --git a/code/game/area/daedalusprison.dm b/code/game/area/daedalusprison.dm index f5726a6220d0b..521b889aae7ce 100644 --- a/code/game/area/daedalusprison.dm +++ b/code/game/area/daedalusprison.dm @@ -351,11 +351,13 @@ /area/daedalusprison/inside/security/medsec name = "Prison Medbay Security" + ceiling = CEILING_OBSTRUCTED /area/daedalusprison/inside/medical name = "Prison Infirmary" icon_state = "medbay" minimap_color = MINIMAP_AREA_MEDBAY + ceiling = CEILING_OBSTRUCTED /area/daedalusprison/inside/medical/chemistry name = "Prison Chemistry" diff --git a/code/game/turfs/closed.dm b/code/game/turfs/closed.dm index 46ac12cc0d072..9b85df2c8ec19 100644 --- a/code/game/turfs/closed.dm +++ b/code/game/turfs/closed.dm @@ -113,7 +113,11 @@ base_icon_state = "darkfrostwall" resistance_flags = PLASMACUTTER_IMMUNE|UNACIDABLE +/turf/closed/mineral/smooth/darkfrostwall/cuttable + resistance_flags = UNACIDABLE + /turf/closed/mineral/smooth/darkfrostwall/indestructible + name = "tough rock" resistance_flags = RESIST_ALL icon_state = "wall-invincible" diff --git a/config/maps.txt b/config/maps.txt index 29f49c1078849..cdd0afc7a5619 100644 --- a/config/maps.txt +++ b/config/maps.txt @@ -80,5 +80,5 @@ endmap map daedalusprison - minplayers 35 + minplayers 50 endmap From 24dade936ad18d79b540457dce6116f6a503dd2b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 11 Jan 2024 17:13:24 +0000 Subject: [PATCH 47/82] Automatic changelog for PR #14792 [ci skip] --- html/changelogs/AutoChangeLog-pr-14792.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14792.yml diff --git a/html/changelogs/AutoChangeLog-pr-14792.yml b/html/changelogs/AutoChangeLog-pr-14792.yml new file mode 100644 index 0000000000000..8813d5632fb2c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14792.yml @@ -0,0 +1,5 @@ +author: "Barnet2" +delete-after: True +changes: + - balance: "Daedalus Prison: Removed two miners, more preweed, medical cannot be landed in by tad, and outskirt cave walls are actually pcable" + - spellcheck: "Darkfrost hull walls are now named \"tough rock\"" \ No newline at end of file From 4a4014bb9c9dc7a82448663f7d9d05eddd4e5d62 Mon Sep 17 00:00:00 2001 From: Lumipharon Date: Fri, 12 Jan 2024 08:37:15 +1300 Subject: [PATCH 48/82] Harvester bicard fix (#14794) --- code/datums/components/harvester.dm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/code/datums/components/harvester.dm b/code/datums/components/harvester.dm index 8c617ec0d4e63..21a00167879c7 100644 --- a/code/datums/components/harvester.dm +++ b/code/datums/components/harvester.dm @@ -257,6 +257,18 @@ user.heal_overall_damage(5, 0, updating_health = TRUE) return + if(target.stat == DEAD) + to_chat(user, span_rose("[target] is already dead.")) + return + + if(!ishuman(target)) + return + var/mob/living/carbon/carbon_target = target + + if((carbon_target.species.species_flags & NO_CHEM_METABOLIZATION)) + to_chat(user, span_rose("[target] Cannot process chemicals.")) + return + to_chat(user, span_rose("You prepare to stab [target != user ? "[target]" : "yourself"]!")) new /obj/effect/temp_visual/telekinesis(get_turf(target)) From 7c6960cce9533ad84fa65552db25ea8fec8f9e69 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 11 Jan 2024 19:37:32 +0000 Subject: [PATCH 49/82] Automatic changelog for PR #14794 [ci skip] --- html/changelogs/AutoChangeLog-pr-14794.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14794.yml diff --git a/html/changelogs/AutoChangeLog-pr-14794.yml b/html/changelogs/AutoChangeLog-pr-14794.yml new file mode 100644 index 0000000000000..d5778ecd5656d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14794.yml @@ -0,0 +1,4 @@ +author: "Lumipharon" +delete-after: True +changes: + - bugfix: "Harvester bicard no longer heals dead bodies or robots" \ No newline at end of file From b9d312ca02734e6327158f0973f395aeb0bbc9b1 Mon Sep 17 00:00:00 2001 From: yyzsong <65325586+yyzsong@users.noreply.github.com> Date: Thu, 11 Jan 2024 12:31:58 -0800 Subject: [PATCH 50/82] New Gorger Primordial Ability: Oppose (#14624) Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com> --- code/__DEFINES/dcs/signals.dm | 2 +- code/__DEFINES/mobs.dm | 7 +-- code/datums/keybinding/xeno.dm | 10 +-- code/datums/status_effects/xeno_buffs.dm | 61 +----------------- .../castes/gorger/abilities_gorger.dm | 63 ++++++++++--------- .../castes/gorger/castedatum_gorger.dm | 2 +- 6 files changed, 45 insertions(+), 100 deletions(-) diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 4f3d6a132093c..49ca214f8b5db 100755 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -788,7 +788,7 @@ #define COMSIG_XENOABILITY_DEVOUR "xenoability_devour" #define COMSIG_XENOABILITY_DRAIN "xenoability_drain" #define COMSIG_XENOABILITY_TRANSFUSION "xenoability_transfusion" -#define COMSIG_XENOABILITY_REJUVENATE "xenoability_rejuvenate" +#define COMSIG_XENOABILITY_OPPOSE "xenoability_oppose" #define COMSIG_XENOABILITY_PSYCHIC_LINK "xenoability_psychic_link" #define COMSIG_XENOABILITY_CARNAGE "xenoability_carnage" #define COMSIG_XENOABILITY_FEAST "xenoability_feast" diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 273732a5d1925..8627ecd73f5de 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -590,11 +590,8 @@ GLOBAL_LIST_INIT(xenoupgradetiers, list(XENO_UPGRADE_BASETYPE, XENO_UPGRADE_INVA #define GORGER_DRAIN_HEAL 40 // overheal gained each time the target is drained #define GORGER_DRAIN_BLOOD_DRAIN 20 // amount of plasma drained when feeding on something #define GORGER_TRANSFUSION_HEAL 0.3 // in % -#define GORGER_REJUVENATE_DURATION -1 -#define GORGER_REJUVENATE_COST 20 -#define GORGER_REJUVENATE_SLOWDOWN 6 -#define GORGER_REJUVENATE_HEAL 0.05 //in % -#define GORGER_REJUVENATE_THRESHOLD 0.10 //in % +#define GORGER_OPPOSE_COST 100 +#define GORGER_OPPOSE_HEAL 0.2 // in % #define GORGER_PSYCHIC_LINK_CHANNEL 10 SECONDS #define GORGER_PSYCHIC_LINK_RANGE 15 #define GORGER_PSYCHIC_LINK_REDIRECT 0.5 //in % diff --git a/code/datums/keybinding/xeno.dm b/code/datums/keybinding/xeno.dm index e490514e08014..38a46566429a7 100644 --- a/code/datums/keybinding/xeno.dm +++ b/code/datums/keybinding/xeno.dm @@ -503,11 +503,11 @@ keybind_signal = COMSIG_XENOABILITY_TRANSFUSION hotkey_keys = list("H") -/datum/keybinding/xeno/rejuvenate - name = "rejuvenate" - full_name = "Gorger: Rejuvenate" - description = "Drains blood continuosly, slows you down and reduces damage taken, while restoring some health over time. Cancel by activating again." - keybind_signal = COMSIG_XENOABILITY_REJUVENATE +/datum/keybinding/xeno/oppose + name = "oppose" + full_name = "Gorger: Oppose" + description = "Violently suffuse the nearby ground with stored blood, staggering nearby marines and healing nearby xenomorphs." + keybind_signal = COMSIG_XENOABILITY_OPPOSE hotkey_keys = list("R") /datum/keybinding/xeno/psychic_link diff --git a/code/datums/status_effects/xeno_buffs.dm b/code/datums/status_effects/xeno_buffs.dm index 0ff990343433c..114e21bd57877 100644 --- a/code/datums/status_effects/xeno_buffs.dm +++ b/code/datums/status_effects/xeno_buffs.dm @@ -331,64 +331,8 @@ enhancement_action.end_ability() // *************************************** -// *********** Rejuvenate +// *********** Psychic Link // *************************************** -/atom/movable/screen/alert/status_effect/xeno_rejuvenate - name = "Rejuvenation" - desc = "Your health is being restored." - icon_state = "xeno_rejuvenate" - -/datum/status_effect/xeno_rejuvenate - id = "xeno_rejuvenate" - tick_interval = 2 SECONDS - alert_type = /atom/movable/screen/alert/status_effect/xeno_rejuvenate - ///Amount of damage taken before reduction kicks in - var/tick_damage_limit - ///Amount of damage taken this tick - var/tick_damage - -/datum/status_effect/xeno_rejuvenate/on_creation(mob/living/new_owner, set_duration, tick_damage_limit) - owner = new_owner - duration = set_duration - src.tick_damage_limit = tick_damage_limit - RegisterSignals(owner, list(COMSIG_XENOMORPH_BRUTE_DAMAGE, COMSIG_XENOMORPH_BURN_DAMAGE), PROC_REF(handle_damage_taken)) - owner.add_movespeed_modifier(MOVESPEED_ID_GORGER_REJUVENATE, TRUE, 0, NONE, TRUE, GORGER_REJUVENATE_SLOWDOWN) - owner.add_filter("[id]m", 0, outline_filter(2, "#455d5762")) - return ..() - -/datum/status_effect/xeno_rejuvenate/on_remove() - . = ..() - UnregisterSignal(owner, list(COMSIG_XENOMORPH_BRUTE_DAMAGE, COMSIG_XENOMORPH_BURN_DAMAGE)) - owner.remove_movespeed_modifier(MOVESPEED_ID_GORGER_REJUVENATE) - owner.remove_filter("[id]m") - -/datum/status_effect/xeno_rejuvenate/tick() - var/mob/living/carbon/xenomorph/owner_xeno = owner - if(owner_xeno.plasma_stored < GORGER_REJUVENATE_COST) - to_chat(owner_xeno, span_notice("Not enough substance to sustain ourselves...")) - owner_xeno.remove_status_effect(STATUS_EFFECT_XENO_REJUVENATE) - return - - owner_xeno.plasma_stored -= GORGER_REJUVENATE_COST - new /obj/effect/temp_visual/telekinesis(get_turf(owner_xeno)) - to_chat(owner_xeno, span_notice("We feel our wounds close up.")) - - var/amount = owner_xeno.maxHealth * GORGER_REJUVENATE_HEAL - HEAL_XENO_DAMAGE(owner_xeno, amount, FALSE) - tick_damage = 0 - -///Handles damage received when the status effect is active -/datum/status_effect/xeno_rejuvenate/proc/handle_damage_taken(datum/source, amount, list/amount_mod) - SIGNAL_HANDLER - if(amount <= 0) - return - - tick_damage += amount - if(tick_damage < tick_damage_limit) - return - - amount_mod += min(amount * 0.75, 40) - #define PSYCHIC_LINK_COLOR "#2a888360" #define CALC_DAMAGE_REDUCTION(amount, amount_mod) \ if(amount <= 0) { \ @@ -398,9 +342,6 @@ amount = min(amount * redirect_mod, remaining_health); \ amount_mod += amount -// *************************************** -// *********** Psychic Link -// *************************************** /datum/status_effect/xeno_psychic_link id = "xeno_psychic_link" tick_interval = 2 SECONDS diff --git a/code/modules/mob/living/carbon/xenomorph/castes/gorger/abilities_gorger.dm b/code/modules/mob/living/carbon/xenomorph/castes/gorger/abilities_gorger.dm index de5f298b6fcf1..d25a8e791448b 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/gorger/abilities_gorger.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/gorger/abilities_gorger.dm @@ -241,46 +241,53 @@ return can_use_ability(target, TRUE) // *************************************** -// *********** Rejuvenate +// *********** oppose // *************************************** -#define REJUVENATE_MISCLICK_CD "rejuvenate_misclick" -/datum/action/ability/activable/xeno/rejuvenate - name = "Rejuvenate" + +/datum/action/ability/activable/xeno/oppose + name = "Oppose" action_icon_state = "rejuvenation" - desc = "Drains blood continuosly, slows you down and reduces damage taken, while restoring some health over time. Cancel by activating again." - cooldown_duration = 4 SECONDS - ability_cost = GORGER_REJUVENATE_COST - target_flags = ABILITY_MOB_TARGET + desc = "Violently suffuse the nearby ground with stored blood, staggering nearby marines and healing nearby xenomorphs." + cooldown_duration = 30 SECONDS + ability_cost = GORGER_OPPOSE_COST keybinding_signals = list( - KEYBINDING_NORMAL = COMSIG_XENOABILITY_REJUVENATE, + KEYBINDING_NORMAL = COMSIG_XENOABILITY_OPPOSE, ) keybind_flags = ABILITY_KEYBIND_USE_ABILITY - use_state_flags = ABILITY_USE_STAGGERED -/datum/action/ability/activable/xeno/rejuvenate/can_use_ability(atom/A, silent, override_flags) - . = ..() - if(!.) - return - if(TIMER_COOLDOWN_CHECK(owner, REJUVENATE_MISCLICK_CD)) - return FALSE - -/datum/action/ability/activable/xeno/rejuvenate/use_ability(atom/A) +/datum/action/ability/activable/xeno/oppose/use_ability(atom/A) . = ..() var/mob/living/carbon/xenomorph/owner_xeno = owner - if(owner_xeno.has_status_effect(STATUS_EFFECT_XENO_REJUVENATE)) - owner_xeno.remove_status_effect(STATUS_EFFECT_XENO_REJUVENATE) - add_cooldown() - return - owner_xeno.apply_status_effect(STATUS_EFFECT_XENO_REJUVENATE, GORGER_REJUVENATE_DURATION, owner_xeno.maxHealth * GORGER_REJUVENATE_THRESHOLD) - to_chat(owner_xeno, span_notice("We tap into our reserves for nourishment, our carapace thickening.")) + add_cooldown() succeed_activate() - TIMER_COOLDOWN_START(owner_xeno, REJUVENATE_MISCLICK_CD, 1 SECONDS) -/datum/action/ability/activable/xeno/rejuvenate/ai_should_use(atom/target) + playsound(owner_xeno.loc, 'sound/effects/bang.ogg', 25, 0) + owner_xeno.visible_message(span_xenodanger("[owner_xeno] smashes her fists into the ground into the ground!"), \ + span_xenodanger("We smash our fists into the ground!")) + owner_xeno.create_stomp() //Adds the visual effect. Wom wom wom + for(var/mob/living/M in range(3)) + if(M.stat == DEAD) + continue + var/distance = get_dist(M, owner_xeno) + if(owner_xeno.issamexenohive(M)) //Xenos can be healed up to three tiles away from you + var/mob/living/carbon/xenomorph/target_xeno = M + var/heal_amount = M.maxHealth * GORGER_OPPOSE_HEAL + HEAL_XENO_DAMAGE(target_xeno, heal_amount, FALSE) + adjustOverheal(target_xeno, heal_amount) + else if(distance == 0) //if we're right on top of them, they take actual damage + M.take_overall_damage(12, BRUTE, MELEE, updating_health = TRUE, max_limbs = 3) + to_chat(M, span_highdanger("[owner_xeno] slams her fists into you, crushing you to the ground!")) + shake_camera(M, 3, 3) + else if(distance <= 1) //marines will only be staggerslowed if they're one tile away from you + shake_camera(M, 2, 2) + to_chat(M, span_highdanger("Blood swells up from the ground around you!")) + M.adjust_stagger(2 SECONDS) + M.adjust_slowdown(3) + + +/datum/action/ability/activable/xeno/oppose/ai_should_use(atom/target) return FALSE -#undef REJUVENATE_MISCLICK_CD - // *************************************** // *********** Psychic Link // *************************************** diff --git a/code/modules/mob/living/carbon/xenomorph/castes/gorger/castedatum_gorger.dm b/code/modules/mob/living/carbon/xenomorph/castes/gorger/castedatum_gorger.dm index a60aac0fd8f16..50413e96ec53d 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/gorger/castedatum_gorger.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/gorger/castedatum_gorger.dm @@ -75,7 +75,7 @@ /datum/action/ability/activable/xeno/psychic_link, /datum/action/ability/activable/xeno/drain, /datum/action/ability/activable/xeno/transfusion, - /datum/action/ability/activable/xeno/rejuvenate, + /datum/action/ability/activable/xeno/oppose, /datum/action/ability/activable/xeno/carnage, /datum/action/ability/activable/xeno/feast, /datum/action/ability/activable/xeno/devour, From 6032a61f4f833bb57e85e4bfa90dbb6e6df5d069 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 11 Jan 2024 20:32:14 +0000 Subject: [PATCH 51/82] Automatic changelog for PR #14624 [ci skip] --- html/changelogs/AutoChangeLog-pr-14624.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14624.yml diff --git a/html/changelogs/AutoChangeLog-pr-14624.yml b/html/changelogs/AutoChangeLog-pr-14624.yml new file mode 100644 index 0000000000000..139cec675dc51 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14624.yml @@ -0,0 +1,5 @@ +author: "yyzsong" +delete-after: True +changes: + - rscadd: "New Gorger primordial: Oppose. Staggers and slows nearby marines while healing nearby xenomorphs, at a cost. Replaces current primordial ability, Rejuvenate" + - rscdel: "Rejuvenate" \ No newline at end of file From fe6a67832e08d1e7f2a34c78a0639113557ce374 Mon Sep 17 00:00:00 2001 From: ivanmixo Date: Thu, 11 Jan 2024 21:33:39 +0100 Subject: [PATCH 52/82] Defiler egg injecting qol + bugfix (#14795) --- .../carbon/xenomorph/castes/defiler/abilities_defiler.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/defiler/abilities_defiler.dm b/code/modules/mob/living/carbon/xenomorph/castes/defiler/abilities_defiler.dm index a63982699ddb4..57c7620f178c6 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/defiler/abilities_defiler.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/defiler/abilities_defiler.dm @@ -324,6 +324,11 @@ span_xenodanger("Our stinger retracts, leaving the egg and little one alive.")) return fail_activate() + if(alien_egg.maturity_stage != alien_egg.stage_ready_to_burst) + alien_egg.balloon_alert(X, "Egg not mature") + return fail_activate() + + alien_egg.balloon_alert_to_viewers("Injected") succeed_activate() add_cooldown() From 9e21e8f88309797c7625566c89b28c744d0565cd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 11 Jan 2024 20:33:56 +0000 Subject: [PATCH 53/82] Automatic changelog for PR #14795 [ci skip] --- html/changelogs/AutoChangeLog-pr-14795.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14795.yml diff --git a/html/changelogs/AutoChangeLog-pr-14795.yml b/html/changelogs/AutoChangeLog-pr-14795.yml new file mode 100644 index 0000000000000..7d6eefd9e8bb4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14795.yml @@ -0,0 +1,5 @@ +author: "ivanmixo" +delete-after: True +changes: + - qol: "Defiler egg injection has more feedback now" + - bugfix: "Opening the defiler egg mid progress bar makes the injection fail" \ No newline at end of file From 55410b7a6936ac869b2e778af7e9b5af14677206 Mon Sep 17 00:00:00 2001 From: Lumipharon Date: Fri, 12 Jan 2024 09:36:37 +1300 Subject: [PATCH 54/82] Action visual fix (#14796) --- code/datums/actions/ability_actions.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/datums/actions/ability_actions.dm b/code/datums/actions/ability_actions.dm index 12040cc644ca0..1b0a8b37482d8 100644 --- a/code/datums/actions/ability_actions.dm +++ b/code/datums/actions/ability_actions.dm @@ -140,6 +140,7 @@ return cooldown_timer = addtimer(CALLBACK(src, PROC_REF(on_cooldown_finish)), cooldown_length, TIMER_STOPPABLE) button.add_overlay(visual_references[VREF_IMAGE_XENO_CLOCK]) + update_button_icon() ///Time remaining on cooldown /datum/action/ability/proc/cooldown_remaining() From f1d40dc4a6c9c3f0131511ac7df6f7a98ebda0ce Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 11 Jan 2024 20:36:54 +0000 Subject: [PATCH 55/82] Automatic changelog for PR #14796 [ci skip] --- html/changelogs/AutoChangeLog-pr-14796.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14796.yml diff --git a/html/changelogs/AutoChangeLog-pr-14796.yml b/html/changelogs/AutoChangeLog-pr-14796.yml new file mode 100644 index 0000000000000..37bec606409a2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14796.yml @@ -0,0 +1,4 @@ +author: "Lumipharon" +delete-after: True +changes: + - bugfix: "fixed abilities not updating their icon correctly on use in some cases" \ No newline at end of file From 4095f1a40c760e2f2c3251a3a90706a5e4684e77 Mon Sep 17 00:00:00 2001 From: TiviPlus <57223640+TiviPlus@users.noreply.github.com> Date: Thu, 11 Jan 2024 22:39:27 +0100 Subject: [PATCH 56/82] Splits psy points into tactical and strategic points (#14623) Co-authored-by: TiviPlus <572233640+TiviPlus@users.noreply.com> --- code/__DEFINES/xeno.dm | 4 ++- code/controllers/subsystem/points.dm | 17 +++++++---- code/datums/gamemodes/nuclear_war.dm | 3 +- code/game/objects/items/cocoon.dm | 3 +- code/modules/mob/dead/observer/observer.dm | 3 +- .../mob/living/carbon/xenomorph/abilities.dm | 3 +- .../mob/living/carbon/xenomorph/hive_datum.dm | 7 +++-- .../living/carbon/xenomorph/hive_upgrades.dm | 29 ++++++++++++------- code/modules/power/groundmap_geothermal.dm | 4 ++- .../packages/tgui/interfaces/BlessingMenu.tsx | 29 +++++++++++++------ tgui/packages/tgui/interfaces/HiveStatus.tsx | 27 +++++++++++++---- 11 files changed, 90 insertions(+), 39 deletions(-) diff --git a/code/__DEFINES/xeno.dm b/code/__DEFINES/xeno.dm index 0678c2ef7fb8a..2707d57a3d309 100644 --- a/code/__DEFINES/xeno.dm +++ b/code/__DEFINES/xeno.dm @@ -148,7 +148,9 @@ GLOBAL_LIST_INIT(puppeteer_phero_images_list, list( //xeno upgrade flags ///Message the hive when we buy this upgrade #define UPGRADE_FLAG_MESSAGE_HIVE (1<<0) -#define UPGRADE_FLAG_ONETIME (1<<0) +#define UPGRADE_FLAG_ONETIME (1<<1) +#define UPGRADE_FLAG_USES_TACTICAL (1<<2) + GLOBAL_LIST_INIT(xeno_ai_spawnable, list( /mob/living/carbon/xenomorph/beetle/ai, diff --git a/code/controllers/subsystem/points.dm b/code/controllers/subsystem/points.dm index 9f9168436deb2..f6fb1ac805aa7 100644 --- a/code/controllers/subsystem/points.dm +++ b/code/controllers/subsystem/points.dm @@ -12,8 +12,10 @@ SUBSYSTEM_DEF(points) var/dropship_points = 0 ///Assoc list of supply points var/supply_points = list() - ///Assoc list of xeno points: xeno_points_by_hive["hivenum"] - var/list/xeno_points_by_hive = list() + ///Assoc list of xeno strategic points: xeno_strategic_points_by_hive["hivenum"] + var/list/xeno_strategic_points_by_hive = list() + ///Assoc list of xeno tactical points: xeno_tactical_points_by_hive["hivenum"] + var/list/xeno_tactical_points_by_hive = list() var/ordernum = 1 //order number given to next order @@ -78,12 +80,17 @@ SUBSYSTEM_DEF(points) for(var/key in supply_points) supply_points[key] += SUPPLY_POINT_RATE / (1 MINUTES / wait) -///Add amount of psy points to the selected hive only if the gamemode support psypoints -/datum/controller/subsystem/points/proc/add_psy_points(hivenumber, amount) +///Add amount of strategic psy points to the selected hive only if the gamemode support psypoints +/datum/controller/subsystem/points/proc/add_strategic_psy_points(hivenumber, amount) if(!CHECK_BITFIELD(SSticker.mode.flags_round_type, MODE_PSY_POINTS)) return - xeno_points_by_hive[hivenumber] += amount + xeno_strategic_points_by_hive[hivenumber] += amount +///Add amount of tactical psy points to the selected hive only if the gamemode support psypoints +/datum/controller/subsystem/points/proc/add_tactical_psy_points(hivenumber, amount) + if(!CHECK_BITFIELD(SSticker.mode.flags_round_type, MODE_PSY_POINTS)) + return + xeno_tactical_points_by_hive[hivenumber] += amount /datum/controller/subsystem/points/proc/approve_request(datum/supply_order/O, mob/living/user) var/cost = 0 diff --git a/code/datums/gamemodes/nuclear_war.dm b/code/datums/gamemodes/nuclear_war.dm index 3d958f2d56077..42dc3359c4340 100644 --- a/code/datums/gamemodes/nuclear_war.dm +++ b/code/datums/gamemodes/nuclear_war.dm @@ -37,7 +37,8 @@ /datum/game_mode/infestation/nuclear_war/post_setup() . = ..() - SSpoints.add_psy_points(XENO_HIVE_NORMAL, 1400) + SSpoints.add_strategic_psy_points(XENO_HIVE_NORMAL, 1400) + SSpoints.add_tactical_psy_points(XENO_HIVE_NORMAL, 300) for(var/obj/effect/landmark/corpsespawner/corpse AS in GLOB.corpse_landmarks_list) corpse.create_mob() diff --git a/code/game/objects/items/cocoon.dm b/code/game/objects/items/cocoon.dm index 46dfd2b7b3b4f..5b3c17fd48164 100644 --- a/code/game/objects/items/cocoon.dm +++ b/code/game/objects/items/cocoon.dm @@ -42,7 +42,8 @@ /obj/structure/cocoon/process() var/psych_points_output = COCOON_PSY_POINTS_REWARD_MIN + ((HIGH_PLAYER_POP - SSmonitor.maximum_connected_players_count) / HIGH_PLAYER_POP * (COCOON_PSY_POINTS_REWARD_MAX - COCOON_PSY_POINTS_REWARD_MIN)) psych_points_output = clamp(psych_points_output, COCOON_PSY_POINTS_REWARD_MIN, COCOON_PSY_POINTS_REWARD_MAX) - SSpoints.add_psy_points(hivenumber, psych_points_output) + SSpoints.add_strategic_psy_points(hivenumber, psych_points_output) + SSpoints.add_tactical_psy_points(hivenumber, psych_points_output*0.25) //Gives marine cloneloss for a total of 30. victim.adjustCloneLoss(0.5) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 06bae82bfb58b..c8a93f4f57a44 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -899,7 +899,8 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) ADD_TRAIT(new_xeno, TRAIT_VALHALLA_XENO, VALHALLA_TRAIT) var/datum/job/xallhala_job = SSjob.GetJobType(/datum/job/fallen/xenomorph) new_xeno.apply_assigned_role_to_spawn(xallhala_job) - SSpoints.xeno_points_by_hive[XENO_HIVE_FALLEN] = 10000 + SSpoints.xeno_strategic_points_by_hive[XENO_HIVE_FALLEN] = 10000 + SSpoints.xeno_tactical_points_by_hive[XENO_HIVE_FALLEN] = 10000 mind.transfer_to(new_xeno, TRUE) xallhala_job.after_spawn(new_xeno) return diff --git a/code/modules/mob/living/carbon/xenomorph/abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities.dm index c5e6783e9495f..49648251dddef 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities.dm @@ -1200,7 +1200,8 @@ if(HAS_TRAIT(victim, TRAIT_HIVE_TARGET)) SEND_GLOBAL_SIGNAL(COMSIG_GLOB_HIVE_TARGET_DRAINED, X) psy_points_reward = psy_points_reward * 3 - SSpoints.add_psy_points(X.hivenumber, psy_points_reward) + SSpoints.add_strategic_psy_points(X.hivenumber, psy_points_reward) + SSpoints.add_tactical_psy_points(X.hivenumber, psy_points_reward*0.25) var/datum/job/xeno_job = SSjob.GetJobType(/datum/job/xenomorph) xeno_job.add_job_points(larva_point_reward) X.hive.update_tier_limits() diff --git a/code/modules/mob/living/carbon/xenomorph/hive_datum.dm b/code/modules/mob/living/carbon/xenomorph/hive_datum.dm index 774f303f8582b..4ff34a4e15165 100644 --- a/code/modules/mob/living/carbon/xenomorph/hive_datum.dm +++ b/code/modules/mob/living/carbon/xenomorph/hive_datum.dm @@ -80,8 +80,8 @@ .["hive_larva_rate"] = SSsilo.current_larva_spawn_rate .["hive_larva_burrowed"] = xeno_job.total_positions - xeno_job.current_positions - var/psy_points = SSpoints.xeno_points_by_hive[hivenumber] - .["hive_psy_points"] = !isnull(psy_points) ? psy_points : 0 + .["hive_strategic_psy_points"] = !isnull(SSpoints.xeno_strategic_points_by_hive[hivenumber]) ? SSpoints.xeno_strategic_points_by_hive[hivenumber] : 0 + .["hive_tactical_psy_points"] = !isnull(SSpoints.xeno_tactical_points_by_hive[hivenumber]) ? SSpoints.xeno_tactical_points_by_hive[hivenumber] : 0 var/hivemind_countdown = SSticker.mode?.get_hivemind_collapse_countdown() .["hive_orphan_collapse"] = !isnull(hivemind_countdown) ? hivemind_countdown : 0 @@ -1044,7 +1044,8 @@ to_chat will check for valid clients itself already so no need to double check f qdel(structure) if(SSticker.mode?.flags_round_type & MODE_PSY_POINTS_ADVANCED) - SSpoints.xeno_points_by_hive[hivenumber] = SILO_PRICE + XENO_TURRET_PRICE //Give a free silo when going shipside and a turret + SSpoints.xeno_strategic_points_by_hive[hivenumber] = SILO_PRICE //Give a free silo when going shipside and a turret + SSpoints.xeno_tactical_points_by_hive[hivenumber] = (XENO_TURRET_PRICE*4) /datum/hive_status/normal/proc/on_hijack_depart(datum/source, new_mode) diff --git a/code/modules/mob/living/carbon/xenomorph/hive_upgrades.dm b/code/modules/mob/living/carbon/xenomorph/hive_upgrades.dm index ca192f940a101..8d13674b52d01 100644 --- a/code/modules/mob/living/carbon/xenomorph/hive_upgrades.dm +++ b/code/modules/mob/living/carbon/xenomorph/hive_upgrades.dm @@ -54,8 +54,9 @@ GLOBAL_LIST_INIT(tier_to_primo_upgrade, list( .["upgrades"] = list() for(var/datum/hive_upgrade/upgrade AS in buyable_upgrades) .["upgrades"] += list(list("name" = upgrade.name, "desc" = upgrade.desc, "category" = upgrade.category,\ - "cost" = upgrade.psypoint_cost, "times_bought" = upgrade.times_bought, "iconstate" = upgrade.icon)) - .["psypoints"] = SSpoints.xeno_points_by_hive[X.hive.hivenumber] + "cost" = upgrade.psypoint_cost, "times_bought" = upgrade.times_bought, "iconstate" = upgrade.icon, "istactical" = (upgrade.flags_upgrade & UPGRADE_FLAG_USES_TACTICAL))) + .["strategicpoints"] = SSpoints.xeno_strategic_points_by_hive[X.hive.hivenumber] + .["tacticalpoints"] = SSpoints.xeno_tactical_points_by_hive[X.hive.hivenumber] /datum/hive_purchases/ui_static_data(mob/user) . = ..() @@ -102,7 +103,10 @@ GLOBAL_LIST_INIT(tier_to_primo_upgrade, list( */ /datum/hive_upgrade/proc/on_buy(mob/living/carbon/xenomorph/buyer) SHOULD_CALL_PARENT(TRUE) - SSpoints.xeno_points_by_hive[buyer.hivenumber] -= psypoint_cost + if(flags_upgrade & UPGRADE_FLAG_USES_TACTICAL) + SSpoints.xeno_tactical_points_by_hive[buyer.hivenumber] -= psypoint_cost + else + SSpoints.xeno_strategic_points_by_hive[buyer.hivenumber] -= psypoint_cost times_bought++ return TRUE @@ -116,10 +120,13 @@ GLOBAL_LIST_INIT(tier_to_primo_upgrade, list( /datum/hive_upgrade/proc/can_buy(mob/living/carbon/xenomorph/buyer, silent = TRUE) SHOULD_CALL_PARENT(TRUE) if((flags_upgrade & UPGRADE_FLAG_ONETIME) && times_bought) + if(!silent) + to_chat(buyer, span_xenowarning("You have already bought this blessing!")) return FALSE - if(SSpoints.xeno_points_by_hive[buyer.hivenumber] < psypoint_cost) + var/points_requirement = (flags_upgrade & UPGRADE_FLAG_USES_TACTICAL) ? SSpoints.xeno_tactical_points_by_hive[buyer.hivenumber] : SSpoints.xeno_strategic_points_by_hive[buyer.hivenumber] + if(points_requirement < psypoint_cost) if(!silent) - to_chat(buyer, span_xenowarning("You need [psypoint_cost-SSpoints.xeno_points_by_hive[buyer.hivenumber]] more points to request this blessing!")) + to_chat(buyer, span_xenowarning("You need [points_requirement] more [(flags_upgrade & UPGRADE_FLAG_USES_TACTICAL) ? "tactical" : "strategic"] points to request this blessing!")) return FALSE return TRUE @@ -175,7 +182,7 @@ GLOBAL_LIST_INIT(tier_to_primo_upgrade, list( desc = "Constructs a silo that generates xeno larvas over time. Requires open space and time to place." psypoint_cost = SILO_PRICE icon = "larvasilo" - flags_upgrade = ABILITY_NUCLEARWAR + flags_gamemode = ABILITY_NUCLEARWAR building_type = /obj/structure/xeno/silo /datum/hive_upgrade/building/silo/can_buy(mob/living/carbon/xenomorph/buyer, silent = TRUE) @@ -203,7 +210,7 @@ GLOBAL_LIST_INIT(tier_to_primo_upgrade, list( desc = "Constructs a tower that increases the rate of evolution point and maturity point generation by 1.2 times per tower." psypoint_cost = 300 icon = "evotower" - flags_upgrade = ABILITY_NUCLEARWAR + flags_gamemode = ABILITY_NUCLEARWAR building_type = /obj/structure/xeno/evotower /datum/hive_upgrade/building/psychictower @@ -211,7 +218,7 @@ GLOBAL_LIST_INIT(tier_to_primo_upgrade, list( desc = "Constructs a tower that increases the slots of higher tier Xenomorphs." psypoint_cost = 300 icon = "maturitytower" - flags_upgrade = ABILITY_NUCLEARWAR + flags_gamemode = ABILITY_NUCLEARWAR building_type = /obj/structure/xeno/psychictower /datum/hive_upgrade/building/pherotower @@ -219,7 +226,8 @@ GLOBAL_LIST_INIT(tier_to_primo_upgrade, list( desc = "Constructs a tower that emanates a selectable type of pheromone." psypoint_cost = 150 icon = "pherotower" - flags_upgrade = ABILITY_NUCLEARWAR + flags_gamemode = ABILITY_NUCLEARWAR + flags_upgrade = UPGRADE_FLAG_USES_TACTICAL building_type = /obj/structure/xeno/pherotower building_loc = 0 //This results in spawning the structure under the user. building_time = 5 SECONDS @@ -229,7 +237,7 @@ GLOBAL_LIST_INIT(tier_to_primo_upgrade, list( desc = "Constructs a spawner that generates ai xenos over time" psypoint_cost = 600 icon = "spawner" - flags_upgrade = ABILITY_NUCLEARWAR + flags_gamemode = ABILITY_NUCLEARWAR building_type = /obj/structure/xeno/spawner /datum/hive_upgrade/defence @@ -241,6 +249,7 @@ GLOBAL_LIST_INIT(tier_to_primo_upgrade, list( icon = "acidturret" psypoint_cost = XENO_TURRET_PRICE flags_gamemode = ABILITY_NUCLEARWAR + flags_upgrade = UPGRADE_FLAG_USES_TACTICAL ///How long to build one turret var/build_time = 10 SECONDS ///What type of turret is built diff --git a/code/modules/power/groundmap_geothermal.dm b/code/modules/power/groundmap_geothermal.dm index cc35c03f1f1e0..36bae0c4a6209 100644 --- a/code/modules/power/groundmap_geothermal.dm +++ b/code/modules/power/groundmap_geothermal.dm @@ -105,7 +105,9 @@ GLOBAL_VAR_INIT(generators_on_ground, 0) return PROCESS_KILL if((length(GLOB.humans_by_zlevel["2"]) > 0.2 * length(GLOB.alive_human_list_faction[FACTION_TERRAGOV]))) //You get points proportional to the % of generators corrupted (for example, if 66% of generators are corrupted the hive gets 0.66 points per second) - SSpoints.add_psy_points(corrupted, GENERATOR_PSYCH_POINT_OUTPUT / GLOB.generators_on_ground) + var/points_generated = GENERATOR_PSYCH_POINT_OUTPUT / GLOB.generators_on_ground + SSpoints.add_strategic_psy_points(corrupted, points_generated) + SSpoints.add_tactical_psy_points(corrupted, points_generated*0.25) return if(!is_on || buildstate || !anchored || !powernet) //Default logic checking return PROCESS_KILL diff --git a/tgui/packages/tgui/interfaces/BlessingMenu.tsx b/tgui/packages/tgui/interfaces/BlessingMenu.tsx index d7ce40642e9dc..2acce1a82e6df 100644 --- a/tgui/packages/tgui/interfaces/BlessingMenu.tsx +++ b/tgui/packages/tgui/interfaces/BlessingMenu.tsx @@ -17,7 +17,8 @@ import { Window } from '../layouts'; type BlessingData = { user: string; - psypoints: number; + strategicpoints: number; + tacticalpoints: number; upgrades: UpgradeData[]; categories: string[]; }; @@ -29,6 +30,7 @@ type UpgradeData = { category: string; cost: number; times_bought: number; + istactical: boolean; }; const categoryIcons = { @@ -40,7 +42,7 @@ const categoryIcons = { export const BlessingMenu = (props) => { const { data } = useBackend(); - const { psypoints, categories } = data; + const { strategicpoints, tacticalpoints, categories } = data; const [selectedCategory, setSelectedCategory] = useState( categories.length ? categories[0] : null, ); @@ -53,7 +55,14 @@ export const BlessingMenu = (props) => { height={600} > -
+
{categories.length > 0 && (
@@ -90,7 +99,7 @@ export const BlessingMenu = (props) => { const Upgrades = (props: { selectedCategory: string | null }) => { const { data } = useBackend(); - const { psypoints, upgrades } = data; + const { strategicpoints, tacticalpoints, upgrades } = data; const { selectedCategory } = props; return ( @@ -103,7 +112,9 @@ const Upgrades = (props: { selectedCategory: string | null }) => { .filter((record) => record.category === selectedCategory) .map((upgrade) => ( { timesbought={upgrade_times_bought} iconstate={upgradeicon} cost={upgrade_cost} + psy_points={psy_points} /> ); @@ -171,13 +183,12 @@ type UpgradeViewEntryProps = { timesbought: number; iconstate: string; cost: number; + psy_points: number; }; const UpgradeView = (props: UpgradeViewEntryProps) => { const { data } = useBackend(); - const { psypoints } = data; - - const { name, desc, timesbought, iconstate, cost } = props; + const { name, desc, timesbought, iconstate, cost, psy_points } = props; return ( @@ -195,7 +206,7 @@ const UpgradeView = (props: UpgradeViewEntryProps) => { transform: 'scale(2) translate(0px, 10%)', }} /> - cost ? 'good' : 'bad'}> + cost ? 'good' : 'bad'}> {'Cost: ' + cost} = 1 ? 'good' : ''}> diff --git a/tgui/packages/tgui/interfaces/HiveStatus.tsx b/tgui/packages/tgui/interfaces/HiveStatus.tsx index 3c7146a7cc885..a25a360300a82 100644 --- a/tgui/packages/tgui/interfaces/HiveStatus.tsx +++ b/tgui/packages/tgui/interfaces/HiveStatus.tsx @@ -23,7 +23,8 @@ type InputPack = { hive_larva_threshold: number; hive_larva_rate: number; hive_larva_burrowed: number; - hive_psy_points: number; + hive_strategic_psy_points: number; + hive_tactical_psy_points: number; hive_orphan_collapse: number; hive_orphan_max: number; hive_minion_count: number; @@ -209,7 +210,8 @@ const GeneralInfo = (_props) => { const { data } = useBackend(); const { hive_larva_burrowed, - hive_psy_points, + hive_strategic_psy_points, + hive_tactical_psy_points, hive_orphan_collapse, hive_death_timers, hive_orphan_max, @@ -220,18 +222,31 @@ const GeneralInfo = (_props) => { - Psy Points: + Psy Strategic Points: - {' ' + hive_psy_points + ' '} + {' ' + hive_strategic_psy_points + ' '} + + | Psy Tactical Points: + + {' ' + hive_tactical_psy_points + ' '} | Burrowed Larva: 0 ? 'good' : 'bad'}> From eeeb022394257e3e5970b81549b1bb41a4cbbe7e Mon Sep 17 00:00:00 2001 From: Helg2 <93882977+Helg2@users.noreply.github.com> Date: Thu, 11 Jan 2024 23:45:05 +0200 Subject: [PATCH 57/82] Fixes balloon alert for king's primo laser use attempts before shutters are open. (#14799) --- .../mob/living/carbon/xenomorph/castes/king/abilities_king.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/king/abilities_king.dm b/code/modules/mob/living/carbon/xenomorph/castes/king/abilities_king.dm index c159f8108b6c7..c4d0edce5035d 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/king/abilities_king.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/king/abilities_king.dm @@ -331,7 +331,7 @@ return if(SSmonitor.gamestate == SHUTTERS_CLOSED && is_ground_level(owner.z)) if(!silent) - owner.balloon_alert("too early") + owner.balloon_alert(owner, "too early") return FALSE /datum/action/ability/xeno_action/zero_form_beam/action_activate() From 8329d386bda6fa3bf234a0c7d5abac0480158569 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 11 Jan 2024 21:51:54 +0000 Subject: [PATCH 58/82] Automatic changelog for PR #14623 [ci skip] --- html/changelogs/AutoChangeLog-pr-14623.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14623.yml diff --git a/html/changelogs/AutoChangeLog-pr-14623.yml b/html/changelogs/AutoChangeLog-pr-14623.yml new file mode 100644 index 0000000000000..2ecd173ab6bb8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14623.yml @@ -0,0 +1,4 @@ +author: "TiviPlus" +delete-after: True +changes: + - rscadd: "Psy points have been split into tactical and strategic psy points" \ No newline at end of file From 1696586d9acf0a8e222b51118df4f6c4f1f216d6 Mon Sep 17 00:00:00 2001 From: Lumipharon Date: Fri, 12 Jan 2024 11:00:11 +1300 Subject: [PATCH 59/82] Melee special attacks (#14775) --- code/__DEFINES/dcs/signals.dm | 5 ++ code/__DEFINES/keybind.dm | 1 + code/__DEFINES/traits.dm | 6 +- code/datums/actions/ability_actions.dm | 8 +- code/datums/actions/weapon_actions.dm | 30 +++++++ code/datums/components/stun_mitigation.dm | 2 +- code/datums/keybinding/weapons.dm | 23 ++++++ code/game/objects/items/blink_drive.dm | 11 +-- code/game/objects/items/jetpack.dm | 8 +- code/game/objects/items/weapons/blades.dm | 71 ++++++++++++++++ code/game/objects/items/weapons/twohanded.dm | 78 ++++++++++++++++++ icons/mob/actions.dmi | Bin 20017 -> 20807 bytes tgmc.dme | 2 + .../PlayerPreferences/KeybindSettings.tsx | 6 ++ 14 files changed, 236 insertions(+), 15 deletions(-) create mode 100644 code/datums/actions/weapon_actions.dm create mode 100644 code/datums/keybinding/weapons.dm diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 49ca214f8b5db..21c86915870e5 100755 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -725,6 +725,7 @@ #define COMSIG_MECHABILITY_SKYFALL "mechability_skyfall" #define COMSIG_MECHABILITY_STRIKE "mechability_strike" +#define COMSIG_ACTION_EXCLUSIVE_TOGGLE "action_exclusive_toggle" // xeno abilities for keybindings #define COMSIG_XENOABILITY_REST "xenoability_rest" @@ -965,6 +966,10 @@ #define COMSIG_KB_DEFENDORDER "keybind_defendorder" #define COMSIG_KB_RETREATORDER "keybind_retreatorder" +//Weapon related ability keybinds +#define COMSIG_WEAPONABILITY_AXESWEEP "weaponability_axesweep" +#define COMSIG_WEAPONABILITY_AXESWEEP_SELECT "weaponability_axesweep_select" +#define COMSIG_WEAPONABILITY_SWORDLUNGE "weaponability_swordlunge" // human modules signals for keybindings #define COMSIG_KB_VALI_CONFIGURE "keybinding_vali_configure" diff --git a/code/__DEFINES/keybind.dm b/code/__DEFINES/keybind.dm index a3bde9d9734df..ad6d9c9277e66 100644 --- a/code/__DEFINES/keybind.dm +++ b/code/__DEFINES/keybind.dm @@ -8,6 +8,7 @@ #define CATEGORY_CARBON "CARBON" #define CATEGORY_HUMAN "HUMAN" #define CATEGORY_PSIONIC "PSIONIC" +#define CATEGORY_WEAPON "WEAPON" #define CATEGORY_MISC "MISC" #define CATEGORY_EMOTE "EMOTE" #define CATEGORY_CUSTOM_EMOTE "CUSTOM_EMOTE" diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index f3ba2caadfa3e..9c5f444adb99a 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -159,8 +159,12 @@ #define TRAIT_HEAVY_STEP "heavy_step" ///indicates this mob was spawned by a corpse spawner #define TRAIT_MAPSPAWNED "mapspawned" - +///Mindmelded with another mob #define TRAIT_MINDMELDED "mindmelded" +///You swing axe good +#define TRAIT_AXE_EXPERT "axe_expert" +///You swing sword good +#define TRAIT_SWORD_EXPERT "sword_expert" /// Prevents usage of manipulation appendages (picking, holding or using items, manipulating storage). #define TRAIT_HANDS_BLOCKED "handsblocked" diff --git a/code/datums/actions/ability_actions.dm b/code/datums/actions/ability_actions.dm index 1b0a8b37482d8..b5336315f3a73 100644 --- a/code/datums/actions/ability_actions.dm +++ b/code/datums/actions/ability_actions.dm @@ -172,7 +172,7 @@ /datum/action/ability/activable/Destroy() var/mob/living/carbon/carbon_owner = owner - if(carbon_owner.selected_ability == src) + if(carbon_owner?.selected_ability == src) deselect() return ..() @@ -187,7 +187,7 @@ if(carbon_owner.selected_ability == src) return if(carbon_owner.selected_ability) - carbon_owner.selected_ability.deselect() + carbon_owner.selected_ability.deselect() //todo: make jetpack/blinkdrive etc activatables select() /datum/action/ability/activable/keybind_activation() @@ -231,12 +231,16 @@ ///Setting this ability as the active ability /datum/action/ability/activable/proc/select() var/mob/living/carbon/carbon_owner = owner + SEND_SIGNAL(owner, COMSIG_ACTION_EXCLUSIVE_TOGGLE, owner) + RegisterSignals(owner, list(COMSIG_ACTION_EXCLUSIVE_TOGGLE, COMSIG_ITEM_EXCLUSIVE_TOGGLE), PROC_REF(deselect)) set_toggle(TRUE) carbon_owner.selected_ability = src on_selection() ///Deselecting this ability for use /datum/action/ability/activable/proc/deselect() + SIGNAL_HANDLER + UnregisterSignal(owner, list(COMSIG_ACTION_EXCLUSIVE_TOGGLE, COMSIG_ITEM_EXCLUSIVE_TOGGLE)) var/mob/living/carbon/carbon_owner = owner set_toggle(FALSE) carbon_owner.selected_ability = null diff --git a/code/datums/actions/weapon_actions.dm b/code/datums/actions/weapon_actions.dm new file mode 100644 index 0000000000000..c2e98350614d5 --- /dev/null +++ b/code/datums/actions/weapon_actions.dm @@ -0,0 +1,30 @@ +//Stamina using weapon based abilities +/datum/action/ability/activable/weapon_skill + action_icon = 'icons/mob/actions.dmi' + ///Damage of this attack + var/damage + ///Penetration of this attack + var/penetration + +/datum/action/ability/activable/weapon_skill/New(Target, _damage, _penetration) + . = ..() + damage = _damage + penetration = _penetration + +/datum/action/ability/activable/weapon_skill/can_use_ability(atom/A, silent = FALSE, override_flags) + . = ..() + if(!.) + return + var/mob/living/carbon/carbon_owner = owner + if(carbon_owner.getStaminaLoss() > -ability_cost) + if(!silent) + A.balloon_alert(owner, "Catch your breath!") + return FALSE + +/datum/action/ability/activable/weapon_skill/succeed_activate(ability_cost_override) + if(QDELETED(owner)) + return + ability_cost_override = ability_cost_override? ability_cost_override : ability_cost + if(ability_cost_override > 0) + var/mob/living/carbon/carbon_owner = owner + carbon_owner.adjustStaminaLoss(ability_cost_override) diff --git a/code/datums/components/stun_mitigation.dm b/code/datums/components/stun_mitigation.dm index 7fe146503d9d9..b931c7dd7d91b 100644 --- a/code/datums/components/stun_mitigation.dm +++ b/code/datums/components/stun_mitigation.dm @@ -90,7 +90,7 @@ ///Actually deactivates the mitigation effect /datum/component/stun_mitigation/proc/deactivate_with_user() - UnregisterSignal(affected, COMSIG_LIVING_PROJECTILE_STUN) + UnregisterSignal(affected, list(COMSIG_LIVING_PROJECTILE_STUN, COMSIG_LIVING_JETPACK_STUN)) ///Handles removing the mitigation from a user /datum/component/stun_mitigation/proc/shield_detach_from_user() diff --git a/code/datums/keybinding/weapons.dm b/code/datums/keybinding/weapons.dm new file mode 100644 index 0000000000000..7f65bd67aaf23 --- /dev/null +++ b/code/datums/keybinding/weapons.dm @@ -0,0 +1,23 @@ +/datum/keybinding/weapon + category = CATEGORY_WEAPON + weight = WEIGHT_MOB + +/datum/keybinding/weapon/axe_sweep + name = "Axe sweep" + full_name = "Breaching axe: Axe sweep" + description = "A powerful sweeping blow that hits foes in the direction you are facing. Cannot stun." + keybind_signal = COMSIG_WEAPONABILITY_AXESWEEP + hotkey_keys = list("G") + +/datum/keybinding/weapon/axe_sweep_select + name = "Axe sweep select" + full_name = "Breaching axe: Select axe sweep" + description = "Selected axe sweep, a powerful sweeping blow that hits foes in the direction you are facing. Cannot stun." + keybind_signal = COMSIG_WEAPONABILITY_AXESWEEP_SELECT + +/datum/keybinding/weapon/sword_lunge + name = "Lunging strike" + full_name = "Sword: Lunging strike" + description = "Dash a short distance to inflict a staggering blow on an opponent. Cannot stun." + keybind_signal = COMSIG_WEAPONABILITY_SWORDLUNGE + hotkey_keys = list("G") diff --git a/code/game/objects/items/blink_drive.dm b/code/game/objects/items/blink_drive.dm index 4d5f031511e5e..0a9b6cad4a351 100644 --- a/code/game/objects/items/blink_drive.dm +++ b/code/game/objects/items/blink_drive.dm @@ -58,22 +58,20 @@ /obj/item/blink_drive/dropped(mob/user) . = ..() - UnregisterSignal(user, list(COMSIG_MOB_CLICK_ALT_RIGHT, COMSIG_MOB_MIDDLE_CLICK)) - UnregisterSignal(user, COMSIG_ITEM_EXCLUSIVE_TOGGLE) + UnregisterSignal(user, list(COMSIG_MOB_CLICK_ALT_RIGHT, COMSIG_MOB_MIDDLE_CLICK, COMSIG_ACTION_EXCLUSIVE_TOGGLE, COMSIG_ITEM_EXCLUSIVE_TOGGLE)) selected = FALSE equipped_user = null LAZYCLEARLIST(actions) /obj/item/blink_drive/ui_action_click(mob/user, datum/action/item_action/action) if(selected) - UnregisterSignal(user, COMSIG_MOB_MIDDLE_CLICK) + UnregisterSignal(user, list(COMSIG_MOB_CLICK_ALT_RIGHT, COMSIG_MOB_MIDDLE_CLICK, COMSIG_ACTION_EXCLUSIVE_TOGGLE, COMSIG_ITEM_EXCLUSIVE_TOGGLE)) action.set_toggle(FALSE) - UnregisterSignal(user, COMSIG_ITEM_EXCLUSIVE_TOGGLE) else RegisterSignal(user, COMSIG_MOB_MIDDLE_CLICK, PROC_REF(can_use)) action.set_toggle(TRUE) SEND_SIGNAL(user, COMSIG_ITEM_EXCLUSIVE_TOGGLE, user) - RegisterSignal(user, COMSIG_ITEM_EXCLUSIVE_TOGGLE, PROC_REF(unselect)) + RegisterSignals(user, list(COMSIG_ACTION_EXCLUSIVE_TOGGLE, COMSIG_ITEM_EXCLUSIVE_TOGGLE), PROC_REF(unselect)) selected = !selected /obj/item/blink_drive/apply_custom(mutable_appearance/standing, inhands, icon_used, state_used) @@ -87,8 +85,7 @@ if(!selected) return selected = FALSE - UnregisterSignal(user, COMSIG_MOB_MIDDLE_CLICK) - UnregisterSignal(user, COMSIG_ITEM_EXCLUSIVE_TOGGLE) + UnregisterSignal(user, list(COMSIG_MOB_CLICK_ALT_RIGHT, COMSIG_MOB_MIDDLE_CLICK, COMSIG_ACTION_EXCLUSIVE_TOGGLE, COMSIG_ITEM_EXCLUSIVE_TOGGLE)) for(var/action in user.actions) if(!istype(action, /datum/action/item_action)) diff --git a/code/game/objects/items/jetpack.dm b/code/game/objects/items/jetpack.dm index dfa1bed3043c3..47895444a46f2 100644 --- a/code/game/objects/items/jetpack.dm +++ b/code/game/objects/items/jetpack.dm @@ -50,18 +50,18 @@ /obj/item/jetpack_marine/dropped(mob/user) . = ..() - UnregisterSignal(user, list(COMSIG_MOB_MIDDLE_CLICK, COMSIG_MOB_CLICK_ALT_RIGHT, COMSIG_ITEM_EXCLUSIVE_TOGGLE)) + UnregisterSignal(user, list(COMSIG_MOB_MIDDLE_CLICK, COMSIG_MOB_CLICK_ALT_RIGHT, COMSIG_ITEM_EXCLUSIVE_TOGGLE, COMSIG_ACTION_EXCLUSIVE_TOGGLE)) selected = FALSE LAZYCLEARLIST(actions) /obj/item/jetpack_marine/ui_action_click(mob/user, datum/action/item_action/action) if(selected) - UnregisterSignal(user, list(COMSIG_MOB_MIDDLE_CLICK, COMSIG_MOB_CLICK_ALT_RIGHT, COMSIG_ITEM_EXCLUSIVE_TOGGLE)) + UnregisterSignal(user, list(COMSIG_MOB_MIDDLE_CLICK, COMSIG_MOB_CLICK_ALT_RIGHT, COMSIG_ITEM_EXCLUSIVE_TOGGLE, COMSIG_ACTION_EXCLUSIVE_TOGGLE)) action.set_toggle(FALSE) else RegisterSignals(user, list(COMSIG_MOB_MIDDLE_CLICK, COMSIG_MOB_CLICK_ALT_RIGHT), PROC_REF(can_use_jetpack)) SEND_SIGNAL(user, COMSIG_ITEM_EXCLUSIVE_TOGGLE, user) - RegisterSignal(user, COMSIG_ITEM_EXCLUSIVE_TOGGLE, PROC_REF(unselect)) + RegisterSignals(user, list(COMSIG_ITEM_EXCLUSIVE_TOGGLE, COMSIG_ACTION_EXCLUSIVE_TOGGLE), PROC_REF(unselect)) action.set_toggle(TRUE) selected = !selected @@ -71,7 +71,7 @@ if(!selected) return selected = FALSE - UnregisterSignal(user, list(COMSIG_MOB_MIDDLE_CLICK, COMSIG_MOB_CLICK_ALT_RIGHT, COMSIG_ITEM_EXCLUSIVE_TOGGLE)) + UnregisterSignal(user, list(COMSIG_MOB_MIDDLE_CLICK, COMSIG_MOB_CLICK_ALT_RIGHT, COMSIG_ITEM_EXCLUSIVE_TOGGLE, COMSIG_ACTION_EXCLUSIVE_TOGGLE)) for(var/action in user.actions) if (!istype(action, /datum/action/item_action)) continue diff --git a/code/game/objects/items/weapons/blades.dm b/code/game/objects/items/weapons/blades.dm index c3b784c9bd316..c96abd4c57531 100644 --- a/code/game/objects/items/weapons/blades.dm +++ b/code/game/objects/items/weapons/blades.dm @@ -31,15 +31,86 @@ w_class = WEIGHT_CLASS_NORMAL attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") hitsound = 'sound/weapons/bladeslice.ogg' + ///Special attack action granted to users with the right trait + var/datum/action/ability/activable/weapon_skill/sword_lunge/special_attack /obj/item/weapon/claymore/Initialize(mapload) . = ..() AddElement(/datum/element/scalping) + special_attack = new(src, force, penetration) + +/obj/item/weapon/claymore/Destroy() + QDEL_NULL(special_attack) + return ..() + +/obj/item/weapon/claymore/equipped(mob/user, slot) + . = ..() + if(HAS_TRAIT(user, TRAIT_SWORD_EXPERT)) + special_attack.give_action(user) + +/obj/item/weapon/claymore/dropped(mob/user) + . = ..() + special_attack.remove_action(user) /obj/item/weapon/claymore/suicide_act(mob/user) user.visible_message(span_danger("[user] is falling on the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.")) return(BRUTELOSS) +//Special attack +/datum/action/ability/activable/weapon_skill/sword_lunge + name = "Lunging strike" + action_icon_state = "sword_lunge" + desc = "A powerful leaping strike. Cannot stun." + ability_cost = 12 + cooldown_duration = 6 SECONDS + keybinding_signals = list( + KEYBINDING_NORMAL = COMSIG_WEAPONABILITY_SWORDLUNGE, + ) + +/datum/action/ability/activable/weapon_skill/sword_lunge/use_ability(atom/A) + var/mob/living/carbon/carbon_owner = owner + + RegisterSignal(carbon_owner, COMSIG_MOVABLE_MOVED, PROC_REF(movement_fx)) + RegisterSignal(carbon_owner, COMSIG_MOVABLE_IMPACT, PROC_REF(lunge_impact)) + RegisterSignal(carbon_owner, COMSIG_MOVABLE_POST_THROW, PROC_REF(charge_complete)) + + carbon_owner.visible_message(span_danger("[carbon_owner] charges towards \the [A]!")) + playsound(owner, "sound/effects/alien_tail_swipe2.ogg", 50, 0, 4) + carbon_owner.throw_at(A, 2, 1, carbon_owner) + succeed_activate() + add_cooldown() + +///Create an after image +/datum/action/ability/activable/weapon_skill/sword_lunge/proc/movement_fx() + SIGNAL_HANDLER + new /obj/effect/temp_visual/xenomorph/afterimage(get_turf(owner), owner) + +///Unregisters signals after lunge complete +/datum/action/ability/activable/weapon_skill/sword_lunge/proc/charge_complete() + SIGNAL_HANDLER + UnregisterSignal(owner, list(COMSIG_MOVABLE_IMPACT, COMSIG_MOVABLE_POST_THROW, COMSIG_MOVABLE_MOVED)) + +///Sig handler for atom impacts during lunge +/datum/action/ability/activable/weapon_skill/sword_lunge/proc/lunge_impact(datum/source, obj/target, speed) + SIGNAL_HANDLER + INVOKE_ASYNC(src, PROC_REF(do_lunge_impact), source, target) + charge_complete() + +///Actual effects of lunge impact +/datum/action/ability/activable/weapon_skill/sword_lunge/proc/do_lunge_impact(datum/source, obj/target) + var/mob/living/carbon/carbon_owner = source + if(!ishuman(target)) + var/obj/obj_victim = target + obj_victim.take_damage(damage, BRUTE, MELEE, TRUE, armour_penetration = penetration) + if(!obj_victim.anchored) + obj_victim.knockback(carbon_owner, 1, 2) + else + var/mob/living/carbon/human/human_victim = target + human_victim.apply_damage(damage, BRUTE, BODY_ZONE_CHEST, MELEE, TRUE, TRUE, TRUE, penetration) + human_victim.adjust_stagger(1 SECONDS) + playsound(human_victim, "sound/weapons/wristblades_hit.ogg", 25, 0, 5) + shake_camera(human_victim, 2, 1) + /obj/item/weapon/claymore/mercsword name = "combat sword" desc = "A dusty sword commonly seen in historical museums. Where you got this is a mystery, for sure. Only a mercenary would be nuts enough to carry one of these. Sharpened to deal massive damage." diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index b5ab932c914aa..61f5d1079bbd7 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -214,24 +214,102 @@ penetration = 35 flags_equip_slot = ITEM_SLOT_BACK attack_speed = 15 + ///Special attack action granted to users with the right trait + var/datum/action/ability/activable/weapon_skill/axe_sweep/special_attack /obj/item/weapon/twohanded/fireaxe/som/Initialize(mapload) . = ..() AddComponent(/datum/component/shield, SHIELD_TOGGLE|SHIELD_PURE_BLOCKING, shield_cover = list(MELEE = 45, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0)) AddComponent(/datum/component/stun_mitigation, SHIELD_TOGGLE, shield_cover = list(MELEE = 60, BULLET = 60, LASER = 60, ENERGY = 60, BOMB = 60, BIO = 60, FIRE = 60, ACID = 60)) AddElement(/datum/element/strappable) + special_attack = new(src, force_wielded, penetration) + +/obj/item/weapon/twohanded/fireaxe/som/Destroy() + QDEL_NULL(special_attack) + return ..() /obj/item/weapon/twohanded/fireaxe/som/wield(mob/user) . = ..() if(!.) return toggle_item_bump_attack(user, TRUE) + if(HAS_TRAIT(user, TRAIT_AXE_EXPERT)) + special_attack.give_action(user) /obj/item/weapon/twohanded/fireaxe/som/unwield(mob/user) . = ..() if(!.) return toggle_item_bump_attack(user, FALSE) + special_attack.remove_action(user) + +//Special attack +/datum/action/ability/activable/weapon_skill/axe_sweep + name = "Sweeping blow" + action_icon_state = "axe_sweep" + desc = "A powerful sweeping blow that hits foes in the direction you are facing. Cannot stun." + ability_cost = 12 + cooldown_duration = 6 SECONDS + keybind_flags = ABILITY_KEYBIND_USE_ABILITY | ABILITY_IGNORE_SELECTED_ABILITY + keybinding_signals = list( + KEYBINDING_NORMAL = COMSIG_WEAPONABILITY_AXESWEEP, + KEYBINDING_ALTERNATE = COMSIG_WEAPONABILITY_AXESWEEP_SELECT, + ) + /// Used for particles. Holds the particles instead of the mob. See particle_holder for documentation. + var/obj/effect/abstract/particle_holder/particle_holder + +/datum/action/ability/activable/weapon_skill/axe_sweep/use_ability(atom/A) + var/mob/living/carbon/carbon_owner = owner + + carbon_owner.emote("roar") + carbon_owner.visible_message(span_danger("[carbon_owner] Swing their weapon in a deadly arc!")) + + carbon_owner.face_atom(A) + activate_particles(carbon_owner.dir) + playsound(owner, "sound/effects/alien_tail_swipe3.ogg", 50, 0, 5) + + var/list/atom/movable/atoms_to_ravage = get_step(owner, owner.dir).contents.Copy() + atoms_to_ravage += get_step(owner, turn(owner.dir, -45)).contents + atoms_to_ravage += get_step(owner, turn(owner.dir, 45)).contents + for(var/atom/movable/victim AS in atoms_to_ravage) + if((victim.resistance_flags & INDESTRUCTIBLE)) + continue + if(!ishuman(victim)) + var/obj/obj_victim = victim + obj_victim.take_damage(damage, BRUTE, MELEE, TRUE, armour_penetration = penetration) + if(!obj_victim.anchored) + obj_victim.knockback(carbon_owner, 1, 2) + continue + var/mob/living/carbon/human/human_victim = victim + if(human_victim.lying_angle) + continue + human_victim.apply_damage(damage, BRUTE, BODY_ZONE_CHEST, MELEE, TRUE, TRUE, TRUE, penetration) + human_victim.knockback(carbon_owner, 1, 2) + human_victim.adjust_stagger(1 SECONDS) + playsound(human_victim, "sound/weapons/wristblades_hit.ogg", 25, 0, 5) + shake_camera(human_victim, 2, 1) + + succeed_activate() + add_cooldown() + +/// Handles the activation and deactivation of particles, as well as their appearance. +/datum/action/ability/activable/weapon_skill/axe_sweep/proc/activate_particles(direction) + particle_holder = new(get_turf(owner), /particles/ravager_slash) + QDEL_NULL_IN(src, particle_holder, 5) + particle_holder.particles.rotation += dir2angle(direction) + switch(direction) // There's no shared logic here because sprites are magical. + if(NORTH) // Gotta define stuff for each angle so it looks good. + particle_holder.particles.position = list(8, 4) + particle_holder.particles.velocity = list(0, 20) + if(EAST) + particle_holder.particles.position = list(3, -8) + particle_holder.particles.velocity = list(20, 0) + if(SOUTH) + particle_holder.particles.position = list(-9, -3) + particle_holder.particles.velocity = list(0, -20) + if(WEST) + particle_holder.particles.position = list(-4, 9) + particle_holder.particles.velocity = list(-20, 0) /* * Double-Bladed Energy Swords - Cheridan diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index f4d1720ae5fa21b44ae38f23176b7aded4ba60a1..5df5a1874609a31eb6202bf28948ff1434a5234e 100644 GIT binary patch literal 20807 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 { {all_keybindings['PSIONIC'] ?.filter(filterSearch) .map((kb) => )} + +

Items

+
+ {all_keybindings['WEAPON'] + ?.filter(filterSearch) + .map((kb) => )}
From 75bd6392567ce9e52d7789858f7c64d15e05ae55 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 11 Jan 2024 22:11:53 +0000 Subject: [PATCH 60/82] Automatic changelog for PR #14799 [ci skip] --- html/changelogs/AutoChangeLog-pr-14799.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14799.yml diff --git a/html/changelogs/AutoChangeLog-pr-14799.yml b/html/changelogs/AutoChangeLog-pr-14799.yml new file mode 100644 index 0000000000000..20bf85e7e80fa --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14799.yml @@ -0,0 +1,4 @@ +author: "Helg2" +delete-after: True +changes: + - bugfix: "fixed balloon alert for king's primo laser, which you probably won't even see." \ No newline at end of file From 1a022b68da58a11e3617b2e7487db7d992d71704 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 11 Jan 2024 22:13:29 +0000 Subject: [PATCH 61/82] Automatic changelog for PR #14775 [ci skip] --- html/changelogs/AutoChangeLog-pr-14775.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14775.yml diff --git a/html/changelogs/AutoChangeLog-pr-14775.yml b/html/changelogs/AutoChangeLog-pr-14775.yml new file mode 100644 index 0000000000000..10203c94c380f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14775.yml @@ -0,0 +1,4 @@ +author: "Lumipharon" +delete-after: True +changes: + - balance: "Adds weapon skill functionality, for a future campaign release" \ No newline at end of file From eb294079702278ee7ffce27fe296bb5c97e106e2 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 12 Jan 2024 00:53:50 +0000 Subject: [PATCH 62/82] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-14623.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14624.yml | 5 ----- html/changelogs/AutoChangeLog-pr-14775.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14790.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14791.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14792.yml | 5 ----- html/changelogs/AutoChangeLog-pr-14794.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14795.yml | 5 ----- html/changelogs/AutoChangeLog-pr-14796.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14799.yml | 4 ---- html/changelogs/archive/2024-01.yml | 23 ++++++++++++++++++++++ 11 files changed, 23 insertions(+), 43 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-14623.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14624.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14775.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14790.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14791.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14792.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14794.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14795.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14796.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14799.yml diff --git a/html/changelogs/AutoChangeLog-pr-14623.yml b/html/changelogs/AutoChangeLog-pr-14623.yml deleted file mode 100644 index 2ecd173ab6bb8..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14623.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "TiviPlus" -delete-after: True -changes: - - rscadd: "Psy points have been split into tactical and strategic psy points" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14624.yml b/html/changelogs/AutoChangeLog-pr-14624.yml deleted file mode 100644 index 139cec675dc51..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14624.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "yyzsong" -delete-after: True -changes: - - rscadd: "New Gorger primordial: Oppose. Staggers and slows nearby marines while healing nearby xenomorphs, at a cost. Replaces current primordial ability, Rejuvenate" - - rscdel: "Rejuvenate" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14775.yml b/html/changelogs/AutoChangeLog-pr-14775.yml deleted file mode 100644 index 10203c94c380f..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14775.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Lumipharon" -delete-after: True -changes: - - balance: "Adds weapon skill functionality, for a future campaign release" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14790.yml b/html/changelogs/AutoChangeLog-pr-14790.yml deleted file mode 100644 index 9cabd4393bf0c..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14790.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Lumipharon" -delete-after: True -changes: - - bugfix: "fixed a couple of uncommon throw bugs" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14791.yml b/html/changelogs/AutoChangeLog-pr-14791.yml deleted file mode 100644 index dfc7689ae9e09..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14791.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Lumipharon" -delete-after: True -changes: - - bugfix: "Fixed some instances where throw bounces would behave funnily" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14792.yml b/html/changelogs/AutoChangeLog-pr-14792.yml deleted file mode 100644 index 8813d5632fb2c..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14792.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Barnet2" -delete-after: True -changes: - - balance: "Daedalus Prison: Removed two miners, more preweed, medical cannot be landed in by tad, and outskirt cave walls are actually pcable" - - spellcheck: "Darkfrost hull walls are now named \"tough rock\"" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14794.yml b/html/changelogs/AutoChangeLog-pr-14794.yml deleted file mode 100644 index d5778ecd5656d..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14794.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Lumipharon" -delete-after: True -changes: - - bugfix: "Harvester bicard no longer heals dead bodies or robots" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14795.yml b/html/changelogs/AutoChangeLog-pr-14795.yml deleted file mode 100644 index 7d6eefd9e8bb4..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14795.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "ivanmixo" -delete-after: True -changes: - - qol: "Defiler egg injection has more feedback now" - - bugfix: "Opening the defiler egg mid progress bar makes the injection fail" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14796.yml b/html/changelogs/AutoChangeLog-pr-14796.yml deleted file mode 100644 index 37bec606409a2..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14796.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Lumipharon" -delete-after: True -changes: - - bugfix: "fixed abilities not updating their icon correctly on use in some cases" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14799.yml b/html/changelogs/AutoChangeLog-pr-14799.yml deleted file mode 100644 index 20bf85e7e80fa..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14799.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Helg2" -delete-after: True -changes: - - bugfix: "fixed balloon alert for king's primo laser, which you probably won't even see." \ No newline at end of file diff --git a/html/changelogs/archive/2024-01.yml b/html/changelogs/archive/2024-01.yml index bf9a69f768a29..2f7613bfb46ce 100644 --- a/html/changelogs/archive/2024-01.yml +++ b/html/changelogs/archive/2024-01.yml @@ -95,3 +95,26 @@ - qol: Spatial agent glasses have all huds now yyzsong: - rscdel: Removes Big Red office variant 4 +2024-01-12: + Barnet2: + - balance: 'Daedalus Prison: Removed two miners, more preweed, medical cannot be + landed in by tad, and outskirt cave walls are actually pcable' + - spellcheck: Darkfrost hull walls are now named "tough rock" + Helg2: + - bugfix: fixed balloon alert for king's primo laser, which you probably won't even + see. + Lumipharon: + - bugfix: fixed abilities not updating their icon correctly on use in some cases + - bugfix: Fixed some instances where throw bounces would behave funnily + - bugfix: Harvester bicard no longer heals dead bodies or robots + - bugfix: fixed a couple of uncommon throw bugs + - balance: Adds weapon skill functionality, for a future campaign release + TiviPlus: + - rscadd: Psy points have been split into tactical and strategic psy points + ivanmixo: + - qol: Defiler egg injection has more feedback now + - bugfix: Opening the defiler egg mid progress bar makes the injection fail + yyzsong: + - rscadd: 'New Gorger primordial: Oppose. Staggers and slows nearby marines while + healing nearby xenomorphs, at a cost. Replaces current primordial ability, Rejuvenate' + - rscdel: Rejuvenate From d224a0f44485badb99f7ebf459d69bb993c94a40 Mon Sep 17 00:00:00 2001 From: ivanmixo Date: Fri, 12 Jan 2024 04:53:47 +0100 Subject: [PATCH 63/82] Port update_appearance, alternative_appearance and ssvisoverlays (#14767) --- code/__DEFINES/_subsystems.dm | 2 + code/__DEFINES/apc_defines.dm | 81 ++ code/__DEFINES/dcs/signals.dm | 30 +- code/__DEFINES/flags.dm | 16 + code/__DEFINES/machines.dm | 31 - code/__DEFINES/overlays.dm | 2 - code/__DEFINES/stat_tracking.dm | 5 +- code/_globalvars/bitfields.dm | 23 +- code/_globalvars/lists/mobs.dm | 1 + code/_onclick/hud/human.dm | 2 +- .../hud/screen_objects/screen_objects.dm | 10 + code/_onclick/hud/xeno/xeno.dm | 2 +- code/_onclick/telekinesis.dm | 7 +- code/controllers/subsystem/vis_overlays.dm | 77 ++ code/datums/callback.dm | 2 - code/datums/components/deployable_item.dm | 4 +- .../campaign/missions/base_rescue.dm | 1 + code/game/alternate_appearance.dm | 134 ++ code/game/area/area.dm | 23 +- code/game/{atoms.dm => atoms/_atom.dm} | 50 +- code/game/atoms/atom_appearance.dm | 112 ++ .../atom_movable.dm} | 0 .../effects/decals/Cleanable/aliens.dm | 3 - .../effects/decals/Cleanable/humans.dm | 27 +- .../effects/decals/Cleanable/robots.dm | 3 - .../effects/decals/Cleanable/tracks.dm | 9 +- code/game/objects/effects/overlays.dm | 9 + code/game/objects/effects/weeds.dm | 2 + code/game/objects/items/ashtray.dm | 17 +- code/game/objects/items/bodybag.dm | 20 +- code/game/objects/items/cards_ids.dm | 1 + code/game/objects/items/cocoon.dm | 1 + code/game/objects/items/defibrillator.dm | 4 +- code/game/objects/items/explosives/mine.dm | 3 +- .../objects/items/explosives/plastique.dm | 1 + code/game/objects/items/handcuffs.dm | 2 +- .../objects/items/implants/implantcase.dm | 1 + code/game/objects/items/motion_detector.dm | 2 + code/game/objects/items/plantable_flags.dm | 6 +- code/game/objects/items/portable_vendor.dm | 8 +- code/game/objects/items/radio/detpack.dm | 1 + code/game/objects/items/radio/intercom.dm | 15 +- .../items/reagent_containers/autoinjectors.dm | 1 + .../items/reagent_containers/blood_pack.dm | 2 +- .../reagent_containers/food/pizzapasta.dm | 61 +- .../objects/items/reagent_containers/glass.dm | 48 +- .../items/reagent_containers/glass/bottle.dm | 29 +- .../items/reagent_containers/hypospray.dm | 39 +- .../items/reagent_containers/syringes.dm | 25 +- code/game/objects/items/stacks/medical.dm | 16 - code/game/objects/items/stacks/snow.dm | 10 +- code/game/objects/items/stacks/stack.dm | 1 + code/game/objects/items/storage/backpack.dm | 1 + code/game/objects/items/storage/bags.dm | 1 + code/game/objects/items/storage/belt.dm | 27 +- code/game/objects/items/storage/boxes.dm | 7 +- code/game/objects/items/storage/fancy.dm | 9 +- code/game/objects/items/storage/firstaid.dm | 3 +- code/game/objects/items/storage/holsters.dm | 1 + .../objects/items/storage/marine_boxes.dm | 1 + code/game/objects/items/storage/misc.dm | 12 +- code/game/objects/items/storage/storage.dm | 1 + .../objects/items/storage/surgical_tray.dm | 1 + code/game/objects/items/storage/wallets.dm | 4 +- code/game/objects/items/tools/flame_tools.dm | 13 +- .../objects/items/tools/maintenance_tools.dm | 5 +- code/game/objects/items/tools/mining_tools.dm | 3 +- code/game/objects/items/tools/shovel_tools.dm | 5 +- code/game/objects/items/toys/cards.dm | 44 +- code/game/objects/items/toys/toy_weapons.dm | 1 + code/game/objects/items/toys/toys.dm | 1 + code/game/objects/items/weapons/blades.dm | 8 +- code/game/objects/items/weapons/shields.dm | 1 + code/game/objects/items/weapons/stunbaton.dm | 2 + code/game/objects/items/weapons/twohanded.dm | 1 + code/game/objects/items/weapons/weaponry.dm | 2 +- code/game/objects/machinery/adv_med.dm | 1 + code/game/objects/machinery/air_alarm.dm | 1 + code/game/objects/machinery/autodoc.dm | 1 + code/game/objects/machinery/bioprinter.dm | 1 + code/game/objects/machinery/buttons.dm | 2 + code/game/objects/machinery/camera/camera.dm | 8 +- .../machinery/camera/deployable_camera.dm | 3 +- .../game/objects/machinery/cloning/cloning.dm | 1 + .../machinery/computer/camera_console.dm | 1 + .../objects/machinery/computer/computer.dm | 1 + .../objects/machinery/computer/nt_access.dm | 2 +- .../machinery/computer/som_computer.dm | 1 + .../objects/machinery/constructable_frame.dm | 3 +- code/game/objects/machinery/cryopod.dm | 1 + code/game/objects/machinery/door_control.dm | 2 + .../machinery/door_display/door_display.dm | 14 +- code/game/objects/machinery/doors/airlock.dm | 26 +- .../machinery/doors/airlock_control.dm | 1 + code/game/objects/machinery/doors/door.dm | 3 +- code/game/objects/machinery/doors/firedoor.dm | 21 +- code/game/objects/machinery/doors/poddoor.dm | 3 +- code/game/objects/machinery/doors/railing.dm | 3 +- code/game/objects/machinery/doors/shutters.dm | 3 +- .../objects/machinery/doors/windowdoor.dm | 3 +- .../machinery/dropship_part_fabricator.dm | 1 + code/game/objects/machinery/flasher.dm | 1 + code/game/objects/machinery/floodlight.dm | 5 +- .../objects/machinery/fuelcell_recycler.dm | 29 +- code/game/objects/machinery/hologram.dm | 1 + code/game/objects/machinery/holosign.dm | 1 + code/game/objects/machinery/igniter.dm | 11 +- code/game/objects/machinery/iv_drip.dm | 53 +- .../objects/machinery/kitchen/smartfridge.dm | 5 +- code/game/objects/machinery/lightswitch.dm | 1 + code/game/objects/machinery/miner.dm | 3 +- code/game/objects/machinery/recharger.dm | 22 +- code/game/objects/machinery/robotic_cradle.dm | 1 + code/game/objects/machinery/sleeper.dm | 1 + .../machinery/squad_supply/supply_beacon.dm | 1 + .../objects/machinery/suit_storage_unit.dm | 33 +- .../machinery/telecomms/telecomunications.dm | 3 +- .../machinery/vending/loadout_vendor.dm | 1 + .../machinery/vending/marine_vending.dm | 3 +- .../machinery/vending/new_marine_vendors.dm | 1 + .../objects/machinery/vending/quick_vendor.dm | 1 + .../game/objects/machinery/vending/vending.dm | 1 + .../game/objects/machinery/washing_machine.dm | 3 +- code/game/objects/structures/bedsheet_bin.dm | 3 +- code/game/objects/structures/bookcase.dm | 3 +- .../campaign_structures/capture_objectives.dm | 1 + code/game/objects/structures/coathanger.dm | 10 +- .../structures/crates_lockers/closets.dm | 10 +- .../crates_lockers/closets/coffin.dm | 1 + .../crates_lockers/closets/fireaxe.dm | 4 +- .../crates_lockers/closets/gimmick.dm | 1 + .../crates_lockers/closets/secure/bar.dm | 1 + .../crates_lockers/closets/secure/freezer.dm | 1 + .../crates_lockers/closets/secure/personal.dm | 3 +- .../closets/secure/secure_closets.dm | 9 +- .../crates_lockers/closets/secure/security.dm | 6 +- .../crates_lockers/closets/utility_closets.dm | 3 +- .../crates_lockers/secure_crates.dm | 11 +- code/game/objects/structures/displaycase.dm | 3 +- code/game/objects/structures/droppod.dm | 2 + .../objects/structures/dropship_equipment.dm | 18 +- code/game/objects/structures/extinguisher.dm | 8 +- code/game/objects/structures/girders.dm | 1 + code/game/objects/structures/ladders.dm | 1 + code/game/objects/structures/lamarr_cage.dm | 2 +- code/game/objects/structures/mineral_doors.dm | 3 +- code/game/objects/structures/morgue.dm | 7 +- .../game/objects/structures/orbital_cannon.dm | 1 + code/game/objects/structures/prop.dm | 1 + code/game/objects/structures/razorwire.dm | 1 + code/game/objects/structures/safe.dm | 1 + code/game/objects/structures/sensor_tower.dm | 1 + .../structures/stool_bed_chair_nest/bed.dm | 11 +- code/game/objects/structures/supplypod.dm | 9 +- code/game/objects/structures/tables_racks.dm | 3 +- .../game/objects/structures/tank_dispenser.dm | 16 +- code/game/objects/structures/teleporter.dm | 1 + code/game/objects/structures/watercloset.dm | 18 +- .../objects/structures/windoor_assembly.dm | 1 + code/game/objects/structures/window.dm | 10 +- code/game/objects/structures/window_frame.dm | 1 + code/game/turfs/floor.dm | 1 + code/game/turfs/open_ground.dm | 5 +- code/game/turfs/snow.dm | 111 +- code/game/turfs/space/transit.dm | 2 + code/game/turfs/walls/walls.dm | 81 +- .../admin/verbs/SDQL2/SDQL_2_wrappers.dm | 5 +- code/modules/assembly/holder.dm | 14 +- code/modules/assembly/infrared.dm | 10 +- code/modules/assembly/mousetrap.dm | 1 + code/modules/assembly/proximity.dm | 12 +- code/modules/assembly/signaler.dm | 1 + code/modules/assembly/timer.dm | 9 +- .../components/binary_devices/circulator.dm | 3 +- .../components/trinary_devices/filter.dm | 7 +- .../components/unary_devices/cryo.dm | 1 + .../unary_devices/heat_exchanger.dm | 3 +- .../components/unary_devices/thermomachine.dm | 3 +- .../machinery/pipes/heat_exchange/junction.dm | 4 +- .../machinery/pipes/heat_exchange/manifold.dm | 8 +- .../pipes/heat_exchange/manifold4w.dm | 8 +- .../machinery/pipes/heat_exchange/simple.dm | 3 +- .../machinery/pipes/layermanifold.dm | 6 +- .../atmospherics/machinery/pipes/manifold.dm | 9 +- .../machinery/pipes/manifold4w.dm | 8 +- .../atmospherics/machinery/pipes/simple.dm | 3 +- .../machinery/portable/canister.dm | 1 + .../atmospherics/machinery/portable/pump.dm | 11 +- code/modules/buildmode/buttons.dm | 1 + code/modules/client/preferences_toggles.dm | 2 +- code/modules/clothing/clothing.dm | 2 +- code/modules/clothing/glasses/glasses.dm | 8 +- code/modules/clothing/head/hardhat.dm | 2 +- code/modules/clothing/head/helmet.dm | 19 +- .../modular_armor/attachments/cape.dm | 2 + .../modular_armor/attachments/modules.dm | 1 + code/modules/clothing/shoes/marine_shoes.dm | 1 + code/modules/clothing/suits/marine_armor.dm | 28 +- code/modules/economy/cash.dm | 19 +- code/modules/factory/unboxer.dm | 1 + code/modules/flufftext/Hallucination.dm | 10 - code/modules/hydroponics/hydro_tray.dm | 27 +- code/modules/hydroponics/seeds.dm | 11 +- code/modules/mob/dead/observer/login.dm | 2 +- code/modules/mob/dead/observer/observer.dm | 4 +- .../castes/behemoth/abilities_behemoth.dm | 4 +- .../xenomorph/castes/hivemind/hivemind.dm | 1 + .../mob/living/carbon/xenomorph/egg.dm | 1 + .../living/carbon/xenomorph/facehuggers.dm | 7 +- .../living/carbon/xenomorph/update_icons.dm | 1 + code/modules/mob/living/silicon/silicon.dm | 2 + code/modules/mob/mob.dm | 5 + code/modules/paperwork/carbonpaper.dm | 3 +- code/modules/paperwork/clipboard.dm | 13 +- code/modules/paperwork/folders.dm | 8 +- code/modules/paperwork/paper.dm | 11 +- code/modules/paperwork/paper_bundle.dm | 51 +- code/modules/paperwork/paperbin.dm | 3 +- code/modules/paperwork/photography.dm | 3 +- code/modules/power/apc.dm | 1138 ----------------- code/modules/power/apc/apc.dm | 655 ++++++++++ code/modules/power/apc/apc_appearance.dm | 88 ++ code/modules/power/apc/apc_attack.dm | 221 ++++ code/modules/power/apc/apc_tool_act.dm | 116 ++ code/modules/power/batteryrack.dm | 31 +- code/modules/power/cable.dm | 1 + code/modules/power/fusion_engine.dm | 6 +- code/modules/power/groundmap_geothermal.dm | 15 +- code/modules/power/lighting.dm | 3 +- code/modules/power/pipecleaners.dm | 15 +- code/modules/power/port_gen.dm | 1 + code/modules/power/power_monitor.dm | 1 + code/modules/power/smes_construction.dm | 10 +- code/modules/projectiles/ammunition.dm | 38 +- code/modules/projectiles/gun_attachables.dm | 6 +- code/modules/projectiles/gun_system.dm | 4 +- code/modules/projectiles/guns/energy.dm | 6 +- code/modules/projectiles/guns/flamer.dm | 3 +- code/modules/projectiles/guns/sentries.dm | 2 +- code/modules/projectiles/guns/specialist.dm | 1 + code/modules/projectiles/magazines/flamer.dm | 3 - .../projectiles/magazines/specialist.dm | 14 +- code/modules/projectiles/mounted.dm | 8 +- code/modules/projectiles/projectile.dm | 3 - code/modules/projectiles/sentries.dm | 2 +- .../reagents/machinery/chem_dispenser.dm | 2 + .../modules/reagents/machinery/chem_master.dm | 3 +- .../reagents/machinery/reagentgrinder.dm | 1 + code/modules/recycling/conveyor2.dm | 2 + code/modules/recycling/recycler.dm | 3 +- code/modules/recycling/sortingmachinery.dm | 16 +- .../security_levels/keycard_authentication.dm | 3 +- code/modules/vehicles/cargo_train.dm | 3 +- code/modules/vehicles/mecha/mecha_actions.dm | 2 +- code/modules/vehicles/multitile/cm_armored.dm | 13 +- code/modules/vehicles/multitile/hardpoints.dm | 9 +- code/modules/vehicles/multitile/tankvendor.dm | 3 +- code/modules/vehicles/powerloader.dm | 3 +- code/modules/xenomorph/xeno_structures.dm | 2 + icons/obj/clothing/belts.dmi | Bin 33722 -> 33701 bytes icons/obj/items/weapons.dmi | Bin 46085 -> 46371 bytes icons/turf/snow2.dmi | Bin 18592 -> 18255 bytes tgmc.dme | 13 +- 263 files changed, 2645 insertions(+), 2018 deletions(-) create mode 100644 code/__DEFINES/apc_defines.dm create mode 100644 code/controllers/subsystem/vis_overlays.dm create mode 100644 code/game/alternate_appearance.dm rename code/game/{atoms.dm => atoms/_atom.dm} (97%) create mode 100644 code/game/atoms/atom_appearance.dm rename code/game/{atoms_movable.dm => atoms/atom_movable.dm} (100%) delete mode 100644 code/modules/power/apc.dm create mode 100644 code/modules/power/apc/apc.dm create mode 100644 code/modules/power/apc/apc_appearance.dm create mode 100644 code/modules/power/apc/apc_attack.dm create mode 100644 code/modules/power/apc/apc_tool_act.dm diff --git a/code/__DEFINES/_subsystems.dm b/code/__DEFINES/_subsystems.dm index 79ba9366bf633..b7eedbb32ccdb 100644 --- a/code/__DEFINES/_subsystems.dm +++ b/code/__DEFINES/_subsystems.dm @@ -80,6 +80,7 @@ #define INIT_ORDER_DBCORE 25 #define INIT_ORDER_SERVER_MAINT 23 #define INIT_ORDER_INPUT 21 +#define INIT_ORDER_VIS 20 #define INIT_ORDER_SOUNDS 19 #define INIT_ORDER_INSTRUMENTS 17 #define INIT_ORDER_GREYSCALE 16 @@ -125,6 +126,7 @@ #define FIRE_PRIORITY_AMBIENCE 10 #define FIRE_PRIORITY_WEED 11 #define FIRE_PRIORITY_GARBAGE 15 +#define FIRE_PRIORITY_VIS 15 #define FIRE_PRIORITY_MINIMAPS 17 #define FIRE_PRIORITY_DIRECTION 19 #define FIRE_PRIORITY_SPAWNING 20 diff --git a/code/__DEFINES/apc_defines.dm b/code/__DEFINES/apc_defines.dm new file mode 100644 index 0000000000000..53d27679e075e --- /dev/null +++ b/code/__DEFINES/apc_defines.dm @@ -0,0 +1,81 @@ + +#define APC_WIRE_IDSCAN (1<<0) +#define APC_WIRE_MAIN_POWER1 (1<<1) +#define APC_WIRE_MAIN_POWER2 (1<<2) +#define APC_WIRE_AI_CONTROL (1<<3) + +#define APC_RESET_EMP 5 + +// APC electronics status: +/// There are no electronics in the APC. +#define APC_ELECTRONICS_MISSING 0 +/// The electronics are installed but not secured. +#define APC_ELECTRONICS_INSTALLED 1 +/// The electronics are installed and secured. +#define APC_ELECTRONICS_SECURED 2 + +// APC cover status: +/// The APCs cover is closed. +#define APC_COVER_CLOSED 0 +/// The APCs cover is open. +#define APC_COVER_OPENED 1 +/// The APCs cover is missing. +#define APC_COVER_REMOVED 2 + +// APC charging status: +/// The APC is not charging. +#define APC_NOT_CHARGING 0 +/// The APC is charging. +#define APC_CHARGING 1 +/// The APC is fully charged. +#define APC_FULLY_CHARGED 2 + +#define APC_EXTERNAL_POWER_NONE 0 +#define APC_EXTERNAL_POWER_LOW 1 +#define APC_EXTERNAL_POWER_GOOD 2 + +// APC channel status: +/// The APCs power channel is manually set off. +#define APC_CHANNEL_OFF 0 +/// The APCs power channel is automatically off. +#define APC_CHANNEL_AUTO_OFF 1 +/// The APCs power channel is manually set on. +#define APC_CHANNEL_ON 2 +/// The APCs power channel is automatically on. +#define APC_CHANNEL_AUTO_ON 3 + +#define APC_CHANNEL_IS_ON(channel) (channel >= APC_CHANNEL_ON) + +// update_state +// Bitshifts: (If you change the status values to be something other than an int or able to exceed 3 you will need to change these too) +/// The bit shift for the APCs cover status. +#define UPSTATE_COVER_SHIFT (0) + /// The bitflag representing the APCs cover being open for icon purposes. + #define UPSTATE_OPENED1 (APC_COVER_OPENED << UPSTATE_COVER_SHIFT) + /// The bitflag representing the APCs cover being missing for icon purposes. + #define UPSTATE_OPENED2 (APC_COVER_REMOVED << UPSTATE_COVER_SHIFT) + +// Bitflags: +/// The APC is broken or damaged. +#define UPSTATE_BROKE (1<<2) +/// The APC is undergoing maintenance. +#define UPSTATE_MAINT (1<<3) +/// The APCs wires are exposed. +#define UPSTATE_WIREEXP (1<<4) + +// update_overlay +// Bitflags: +/// Bitflag indicating that the APCs operating status overlay should be shown. +#define UPOVERLAY_OPERATING (1<<0) +/// Bitflag indicating that the APCs locked status overlay should be shown. +#define UPOVERLAY_LOCKED (1<<1) + +// Bitshifts: (If you change the status values to be something other than an int or able to exceed 3 you will need to change these too) +/// Bit shift for the charging status of the APC. +#define UPOVERLAY_CHARGING_SHIFT (2) +/// Bit shift for the equipment status of the APC. +#define UPOVERLAY_EQUIPMENT_SHIFT (4) +/// Bit shift for the lighting channel status of the APC. +#define UPOVERLAY_LIGHTING_SHIFT (6) +/// Bit shift for the environment channel status of the APC. +#define UPOVERLAY_ENVIRON_SHIFT (8) diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 21c86915870e5..e191e0c105442 100755 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -216,10 +216,32 @@ ///from base of atom/get_mechanics_info(): (/mob) #define COMSIG_ATOM_GET_MECHANICS_INFO "atom_mechanics_info" #define COMPONENT_MECHANICS_CHANGE (1<<0) -#define COMSIG_ATOM_UPDATE_ICON "atom_update_icon" //from base of atom/update_icon(): () - #define COMSIG_ATOM_NO_UPDATE_ICON_STATE (1<<0) - #define COMSIG_ATOM_NO_UPDATE_OVERLAYS (1<<1) -#define COMSIG_ATOM_UPDATE_OVERLAYS "atom_update_overlays" //from base of atom/update_overlays(): (list/new_overlays) + +///from base of [/atom/proc/update_appearance]: (updates) +#define COMSIG_ATOM_UPDATE_APPEARANCE "atom_update_appearance" + /// If returned from [COMSIG_ATOM_UPDATE_APPEARANCE] it prevents the atom from updating its name. + #define COMSIG_ATOM_NO_UPDATE_NAME UPDATE_NAME + /// If returned from [COMSIG_ATOM_UPDATE_APPEARANCE] it prevents the atom from updating its desc. + #define COMSIG_ATOM_NO_UPDATE_DESC UPDATE_DESC + /// If returned from [COMSIG_ATOM_UPDATE_APPEARANCE] it prevents the atom from updating its icon. + #define COMSIG_ATOM_NO_UPDATE_ICON UPDATE_ICON +///from base of [/atom/proc/update_name]: (updates) +#define COMSIG_ATOM_UPDATE_NAME "atom_update_name" +///from base of [/atom/proc/update_desc]: (updates) +#define COMSIG_ATOM_UPDATE_DESC "atom_update_desc" +///from base of [/atom/update_icon]: () +#define COMSIG_ATOM_UPDATE_ICON "atom_update_icon" + /// If returned from [COMSIG_ATOM_UPDATE_ICON] it prevents the atom from updating its icon state. + #define COMSIG_ATOM_NO_UPDATE_ICON_STATE UPDATE_ICON_STATE + /// If returned from [COMSIG_ATOM_UPDATE_ICON] it prevents the atom from updating its overlays. + #define COMSIG_ATOM_NO_UPDATE_OVERLAYS UPDATE_OVERLAYS +///from base of [atom/update_icon_state]: () +#define COMSIG_ATOM_UPDATE_ICON_STATE "atom_update_icon_state" +///from base of [/atom/update_overlays]: (list/new_overlays) +#define COMSIG_ATOM_UPDATE_OVERLAYS "atom_update_overlays" +///from base of [/atom/update_icon]: (signalOut, did_anything) +#define COMSIG_ATOM_UPDATED_ICON "atom_updated_icon" + #define COMSIG_ATOM_EX_ACT "atom_ex_act" //from base of atom/ex_act(): (severity, target) #define COMSIG_ATOM_SET_LIGHT "atom_set_light" //from base of atom/set_light(): (l_range, l_power, l_color) #define COMSIG_ATOM_BULLET_ACT "atom_bullet_act" //from base of atom/bullet_act(): (/obj/projectile) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 79addbd1b663b..3eff083c0eebc 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -24,3 +24,19 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define DF_USE_TAG (1<<0) #define DF_VAR_EDITED (1<<1) #define DF_ISPROCESSING (1<<2) + +// Update flags for [/atom/proc/update_appearance] +/// Update the atom's name +#define UPDATE_NAME (1<<0) +/// Update the atom's desc +#define UPDATE_DESC (1<<1) +/// Update the atom's icon state +#define UPDATE_ICON_STATE (1<<2) +/// Update the atom's overlays +#define UPDATE_OVERLAYS (1<<3) +/// Update the atom's icon +#define UPDATE_ICON (UPDATE_ICON_STATE|UPDATE_OVERLAYS) + +//alternate appearance flags +#define AA_TARGET_SEE_APPEARANCE (1<<0) +#define AA_MATCH_TARGET_OVERLAYS (1<<1) diff --git a/code/__DEFINES/machines.dm b/code/__DEFINES/machines.dm index 574fc8f03b125..e7fc83bf0b083 100644 --- a/code/__DEFINES/machines.dm +++ b/code/__DEFINES/machines.dm @@ -50,37 +50,6 @@ #define NSDIRFLIP(d) (d^(NORTH|SOUTH)) #define EWDIRFLIP(d) (d^(EAST|WEST)) -//update_state -#define UPSTATE_OPENED1 (1<<0) -#define UPSTATE_OPENED2 (1<<1) -#define UPSTATE_MAINT (1<<2) -#define UPSTATE_BROKE (1<<3) -#define UPSTATE_WIREEXP (1<<4) -#define UPSTATE_ALLGOOD (1<<5) - -//update_overlay -#define APC_UPOVERLAY_CHARGEING0 (1<<0) -#define APC_UPOVERLAY_CHARGEING1 (1<<1) -#define APC_UPOVERLAY_CHARGEING2 (1<<2) -#define APC_UPOVERLAY_EQUIPMENT0 (1<<3) -#define APC_UPOVERLAY_EQUIPMENT1 (1<<4) -#define APC_UPOVERLAY_EQUIPMENT2 (1<<5) -#define APC_UPOVERLAY_LIGHTING0 (1<<6) -#define APC_UPOVERLAY_LIGHTING1 (1<<7) -#define APC_UPOVERLAY_LIGHTING2 (1<<8) -#define APC_UPOVERLAY_ENVIRON0 (1<<9) -#define APC_UPOVERLAY_ENVIRON1 (1<<10) -#define APC_UPOVERLAY_ENVIRON2 (1<<11) -#define APC_UPOVERLAY_LOCKED (1<<12) -#define APC_UPOVERLAY_OPERATING (1<<13) -#define APC_UPOVERLAY_CELL_IN (1<<14) -#define APC_UPOVERLAY_BLUESCREEN (1<<15) - -#define APC_WIRE_IDSCAN (1<<0) -#define APC_WIRE_MAIN_POWER1 (1<<1) -#define APC_WIRE_MAIN_POWER2 (1<<2) -#define APC_WIRE_AI_CONTROL (1<<3) - #define MACHINE_NOT_ELECTRIFIED 0 #define MACHINE_ELECTRIFIED_PERMANENT -1 #define MACHINE_DEFAULT_ELECTRIFY_TIME 30 diff --git a/code/__DEFINES/overlays.dm b/code/__DEFINES/overlays.dm index a4488cea61936..b95a460168f19 100644 --- a/code/__DEFINES/overlays.dm +++ b/code/__DEFINES/overlays.dm @@ -15,7 +15,6 @@ /// Performs any operations that ought to run after an appearance change #define POST_OVERLAY_CHANGE(changed_on) \ - /* TODO port alternate appearances already if(alternate_appearances) { \ for(var/I in changed_on.alternate_appearances){\ var/datum/atom_hud/alternate_appearance/AA = changed_on.alternate_appearances[I];\ @@ -24,4 +23,3 @@ }\ } \ } - */ diff --git a/code/__DEFINES/stat_tracking.dm b/code/__DEFINES/stat_tracking.dm index d7d207469d8dd..f0635c95529e9 100644 --- a/code/__DEFINES/stat_tracking.dm +++ b/code/__DEFINES/stat_tracking.dm @@ -8,10 +8,7 @@ #define STAT_LOG_ENTRY(entrylist, entryname) \ var/list/STAT_ENTRY = entrylist[entryname] || (entrylist[entryname] = new /list(STAT_ENTRY_LENGTH));\ STAT_ENTRY[STAT_ENTRY_TIME] += STAT_TIME;\ - var/STAT_INCR_AMOUNT = min(1, 2**round((STAT_ENTRY[STAT_ENTRY_COUNT] || 0)/SHORT_REAL_LIMIT));\ - if (STAT_INCR_AMOUNT == 1 || prob(100/STAT_INCR_AMOUNT)) {\ - STAT_ENTRY[STAT_ENTRY_COUNT] += STAT_INCR_AMOUNT;\ - };\ + STAT_ENTRY[STAT_ENTRY_COUNT] += 1; diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 6614070d100cd..9f74d5100fad3 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -303,30 +303,13 @@ GLOBAL_LIST_INIT(bitfields, list( "HAND_RIGHT" = HAND_RIGHT ), "update_overlay" = list( - "APC_UPOVERLAY_CHARGEING0" = APC_UPOVERLAY_CHARGEING0, - "APC_UPOVERLAY_CHARGEING1" = APC_UPOVERLAY_CHARGEING1, - "APC_UPOVERLAY_CHARGEING2" = APC_UPOVERLAY_CHARGEING2, - "APC_UPOVERLAY_EQUIPMENT0" = APC_UPOVERLAY_EQUIPMENT0, - "APC_UPOVERLAY_EQUIPMENT1" = APC_UPOVERLAY_EQUIPMENT1, - "APC_UPOVERLAY_EQUIPMENT2" = APC_UPOVERLAY_EQUIPMENT2, - "APC_UPOVERLAY_LIGHTING0" = APC_UPOVERLAY_LIGHTING0, - "APC_UPOVERLAY_LIGHTING1" = APC_UPOVERLAY_LIGHTING1, - "APC_UPOVERLAY_LIGHTING2" = APC_UPOVERLAY_LIGHTING2, - "APC_UPOVERLAY_ENVIRON0" = APC_UPOVERLAY_ENVIRON0, - "APC_UPOVERLAY_ENVIRON1" = APC_UPOVERLAY_ENVIRON1, - "APC_UPOVERLAY_ENVIRON2" = APC_UPOVERLAY_ENVIRON2, - "APC_UPOVERLAY_LOCKED" = APC_UPOVERLAY_LOCKED, - "APC_UPOVERLAY_OPERATING" = APC_UPOVERLAY_OPERATING, - "APC_UPOVERLAY_CELL_IN" = APC_UPOVERLAY_CELL_IN, - "APC_UPOVERLAY_BLUESCREEN" = APC_UPOVERLAY_BLUESCREEN + "UPOVERLAY_OPERATING" = UPOVERLAY_OPERATING, + "UPOVERLAY_LOCKED" = UPOVERLAY_LOCKED, ), "update_state" = list( - "UPSTATE_OPENED1" = UPSTATE_OPENED1, - "UPSTATE_OPENED2" = UPSTATE_OPENED2, - "UPSTATE_MAINT" = UPSTATE_MAINT, "UPSTATE_BROKE" = UPSTATE_BROKE, + "UPSTATE_MAINT" = UPSTATE_MAINT, "UPSTATE_WIREEXP" = UPSTATE_WIREEXP, - "UPSTATE_ALLGOOD" = UPSTATE_ALLGOOD ), "apcwires" = list( "APC_WIRE_IDSCAN" = APC_WIRE_IDSCAN, diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index 5fc9a0f45859b..5d5a7c13f2f83 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -29,6 +29,7 @@ GLOBAL_LIST_EMPTY(mob_living_list) //all instances of /mob/living and subtype GLOBAL_LIST_EMPTY(alive_living_list) //all alive /mob/living, including clientless. GLOBAL_LIST_EMPTY(offered_mob_list) //all /mobs offered by admins GLOBAL_LIST_EMPTY(ai_list) +GLOBAL_LIST_EMPTY(silicon_mobs) //all silicon mobs GLOBAL_LIST_INIT(simple_animals, list(list(),list(),list(),list())) // One for each AI_* status define GLOBAL_LIST_EMPTY(living_cameras) GLOBAL_LIST_EMPTY(aiEyes) diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 900722563b447..2a46774ad3558 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -137,7 +137,7 @@ pull_icon = new /atom/movable/screen/pull(null, src) pull_icon.icon = ui_style - pull_icon.update_icon(owner) + pull_icon.update_icon() hotkeybuttons += pull_icon if(hud_data.has_warnings) diff --git a/code/_onclick/hud/screen_objects/screen_objects.dm b/code/_onclick/hud/screen_objects/screen_objects.dm index 1ba9d5b06e04b..5bf6ced563500 100644 --- a/code/_onclick/hud/screen_objects/screen_objects.dm +++ b/code/_onclick/hud/screen_objects/screen_objects.dm @@ -185,6 +185,7 @@ /atom/movable/screen/mov_intent/update_icon_state() + . = ..() if(!hud?.mymob) return @@ -210,6 +211,7 @@ L.lay_down() /atom/movable/screen/rest/update_icon_state() + . = ..() if(!isliving(hud?.mymob)) return var/mob/living/L = hud?.mymob @@ -229,6 +231,7 @@ /atom/movable/screen/pull/update_icon_state() + . = ..() if(!hud?.mymob) return if(hud.mymob.pulling) @@ -422,6 +425,7 @@ mouse_opacity = MOUSE_OPACITY_ICON /atom/movable/screen/stamina_hud/update_icon_state() + . = ..() if(!ishuman(hud?.mymob)) return var/mob/living/carbon/human/mymob_human = hud.mymob @@ -529,6 +533,7 @@ screen_loc = ui_temp /atom/movable/screen/bodytemp/update_icon_state() + . = ..() if(!ishuman(hud?.mymob)) return var/mob/living/carbon/human/human_mymob = hud.mymob @@ -590,6 +595,7 @@ screen_loc = ui_oxygen /atom/movable/screen/oxygen/update_icon_state() + . = ..() if(!ishuman(hud?.mymob)) return var/mob/living/carbon/human/human_mymob = hud.mymob @@ -604,6 +610,7 @@ screen_loc = ui_toxin /atom/movable/screen/toxin/update_icon_state() + . = ..() if(!ishuman(hud?.mymob)) return var/mob/living/carbon/human/human_mymob = hud.mymob @@ -618,6 +625,7 @@ screen_loc = ui_pressure /atom/movable/screen/pressure/update_icon_state() + . = ..() if(!ishuman(hud?.mymob)) return var/mob/living/carbon/human/human_mymob = hud.mymob @@ -629,6 +637,7 @@ screen_loc = ui_nutrition /atom/movable/screen/nutrition/update_icon_state() + . = ..() if(!ishuman(hud?.mymob)) return var/mob/living/carbon/human/human_mymob = hud.mymob @@ -648,6 +657,7 @@ screen_loc = ui_fire /atom/movable/screen/fire/update_icon_state() + . = ..() if(!ishuman(hud?.mymob)) return var/mob/living/carbon/human/human_mymob = hud.mymob diff --git a/code/_onclick/hud/xeno/xeno.dm b/code/_onclick/hud/xeno/xeno.dm index 4019123c07976..4380d1f191772 100644 --- a/code/_onclick/hud/xeno/xeno.dm +++ b/code/_onclick/hud/xeno/xeno.dm @@ -129,7 +129,7 @@ hotkeybuttons += pull_icon zone_sel = new /atom/movable/screen/zone_sel/alien(null, src) - zone_sel.update_icon(owner) + zone_sel.update_icon() static_inventory += zone_sel /datum/hud/alien/persistent_inventory_update() diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 84cb76ea4514d..94bae47b3ae32 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -206,16 +206,15 @@ Redefine as needed. return new /obj/effect/temp_visual/telekinesis(get_turf(focus)) - -/obj/item/tk_grab/update_icon() - cut_overlays() +/obj/item/tk_grab/update_overlays() + . = ..() if(!focus) return var/old_layer = focus.layer var/old_plane = focus.plane focus.layer = layer+0.01 focus.plane = ABOVE_HUD_PLANE - add_overlay(focus) //this is kind of ick, but it's better than using icon() + . += focus focus.layer = old_layer focus.plane = old_plane diff --git a/code/controllers/subsystem/vis_overlays.dm b/code/controllers/subsystem/vis_overlays.dm new file mode 100644 index 0000000000000..1afe1c62100c8 --- /dev/null +++ b/code/controllers/subsystem/vis_overlays.dm @@ -0,0 +1,77 @@ +SUBSYSTEM_DEF(vis_overlays) + name = "Vis contents overlays" + wait = 1 MINUTES + priority = FIRE_PRIORITY_VIS + init_order = INIT_ORDER_VIS + + var/list/vis_overlay_cache + var/list/currentrun + +/datum/controller/subsystem/vis_overlays/Initialize() + vis_overlay_cache = list() + return SS_INIT_SUCCESS + +/datum/controller/subsystem/vis_overlays/fire(resumed = FALSE) + if(!resumed) + currentrun = vis_overlay_cache.Copy() + var/list/current_run = currentrun + + while(current_run.len) + var/key = current_run[current_run.len] + var/obj/effect/overlay/vis/overlay = current_run[key] + current_run.len-- + if(!overlay.unused && !length(overlay.vis_locs)) + overlay.unused = world.time + else if(overlay.unused && overlay.unused + overlay.cache_expiration < world.time) + vis_overlay_cache -= key + qdel(overlay) + if(MC_TICK_CHECK) + return + +//the "thing" var can be anything with vis_contents which includes images - in the future someone should totally allow vis overlays to be passed in as an arg instead of all this bullshit +/datum/controller/subsystem/vis_overlays/proc/add_vis_overlay(atom/movable/thing, icon, iconstate, layer, plane, dir, alpha = 255, add_appearance_flags = NONE, unique = FALSE) + var/obj/effect/overlay/vis/overlay + if(!unique) + . = "[icon]|[iconstate]|[layer]|[plane]|[dir]|[alpha]|[add_appearance_flags]" + overlay = vis_overlay_cache[.] + if(!overlay) + overlay = _create_new_vis_overlay(icon, iconstate, layer, plane, dir, alpha, add_appearance_flags) + vis_overlay_cache[.] = overlay + else + overlay.unused = 0 + else + overlay = _create_new_vis_overlay(icon, iconstate, layer, plane, dir, alpha, add_appearance_flags) + overlay.cache_expiration = -1 + var/cache_id = "[text_ref(overlay)]@{[world.time]}" + vis_overlay_cache[cache_id] = overlay + . = overlay + thing.vis_contents += overlay + + if(!isatom(thing)) // Automatic rotation is not supported on non atoms + return overlay + + if(!thing.managed_vis_overlays) + thing.managed_vis_overlays = list(overlay) + else + thing.managed_vis_overlays += overlay + return overlay + +/datum/controller/subsystem/vis_overlays/proc/_create_new_vis_overlay(icon, iconstate, layer, plane, dir, alpha, add_appearance_flags) + var/obj/effect/overlay/vis/overlay = new + overlay.icon = icon + overlay.icon_state = iconstate + overlay.layer = layer + overlay.plane = plane + overlay.dir = dir + overlay.alpha = alpha + overlay.appearance_flags |= add_appearance_flags + return overlay + + +/datum/controller/subsystem/vis_overlays/proc/remove_vis_overlay(atom/movable/thing, list/overlays) + thing.vis_contents -= overlays + if(!isatom(thing)) + return + thing.managed_vis_overlays -= overlays + if(!length(thing.managed_vis_overlays)) + thing.managed_vis_overlays = null diff --git a/code/datums/callback.dm b/code/datums/callback.dm index ef07f58412000..af8ec8de82e76 100644 --- a/code/datums/callback.dm +++ b/code/datums/callback.dm @@ -231,5 +231,3 @@ else datum.vars[var_name] = var_value -/proc/___callbacknew(typepath, arguments) - new typepath(arglist(arguments)) diff --git a/code/datums/components/deployable_item.dm b/code/datums/components/deployable_item.dm index b811cc176ef6b..daeb48b80d428 100644 --- a/code/datums/components/deployable_item.dm +++ b/code/datums/components/deployable_item.dm @@ -110,7 +110,7 @@ if(item_to_deploy?.reagents?.total_volume) item_to_deploy.reagents.trans_to(deployed_machine, item_to_deploy.reagents.total_volume) - deployed_machine.update_icon_state() + deployed_machine.update_appearance() if(user) item_to_deploy.balloon_alert(user, "Deployed!") @@ -167,4 +167,4 @@ deployed_machine.clear_internal_item() QDEL_NULL(deployed_machine) - undeployed_item.update_icon_state() + undeployed_item.update_appearance() diff --git a/code/datums/gamemodes/campaign/missions/base_rescue.dm b/code/datums/gamemodes/campaign/missions/base_rescue.dm index a714503ceef18..bf8b4a1309f9b 100644 --- a/code/datums/gamemodes/campaign/missions/base_rescue.dm +++ b/code/datums/gamemodes/campaign/missions/base_rescue.dm @@ -141,6 +141,7 @@ return ..() /obj/structure/weapon_x_pod/update_icon_state() + . = ..() if(occupant) icon_state = initial(icon_state) else diff --git a/code/game/alternate_appearance.dm b/code/game/alternate_appearance.dm new file mode 100644 index 0000000000000..2e66443154b9b --- /dev/null +++ b/code/game/alternate_appearance.dm @@ -0,0 +1,134 @@ +GLOBAL_LIST_EMPTY(active_alternate_appearances) + +/atom/proc/remove_alt_appearance(key) + if(alternate_appearances) + for(var/K in alternate_appearances) + var/datum/atom_hud/alternate_appearance/AA = alternate_appearances[K] + if(AA.appearance_key == key) + AA.remove_from_hud(src) + break + +/atom/proc/add_alt_appearance(type, key, ...) + if(!type || !key) + return + if(alternate_appearances && alternate_appearances[key]) + return + if(!ispath(type, /datum/atom_hud/alternate_appearance)) + CRASH("Invalid type passed in: [type]") + var/list/arguments = args.Copy(2) + return new type(arglist(arguments)) + +/datum/atom_hud/alternate_appearance + var/appearance_key + var/transfer_overlays = FALSE + +/datum/atom_hud/alternate_appearance/New(key) + ..() + GLOB.active_alternate_appearances += src + appearance_key = key + + for(var/mob AS in GLOB.player_list) + if(mobShouldSee(mob)) + add_hud_to(mob) + +/datum/atom_hud/alternate_appearance/Destroy() + GLOB.active_alternate_appearances -= src + return ..() + +/datum/atom_hud/alternate_appearance/proc/onNewMob(mob/M) + if(mobShouldSee(M)) + add_hud_to(M) + +/datum/atom_hud/alternate_appearance/proc/mobShouldSee(mob/M) + return FALSE + +/datum/atom_hud/alternate_appearance/add_to_hud(atom/A, image/I) + . = ..() + if(.) + LAZYINITLIST(A.alternate_appearances) + A.alternate_appearances[appearance_key] = src + +/datum/atom_hud/alternate_appearance/remove_from_hud(atom/A) + . = ..() + if(.) + LAZYREMOVE(A.alternate_appearances, appearance_key) + +/datum/atom_hud/alternate_appearance/proc/copy_overlays(atom/other, cut_old) + return + +//an alternate appearance that attaches a single image to a single atom +/datum/atom_hud/alternate_appearance/basic + var/atom/target + var/image/image + var/add_ghost_version = FALSE + var/ghost_appearance + +/datum/atom_hud/alternate_appearance/basic/New(key, image/I, options = AA_TARGET_SEE_APPEARANCE) + ..() + transfer_overlays = options & AA_MATCH_TARGET_OVERLAYS + image = I + target = I.loc + if(transfer_overlays) + I.copy_overlays(target) + + hud_icons = list(appearance_key) + add_to_hud(target, I) + if((options & AA_TARGET_SEE_APPEARANCE) && ismob(target)) + add_hud_to(target) + if(add_ghost_version) + var/image/ghost_image = image(icon = I.icon , icon_state = I.icon_state, loc = I.loc) + ghost_image.override = FALSE + ghost_image.alpha = 128 + ghost_appearance = new /datum/atom_hud/alternate_appearance/basic/observers(key + "_observer", ghost_image, NONE) + +/datum/atom_hud/alternate_appearance/basic/Destroy() + . = ..() + QDEL_NULL(image) + target = null + if(ghost_appearance) + QDEL_NULL(ghost_appearance) + +/datum/atom_hud/alternate_appearance/basic/add_to_hud(atom/A) + LAZYINITLIST(A.hud_list) + A.hud_list[appearance_key] = image + . = ..() + +/datum/atom_hud/alternate_appearance/basic/remove_from_hud(atom/A) + . = ..() + A.hud_list -= appearance_key + if(. && !QDELETED(src)) + qdel(src) + +/datum/atom_hud/alternate_appearance/basic/copy_overlays(atom/other, cut_old) + image.copy_overlays(other, cut_old) + +/datum/atom_hud/alternate_appearance/basic/everyone + add_ghost_version = TRUE + +/datum/atom_hud/alternate_appearance/basic/everyone/mobShouldSee(mob/M) + return !isdead(M) + +/datum/atom_hud/alternate_appearance/basic/silicons + +/datum/atom_hud/alternate_appearance/basic/silicons/mobShouldSee(mob/M) + if(issilicon(M)) + return TRUE + return FALSE + +/datum/atom_hud/alternate_appearance/basic/observers + add_ghost_version = FALSE //just in case, to prevent infinite loops + +/datum/atom_hud/alternate_appearance/basic/observers/mobShouldSee(mob/M) + return isobserver(M) + +/datum/atom_hud/alternate_appearance/basic/one_person + var/mob/seer + +/datum/atom_hud/alternate_appearance/basic/one_person/mobShouldSee(mob/M) + if(M == seer) + return TRUE + return FALSE + +/datum/atom_hud/alternate_appearance/basic/one_person/New(key, image/I, mob/living/M) + ..(key, I, FALSE) + seer = M diff --git a/code/game/area/area.dm b/code/game/area/area.dm index 78637fd5e7b49..2b5d739fc46ad 100644 --- a/code/game/area/area.dm +++ b/code/game/area/area.dm @@ -238,16 +238,23 @@ a.cancelAlarm("Fire", src, src) -/area/update_icon() +/area/update_icon_state() + . = ..() var/I //More important == bottom. Fire normally takes priority over everything. if(flags_alarm_state && (!requires_power || power_environ)) //It either doesn't require power or the environment is powered. And there is an alarm. - if(flags_alarm_state & ALARM_WARNING_READY) I = "alarm_ready" //Area is ready for something. - if(flags_alarm_state & ALARM_WARNING_EVAC) I = "alarm_evac" //Evacuation happening. - if(flags_alarm_state & ALARM_WARNING_ATMOS) I = "alarm_atmos" //Atmos breach. - if(flags_alarm_state & ALARM_WARNING_FIRE) I = "alarm_fire" //Fire happening. - if(flags_alarm_state & ALARM_WARNING_DOWN) I = "alarm_down" //Area is shut down. - - if(icon_state != I) icon_state = I //If the icon state changed, change it. Otherwise do nothing. + if(flags_alarm_state & ALARM_WARNING_READY) + I = "alarm_ready" //Area is ready for something. + if(flags_alarm_state & ALARM_WARNING_EVAC) + I = "alarm_evac" //Evacuation happening. + if(flags_alarm_state & ALARM_WARNING_ATMOS) + I = "alarm_atmos" //Atmos breach. + if(flags_alarm_state & ALARM_WARNING_FIRE) + I = "alarm_fire" //Fire happening. + if(flags_alarm_state & ALARM_WARNING_DOWN) + I = "alarm_down" //Area is shut down. + + if(icon_state != I) + icon_state = I //If the icon state changed, change it. Otherwise do nothing. /area/proc/powered(chan) diff --git a/code/game/atoms.dm b/code/game/atoms/_atom.dm similarity index 97% rename from code/game/atoms.dm rename to code/game/atoms/_atom.dm index 94100ce3dbabc..202bd4ee4972f 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms/_atom.dm @@ -39,9 +39,6 @@ ///How much does this atom block the explosion's shock wave. var/explosion_block = 0 - ///overlays managed by update_overlays() to prevent removing overlays that weren't added by the same proc - var/list/managed_overlays - var/datum/component/orbiter/orbiters var/datum/proximity_monitor/proximity_monitor @@ -122,6 +119,11 @@ ///Cooldown for telling someone they're buckled COOLDOWN_DECLARE(buckle_message_cooldown) + ///vis overlays managed by SSvis_overlays to automaticaly turn them like other overlays. + var/list/managed_vis_overlays + ///The list of alternate appearances for this atom + var/list/alternate_appearances + /* We actually care what this returns, since it can return different directives. Not specifically here, but in other variations of this. As a general safety, @@ -142,6 +144,11 @@ directive is properly returned. if(isturf(loc)) loc.fingerprints = fingerprints + if(alternate_appearances) + for(var/K in alternate_appearances) + var/datum/atom_hud/alternate_appearance/AA = alternate_appearances[K] + AA.remove_from_hud(src) + return ..() //=========================================================================== @@ -356,32 +363,6 @@ directive is properly returned. SEND_SIGNAL(src, COMSIG_ATOM_EXAMINE, user, .) - -/// Updates the icon of the atom -/atom/proc/update_icon() - var/signalOut = SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_ICON) - - if(!(signalOut & COMSIG_ATOM_NO_UPDATE_ICON_STATE)) - update_icon_state() - - if(!(signalOut & COMSIG_ATOM_NO_UPDATE_OVERLAYS)) - var/list/new_overlays = update_overlays() - if(managed_overlays) - cut_overlay(managed_overlays) - managed_overlays = null - if(length(new_overlays)) - managed_overlays = new_overlays - add_overlay(new_overlays) - -/// Updates the icon state of the atom -/atom/proc/update_icon_state() - -/// Updates the overlays of the atom -/atom/proc/update_overlays() - SHOULD_CALL_PARENT(TRUE) - . = list() - SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_OVERLAYS, .) - /// Checks if the colors given are different and if so causes a greyscale icon update /// The colors argument can be either a list or the full color string /atom/proc/set_greyscale_colors(list/colors, update=TRUE) @@ -1009,9 +990,14 @@ directive is properly returned. /atom/proc/prepare_huds() hud_list = new for(var/hud in hud_possible) //Providing huds. - var/image/new_hud = image('icons/mob/hud.dmi', src, "") - new_hud.appearance_flags = KEEP_APART - hud_list[hud] = new_hud + var/hint = hud_possible[hud] + switch(hint) + if(HUD_LIST_LIST) + hud_list[hud] = list() + else + var/image/I = image('icons/mob/hud.dmi', src, "") + I.appearance_flags = RESET_COLOR|RESET_TRANSFORM + hud_list[hud] = I /** * If this object has lights, turn it on/off. diff --git a/code/game/atoms/atom_appearance.dm b/code/game/atoms/atom_appearance.dm new file mode 100644 index 0000000000000..76a8268a932a1 --- /dev/null +++ b/code/game/atoms/atom_appearance.dm @@ -0,0 +1,112 @@ +/atom + ///overlays managed by [update_overlays][/atom/proc/update_overlays] to prevent removing overlays that weren't added by the same proc. Single items are stored on their own, not in a list. + var/list/managed_overlays + +/** + * Updates the appearence of the icon + * + * Mostly delegates to update_name, update_desc, and update_icon + * + * Arguments: + * - updates: A set of bitflags dictating what should be updated. Defaults to [ALL] + */ +/atom/proc/update_appearance(updates=ALL) + SHOULD_NOT_SLEEP(TRUE) + SHOULD_CALL_PARENT(TRUE) + + . = NONE + updates &= ~SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_APPEARANCE, updates) + if(updates & UPDATE_NAME) + . |= update_name(updates) + if(updates & UPDATE_DESC) + . |= update_desc(updates) + if(updates & UPDATE_ICON) + . |= update_icon(updates) + +/// Updates the name of the atom +/atom/proc/update_name(updates=ALL) + SHOULD_CALL_PARENT(TRUE) + return SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_NAME, updates) + +/// Updates the description of the atom +/atom/proc/update_desc(updates=ALL) + SHOULD_CALL_PARENT(TRUE) + return SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_DESC, updates) + +/// Updates the icon of the atom +/atom/proc/update_icon(updates=ALL) + SHOULD_CALL_PARENT(TRUE) + + . = NONE + updates &= ~SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_ICON, updates) + if(updates & UPDATE_ICON_STATE) + SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_ICON_STATE) + update_icon_state() + . |= UPDATE_ICON_STATE + + if(updates & UPDATE_OVERLAYS) + if(LAZYLEN(managed_vis_overlays)) + SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays) + + var/list/new_overlays = update_overlays(updates) + var/nulls = 0 + for(var/i in 1 to length(new_overlays)) + var/atom/maybe_not_an_atom = new_overlays[i] + if(isnull(maybe_not_an_atom)) + nulls++ + continue + if(istext(maybe_not_an_atom) || isicon(maybe_not_an_atom)) + continue + new_overlays[i] = maybe_not_an_atom.appearance + if(nulls) + for(var/i in 1 to nulls) + new_overlays -= null + + var/identical = FALSE + var/new_length = length(new_overlays) + if(!managed_overlays && !new_length) + identical = TRUE + else if(!islist(managed_overlays)) + if(new_length == 1 && managed_overlays == new_overlays[1]) + identical = TRUE + else if(length(managed_overlays) == new_length) + identical = TRUE + for(var/i in 1 to length(managed_overlays)) + if(managed_overlays[i] != new_overlays[i]) + identical = FALSE + break + + if(!identical) + var/full_control = FALSE + if(managed_overlays) + full_control = length(overlays) == (islist(managed_overlays) ? length(managed_overlays) : 1) + if(full_control) + overlays = null + else + cut_overlay(managed_overlays) + + switch(length(new_overlays)) + if(0) + if(full_control) + POST_OVERLAY_CHANGE(src) + managed_overlays = null + if(1) + add_overlay(new_overlays) + managed_overlays = new_overlays[1] + else + add_overlay(new_overlays) + managed_overlays = new_overlays + + . |= UPDATE_OVERLAYS + + . |= SEND_SIGNAL(src, COMSIG_ATOM_UPDATED_ICON, updates, .) + +/// Updates the icon state of the atom +/atom/proc/update_icon_state() + + +/// Updates the overlays of the atom +/atom/proc/update_overlays() + SHOULD_CALL_PARENT(TRUE) + . = list() + SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_OVERLAYS, .) diff --git a/code/game/atoms_movable.dm b/code/game/atoms/atom_movable.dm similarity index 100% rename from code/game/atoms_movable.dm rename to code/game/atoms/atom_movable.dm diff --git a/code/game/objects/effects/decals/Cleanable/aliens.dm b/code/game/objects/effects/decals/Cleanable/aliens.dm index b5af9a359fdf3..4fe964eb2a049 100644 --- a/code/game/objects/effects/decals/Cleanable/aliens.dm +++ b/code/game/objects/effects/decals/Cleanable/aliens.dm @@ -16,9 +16,6 @@ basecolor = "#dffc00" amount = 0 -/obj/effect/decal/cleanable/blood/gibs/xeno/update_icon() - color = "#FFFFFF" - /obj/effect/decal/cleanable/blood/gibs/xeno/up random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1") diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index 66b9dc56228f7..322fc0fecf9ea 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -46,9 +46,8 @@ deltimer(drying_timer) return ..() - -/obj/effect/decal/cleanable/blood/update_icon() - if(basecolor == "rainbow") basecolor = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" +/obj/effect/decal/cleanable/blood/update_icon_state() + . = ..() color = basecolor /obj/effect/decal/cleanable/blood/proc/on_cross(datum/source, mob/living/carbon/human/perp, oldloc, oldlocs) @@ -168,20 +167,22 @@ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") var/fleshcolor = "#FFC896" -/obj/effect/decal/cleanable/blood/gibs/update_icon() - - var/image/giblets = new(base_icon, "[icon_state]_flesh", dir) - if(!fleshcolor || fleshcolor == "rainbow") +/obj/effect/decal/cleanable/blood/gibs/update_icon_state() + . = ..() + if(!fleshcolor) fleshcolor = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" - giblets.color = fleshcolor - var/icon/blood = new(base_icon,"[icon_state]",dir) - if(basecolor == "rainbow") basecolor = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" - blood.Blend(basecolor,ICON_MULTIPLY) + if(basecolor == "rainbow") + basecolor = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" + blood.Blend(basecolor, ICON_MULTIPLY) icon = blood - overlays.Cut() - overlays += giblets + +/obj/effect/decal/cleanable/blood/gibs/update_overlays() + . = ..() + var/image/giblets = new(base_icon, "[icon_state]_flesh", dir) + giblets.color = fleshcolor + . += giblets /obj/effect/decal/cleanable/blood/gibs/up random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") diff --git a/code/game/objects/effects/decals/Cleanable/robots.dm b/code/game/objects/effects/decals/Cleanable/robots.dm index d2a1b539f7870..1f8fa7aafd19e 100644 --- a/code/game/objects/effects/decals/Cleanable/robots.dm +++ b/code/game/objects/effects/decals/Cleanable/robots.dm @@ -6,9 +6,6 @@ basecolor="#030303" random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7") -/obj/effect/decal/cleanable/blood/gibs/robot/update_icon() - color = "#FFFFFF" - /obj/effect/decal/cleanable/blood/gibs/robot/dry() //pieces of robots do not dry up like return diff --git a/code/game/objects/effects/decals/Cleanable/tracks.dm b/code/game/objects/effects/decals/Cleanable/tracks.dm index 624fbcf6a50c6..5f71d971b94b7 100644 --- a/code/game/objects/effects/decals/Cleanable/tracks.dm +++ b/code/game/objects/effects/decals/Cleanable/tracks.dm @@ -116,9 +116,8 @@ if(updated) update_icon() -/obj/effect/decal/cleanable/blood/tracks/update_icon() - overlays.Cut() - color = "#FFFFFF" +/obj/effect/decal/cleanable/blood/tracks/update_overlays() + . = ..() var/truedir=0 // Update ONLY the overlays that have changed. @@ -131,14 +130,14 @@ truedir=truedir>>4 if(track.overlay) - track.overlay=null + track.overlay=null //todo, not handling track overlays properly. fuck this shitcode. var/image/I = image(icon, icon_state=state, dir=num2dir(truedir)) I.color = track.basecolor track.fresh=0 track.overlay=I stack[stack_idx]=track - overlays += I + . += I updatedtracks=0 // Clear our memory of updated tracks. /obj/effect/decal/cleanable/blood/tracks/footprints diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index 40c7a0b7fc0c2..cfb06dbc71570 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -390,3 +390,12 @@ icon_state = "spooky" pixel_x = 16 pixel_y = 16 + +/obj/effect/overlay/vis + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + anchored = TRUE + vis_flags = VIS_INHERIT_DIR + /// When detected to be unused it gets set to world.time, after a while it gets removed + var/unused = 0 + /// Overlays which go unused for 2 minutes get cleaned up + var/cache_expiration = 2 MINUTES diff --git a/code/game/objects/effects/weeds.dm b/code/game/objects/effects/weeds.dm index 06f65bec05fb4..85a02ae1acdae 100644 --- a/code/game/objects/effects/weeds.dm +++ b/code/game/objects/effects/weeds.dm @@ -185,6 +185,7 @@ icon_state = "weedwall" /obj/alien/weeds/weedwall/update_icon_state() + . = ..() var/turf/closed/wall/W = loc if(!istype(W)) icon_state = initial(icon_state) @@ -203,6 +204,7 @@ var/window_type = /obj/structure/window/framed /obj/alien/weeds/weedwall/window/update_icon_state() + . = ..() var/obj/structure/window/framed/F = locate() in loc icon_state = F?.smoothing_junction ? "weedwall-[F.smoothing_junction]" : initial(icon_state) if(color_variant == STICKY_COLOR) diff --git a/code/game/objects/items/ashtray.dm b/code/game/objects/items/ashtray.dm index 1304a5f2dd228..cfbe8f24f16a4 100644 --- a/code/game/objects/items/ashtray.dm +++ b/code/game/objects/items/ashtray.dm @@ -43,22 +43,29 @@ AM.forceMove(loc) return ..() - -/obj/item/ashtray/update_icon() +/obj/item/ashtray/update_desc(updates) + . = ..() if(length(contents) >= max_butts) - icon_state = icon_full desc = empty_desc + " It's stuffed full." return if(length(contents) >= max_butts / 2) - icon_state = icon_half desc = empty_desc + " It's half-filled." return - icon_state = icon_empty desc = empty_desc +/obj/item/ashtray/update_icon_state() + . = ..() + if(length(contents) >= max_butts) + icon_state = icon_full + return + + if(length(contents) >= max_butts / 2) + icon_state = icon_half + return + icon_state = icon_empty /obj/item/ashtray/plastic name = "plastic ashtray" diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index d0b930b3f098d..1988eb6ab1c4e 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -68,6 +68,8 @@ var/obj/item/bodybag/foldedbag_instance = null var/obj/structure/bed/roller/roller_buckled //the roller bed this bodybag is attached to. var/mob/living/bodybag_occupant + ///Should the name of the person inside be displayed? + var/display_name = TRUE /obj/structure/closet/bodybag/Initialize(mapload, foldedbag) @@ -94,7 +96,10 @@ return ..() -/obj/structure/closet/bodybag/proc/update_name() +/obj/structure/closet/bodybag/update_name(updates) + . = ..() + if(!display_name) + return if(opened) name = bag_name else @@ -145,7 +150,7 @@ var/mob/living/carbon/human/new_guest = locate() in contents if(new_guest) bodybag_occupant = new_guest - update_name() + update_appearance() return TRUE return FALSE @@ -154,7 +159,7 @@ . = ..() if(bodybag_occupant) bodybag_occupant = null - update_name() + update_appearance() /obj/structure/closet/bodybag/MouseDrop(over_object, src_location, over_location) @@ -188,7 +193,8 @@ return ..() -/obj/structure/closet/bodybag/update_icon() +/obj/structure/closet/bodybag/update_icon_state() + . = ..() if(!opened) icon_state = icon_closed for(var/mob/living/L in contents) @@ -416,6 +422,7 @@ close_sound = 'sound/effects/vegetation_walk_2.ogg' foldedbag_path = /obj/item/bodybag/tarp closet_stun_delay = 0.5 SECONDS //Short delay to prevent ambushes from being too degenerate. + display_name = FALSE var/serial_number //Randomized serial number used to stop point macros and such. @@ -453,11 +460,6 @@ SIGNAL_HANDLER open() - -/obj/structure/closet/bodybag/tarp/update_name() - return //Shouldn't be revealing who's inside. - - /obj/structure/closet/bodybag/tarp/MouseDrop(over_object, src_location, over_location) . = ..() var/obj/item/bodybag/tarp/folded_tarp = foldedbag_instance diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 20d76f7755751..b669708f6bd95 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -251,6 +251,7 @@ var/dogtag_taken = FALSE /obj/item/card/id/dogtag/update_icon_state() + . = ..() if(dogtag_taken) icon_state = initial(icon_state) + "_taken" return diff --git a/code/game/objects/items/cocoon.dm b/code/game/objects/items/cocoon.dm index 5b3c17fd48164..c6b7d5f5d26a9 100644 --- a/code/game/objects/items/cocoon.dm +++ b/code/game/objects/items/cocoon.dm @@ -116,6 +116,7 @@ return ..() /obj/structure/cocoon/update_icon_state() + . = ..() if(anchored) icon_state = "xeno_cocoon" return diff --git a/code/game/objects/items/defibrillator.dm b/code/game/objects/items/defibrillator.dm index 1ad171ca5e315..5df3ef3a7017f 100644 --- a/code/game/objects/items/defibrillator.dm +++ b/code/game/objects/items/defibrillator.dm @@ -44,6 +44,7 @@ /obj/item/defibrillator/update_icon_state() + . = ..() icon_state = "defib" if(ready) icon_state += "_out" @@ -368,5 +369,4 @@ defibrillate(target, user) /obj/item/defibrillator/gloves/update_icon_state() - return - + return //The parent has some behaviour we don't want diff --git a/code/game/objects/items/explosives/mine.dm b/code/game/objects/items/explosives/mine.dm index 077eb43d7b7ab..f33393fb05c55 100644 --- a/code/game/objects/items/explosives/mine.dm +++ b/code/game/objects/items/explosives/mine.dm @@ -42,7 +42,8 @@ Stepping directly on the mine will also blow it up return ..() /// Update the icon, adding "_armed" if appropriate to the icon_state. -/obj/item/explosive/mine/update_icon() +/obj/item/explosive/mine/update_icon_state() + . = ..() icon_state = "[initial(icon_state)][armed ? "_armed" : ""]" /// On explosion mines trigger their own explosion, assuming there were not deleted straight away (larger explosions or probability) diff --git a/code/game/objects/items/explosives/plastique.dm b/code/game/objects/items/explosives/plastique.dm index 83e4a887e2f3d..55625676be858 100644 --- a/code/game/objects/items/explosives/plastique.dm +++ b/code/game/objects/items/explosives/plastique.dm @@ -27,6 +27,7 @@ return ..() /obj/item/explosive/plastique/update_icon_state() + . = ..() icon_state = "[initial(icon_state)][plant_target ? "_set" : ""]" if(armed) icon_state = "[icon_state][alarm_sounded ? "_armed" : "_on"]" diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 98185408be90c..ff6464e1bda80 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -110,7 +110,7 @@ user.put_in_hands(W) to_chat(user, span_notice("You wrap the cable restraint around the top of the rod.")) qdel(src) - update_icon(user) + update_icon() /obj/item/restraints/handcuffs/cyborg diff --git a/code/game/objects/items/implants/implantcase.dm b/code/game/objects/items/implants/implantcase.dm index 204d9a1b28bc5..bcb06fffdc1dd 100644 --- a/code/game/objects/items/implants/implantcase.dm +++ b/code/game/objects/items/implants/implantcase.dm @@ -25,6 +25,7 @@ return ..() /obj/item/implantcase/update_icon_state() + . = ..() if(imp) icon_state = "implantcase-[imp.implant_color]" else diff --git a/code/game/objects/items/motion_detector.dm b/code/game/objects/items/motion_detector.dm index cd5aba8b19a14..31a71641d5698 100644 --- a/code/game/objects/items/motion_detector.dm +++ b/code/game/objects/items/motion_detector.dm @@ -24,6 +24,7 @@ qdel(src) /obj/effect/blip/edge_blip/update_icon_state() + . = ..() icon_state = "edge_blip_[identifier]" /obj/effect/blip/close_blip @@ -99,6 +100,7 @@ action.update_button_icon() /obj/item/attachable/motiondetector/update_icon_state() + . = ..() icon_state = initial(icon_state) + (isnull(operator) ? "" : "_on") /obj/item/attachable/motiondetector/equipped(mob/user, slot) diff --git a/code/game/objects/items/plantable_flags.dm b/code/game/objects/items/plantable_flags.dm index 4f172ae09b931..4a9d4bdbbff08 100644 --- a/code/game/objects/items/plantable_flags.dm +++ b/code/game/objects/items/plantable_flags.dm @@ -25,7 +25,7 @@ playsound(loc, 'sound/effects/thud.ogg', 100) user.dropItemToGround(src) is_collapsed = FALSE - update_icon_state() + update_appearance() /obj/item/flag_base/attack_hand(mob/living/user) @@ -34,8 +34,8 @@ to_chat(user, "You decide against removing the flag here.") return is_collapsed = TRUE - update_icon_state() - . = ..() + update_appearance() + return ..() /obj/item/flag_base/update_icon_state() diff --git a/code/game/objects/items/portable_vendor.dm b/code/game/objects/items/portable_vendor.dm index dc8748f926559..6f78f3684cfd6 100644 --- a/code/game/objects/items/portable_vendor.dm +++ b/code/game/objects/items/portable_vendor.dm @@ -132,7 +132,7 @@ playsound(src, "sound/machines/fax.ogg", 5) balloon_alert(user, "fabricating") fabricating = TRUE - update_overlays() + update_appearance() addtimer(CALLBACK(src, PROC_REF(do_vend), L[3], user), 1 SECONDS) /obj/item/portable_vendor/proc/do_vend(thing, mob/user) @@ -140,7 +140,7 @@ if(loc == user) user.put_in_hands(IT) fabricating = FALSE - update_overlays() + update_appearance() /obj/item/portable_vendor/update_overlays() . = ..() @@ -161,7 +161,7 @@ /obj/item/portable_vendor/Initialize(mapload) . = ..() START_PROCESSING(SSobj, src) - update_overlays() + update_appearance() /obj/item/portable_vendor/Destroy() STOP_PROCESSING(SSobj, src) @@ -173,7 +173,7 @@ T.visible_message(span_warning("[src] shudders as its internal components break apart!")) broken = 1 STOP_PROCESSING(SSobj, src) - update_overlays() + update_appearance() playsound(src, 'sound/effects/sparks4.ogg', 60, 1) var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread diff --git a/code/game/objects/items/radio/detpack.dm b/code/game/objects/items/radio/detpack.dm index 32b507a88a4a6..c529285e04c32 100644 --- a/code/game/objects/items/radio/detpack.dm +++ b/code/game/objects/items/radio/detpack.dm @@ -70,6 +70,7 @@ /obj/item/detpack/update_icon_state() + . = ..() icon_state = "detpack_[plant_target ? "set_" : ""]" if(on) icon_state = "[icon_state][armed ? "armed" : "on"]" diff --git a/code/game/objects/items/radio/intercom.dm b/code/game/objects/items/radio/intercom.dm index 6f6dd8adf3bae..0b1061ff44fa0 100644 --- a/code/game/objects/items/radio/intercom.dm +++ b/code/game/objects/items/radio/intercom.dm @@ -28,15 +28,15 @@ pixel_x = 32 START_PROCESSING(SSobj, src) become_hearing_sensitive() - update_icon() + check_light() /obj/item/radio/intercom/Destroy() STOP_PROCESSING(SSobj, src) return ..() -/obj/item/radio/intercom/update_icon() - . = ..() +///Checks if we're on, if so a light turns on +/obj/item/radio/intercom/proc/check_light() if(!on) set_light(0) return @@ -44,6 +44,7 @@ set_light(initial(light_range)) /obj/item/radio/intercom/update_icon_state() + . = ..() if(!on) icon_state = "intercom_unpowered" else @@ -56,16 +57,14 @@ . += emissive_appearance(icon, "[icon_state]_emissive") /obj/item/radio/intercom/attack_ai(mob/user as mob) - spawn (0) - attack_self(user) + attack_self(user) /obj/item/radio/intercom/attack_hand(mob/living/user) . = ..() if(.) return - spawn (0) - attack_self(user) + attack_self(user) /obj/item/radio/intercom/can_receive(freq, list/levels) @@ -100,7 +99,7 @@ return else on = new_state - update_icon() + check_light() /obj/item/radio/intercom/general name = "General Listening Channel" diff --git a/code/game/objects/items/reagent_containers/autoinjectors.dm b/code/game/objects/items/reagent_containers/autoinjectors.dm index e9982bf2388b8..b2b515fa07ec9 100644 --- a/code/game/objects/items/reagent_containers/autoinjectors.dm +++ b/code/game/objects/items/reagent_containers/autoinjectors.dm @@ -11,6 +11,7 @@ list_reagents = list(/datum/reagent/consumable/sodiumchloride = 30) /obj/item/reagent_containers/hypospray/autoinjector/update_icon_state() + . = ..() if(!(reagents.total_volume) && is_drawable()) icon_state += "X" name = "expended [name]" //So people can see what have been expended since we have smexy new sprites people aren't used too... diff --git a/code/game/objects/items/reagent_containers/blood_pack.dm b/code/game/objects/items/reagent_containers/blood_pack.dm index 760e4b61a802a..05909c8ccb68a 100644 --- a/code/game/objects/items/reagent_containers/blood_pack.dm +++ b/code/game/objects/items/reagent_containers/blood_pack.dm @@ -20,7 +20,7 @@ update_icon() /obj/item/reagent_containers/blood/update_icon_state() - + . = ..() var/percent = PERCENT(reagents.total_volume / volume) switch(percent) if(0 to 9.9) diff --git a/code/game/objects/items/reagent_containers/food/pizzapasta.dm b/code/game/objects/items/reagent_containers/food/pizzapasta.dm index 0b6c83ce48681..4e8922b46873c 100644 --- a/code/game/objects/items/reagent_containers/food/pizzapasta.dm +++ b/code/game/objects/items/reagent_containers/food/pizzapasta.dm @@ -171,56 +171,55 @@ var/list/boxes = list() // If the boxes are stacked, they come here var/boxtag = "" -/obj/item/pizzabox/update_icon() - - overlays = list() - - // Set appropriate description - if( open && pizza ) +/obj/item/pizzabox/update_desc(updates) + . = ..() + if(open && pizza) desc = "A box suited for pizzas. It appears to have a [pizza.name] inside." - else if( boxes.len > 0 ) + else if(boxes.len > 0) desc = "A pile of boxes suited for pizzas. There appears to be [boxes.len + 1] boxes in the pile." var/obj/item/pizzabox/topbox = boxes[boxes.len] var/toptag = topbox.boxtag - if( toptag != "" ) + if(toptag != "") desc = "[desc] The box on top has a tag, it reads: '[toptag]'." else desc = "A box suited for pizzas." - if( boxtag != "" ) + if(boxtag != "") desc = "[desc] The box has a tag, it reads: '[boxtag]'." - // Icon states and overlays - if( open ) - if( ismessy ) +/obj/item/pizzabox/update_icon_state() + . = ..() + if(open) + if(ismessy) icon_state = "pizzabox_messy" else icon_state = "pizzabox_open" + return - if( pizza ) - var/image/pizzaimg = image("pizzaspaghetti.dmi", icon_state = pizza.icon_state) - pizzaimg.pixel_y = -3 - overlays += pizzaimg + icon_state = "pizzabox[boxes.len+1]" +/obj/item/pizzabox/update_overlays() + . = ..() + if(open && pizza) + var/image/pizzaimg = image("pizzaspaghetti.dmi", icon_state = pizza.icon_state) + pizzaimg.pixel_y = -3 + . += pizzaimg return + // Stupid code because byondcode sucks - imagine blaming the engine for you being bad at coding. TODO: clean this up + var/doimgtag = 0 + if(boxes.len > 0) + var/obj/item/pizzabox/topbox = boxes[boxes.len] + if(topbox.boxtag != "") + doimgtag = 1 else - // Stupid code because byondcode sucks - var/doimgtag = 0 - if( boxes.len > 0 ) - var/obj/item/pizzabox/topbox = boxes[boxes.len] - if( topbox.boxtag != "" ) - doimgtag = 1 - else - if( boxtag != "" ) - doimgtag = 1 - - if( doimgtag ) - var/image/tagimg = image("pizzaspaghetti.dmi", icon_state = "pizzabox_tag") - tagimg.pixel_y = boxes.len * 3 - overlays += tagimg + if(boxtag != "") + doimgtag = 1 - icon_state = "pizzabox[boxes.len+1]" + if(doimgtag) + var/image/tagimg = image("pizzaspaghetti.dmi", icon_state = "pizzabox_tag") + tagimg.pixel_y = boxes.len * 3 + . += tagimg //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/item/pizzabox/attack_hand(mob/living/user) diff --git a/code/game/objects/items/reagent_containers/glass.dm b/code/game/objects/items/reagent_containers/glass.dm index d3eca61d7cb04..528b8232d5a81 100644 --- a/code/game/objects/items/reagent_containers/glass.dm +++ b/code/game/objects/items/reagent_containers/glass.dm @@ -151,28 +151,35 @@ return update_icon() -/obj/item/reagent_containers/glass/beaker/update_icon() - overlays.Cut() +/obj/item/reagent_containers/glass/beaker/update_overlays() + . = ..() if(reagents.total_volume) var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]10") var/percent = round((reagents.total_volume / volume) * 100) switch(percent) - if(0 to 9) filling.icon_state = "[icon_state]-10" - if(10 to 24) filling.icon_state = "[icon_state]10" - if(25 to 49) filling.icon_state = "[icon_state]25" - if(50 to 74) filling.icon_state = "[icon_state]50" - if(75 to 79) filling.icon_state = "[icon_state]75" - if(80 to 90) filling.icon_state = "[icon_state]80" - if(91 to INFINITY) filling.icon_state = "[icon_state]100" + if(0 to 9) + filling.icon_state = "[icon_state]-10" + if(10 to 24) + filling.icon_state = "[icon_state]10" + if(25 to 49) + filling.icon_state = "[icon_state]25" + if(50 to 74) + filling.icon_state = "[icon_state]50" + if(75 to 79) + filling.icon_state = "[icon_state]75" + if(80 to 90) + filling.icon_state = "[icon_state]80" + if(91 to INFINITY) + filling.icon_state = "[icon_state]100" filling.color = mix_color_from_reagents(reagents.reagent_list) - overlays += filling + . += filling if(!is_open_container()) var/image/lid = image(icon, src, "lid_[initial(icon_state)]") - overlays += lid + . += lid /obj/item/reagent_containers/glass/beaker/large name = "large beaker" @@ -260,12 +267,12 @@ to_chat(user, span_notice("You wet [I] in [src].")) playsound(loc, 'sound/effects/slosh.ogg', 25, 1) -/obj/item/reagent_containers/glass/bucket/update_icon() - overlays.Cut() +/obj/item/reagent_containers/glass/bucket/update_overlays() + . = ..() if(!is_open_container()) var/image/lid = image(icon, src, "lid_[initial(icon_state)]") - overlays += lid + . += lid /obj/item/reagent_containers/glass/bucket/janibucket name = "janitorial bucket" @@ -276,14 +283,17 @@ update_icon() -/obj/item/reagent_containers/glass/bucket/janibucket/update_icon() - ..() +/obj/item/reagent_containers/glass/bucket/janibucket/update_icon_state() + . = ..() if(reagents.total_volume) var/percent = round((reagents.total_volume / volume) * 100) switch(percent) - if(0 to 9) icon_state = "janibucket" - if(10 to 65) icon_state = "janibucket_half" - if(66 to INFINITY) icon_state = "janibucket_full" + if(0 to 9) + icon_state = "janibucket" + if(10 to 65) + icon_state = "janibucket_half" + if(66 to INFINITY) + icon_state = "janibucket_full" else icon_state = "janibucket" diff --git a/code/game/objects/items/reagent_containers/glass/bottle.dm b/code/game/objects/items/reagent_containers/glass/bottle.dm index 9ff3f3e9eff1b..2e241ee381472 100644 --- a/code/game/objects/items/reagent_containers/glass/bottle.dm +++ b/code/game/objects/items/reagent_containers/glass/bottle.dm @@ -34,28 +34,35 @@ if(!icon_state) icon_state = "bottle-[rand(1, 5)]" -/obj/item/reagent_containers/glass/bottle/update_icon() - overlays.Cut() +/obj/item/reagent_containers/glass/bottle/update_overlays() + . = ..() if(reagents.total_volume && (icon_state == "bottle-1" || icon_state == "bottle-2" || icon_state == "bottle-3" || icon_state == "bottle-4")) //only for those who have reagentfillings icons var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]10") var/percent = round((reagents.total_volume / volume) * 100) switch(percent) - if(0 to 9) filling.icon_state = "[icon_state]--10" - if(10 to 24) filling.icon_state = "[icon_state]-10" - if(25 to 49) filling.icon_state = "[icon_state]-25" - if(50 to 74) filling.icon_state = "[icon_state]-50" - if(75 to 79) filling.icon_state = "[icon_state]-75" - if(80 to 90) filling.icon_state = "[icon_state]-80" - if(91 to INFINITY) filling.icon_state = "[icon_state]-100" + if(0 to 9) + filling.icon_state = "[icon_state]--10" + if(10 to 24) + filling.icon_state = "[icon_state]-10" + if(25 to 49) + filling.icon_state = "[icon_state]-25" + if(50 to 74) + filling.icon_state = "[icon_state]-50" + if(75 to 79) + filling.icon_state = "[icon_state]-75" + if(80 to 90) + filling.icon_state = "[icon_state]-80" + if(91 to INFINITY) + filling.icon_state = "[icon_state]-100" filling.color = mix_color_from_reagents(reagents.reagent_list) - overlays += filling + . += filling if (!is_open_container()) var/image/lid = image(icon, src, "lid_bottle") - overlays += lid + . += lid /obj/item/reagent_containers/glass/bottle/empty //Because the parent has RNG icon_state icon_state = "bottle-1" //Same one when you make a bottle in the chem master diff --git a/code/game/objects/items/reagent_containers/hypospray.dm b/code/game/objects/items/reagent_containers/hypospray.dm index ee55d8649e509..6fe513e1be79d 100644 --- a/code/game/objects/items/reagent_containers/hypospray.dm +++ b/code/game/objects/items/reagent_containers/hypospray.dm @@ -318,11 +318,31 @@ if(href_list["displayreagents"]) to_chat(usr, display_reagents()) +/obj/item/reagent_containers/hypospray/advanced/update_icon_state() + . = ..() + if(!reagents?.total_volume) + icon_state = "[initial(icon_state)]_0" + return + var/percent = round((reagents.total_volume / volume) * 100) + switch(percent) + if(0 to 9) + icon_state = initial(icon_state) + if(10 to 24) + icon_state = "[initial(icon_state)]_10" + if(25 to 49) + icon_state = "[initial(icon_state)]_25" + if(50 to 64) + icon_state = "[initial(icon_state)]_50" + if(65 to 79) + icon_state = "[initial(icon_state)]_65" + if(80 to 90) + icon_state = "[initial(icon_state)]_80" + if(91 to INFINITY) + icon_state = "[initial(icon_state)]_100" /obj/item/reagent_containers/hypospray/advanced/update_overlays() . = ..() - overlays.Cut() if(reagents.total_volume) var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]10") @@ -332,37 +352,28 @@ filling.icon_state = "[initial(icon_state)]-10" if(10 to 24) filling.icon_state = "[initial(icon_state)]10" - icon_state = "[initial(icon_state)]_10" if(25 to 49) filling.icon_state = "[initial(icon_state)]25" - icon_state = "[initial(icon_state)]_25" if(50 to 64) filling.icon_state = "[initial(icon_state)]50" - icon_state = "[initial(icon_state)]_50" if(65 to 79) filling.icon_state = "[initial(icon_state)]65" - icon_state = "[initial(icon_state)]_65" if(80 to 90) filling.icon_state = "[initial(icon_state)]80" - icon_state = "[initial(icon_state)]_80" if(91 to INFINITY) filling.icon_state = "[initial(icon_state)]100" - icon_state = "[initial(icon_state)]_100" filling.color = mix_color_from_reagents(reagents.reagent_list) - overlays += filling - - else - icon_state = "[initial(icon_state)]_0" + . += filling if(ismob(loc)) var/injoverlay switch(inject_mode) - if (HYPOSPRAY_INJECT_MODE_DRAW) + if(HYPOSPRAY_INJECT_MODE_DRAW) injoverlay = "draw" - if (HYPOSPRAY_INJECT_MODE_INJECT) + if(HYPOSPRAY_INJECT_MODE_INJECT) injoverlay = "inject" - add_overlay(injoverlay) + . += injoverlay /obj/item/reagent_containers/hypospray/advanced/examine(mob/user as mob) . = ..() diff --git a/code/game/objects/items/reagent_containers/syringes.dm b/code/game/objects/items/reagent_containers/syringes.dm index f919b6c787daa..42d6a0dcb6708 100644 --- a/code/game/objects/items/reagent_containers/syringes.dm +++ b/code/game/objects/items/reagent_containers/syringes.dm @@ -185,32 +185,37 @@ update_icon() -/obj/item/reagent_containers/syringe/update_icon() +/obj/item/reagent_containers/syringe/update_icon_state() + . = ..() if(mode == SYRINGE_BROKEN) icon_state = "broken" - overlays.Cut() return + var/rounded_vol = round(reagents.total_volume,5) - overlays.Cut() + icon_state = "[rounded_vol]" + item_state = "syringe_[rounded_vol]" + +/obj/item/reagent_containers/syringe/update_overlays() + . = ..() + if(mode == SYRINGE_BROKEN) + return if(ismob(loc)) var/injoverlay switch(mode) - if (SYRINGE_DRAW) + if(SYRINGE_DRAW) injoverlay = "draw" - if (SYRINGE_INJECT) + if(SYRINGE_INJECT) injoverlay = "inject" - overlays += injoverlay - icon_state = "[rounded_vol]" - item_state = "syringe_[rounded_vol]" + . += injoverlay + var/rounded_vol = round(reagents.total_volume,5) if(reagents.total_volume) var/image/filling = image('icons/obj/reagentfillings.dmi', src, "syringe10") filling.icon_state = "syringe[rounded_vol]" filling.color = mix_color_from_reagents(reagents.reagent_list) - overlays += filling - + . += filling /obj/item/reagent_containers/syringe/proc/syringestab(mob/living/carbon/target as mob, mob/living/carbon/user as mob) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index cd1addbeb21df..4e44d5f96b648 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -181,22 +181,6 @@ skill_level_needed = SKILL_MEDICAL_PRACTICED unskilled_delay = SKILL_TASK_EASY -/obj/item/stack/medical/heal_pack/advanced/update_icon_state() - if(max_amount < 1 || amount > max_amount) - return - var/percentage = round(amount / max_amount) * 100 - switch(percentage) - if(1 to 20) - setDir(SOUTH) - if(21 to 40) - setDir(EAST) - if(41 to 60) - setDir(SOUTHEAST) - if(61 to 80) - setDir(WEST) - if(81 to INFINITY) - setDir(NORTH) - /obj/item/stack/medical/heal_pack/advanced/bruise_pack name = "advanced trauma kit" singular_name = "advanced trauma kit" diff --git a/code/game/objects/items/stacks/snow.dm b/code/game/objects/items/stacks/snow.dm index 91c1af488d74f..bf7f196cf67a3 100644 --- a/code/game/objects/items/stacks/snow.dm +++ b/code/game/objects/items/stacks/snow.dm @@ -61,7 +61,8 @@ return var/turf/open/T = target if(T.get_dirt_type() == DIRT_TYPE_SNOW) - if(T.slayer >= 3) + var/turf/open/floor/plating/ground/snow/snowy_turf = T + if(snowy_turf.slayer >= 3) to_chat(user, "This ground is already full of snow.") return if(amount < 5) @@ -70,11 +71,12 @@ to_chat(user, "You start putting some snow back on the ground.") if(!do_after(user, 15, IGNORE_HELD_ITEM, target, BUSY_ICON_BUILD)) return - if(T.slayer >= 3) + if(snowy_turf.slayer >= 3) return to_chat(user, "You put a new snow layer on the ground.") - T.slayer += 1 - T.update_icon(TRUE, FALSE) + snowy_turf.slayer += 1 + snowy_turf.update_appearance() + snowy_turf.update_sides() use(5) /obj/item/stack/snow/attack_self(mob/user) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index d7919671e16fb..8b6bd4be66703 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -56,6 +56,7 @@ /obj/item/stack/update_icon_state() + . = ..() if(!number_of_extra_variants) return var/ratio = round((amount * (number_of_extra_variants + 1)) / max_amount) diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index cd6a0f5a815a6..6d41969a44d7b 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -314,6 +314,7 @@ . += span_warning("Its defibrillator recharge unit does not have a power cell installed!") /obj/item/storage/backpack/marine/corpsman/update_icon_state() + . = ..() icon_state = icon_skin if(cell?.charge >= 0) switch(PERCENT(cell.charge/cell.maxcharge)) diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index 70b204e0bcb93..cd893a2c778c8 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -39,6 +39,7 @@ cant_hold = list(/obj/item/disk/nuclear) /obj/item/storage/bag/trash/update_icon_state() + . = ..() if(length(contents) == 0) icon_state = "trashbag0" else if(length(contents) < 12) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 0d0f18c62ee17..5fcf497eb4128 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -898,10 +898,10 @@ /obj/item/storage/belt/shotgun/martini name = "martini henry ammo belt" desc = "A belt good enough for holding all your .577/400 ball rounds." - icon_state = ".557_belt" + icon_state = "marini_belt" storage_slots = 12 max_storage_space = 24 - + sprite_slots = 6 draw_mode = 1 flags_atom = DIRLOCK @@ -910,23 +910,16 @@ . = ..() update_icon() -/obj/item/storage/belt/shotgun/martini/update_icon() - if(!length(contents)) - icon_state = initial(icon_state) + "_e" - return - icon_state = initial(icon_state) +/obj/item/storage/belt/shotgun/martini/attackby(obj/item/I, mob/user, params) + if(!istype(I, /obj/item/ammo_magazine)) + update_icon() + return ..() - var/holding = round((length(contents) + 1) / 2) - setDir(holding + round(holding/3)) + var/obj/item/ammo_magazine/new_mag = I + if(new_mag.caliber != CALIBER_557) + to_chat(user, span_notice("[src] can only be filled with .557/440 ball rifle rounds.")) + return -/obj/item/storage/belt/shotgun/martini/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/ammo_magazine)) - var/obj/item/ammo_magazine/new_mag = I - if(new_mag.caliber != CALIBER_557) - to_chat(user, span_notice("[src] can only be filled with .557/440 ball rifle rounds.")) - return - . = ..() - update_icon() /obj/item/storage/belt/shotgun/martini/attack_hand(mob/living/user) if (loc != user) diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 6b14bd702b6ad..70e32d64e8bbe 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -349,6 +349,7 @@ spawn_number = 5 /obj/item/storage/box/explosive_mines/update_icon_state() + . = ..() icon_state = initial(icon_state) if(!length(contents)) icon_state += "_e" @@ -381,7 +382,8 @@ spawn_type = /obj/item/explosive/grenade/flare spawn_number = 14 -/obj/item/storage/box/m94/update_icon() +/obj/item/storage/box/m94/update_icon_state() + . = ..() icon_state = initial(icon_state) if(!length(contents)) icon_state += "_e" @@ -445,7 +447,8 @@ if(. && !length(contents) && !gc_destroyed) qdel(src) -/obj/item/storage/box/MRE/update_icon() +/obj/item/storage/box/MRE/update_icon_state() + . = ..() if(!isopened) isopened = 1 icon_state += "opened" diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index 61f3fb963c2a8..c543630fda99a 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -29,6 +29,7 @@ new spawn_type(src) /obj/item/storage/fancy/update_icon_state() + . = ..() icon_state = "[icon_type]box[length(contents)]" /obj/item/storage/fancy/remove_from_storage(obj/item/W, atom/new_location, mob/user) @@ -146,6 +147,7 @@ new /obj/item/clothing/mask/cigarette(src) /obj/item/storage/fancy/cigarettes/update_icon_state() + . = ..() icon_state = "[initial(icon_state)][length(contents)]" /obj/item/storage/fancy/cigarettes/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) @@ -196,6 +198,7 @@ new /obj/item/tool/lighter(src) /obj/item/storage/fancy/chemrettes/update_icon_state() + . = ..() icon_state = "[initial(icon_state)][length(contents)]" /obj/item/storage/fancy/cigarettes/dromedaryco @@ -238,6 +241,7 @@ icon_type = "cigar" /obj/item/storage/fancy/cigar/update_icon_state() + . = ..() icon_state = "[initial(icon_state)][length(contents)]" @@ -287,8 +291,9 @@ . = ..() update_icon() -/obj/item/storage/lockbox/vials/update_icon(itemremoved = 0) - icon_state = "vialbox[length(contents)-itemremoved]" +/obj/item/storage/lockbox/vials/update_icon_state() + . = ..() + icon_state = "vialbox[length(contents)]" /obj/item/storage/lockbox/vials/update_overlays() . = ..() diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm index 24bd825913e12..de5315348be58 100644 --- a/code/game/objects/items/storage/firstaid.dm +++ b/code/game/objects/items/storage/firstaid.dm @@ -36,7 +36,8 @@ fill_firstaid_kit() -/obj/item/storage/firstaid/update_icon() +/obj/item/storage/firstaid/update_icon_state() + . = ..() if(!length(contents)) icon_state = icon_state += "_empty" else diff --git a/code/game/objects/items/storage/holsters.dm b/code/game/objects/items/storage/holsters.dm index 697ce8d8871cc..b83f20ded3012 100644 --- a/code/game/objects/items/storage/holsters.dm +++ b/code/game/objects/items/storage/holsters.dm @@ -70,6 +70,7 @@ return ..() /obj/item/storage/holster/update_icon_state() + . = ..() if(holstered_item) icon_state = initial(icon_state) + "_full" else diff --git a/code/game/objects/items/storage/marine_boxes.dm b/code/game/objects/items/storage/marine_boxes.dm index 08ef5190e7102..52ac0d190ede8 100644 --- a/code/game/objects/items/storage/marine_boxes.dm +++ b/code/game/objects/items/storage/marine_boxes.dm @@ -6,6 +6,7 @@ foldable = /obj/item/stack/sheet/wood /obj/item/storage/box/crate/update_icon_state() + . = ..() icon_state = length(contents) ? initial(icon_state) : "empty_case" /obj/item/storage/box/crate/heavy_armor diff --git a/code/game/objects/items/storage/misc.dm b/code/game/objects/items/storage/misc.dm index 14dfdedafb711..be83920b3bc0b 100644 --- a/code/game/objects/items/storage/misc.dm +++ b/code/game/objects/items/storage/misc.dm @@ -36,18 +36,22 @@ if(!length(contents)) return ..() - -/obj/item/storage/donut_box/update_icon() - overlays.Cut() +/obj/item/storage/donut_box/update_icon_state() + . = ..() if(!open) icon_state = "donutbox" return icon_state = "donutbox_o" + +/obj/item/storage/donut_box/update_overlays() + . = ..() + if(!open) + return var/i = 0 for(var/obj/item/reagent_containers/food/snacks/donut/D in contents) i++ var/image/img = image('icons/obj/items/food/donuts.dmi', "[D.overlay_state]-[i]") - overlays += img + . += img /obj/item/storage/donut_box/empty icon_state = "donutbox_o" diff --git a/code/game/objects/items/storage/storage.dm b/code/game/objects/items/storage/storage.dm index 90a8b66cfa6c5..92f10317426dc 100644 --- a/code/game/objects/items/storage/storage.dm +++ b/code/game/objects/items/storage/storage.dm @@ -879,6 +879,7 @@ return /obj/item/storage/update_icon_state() + . = ..() if(!sprite_slots) icon_state = initial(icon_state) return diff --git a/code/game/objects/items/storage/surgical_tray.dm b/code/game/objects/items/storage/surgical_tray.dm index e4e76e484e378..2cf03e1913615 100644 --- a/code/game/objects/items/storage/surgical_tray.dm +++ b/code/game/objects/items/storage/surgical_tray.dm @@ -27,6 +27,7 @@ new /obj/item/stack/nanopaste(src) /obj/item/storage/surgical_tray/update_icon_state() + . = ..() if(!length(contents)) icon_state = "surgical_tray_e" else diff --git a/code/game/objects/items/storage/wallets.dm b/code/game/objects/items/storage/wallets.dm index 2e6133e9764e1..45653a58fe6f4 100644 --- a/code/game/objects/items/storage/wallets.dm +++ b/code/game/objects/items/storage/wallets.dm @@ -46,8 +46,8 @@ name = "[name] ([front_id])" update_icon() -/obj/item/storage/wallet/update_icon() - +/obj/item/storage/wallet/update_icon_state() + . = ..() if(front_id) switch(front_id.icon_state) if("id") diff --git a/code/game/objects/items/tools/flame_tools.dm b/code/game/objects/items/tools/flame_tools.dm index a06edf3ce0d7c..e2a2e51998dd7 100644 --- a/code/game/objects/items/tools/flame_tools.dm +++ b/code/game/objects/items/tools/flame_tools.dm @@ -34,14 +34,13 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/wax = 800 /obj/item/tool/candle/update_icon_state() - var/i - if(wax>150) - i = 1 - else if(wax>80) - i = 2 + . = ..() + if(wax > 150) + icon_state = "candle[1][heat ? "_lit" : ""]" + else if(wax > 80) + icon_state = "candle[2][heat ? "_lit" : ""]" else - i = 3 - icon_state = "candle[i][heat ? "_lit" : ""]" + icon_state = "candle[3][heat ? "_lit" : ""]" /obj/item/tool/candle/Destroy() if(heat) diff --git a/code/game/objects/items/tools/maintenance_tools.dm b/code/game/objects/items/tools/maintenance_tools.dm index df0bfece40926..4080f5b23501e 100644 --- a/code/game/objects/items/tools/maintenance_tools.dm +++ b/code/game/objects/items/tools/maintenance_tools.dm @@ -473,6 +473,7 @@ update_icon() /obj/item/tool/handheld_charger/update_icon_state() + . = ..() if(cell) icon_state = initial(icon_state) else @@ -533,7 +534,7 @@ cell = null playsound(user, 'sound/machines/click.ogg', 20, 1, 5) balloon_alert(user, "Removes the cell") - update_icon_state() + update_appearance() /obj/item/tool/handheld_charger/attack_hand(mob/living/user) if(user.get_inactive_held_item() != src) @@ -545,7 +546,7 @@ cell = null playsound(user, 'sound/machines/click.ogg', 20, 1, 5) balloon_alert(user, "Removes the cell") - update_icon_state() + update_appearance() /obj/item/tool/handheld_charger/Destroy() QDEL_NULL(cell) diff --git a/code/game/objects/items/tools/mining_tools.dm b/code/game/objects/items/tools/mining_tools.dm index 8570dabd3d962..72b799b3d6918 100644 --- a/code/game/objects/items/tools/mining_tools.dm +++ b/code/game/objects/items/tools/mining_tools.dm @@ -290,7 +290,8 @@ if(!ST.slayer) return ST.slayer = max(0 , ST.slayer - dirt_amt_per_dig) - ST.update_icon(1,0) + ST.update_appearance() + ST.update_sides() cut_apart(user, target.name, target, 0, "You melt the snow with [src]. ") //costs nothing diff --git a/code/game/objects/items/tools/shovel_tools.dm b/code/game/objects/items/tools/shovel_tools.dm index bb2dd145ca413..38b58993ad553 100644 --- a/code/game/objects/items/tools/shovel_tools.dm +++ b/code/game/objects/items/tools/shovel_tools.dm @@ -85,7 +85,8 @@ if(!ST.slayer) return ST.slayer -= 1 - ST.update_icon(1,0) + ST.update_appearance() + ST.update_sides() balloon_alert(user, "Digs up snow") else balloon_alert(user, "Digs up dirt") @@ -151,7 +152,7 @@ else icon_state = "etool_c" item_state = "etool_c" - ..() + return ..() /obj/item/tool/shovel/etool/attack_self(mob/user as mob) if(sharp) diff --git a/code/game/objects/items/toys/cards.dm b/code/game/objects/items/toys/cards.dm index b4aeeeb525ccc..7bfbba2f4d698 100644 --- a/code/game/objects/items/toys/cards.dm +++ b/code/game/objects/items/toys/cards.dm @@ -42,6 +42,7 @@ to_chat(user, "You place your cards on the bottom of the deck.") /obj/item/toy/deck/update_icon_state() + . = ..() switch(length(cards)) if(52) icon_state = "deck" @@ -167,6 +168,8 @@ var/concealed = 0 var/list/cards = list() + ///The last direction the person who dropped us was facing + var/last_direction = SOUTH /obj/item/toy/handcard/Initialize(mapload, card_type) . = ..() @@ -250,16 +253,22 @@ for(var/datum/playingcard/P in cards) . += "-[P.name]" -/obj/item/toy/handcard/update_icon(direction = 0) +/obj/item/toy/handcard/update_name(updates) + . = ..() if(length(cards) > 1) name = "hand of cards" - desc = "Some playing cards." else name = "a playing card" + +/obj/item/toy/handcard/update_desc(updates) + . = ..() + if(length(cards) > 1) + desc = "Some playing cards." + else desc = "A playing card." - overlays.Cut() - +/obj/item/toy/handcard/update_overlays() + . = ..() if(!length(cards)) return @@ -268,14 +277,14 @@ var/image/I = new(src.icon, (concealed ? "card_back" : "[P.card_icon]") ) I.pixel_x += (-5+rand(10)) I.pixel_y += (-5+rand(10)) - overlays += I + . += I return var/offset = FLOOR(20/length(cards), 1) var/matrix/M = matrix() - if(direction) - switch(direction) + if(last_direction) + switch(last_direction) if(NORTH) M.Translate( 0, 0) if(SOUTH) @@ -290,7 +299,7 @@ for(var/datum/playingcard/P in cards) var/image/I = new(src.icon, (concealed ? "card_back" : "[P.card_icon]") ) //I.pixel_x = origin+(offset*i) - switch(direction) + switch(last_direction) if(SOUTH) I.pixel_x = 8-(offset*i) if(WEST) @@ -300,15 +309,14 @@ else I.pixel_x = -7+(offset*i) I.transform = M - overlays += I + . += I i++ /obj/item/toy/handcard/dropped(mob/user as mob) - ..() + . = ..() if(locate(/obj/structure/table, loc)) - src.update_icon(user.dir) - else - update_icon() + last_direction = user.dir + update_icon() /obj/item/toy/handcard/pickup(mob/user as mob) src.update_icon() @@ -362,7 +370,11 @@ cards += P /obj/item/toy/deck/kotahi/update_icon_state() + . = ..() switch(length(cards)) - if(107 to 108) icon_state = "deck" - if(37 to 106) icon_state = "deck_open" - if(0 to 36) icon_state = "deck_empty" + if(107 to 108) + icon_state = "deck" + if(37 to 106) + icon_state = "deck_open" + if(0 to 36) + icon_state = "deck_empty" diff --git a/code/game/objects/items/toys/toy_weapons.dm b/code/game/objects/items/toys/toy_weapons.dm index 27393f6e8f0a7..589a30318b04e 100644 --- a/code/game/objects/items/toys/toy_weapons.dm +++ b/code/game/objects/items/toys/toy_weapons.dm @@ -66,6 +66,7 @@ var/amount_left = 7 /obj/item/toy/gun_ammo/update_icon_state() + . = ..() if(amount_left) icon_state = "cap_ammo" else diff --git a/code/game/objects/items/toys/toys.dm b/code/game/objects/items/toys/toys.dm index e25b26fdc7f35..bafd2f9707649 100755 --- a/code/game/objects/items/toys/toys.dm +++ b/code/game/objects/items/toys/toys.dm @@ -96,6 +96,7 @@ QDEL_IN(src, 5) /obj/item/toy/balloon/update_icon_state() + . = ..() if(reagents.total_volume) icon_state = "waterballoon" item_state = "balloon" diff --git a/code/game/objects/items/weapons/blades.dm b/code/game/objects/items/weapons/blades.dm index c96abd4c57531..37cf67b644752 100644 --- a/code/game/objects/items/weapons/blades.dm +++ b/code/game/objects/items/weapons/blades.dm @@ -353,13 +353,9 @@ RegisterSignal(src, COMSIG_MOVABLE_POST_THROW, PROC_REF(post_throw)) AddComponent(/datum/component/automatedfire/autofire, throw_delay, _fire_mode = GUN_FIREMODE_AUTOMATIC, _callback_reset_fire = CALLBACK(src, PROC_REF(stop_fire)), _callback_fire = CALLBACK(src, PROC_REF(throw_knife))) -/obj/item/stack/throwing_knife/update_icon() +/obj/item/stack/throwing_knife/update_icon_state() . = ..() - var/amount_to_show = amount > max_amount ? max_amount : amount - if(amount_to_show > 8) - setDir(8) - return - setDir(amount_to_show + round(amount_to_show / 3)) + icon_state = "throwing_knife_[amount]" /obj/item/stack/throwing_knife/equipped(mob/user, slot) . = ..() diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index e50a9dd5bbd6b..59b9c6f622f7f 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -104,6 +104,7 @@ AddElement(/datum/element/strappable) /obj/item/weapon/shield/riot/marine/update_icon_state() + . = ..() if(obj_integrity <= integrity_failure) icon_state = initial(icon_state) + "_broken" else diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 5c264d6b0966f..3dcb2b5c921b6 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -38,6 +38,7 @@ return 0 /obj/item/weapon/baton/update_icon_state() + . = ..() if(status) icon_state = "[initial(name)]_active" else if(!bcell) @@ -223,6 +224,7 @@ /obj/item/weapon/stunprod/update_icon_state() + . = ..() if(status) icon_state = "stunbaton_active" else diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 61f5d1079bbd7..93b0981ce5854 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -523,6 +523,7 @@ update_icon() /obj/item/weapon/twohanded/rocketsledge/update_icon_state() + . = ..() if ((reagents.get_reagent_amount(/datum/reagent/fuel) > fuel_used) && (CHECK_BITFIELD(flags_item, WIELDED))) icon_state = "rocketsledge_w" else diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index aeddd6d6a4ded..60a22c43925c1 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -135,4 +135,4 @@ to_chat(user, span_notice("You fasten the glass shard to the top of the rod with the cable.")) qdel(I) qdel(src) - update_icon(user) + update_icon() diff --git a/code/game/objects/machinery/adv_med.dm b/code/game/objects/machinery/adv_med.dm index 95063a17355ec..18bc546011426 100644 --- a/code/game/objects/machinery/adv_med.dm +++ b/code/game/objects/machinery/adv_med.dm @@ -32,6 +32,7 @@ set_light(initial(light_range)) /obj/machinery/bodyscanner/update_icon_state() + . = ..() if(occupant) icon_state = "[initial(icon_state)]_occupied" else diff --git a/code/game/objects/machinery/air_alarm.dm b/code/game/objects/machinery/air_alarm.dm index e644e46a4e20c..ea737f7f2af5d 100644 --- a/code/game/objects/machinery/air_alarm.dm +++ b/code/game/objects/machinery/air_alarm.dm @@ -36,6 +36,7 @@ set_light(initial(light_range)) /obj/machinery/air_alarm/update_icon_state() + . = ..() if(machine_stat & (NOPOWER|BROKEN)) icon_state = "alarm_unpowered" else diff --git a/code/game/objects/machinery/autodoc.dm b/code/game/objects/machinery/autodoc.dm index 5fc73f11f9685..a254601f9d8f8 100644 --- a/code/game/objects/machinery/autodoc.dm +++ b/code/game/objects/machinery/autodoc.dm @@ -105,6 +105,7 @@ set_light(initial(light_range)) /obj/machinery/autodoc/update_icon_state() + . = ..() if(machine_stat & NOPOWER) icon_state = "autodoc_off" else if(surgery) diff --git a/code/game/objects/machinery/bioprinter.dm b/code/game/objects/machinery/bioprinter.dm index d58009e2896a4..2d92eb9bd58b4 100644 --- a/code/game/objects/machinery/bioprinter.dm +++ b/code/game/objects/machinery/bioprinter.dm @@ -83,6 +83,7 @@ . += "It has [stored_matter] matter and [stored_metal] metal left." /obj/machinery/bioprinter/update_icon_state() + . = ..() if(machine_stat & NOPOWER) icon_state = "bioprinter_off" return diff --git a/code/game/objects/machinery/buttons.dm b/code/game/objects/machinery/buttons.dm index 892b33cfe2a4d..aab2278b55965 100644 --- a/code/game/objects/machinery/buttons.dm +++ b/code/game/objects/machinery/buttons.dm @@ -27,6 +27,7 @@ /obj/machinery/button/update_icon_state() + . = ..() if(machine_stat & (NOPOWER|BROKEN)) icon_state = "[initial(icon_state)]-p" else @@ -249,6 +250,7 @@ update_icon() /obj/machinery/medical_help_button/update_icon_state() + . = ..() if(machine_stat & NOPOWER) icon_state = "doorctrl-p" else diff --git a/code/game/objects/machinery/camera/camera.dm b/code/game/objects/machinery/camera/camera.dm index 45c2f2835c85f..1c7dd854317dd 100644 --- a/code/game/objects/machinery/camera/camera.dm +++ b/code/game/objects/machinery/camera/camera.dm @@ -218,6 +218,7 @@ to_chat(AI, span_notice("[src] has been deactivated at [myarea]")) /obj/machinery/camera/update_icon_state() + . = ..() if(obj_integrity <= 0) icon_state = "camera_assembly" else @@ -402,10 +403,6 @@ /obj/machinery/camera/autoname/lz_camera/ex_act() return - -/obj/machinery/camera/autoname/lz_camera/update_icon() - return - //Thunderdome cameras /obj/machinery/camera/autoname/thunderdome name = "thunderdome camera" @@ -415,5 +412,6 @@ //Special invisible cameras, to get even better angles without looking ugly /obj/machinery/camera/autoname/thunderdome/hidden -/obj/machinery/camera/autoname/thunderdome/hidden/update_icon() +/obj/machinery/camera/autoname/thunderdome/hidden/update_icon_state() + . = ..() icon_state = "nothing" diff --git a/code/game/objects/machinery/camera/deployable_camera.dm b/code/game/objects/machinery/camera/deployable_camera.dm index 35e5791b33476..58058623dff2e 100644 --- a/code/game/objects/machinery/camera/deployable_camera.dm +++ b/code/game/objects/machinery/camera/deployable_camera.dm @@ -7,7 +7,8 @@ GLOBAL_VAR_INIT(deployed_cameras, 0) icon_state = "deployable" layer = ABOVE_ALL_MOB_LAYER//it flies after all -/obj/machinery/camera/deployable/update_icon() +/obj/machinery/camera/deployable/update_icon_state() + . = ..() if(obj_integrity <= 0) icon_state = "deployableoff" else diff --git a/code/game/objects/machinery/cloning/cloning.dm b/code/game/objects/machinery/cloning/cloning.dm index 52d2f5c33563d..6aebe9b342b10 100644 --- a/code/game/objects/machinery/cloning/cloning.dm +++ b/code/game/objects/machinery/cloning/cloning.dm @@ -207,6 +207,7 @@ These act as a respawn mechanic growning a body and offering it up to ghosts. set_light(0) /obj/machinery/cloning/vats/update_icon_state() + . = ..() if(!beaker) icon_state = "cell_0" return diff --git a/code/game/objects/machinery/computer/camera_console.dm b/code/game/objects/machinery/computer/camera_console.dm index a86c34b9a2ad3..b717b0c6e2765 100644 --- a/code/game/objects/machinery/computer/camera_console.dm +++ b/code/game/objects/machinery/computer/camera_console.dm @@ -169,6 +169,7 @@ /obj/machinery/computer/security/telescreen/update_icon_state() + . = ..() icon_state = initial(icon_state) if(machine_stat & (BROKEN|DISABLED)) icon_state += "b" diff --git a/code/game/objects/machinery/computer/computer.dm b/code/game/objects/machinery/computer/computer.dm index 85e1b1db479cb..d87800915d617 100644 --- a/code/game/objects/machinery/computer/computer.dm +++ b/code/game/objects/machinery/computer/computer.dm @@ -103,6 +103,7 @@ set_light(initial(light_range)) /obj/machinery/computer/update_icon_state() + . = ..() if(machine_stat & (BROKEN|DISABLED)) icon_state = "[initial(icon_state)]_broken" else diff --git a/code/game/objects/machinery/computer/nt_access.dm b/code/game/objects/machinery/computer/nt_access.dm index e540e912c68ea..39f9b9dd2e35c 100644 --- a/code/game/objects/machinery/computer/nt_access.dm +++ b/code/game/objects/machinery/computer/nt_access.dm @@ -70,7 +70,7 @@ visible_message("[src] shuts down as it loses power. Any running programs will now exit") /obj/machinery/computer/nt_access/update_icon_state() - icon_state = initial(icon_state) + return /obj/machinery/computer/nt_access/attackby(obj/item/I, mob/living/user, params) return attack_hand(user) diff --git a/code/game/objects/machinery/computer/som_computer.dm b/code/game/objects/machinery/computer/som_computer.dm index c1c60943a836f..2dcd787e872f6 100644 --- a/code/game/objects/machinery/computer/som_computer.dm +++ b/code/game/objects/machinery/computer/som_computer.dm @@ -13,6 +13,7 @@ pixel_y = 10 /obj/machinery/computer/som/update_icon_state() + . = ..() if(machine_stat & (BROKEN|DISABLED)) icon_state = "[initial(icon_state)]_broken" else if(machine_stat & NOPOWER) diff --git a/code/game/objects/machinery/constructable_frame.dm b/code/game/objects/machinery/constructable_frame.dm index 22ef9574cdda1..ebe3b92544254 100644 --- a/code/game/objects/machinery/constructable_frame.dm +++ b/code/game/objects/machinery/constructable_frame.dm @@ -10,7 +10,8 @@ var/state = 1 -/obj/machinery/constructable_frame/proc/update_desc() +/obj/machinery/constructable_frame/update_desc(updates) + . = ..() var/D if(req_components) D = "Requires " diff --git a/code/game/objects/machinery/cryopod.dm b/code/game/objects/machinery/cryopod.dm index ad6153f93d3e8..ef7987d73f8ea 100644 --- a/code/game/objects/machinery/cryopod.dm +++ b/code/game/objects/machinery/cryopod.dm @@ -129,6 +129,7 @@ set_light(initial(light_range)) /obj/machinery/cryopod/update_icon_state() + . = ..() if(occupant) icon_state = "[initial(icon_state)]_occupied" else diff --git a/code/game/objects/machinery/door_control.dm b/code/game/objects/machinery/door_control.dm index 4bff08604124c..eb004dc77b1ff 100644 --- a/code/game/objects/machinery/door_control.dm +++ b/code/game/objects/machinery/door_control.dm @@ -128,6 +128,7 @@ update_icon() /obj/machinery/door_control/update_icon_state() + . = ..() if(machine_stat & NOPOWER) icon_state = "doorctrl-p" else if(pressed) @@ -281,6 +282,7 @@ directional = FALSE /obj/machinery/door_control/old/update_icon_state() + . = ..() if(machine_stat & NOPOWER) icon_state = "olddoorctrl-p" else if(pressed) diff --git a/code/game/objects/machinery/door_display/door_display.dm b/code/game/objects/machinery/door_display/door_display.dm index 18d81891c61f8..43b7c871812e0 100644 --- a/code/game/objects/machinery/door_display/door_display.dm +++ b/code/game/objects/machinery/door_display/door_display.dm @@ -110,17 +110,17 @@ //icon update function // if NOPOWER, display blank // if BROKEN, display blue screen of death icon AI uses -/obj/machinery/door_display/update_icon() - cut_overlays() - if (machine_stat & (NOPOWER)) +/obj/machinery/door_display/update_overlays() + . = ..() + if(machine_stat & (NOPOWER)) return - if (machine_stat & (BROKEN)) - add_overlay("ai_bsod") + if(machine_stat & (BROKEN)) + . += "ai_bsod" return if(open) - add_overlay("open") + . += "open" else - add_overlay("closed") + . += "closed" //************ RESEARCH DOORS ****************\\ // Research cells have flashers and shutters/pod doors. diff --git a/code/game/objects/machinery/doors/airlock.dm b/code/game/objects/machinery/doors/airlock.dm index 28ce4b7d43259..464c3916fdf8a 100644 --- a/code/game/objects/machinery/doors/airlock.dm +++ b/code/game/objects/machinery/doors/airlock.dm @@ -182,25 +182,27 @@ else return 0 - -/obj/machinery/door/airlock/update_icon() - if(overlays) overlays.Cut() +/obj/machinery/door/airlock/update_icon_state() + . = ..() if(density) - if(emergency && hasPower()) - overlays += image(icon, "emergency_access_on") if(locked && lights) icon_state = "door_locked" else icon_state = "door_closed" - if(CHECK_BITFIELD(machine_stat, PANEL_OPEN) || welded) - overlays = list() - if(CHECK_BITFIELD(machine_stat, PANEL_OPEN)) - overlays += image(icon, "panel_open") - if(welded) - overlays += image(icon, "welded") else icon_state = "door_open" - + +/obj/machinery/door/airlock/update_overlays() + . = ..() + if(!density) + return + if(emergency && hasPower()) + . += image(icon, "emergency_access_on") + if(CHECK_BITFIELD(machine_stat, PANEL_OPEN) || welded) + if(CHECK_BITFIELD(machine_stat, PANEL_OPEN)) + . += image(icon, "panel_open") + if(welded) + . += image(icon, "welded") /obj/machinery/door/airlock/do_animate(animation) switch(animation) diff --git a/code/game/objects/machinery/doors/airlock_control.dm b/code/game/objects/machinery/doors/airlock_control.dm index 60a254001d1b8..dcb7e9d0ac8d3 100644 --- a/code/game/objects/machinery/doors/airlock_control.dm +++ b/code/game/objects/machinery/doors/airlock_control.dm @@ -149,6 +149,7 @@ /obj/machinery/access_button/update_icon_state() + . = ..() if(on) icon_state = "access_button_standby" else diff --git a/code/game/objects/machinery/doors/door.dm b/code/game/objects/machinery/doors/door.dm index bd76a3b972de1..f339c5c038a31 100644 --- a/code/game/objects/machinery/doors/door.dm +++ b/code/game/objects/machinery/doors/door.dm @@ -160,7 +160,8 @@ s.start() -/obj/machinery/door/update_icon() +/obj/machinery/door/update_icon_state() + . = ..() if(density) icon_state = "door1" else diff --git a/code/game/objects/machinery/doors/firedoor.dm b/code/game/objects/machinery/doors/firedoor.dm index 8dd7ddca4d5e1..64f577ffcb7fe 100644 --- a/code/game/objects/machinery/doors/firedoor.dm +++ b/code/game/objects/machinery/doors/firedoor.dm @@ -287,26 +287,29 @@ flick("door_closing", src) playsound(loc, 'sound/machines/emergency_shutter.ogg', 25) - -/obj/machinery/door/firedoor/update_icon() - overlays.Cut() +/obj/machinery/door/firedoor/update_icon_state() + . = ..() if(density) icon_state = "door_closed" + else + icon_state = "door_open" + +/obj/machinery/door/firedoor/update_overlays() + . = ..() + if(density) if(blocked) - overlays += "welded" + . += "welded" if(pdiff_alert) - overlays += "palert" + . += "palert" if(dir_alerts) for(var/d=1;d<=4;d++) var/cdir = GLOB.cardinals[d] for(var/i=1;i<=length(ALERT_STATES);i++) if(dir_alerts[d] & (1<<(i-1))) - overlays += new/icon(icon,"alert_[ALERT_STATES[i]]", dir=cdir) + . += new/icon(icon,"alert_[ALERT_STATES[i]]", dir=cdir) else - icon_state = "door_open" if(blocked) - overlays += "welded_open" - + . += "welded_open" /obj/machinery/door/firedoor/mainship name = "\improper Emergency Shutter" diff --git a/code/game/objects/machinery/doors/poddoor.dm b/code/game/objects/machinery/doors/poddoor.dm index a422aeb4b0abb..230eee979032c 100644 --- a/code/game/objects/machinery/doors/poddoor.dm +++ b/code/game/objects/machinery/doors/poddoor.dm @@ -48,7 +48,8 @@ /obj/machinery/door/poddoor/try_to_activate_door(mob/user) return -/obj/machinery/door/poddoor/update_icon() +/obj/machinery/door/poddoor/update_icon_state() + . = ..() if(density) icon_state = "pdoor1" else diff --git a/code/game/objects/machinery/doors/railing.dm b/code/game/objects/machinery/doors/railing.dm index 65fcc85836118..c27ffcaeb1222 100644 --- a/code/game/objects/machinery/doors/railing.dm +++ b/code/game/objects/machinery/doors/railing.dm @@ -57,7 +57,8 @@ return TRUE -/obj/machinery/door/poddoor/railing/update_icon() +/obj/machinery/door/poddoor/railing/update_icon_state() + . = ..() if(density) icon_state = "railing1" else diff --git a/code/game/objects/machinery/doors/shutters.dm b/code/game/objects/machinery/doors/shutters.dm index 3d019311d6513..81cee63954d24 100644 --- a/code/game/objects/machinery/doors/shutters.dm +++ b/code/game/objects/machinery/doors/shutters.dm @@ -55,7 +55,8 @@ operating = FALSE -/obj/machinery/door/poddoor/shutters/update_icon() +/obj/machinery/door/poddoor/shutters/update_icon_state() + . = ..() if(operating) return icon_state = "shutter[density]" diff --git a/code/game/objects/machinery/doors/windowdoor.dm b/code/game/objects/machinery/doors/windowdoor.dm index 56389874d968e..b845a1bd5f0fb 100644 --- a/code/game/objects/machinery/doors/windowdoor.dm +++ b/code/game/objects/machinery/doors/windowdoor.dm @@ -44,7 +44,8 @@ return ..() -/obj/machinery/door/window/update_icon() +/obj/machinery/door/window/update_icon_state() + . = ..() if(operating) return icon_state = density ? base_state : "[base_state]open" diff --git a/code/game/objects/machinery/dropship_part_fabricator.dm b/code/game/objects/machinery/dropship_part_fabricator.dm index d2024fea2e511..0d7ccebc193da 100644 --- a/code/game/objects/machinery/dropship_part_fabricator.dm +++ b/code/game/objects/machinery/dropship_part_fabricator.dm @@ -19,6 +19,7 @@ var/busy = FALSE /obj/machinery/dropship_part_fabricator/update_icon_state() + . = ..() if(machine_stat & NOPOWER) icon_state = "drone_fab_nopower" return diff --git a/code/game/objects/machinery/flasher.dm b/code/game/objects/machinery/flasher.dm index f269b918c1ef6..fbb06a6a8ae7c 100644 --- a/code/game/objects/machinery/flasher.dm +++ b/code/game/objects/machinery/flasher.dm @@ -34,6 +34,7 @@ /obj/machinery/flasher/update_icon_state() + . = ..() if(!(machine_stat & NOPOWER)) icon_state = "[base_state]1" else diff --git a/code/game/objects/machinery/floodlight.dm b/code/game/objects/machinery/floodlight.dm index f16b5e2addcc9..bf0ec236f42fb 100644 --- a/code/game/objects/machinery/floodlight.dm +++ b/code/game/objects/machinery/floodlight.dm @@ -125,6 +125,7 @@ turn_light(user, !light_on) /obj/machinery/deployable/floodlight/update_icon_state() + . = ..() icon_state = "floodlightcombat_deployed" + (light_on ? "_on" : "_off") /obj/item/deployable_floodlight @@ -177,7 +178,7 @@ update_icon() -/obj/machinery/floodlight/colony/update_icon() +/obj/machinery/floodlight/colony/update_icon_state() . = ..() if(light_on) icon_state = "floodon" @@ -199,7 +200,7 @@ resistance_flags = RESIST_ALL var/turned_on = FALSE //has to be toggled in engineering -/obj/machinery/colony_floodlight_switch/update_icon() +/obj/machinery/colony_floodlight_switch/update_icon_state() . = ..() if(machine_stat & NOPOWER) icon_state = "panelnopower" diff --git a/code/game/objects/machinery/fuelcell_recycler.dm b/code/game/objects/machinery/fuelcell_recycler.dm index a91363d75284a..5d7050c77cb48 100644 --- a/code/game/objects/machinery/fuelcell_recycler.dm +++ b/code/game/objects/machinery/fuelcell_recycler.dm @@ -85,18 +85,22 @@ update_icon() -/obj/machinery/fuelcell_recycler/update_icon() - src.overlays.Cut() - +/obj/machinery/fuelcell_recycler/update_icon_state() + . = ..() if(machine_stat & (BROKEN|NOPOWER)) icon_state = "recycler0" + else + icon_state = "recycler" + +/obj/machinery/fuelcell_recycler/update_overlays() + . = ..() + + if(machine_stat & (BROKEN|NOPOWER)) if(cell_left != null) src.overlays += "recycler-left-cell" if(cell_right != null) src.overlays += "recycler-right-cell" return - else - icon_state = "recycler" var/overlay_builder = "recycler-" if(cell_left == null && cell_right == null) @@ -107,8 +111,8 @@ else overlay_builder += "left-charging" - src.overlays += overlay_builder - src.overlays += "recycler-left-cell" + . += overlay_builder + . += "recycler-left-cell" return else if(cell_left == null) if(cell_right.is_regenerated()) @@ -116,8 +120,8 @@ else overlay_builder += "right-charging" - src.overlays += overlay_builder - src.overlays += "recycler-right-cell" + . += overlay_builder + . += "recycler-right-cell" return else // both left and right cells are there if(cell_left.is_regenerated()) @@ -130,7 +134,6 @@ else overlay_builder += "-right-charging" - src.overlays += overlay_builder - src.overlays += "recycler-left-cell" - src.overlays += "recycler-right-cell" - return + . += overlay_builder + . += "recycler-left-cell" + . += "recycler-right-cell" diff --git a/code/game/objects/machinery/hologram.dm b/code/game/objects/machinery/hologram.dm index fd83ffa24507e..878e61ba616de 100644 --- a/code/game/objects/machinery/hologram.dm +++ b/code/game/objects/machinery/hologram.dm @@ -354,6 +354,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ update_icon() /obj/machinery/holopad/update_icon_state() + . = ..() var/total_users = LAZYLEN(masters) + LAZYLEN(holo_calls) if(ringing) icon_state = "holopad_ringing" diff --git a/code/game/objects/machinery/holosign.dm b/code/game/objects/machinery/holosign.dm index 4217b4ba818dc..d4259f279a26b 100644 --- a/code/game/objects/machinery/holosign.dm +++ b/code/game/objects/machinery/holosign.dm @@ -17,6 +17,7 @@ update_icon() /obj/machinery/holosign/update_icon_state() + . = ..() if(!lit) icon_state = "sign_off" else diff --git a/code/game/objects/machinery/igniter.dm b/code/game/objects/machinery/igniter.dm index fb08154766ea9..4cd84718ca1e6 100644 --- a/code/game/objects/machinery/igniter.dm +++ b/code/game/objects/machinery/igniter.dm @@ -30,7 +30,8 @@ icon_state = "igniter[on]" -/obj/machinery/igniter/update_icon() +/obj/machinery/igniter/update_icon_state() + . = ..() if(is_operational()) icon_state = "igniter[on]" else @@ -52,14 +53,12 @@ var/base_state = "migniter" anchored = TRUE -/obj/machinery/sparker/update_icon() - if ( !(machine_stat & NOPOWER) && disable == 0 ) - +/obj/machinery/sparker/update_icon_state() + . = ..() + if(!(machine_stat & NOPOWER) && disable == 0) icon_state = "[base_state]" -// src.sd_SetLuminosity(2) else icon_state = "[base_state]-p" -// src.sd_SetLuminosity(0) /obj/machinery/sparker/attackby(obj/item/I, mob/user, params) . = ..() diff --git a/code/game/objects/machinery/iv_drip.dm b/code/game/objects/machinery/iv_drip.dm index b68b04d619e8f..6fd1201d19191 100644 --- a/code/game/objects/machinery/iv_drip.dm +++ b/code/game/objects/machinery/iv_drip.dm @@ -9,31 +9,44 @@ var/mode = 1 // 1 is injecting, 0 is taking blood. var/obj/item/reagent_containers/beaker = null -/obj/machinery/iv_drip/update_icon() - if(src.attached) +/obj/machinery/iv_drip/update_icon_state() + . = ..() + if(attached) icon_state = "hooked" else icon_state = "" - overlays = null +/obj/machinery/iv_drip/update_overlays() + . = ..() - if(beaker) - var/datum/reagents/reagents = beaker.reagents - if(reagents.total_volume) - var/image/filling = image('icons/obj/iv_drip.dmi', src, "reagent") - - var/percent = round((reagents.total_volume / beaker.volume) * 100) - switch(percent) - if(0 to 9) filling.icon_state = "reagent0" - if(10 to 24) filling.icon_state = "reagent10" - if(25 to 49) filling.icon_state = "reagent25" - if(50 to 74) filling.icon_state = "reagent50" - if(75 to 79) filling.icon_state = "reagent75" - if(80 to 90) filling.icon_state = "reagent80" - if(91 to INFINITY) filling.icon_state = "reagent100" - - filling.color = mix_color_from_reagents(reagents.reagent_list) - overlays += filling + if(!beaker) + return + + var/datum/reagents/reagents = beaker.reagents + if(!reagents?.total_volume) + return + + var/image/filling = image('icons/obj/iv_drip.dmi', src, "reagent") + + var/percent = round((reagents.total_volume / beaker.volume) * 100) + switch(percent) + if(0 to 9) + filling.icon_state = "reagent0" + if(10 to 24) + filling.icon_state = "reagent10" + if(25 to 49) + filling.icon_state = "reagent25" + if(50 to 74) + filling.icon_state = "reagent50" + if(75 to 79) + filling.icon_state = "reagent75" + if(80 to 90) + filling.icon_state = "reagent80" + if(91 to INFINITY) + filling.icon_state = "reagent100" + + filling.color = mix_color_from_reagents(reagents.reagent_list) + . += filling /obj/machinery/iv_drip/MouseDrop(over_object, src_location, over_location) ..() diff --git a/code/game/objects/machinery/kitchen/smartfridge.dm b/code/game/objects/machinery/kitchen/smartfridge.dm index 1b8d4713d4a66..b4ad08ae733e8 100644 --- a/code/game/objects/machinery/kitchen/smartfridge.dm +++ b/code/game/objects/machinery/kitchen/smartfridge.dm @@ -41,8 +41,9 @@ if(src.shoot_inventory && prob(2)) src.throw_item() -/obj/machinery/smartfridge/update_icon() - if( !(machine_stat & NOPOWER) ) +/obj/machinery/smartfridge/update_icon_state() + . = ..() + if(!(machine_stat & NOPOWER)) icon_state = icon_on else icon_state = icon_off diff --git a/code/game/objects/machinery/lightswitch.dm b/code/game/objects/machinery/lightswitch.dm index f4762b8f83a35..b810656ae3eaa 100644 --- a/code/game/objects/machinery/lightswitch.dm +++ b/code/game/objects/machinery/lightswitch.dm @@ -25,6 +25,7 @@ update_icon() /obj/machinery/light_switch/update_icon_state() + . = ..() if(machine_stat & NOPOWER) icon_state = "light-p" return diff --git a/code/game/objects/machinery/miner.dm b/code/game/objects/machinery/miner.dm index 2c09d4f7cfc81..b61555bd74065 100644 --- a/code/game/objects/machinery/miner.dm +++ b/code/game/objects/machinery/miner.dm @@ -73,7 +73,8 @@ var/marker_icon = "miner_[mineral_value >= PLATINUM_CRATE_SELL_AMOUNT ? "platinum" : "phoron"]_on" SSminimaps.add_marker(src, MINIMAP_FLAG_ALL, image('icons/UI_icons/map_blips.dmi', null, marker_icon)) -/obj/machinery/miner/update_icon() +/obj/machinery/miner/update_icon_state() + . = ..() switch(miner_status) if(MINER_RUNNING) icon_state = "mining_drill_active_[miner_upgrade_type]" diff --git a/code/game/objects/machinery/recharger.dm b/code/game/objects/machinery/recharger.dm index 4c4f48c0fbe9d..675837aa8b96d 100644 --- a/code/game/objects/machinery/recharger.dm +++ b/code/game/objects/machinery/recharger.dm @@ -140,29 +140,29 @@ B.bcell.charge = 0 ..(severity) -/obj/machinery/recharger/update_icon() - overlays = list() +/obj/machinery/recharger/update_overlays() + . = ..() if((machine_stat & (NOPOWER|BROKEN))) return - else if(!charging) - overlays += "recharger-power" + if(!charging) + . += "recharger-power" return if(percent_charge_complete < 25) - overlays += "recharger-10" + . += "recharger-10" else if(percent_charge_complete >= 25 && percent_charge_complete < 50) - overlays += "recharger-25" + . += "recharger-25" else if(percent_charge_complete >= 50 && percent_charge_complete < 75) - overlays += "recharger-50" + . += "recharger-50" else if(percent_charge_complete >= 75 && percent_charge_complete < 100) - overlays += "recharger-75" + . += "recharger-75" else if(percent_charge_complete >= 100) - overlays += "recharger-100" + . += "recharger-100" if(istype(charging, /obj/item/weapon/gun/energy/taser)) - overlays += "recharger-taser" + . += "recharger-taser" else if(istype(charging, /obj/item/weapon/baton)) - overlays += "recharger-baton" + . += "recharger-baton" /obj/machinery/recharger/nopower use_power = NO_POWER_USE diff --git a/code/game/objects/machinery/robotic_cradle.dm b/code/game/objects/machinery/robotic_cradle.dm index 69bf7b1f3d26f..47bc4e5b26e3d 100644 --- a/code/game/objects/machinery/robotic_cradle.dm +++ b/code/game/objects/machinery/robotic_cradle.dm @@ -39,6 +39,7 @@ return ..() /obj/machinery/robotic_cradle/update_icon_state() + . = ..() if(machine_stat & NOPOWER) icon_state = "borgcharger0" return diff --git a/code/game/objects/machinery/sleeper.dm b/code/game/objects/machinery/sleeper.dm index 32cceba5f64ec..a1f5643fe42e6 100644 --- a/code/game/objects/machinery/sleeper.dm +++ b/code/game/objects/machinery/sleeper.dm @@ -261,6 +261,7 @@ set_light(initial(light_range)) /obj/machinery/sleeper/update_icon_state() + . = ..() if(occupant) icon_state = "[initial(icon_state)]_occupied" else diff --git a/code/game/objects/machinery/squad_supply/supply_beacon.dm b/code/game/objects/machinery/squad_supply/supply_beacon.dm index 69592839cbb73..af1e04242b59c 100644 --- a/code/game/objects/machinery/squad_supply/supply_beacon.dm +++ b/code/game/objects/machinery/squad_supply/supply_beacon.dm @@ -12,6 +12,7 @@ var/underground_signal = FALSE /obj/item/beacon/update_icon_state() + . = ..() icon_state = activated ? icon_activated : initial(icon_state) /obj/item/beacon/attack_self(mob/living/carbon/human/H) diff --git a/code/game/objects/machinery/suit_storage_unit.dm b/code/game/objects/machinery/suit_storage_unit.dm index 3d4a67b897e4f..15f3fa81890bc 100644 --- a/code/game/objects/machinery/suit_storage_unit.dm +++ b/code/game/objects/machinery/suit_storage_unit.dm @@ -35,31 +35,32 @@ inserted_tank = new starting_tank_type(src) update_icon() - -/obj/machinery/suit_storage_unit/update_icon() - overlays.Cut() - if(isUV) - icon_state = "disinfecting" +/obj/machinery/suit_storage_unit/update_overlays() + . = ..() + if(isUV || !isopen) return - else if(isopen) - if(inserted_helmet) - overlays += image("helmet") - if(inserted_suit) - overlays += image("suit") - if(inserted_mask) - overlays += image("mask") - if(inserted_tank) - overlays += image("tank") + if(inserted_helmet) + . += image("helmet") + if(inserted_suit) + . += image("suit") + if(inserted_mask) + . += image("mask") + if(inserted_tank) + . += image("tank") - icon_state = "open" +/obj/machinery/suit_storage_unit/update_icon_state() + . = ..() + if(isUV) + return + if(isopen) + icon_state = "open" else icon_state = "closed" if(machine_stat & NOPOWER) icon_state += "_off" - /obj/machinery/suit_storage_unit/power_change() ..() if(machine_stat & NOPOWER) diff --git a/code/game/objects/machinery/telecomms/telecomunications.dm b/code/game/objects/machinery/telecomms/telecomunications.dm index 37eee7febe775..523f07c031a19 100644 --- a/code/game/objects/machinery/telecomms/telecomunications.dm +++ b/code/game/objects/machinery/telecomms/telecomunications.dm @@ -144,7 +144,8 @@ GLOBAL_LIST_EMPTY(telecomms_freq_listening_list) return -/obj/machinery/telecomms/update_icon() +/obj/machinery/telecomms/update_icon_state() + . = ..() if(on) if(CHECK_BITFIELD(machine_stat, PANEL_OPEN)) icon_state = "[initial(icon_state)]_o" diff --git a/code/game/objects/machinery/vending/loadout_vendor.dm b/code/game/objects/machinery/vending/loadout_vendor.dm index ba5fd54604b59..42539a1bc0d42 100644 --- a/code/game/objects/machinery/vending/loadout_vendor.dm +++ b/code/game/objects/machinery/vending/loadout_vendor.dm @@ -26,6 +26,7 @@ set_light(0) /obj/machinery/loadout_vendor/update_icon_state() + . = ..() if(is_operational()) icon_state = initial(icon_state) else diff --git a/code/game/objects/machinery/vending/marine_vending.dm b/code/game/objects/machinery/vending/marine_vending.dm index 6ef43ebda2880..fbae7752164ea 100644 --- a/code/game/objects/machinery/vending/marine_vending.dm +++ b/code/game/objects/machinery/vending/marine_vending.dm @@ -820,7 +820,8 @@ . = ..() update_icon() -/obj/machinery/vending/lasgun/update_icon() +/obj/machinery/vending/lasgun/update_icon_state() + . = ..() if(machine_max_charge) switch(machine_current_charge / max(1,machine_max_charge)) if(0.7 to 1) diff --git a/code/game/objects/machinery/vending/new_marine_vendors.dm b/code/game/objects/machinery/vending/new_marine_vendors.dm index 12a004b1eecd0..4d160740b5394 100644 --- a/code/game/objects/machinery/vending/new_marine_vendors.dm +++ b/code/game/objects/machinery/vending/new_marine_vendors.dm @@ -41,6 +41,7 @@ set_light(0) /obj/machinery/marine_selector/update_icon_state() + . = ..() if(is_operational()) icon_state = initial(icon_state) else diff --git a/code/game/objects/machinery/vending/quick_vendor.dm b/code/game/objects/machinery/vending/quick_vendor.dm index 6195e554db95a..142fe1422f30f 100644 --- a/code/game/objects/machinery/vending/quick_vendor.dm +++ b/code/game/objects/machinery/vending/quick_vendor.dm @@ -131,6 +131,7 @@ GLOBAL_LIST_INIT(quick_loadouts, init_quick_loadouts()) set_light(0) /obj/machinery/quick_vendor/update_icon_state() + . = ..() if(is_operational()) icon_state = initial(icon_state) else diff --git a/code/game/objects/machinery/vending/vending.dm b/code/game/objects/machinery/vending/vending.dm index 7d1d3d0461c71..8baa671ed8d39 100644 --- a/code/game/objects/machinery/vending/vending.dm +++ b/code/game/objects/machinery/vending/vending.dm @@ -818,6 +818,7 @@ set_light(initial(light_range)) /obj/machinery/vending/update_icon_state() + . = ..() if(machine_stat & BROKEN) icon_state = "[initial(icon_state)]-broken" else if(machine_stat & NOPOWER) diff --git a/code/game/objects/machinery/washing_machine.dm b/code/game/objects/machinery/washing_machine.dm index 30f1aa74230cf..4f88a539cb51f 100644 --- a/code/game/objects/machinery/washing_machine.dm +++ b/code/game/objects/machinery/washing_machine.dm @@ -67,7 +67,8 @@ usr.loc = src.loc -/obj/machinery/washing_machine/update_icon() +/obj/machinery/washing_machine/update_icon_state() + . = ..() icon_state = "wm_[state][panel]" diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 46eafc7015f98..d4b92ddde0a61 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -101,7 +101,8 @@ LINEN BINS . += "There are [amount] bed sheets in the bin." -/obj/structure/bedsheetbin/update_icon() +/obj/structure/bedsheetbin/update_icon_state() + . = ..() switch(amount) if(0) icon_state = "linenbin-empty" diff --git a/code/game/objects/structures/bookcase.dm b/code/game/objects/structures/bookcase.dm index d5bfa240ac36e..c1d469505a990 100644 --- a/code/game/objects/structures/bookcase.dm +++ b/code/game/objects/structures/bookcase.dm @@ -67,7 +67,8 @@ qdel(src) -/obj/structure/bookcase/update_icon() +/obj/structure/bookcase/update_icon_state() + . = ..() if(length(contents) < 5) icon_state = "book-[length(contents)]" else diff --git a/code/game/objects/structures/campaign_structures/capture_objectives.dm b/code/game/objects/structures/campaign_structures/capture_objectives.dm index 34eb5dee8ebcb..8cefe1c2feffc 100644 --- a/code/game/objects/structures/campaign_structures/capture_objectives.dm +++ b/code/game/objects/structures/campaign_structures/capture_objectives.dm @@ -148,6 +148,7 @@ countdown.pixel_y = 90 /obj/structure/campaign_objective/capture_objective/sensor_tower/update_icon_state() + . = ..() icon_state = initial(icon_state) if(!owning_faction) switch(capturing_faction) diff --git a/code/game/objects/structures/coathanger.dm b/code/game/objects/structures/coathanger.dm index 150dbf4121217..5d1e929bb7af5 100644 --- a/code/game/objects/structures/coathanger.dm +++ b/code/game/objects/structures/coathanger.dm @@ -50,11 +50,11 @@ break -/obj/structure/coatrack/update_icon() - overlays.Cut() +/obj/structure/coatrack/update_overlays() + . = ..() if(istype(coat, /obj/item/clothing/suit/storage/labcoat)) - overlays += image(icon, icon_state = "coat_lab") + . += image(icon, icon_state = "coat_lab") if(istype(coat, /obj/item/clothing/suit/storage/labcoat/cmo)) - overlays += image(icon, icon_state = "coat_cmo") + . += image(icon, icon_state = "coat_cmo") if(istype(coat, /obj/item/clothing/suit/storage/det_suit)) - overlays += image(icon, icon_state = "coat_det") + . += image(icon, icon_state = "coat_det") diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 8b3e66ae7ffe7..036d292c334d0 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -322,15 +322,17 @@ else balloon_alert(usr, "Can't do this") -/obj/structure/closet/update_icon()//Putting the welded stuff in updateicon() so it's easy to overwrite for special cases (Fridges, cabinets, and whatnot) - overlays.Cut() +/obj/structure/closet/update_icon_state()//Putting the welded stuff in updateicon() so it's easy to overwrite for special cases (Fridges, cabinets, and whatnot) + . = ..() if(!opened) icon_state = icon_closed - if(welded) - overlays += image(icon, overlay_welded) else icon_state = icon_opened +/obj/structure/closet/update_overlays() + . = ..() + if(!opened && welded) + . += image(icon, overlay_welded) /obj/structure/closet/resisted_against(datum/source) container_resist(source) diff --git a/code/game/objects/structures/crates_lockers/closets/coffin.dm b/code/game/objects/structures/crates_lockers/closets/coffin.dm index 8d2413ac2367c..6a0eab48d6d7c 100644 --- a/code/game/objects/structures/crates_lockers/closets/coffin.dm +++ b/code/game/objects/structures/crates_lockers/closets/coffin.dm @@ -8,6 +8,7 @@ anchored = FALSE /obj/structure/closet/coffin/update_icon_state() + . = ..() if(!opened) icon_state = icon_closed else diff --git a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm index 9504f2a66392c..69449f3b73a55 100644 --- a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm +++ b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm @@ -191,7 +191,9 @@ to_chat(user, span_notice("Cabinet unlocked.")) return -/obj/structure/closet/fireaxecabinet/update_icon() //Template: fireaxe[has fireaxe][is opened][hits taken][is smashed]. If you want the opening or closing animations, add "opening" or "closing" right after the numbers +//Template: fireaxe[has fireaxe][is opened][hits taken][is smashed]. If you want the opening or closing animations, add "opening" or "closing" right after the numbers +/obj/structure/closet/fireaxecabinet/update_icon_state() + . = ..() var/hasaxe = 0 if(fireaxe) hasaxe = 1 diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm index 06e05dff0860f..c4f4a99119ad5 100644 --- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm +++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm @@ -9,6 +9,7 @@ AddElement(/datum/element/debris, DEBRIS_WOOD, -10, 5) /obj/structure/closet/cabinet/update_icon_state() + . = ..() if(!opened) icon_state = icon_closed else diff --git a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm index c3686b58dc40e..92590d29814b3 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm @@ -23,6 +23,7 @@ new /obj/item/reagent_containers/food/drinks/cans/beer( src ) /obj/structure/closet/secure_closet/bar/update_icon_state() + . = ..() if(broken) icon_state = icon_broken return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm index 7e65054f0121d..854b71e9c9752 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm @@ -8,6 +8,7 @@ icon_off = "fridge1" /obj/structure/closet/secure_closet/freezer/update_icon_state() + . = ..() if(broken) icon_state = icon_broken return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index 68434d3284483..ab112d2039125 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -31,7 +31,8 @@ icon_broken = "cabinetdetective_broken" icon_off = "cabinetdetective_broken" -/obj/structure/closet/secure_closet/personal/cabinet/update_icon() +/obj/structure/closet/secure_closet/personal/cabinet/update_icon_state() + . = ..() if(broken) icon_state = icon_broken else diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index a29102023f1a2..93618348f5f14 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -50,14 +50,17 @@ return togglelock(usr) -/obj/structure/closet/secure_closet/update_icon() - overlays.Cut() +/obj/structure/closet/secure_closet/update_icon_state() + . = ..() if(opened) icon_state = icon_opened else icon_state = locked ? icon_locked : icon_closed + +/obj/structure/closet/secure_closet/update_overlays() + . = ..() if(welded) - overlays += overlay_welded + . += overlay_welded /obj/structure/closet/secure_closet/break_open() broken = TRUE 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 12872e153fd1f..e91d658cfd0a5 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -271,7 +271,8 @@ new /obj/item/armor_module/storage/uniform/holster/armpit(src) -/obj/structure/closet/secure_closet/detective/update_icon() +/obj/structure/closet/secure_closet/detective/update_icon_state() + . = ..() if(broken) icon_state = icon_broken else @@ -356,7 +357,8 @@ large = FALSE -/obj/structure/closet/secure_closet/wall/update_icon() +/obj/structure/closet/secure_closet/wall/update_icon_state() + . = ..() if(broken) icon_state = icon_broken else diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index 58fc58a48db8b..461263a1d6fc0 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -78,7 +78,8 @@ new /obj/item/tool/extinguisher(src) new /obj/item/clothing/head/hardhat/red(src) -/obj/structure/closet/firecloset/update_icon() +/obj/structure/closet/firecloset/update_icon_state() + . = ..() if(!opened) icon_state = icon_closed else diff --git a/code/game/objects/structures/crates_lockers/secure_crates.dm b/code/game/objects/structures/crates_lockers/secure_crates.dm index 06f22499cc5e6..ac69840f78c02 100644 --- a/code/game/objects/structures/crates_lockers/secure_crates.dm +++ b/code/game/objects/structures/crates_lockers/secure_crates.dm @@ -17,16 +17,17 @@ . = ..() update_icon() - -/obj/structure/closet/crate/secure/update_icon() - overlays.Cut() +/obj/structure/closet/crate/secure/update_icon_state() + . = ..() if(opened) icon_state = icon_opened else icon_state = locked ? icon_locked : icon_unlocked - if(welded) - overlays += overlay_welded +/obj/structure/closet/crate/secure/update_overlays() + . = ..() + if(welded) + . += overlay_welded /obj/structure/closet/crate/secure/can_open() return !locked diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 801231fc4097a..ee3dc9c4927a9 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -22,7 +22,8 @@ take_damage(5, BRUTE, BOMB) -/obj/structure/displaycase/update_icon() +/obj/structure/displaycase/update_icon_state() + . = ..() if(destroyed) icon_state = "glassboxb[occupied]" else diff --git a/code/game/objects/structures/droppod.dm b/code/game/objects/structures/droppod.dm index e044f96fe338c..ed40d570964f2 100644 --- a/code/game/objects/structures/droppod.dm +++ b/code/game/objects/structures/droppod.dm @@ -101,6 +101,7 @@ GLOBAL_LIST_INIT(blocked_droppod_tiles, typecacheof(list(/turf/open/space/transi set_light(0) /obj/structure/droppod/update_icon_state() + . = ..() if(drop_state == DROPPOD_ACTIVE) icon_state = initial(icon_state) else if(operation_started && launch_allowed) @@ -386,6 +387,7 @@ GLOBAL_LIST_INIT(blocked_droppod_tiles, typecacheof(list(/turf/open/space/transi return ..() /obj/structure/droppod/nonmob/update_icon_state() + . = ..() if(drop_state == DROPPOD_ACTIVE) icon_state = initial(icon_state) else if(stored_object) diff --git a/code/game/objects/structures/dropship_equipment.dm b/code/game/objects/structures/dropship_equipment.dm index 1d42586489ebf..9ce7c3b6efc4b 100644 --- a/code/game/objects/structures/dropship_equipment.dm +++ b/code/game/objects/structures/dropship_equipment.dm @@ -508,6 +508,7 @@ update_icon() /obj/structure/dropship_equipment/shuttle/weapon_holder/update_icon_state() + . = ..() if(ship_base) icon_state = deployed_icon_state else @@ -723,7 +724,8 @@ dropship_equipment_flags = USES_AMMO|IS_WEAPON|IS_INTERACTABLE ammo_type_used = CAS_30MM -/obj/structure/dropship_equipment/cas/weapon/heavygun/update_icon() +/obj/structure/dropship_equipment/cas/weapon/heavygun/update_icon_state() + . = ..() if(ammo_equipped) icon_state = "30mm_cannon_loaded[ammo_equipped.ammo_count?"1":"0"]" else @@ -754,7 +756,8 @@ ammo_equipped = null //nothing left to empty after firing update_icon() -/obj/structure/dropship_equipment/cas/weapon/rocket_pod/update_icon() +/obj/structure/dropship_equipment/cas/weapon/rocket_pod/update_icon_state() + . = ..() if(ammo_equipped?.ammo_count) icon_state = "rocket_pod_loaded[ammo_equipped.ammo_id]" else @@ -774,7 +777,8 @@ point_cost = 450 ammo_type_used = CAS_MINI_ROCKET -/obj/structure/dropship_equipment/cas/weapon/minirocket_pod/update_icon() +/obj/structure/dropship_equipment/cas/weapon/minirocket_pod/update_icon_state() + . = ..() if(ammo_equipped?.ammo_count) icon_state = "minirocket_pod_loaded" else @@ -799,7 +803,8 @@ dropship_equipment_flags = USES_AMMO|IS_WEAPON|IS_INTERACTABLE ammo_type_used = CAS_LASER_BATTERY -/obj/structure/dropship_equipment/cas/weapon/laser_beam_gun/update_icon() +/obj/structure/dropship_equipment/cas/weapon/laser_beam_gun/update_icon_state() + . = ..() if(ammo_equipped?.ammo_count) icon_state = "laser_beam_loaded" else @@ -820,7 +825,8 @@ equip_category = DROPSHIP_CREW_WEAPON //fits inside the central spot of the dropship point_cost = 0 -/obj/structure/dropship_equipment/cas/weapon/launch_bay/update_icon() +/obj/structure/dropship_equipment/cas/weapon/launch_bay/update_icon_state() + . = ..() if(ammo_equipped?.ammo_count) icon_state = "launch_bay_loaded" else @@ -880,6 +886,7 @@ ammo_type_used = CAS_BOMBLET /obj/structure/dropship_equipment/cas/weapon/bomblet_pod/update_icon_state() + . = ..() if(ammo_equipped?.ammo_count) icon_state = "bomblet_pod_loaded" else if(ship_base) @@ -899,6 +906,7 @@ ammo_type_used = CAS_BOMB /obj/structure/dropship_equipment/cas/weapon/bomb_pod/update_icon_state() + . = ..() if(ammo_equipped?.ammo_count) icon_state = "bomb_pod_loaded" else if(ship_base) diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm index 97b19ed104a51..861b104896920 100644 --- a/code/game/objects/structures/extinguisher.dm +++ b/code/game/objects/structures/extinguisher.dm @@ -58,12 +58,14 @@ opened = !opened update_icon() -/obj/structure/extinguisher_cabinet/update_icon() - overlays.Cut() +/obj/structure/extinguisher_cabinet/update_icon_state() + . = ..() icon_state = "[initial(icon_state)][opened]" +/obj/structure/extinguisher_cabinet/update_overlays() + . = ..() if(opened && has_extinguisher) - overlays += "extinguishero_[has_extinguisher.sprite_name]" + . += "extinguishero_[has_extinguisher.sprite_name]" /obj/structure/extinguisher_cabinet/mini starter_extinguisher = /obj/item/tool/extinguisher/mini diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 7191839c9f19e..f22d91ab5bf69 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -334,6 +334,7 @@ /obj/structure/girder/update_icon_state() + . = ..() switch(girder_state) if(GIRDER_BROKEN, GIRDER_BROKEN_PATCHED) icon = 'icons/obj/smooth_objects/girder_broke.dmi' diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm index 5189ccb463c2c..fe24e677af696 100644 --- a/code/game/objects/structures/ladders.dm +++ b/code/game/objects/structures/ladders.dm @@ -53,6 +53,7 @@ return ..() /obj/structure/ladder/update_icon_state() + . = ..() if(up && down) icon_state = "ladder11" diff --git a/code/game/objects/structures/lamarr_cage.dm b/code/game/objects/structures/lamarr_cage.dm index 5110a478d5981..ed0672aa733f3 100644 --- a/code/game/objects/structures/lamarr_cage.dm +++ b/code/game/objects/structures/lamarr_cage.dm @@ -53,5 +53,5 @@ stat = DEAD -/obj/item/clothing/mask/facehugger/lamarr/update_icon() +/obj/item/clothing/mask/facehugger/lamarr/update_icon_state() return diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index e0a181caae863..e945c9a0c58ff 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -75,7 +75,8 @@ update_icon() addtimer(VARSET_CALLBACK(src, switching_states, FALSE), 1 SECONDS) -/obj/structure/mineral_door/update_icon() +/obj/structure/mineral_door/update_icon_state() + . = ..() if(open) icon_state = "[base_icon_state][smoothing_flags ? "-[smoothing_junction]" : ""]-open" else diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 10bd407fd3dc5..9fa60f68d887e 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -23,7 +23,8 @@ QDEL_NULL(connected) return ..() -/obj/structure/morgue/update_icon() +/obj/structure/morgue/update_icon_state() + . = ..() if (morgue_open) icon_state = "[morgue_type]0" else @@ -181,11 +182,9 @@ /obj/structure/morgue/crematorium/update_icon() + . = ..() if(cremating) icon_state = "[morgue_type]_active" - else - ..() - /obj/structure/morgue/crematorium/proc/cremate(mob/user) set waitfor = 0 diff --git a/code/game/objects/structures/orbital_cannon.dm b/code/game/objects/structures/orbital_cannon.dm index e4837d7ce2c81..ffe7a8b100e23 100644 --- a/code/game/objects/structures/orbital_cannon.dm +++ b/code/game/objects/structures/orbital_cannon.dm @@ -45,6 +45,7 @@ return ..() /obj/structure/orbital_cannon/update_icon_state() + . = ..() if(chambered_tray) icon_state = "OBC_chambered" return diff --git a/code/game/objects/structures/prop.dm b/code/game/objects/structures/prop.dm index ec19cdda3760c..b4f805ee9635d 100644 --- a/code/game/objects/structures/prop.dm +++ b/code/game/objects/structures/prop.dm @@ -75,6 +75,7 @@ set_light(initial(light_range)) /obj/machinery/prop/computer/update_icon_state() + . = ..() if(machine_stat & (BROKEN|DISABLED)) icon_state = "[initial(icon_state)]_broken" else diff --git a/code/game/objects/structures/razorwire.dm b/code/game/objects/structures/razorwire.dm index 3a409db9717f1..6e984c2ffffaa 100644 --- a/code/game/objects/structures/razorwire.dm +++ b/code/game/objects/structures/razorwire.dm @@ -214,6 +214,7 @@ return ..() /obj/structure/razorwire/update_icon_state() + . = ..() var/health_percent = round(obj_integrity/max_integrity * 100) var/remaining = CEILING(health_percent, 25) icon_state = "[base_icon_state]_[remaining]" diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index dc1a780521454..a7e977f1c6466 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -96,6 +96,7 @@ FLOOR SAFES /obj/structure/safe/update_icon_state() + . = ..() if(open) icon_state = "[initial(icon_state)]-open" else diff --git a/code/game/objects/structures/sensor_tower.dm b/code/game/objects/structures/sensor_tower.dm index ba4d80f2862d4..212aa3ba26261 100644 --- a/code/game/objects/structures/sensor_tower.dm +++ b/code/game/objects/structures/sensor_tower.dm @@ -36,6 +36,7 @@ update_icon() /obj/structure/sensor_tower/update_icon_state() + . = ..() icon_state = initial(icon_state) if(current_timer || activated) icon_state += "_tgmc" diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 8e3809224d3df..85af686b13e5e 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -38,6 +38,7 @@ icon_state = "bunkbed" /obj/structure/bed/update_icon_state() + . = ..() if(!base_bed_icon) return if(LAZYLEN(buckled_mobs) || buckled_bodybag) @@ -336,14 +337,14 @@ GLOBAL_LIST_EMPTY(activated_medevac_stretchers) linked_beacon.remove_stretcher(src) return ..() -/obj/structure/bed/medevac_stretcher/update_icon() - ..() - overlays.Cut() +/obj/structure/bed/medevac_stretcher/update_overlays() + . = ..() + if(stretcher_activated) - overlays += image("beacon_active_[density ? "up":"down"]") + . += image("beacon_active_[density ? "up":"down"]") if(LAZYLEN(buckled_mobs) || buckled_bodybag) - overlays += image("icon_state"="stretcher_box","layer"=LYING_MOB_LAYER + 0.1) + . += image("icon_state"="stretcher_box","layer"=LYING_MOB_LAYER + 0.1) /obj/structure/bed/medevac_stretcher/verb/activate_medevac_displacer() diff --git a/code/game/objects/structures/supplypod.dm b/code/game/objects/structures/supplypod.dm index c6777312b2d93..ecd56aa50f7a9 100644 --- a/code/game/objects/structures/supplypod.dm +++ b/code/game/objects/structures/supplypod.dm @@ -76,15 +76,16 @@ GLOBAL_LIST_INIT(pod_styles, list(\ setStyle(style, TRUE) -/obj/structure/closet/supplypod/update_icon() - cut_overlays() +/obj/structure/closet/supplypod/update_overlays() + . = ..() + if(style == STYLE_SEETHROUGH || style == STYLE_INVISIBLE) return if(opened) - add_overlay("[icon_state]_open") + . += "[icon_state]_open" else - add_overlay("[icon_state]_door") + . += "[icon_state]_door" /obj/structure/closet/supplypod/proc/setStyle(chosenStyle, duringInit = FALSE) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index b66ffbd4e6a5a..33d24eeed3be6 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -76,7 +76,8 @@ visible_message(span_danger("[O] plows straight through [src]!")) deconstruct(FALSE) -/obj/structure/table/update_icon() +/obj/structure/table/update_icon_state() + . = ..() if(flipped) var/ttype = 0 var/tabledirs = 0 diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm index 30052da2a34be..b51a7409de2d7 100644 --- a/code/game/objects/structures/tank_dispenser.dm +++ b/code/game/objects/structures/tank_dispenser.dm @@ -24,14 +24,18 @@ update_icon() -/obj/structure/dispenser/update_icon() - overlays.Cut() +/obj/structure/dispenser/update_overlays() + . = ..() switch(oxygentanks) - if(1 to 3) overlays += "oxygen-[oxygentanks]" - if(4 to INFINITY) overlays += "oxygen-4" + if(1 to 3) + . += "oxygen-[oxygentanks]" + if(4 to INFINITY) + . += "oxygen-4" switch(phorontanks) - if(1 to 4) overlays += "phoron-[phorontanks]" - if(5 to INFINITY) overlays += "phoron-5" + if(1 to 4) + . += "phoron-[phorontanks]" + if(5 to INFINITY) + . += "phoron-5" /obj/structure/dispenser/interact(mob/user) . = ..() diff --git a/code/game/objects/structures/teleporter.dm b/code/game/objects/structures/teleporter.dm index 4c32e364a8d70..f64230e3c3c2f 100644 --- a/code/game/objects/structures/teleporter.dm +++ b/code/game/objects/structures/teleporter.dm @@ -137,6 +137,7 @@ update_icon() /obj/machinery/deployable/teleporter/update_icon_state() + . = ..() var/obj/item/teleporter_kit/kit = get_internal_item() if(powered() || kit?.cell?.charge > TELEPORTING_COST) icon_state = default_icon_state + "_on" diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index e91eb1a09b477..4afe14b338507 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -46,7 +46,8 @@ open = !open update_icon() -/obj/structure/toilet/update_icon() +/obj/structure/toilet/update_icon_state() + . = ..() icon_state = "toilet[open][cistern]" /obj/structure/toilet/attackby(obj/item/I, mob/user, params) @@ -114,7 +115,8 @@ /obj/structure/toilet/alternate icon_state = "toilet200" -/obj/structure/toilet/alternate/update_icon() +/obj/structure/toilet/alternate/update_icon_state() + . = ..() icon_state = "toilet2[open][cistern]" /obj/structure/urinal @@ -189,7 +191,7 @@ if(.) return on = !on - update_icon() + update_mist() if(on) start_processing() if (user.loc == loc) @@ -221,8 +223,9 @@ watertemp = "normal" user.visible_message(span_notice("[user] adjusts the shower with \the [I]."), span_notice("You adjust the shower with \the [I].")) -/obj/machinery/shower/update_icon() //this is terribly unreadable, but basically it makes the shower mist up - overlays.Cut() //once it's been on for a while, in addition to handling the water overlay. +/obj/machinery/shower/proc/update_mist() +//this is terribly unreadable, but basically it makes the shower mist up once it's been on for a while + update_icon() if(mymist) qdel(mymist) mymist = null @@ -248,6 +251,11 @@ mymist = null ismist = FALSE +/obj/machinery/shower/update_overlays() + . = ..() + if(on) + . += image('icons/obj/watercloset.dmi', src, "water", MOB_LAYER + 1, dir) + /obj/machinery/shower/proc/on_cross(datum/source, atom/movable/O, oldloc, oldlocs) SIGNAL_HANDLER wash(O) diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index 0e04738990e01..1c5a90454ceb0 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -47,6 +47,7 @@ update_icon() /obj/structure/windoor_assembly/update_icon_state() + . = ..() icon_state = "[facing]_[secure]windoor_assembly[state]" /obj/structure/windoor_assembly/attackby(obj/item/I, mob/user, params) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 1468d4d48682b..8f321db616d7b 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -245,9 +245,8 @@ INVOKE_NEXT_TICK(W, TYPE_PROC_REF(/atom/movable, update_icon)) //merges adjacent full-tile windows into one (blatant ripoff from game/smoothwall.dm) -/obj/structure/window/update_icon() - //A little cludge here, since I don't know how it will work with slim windows. Most likely VERY wrong. - //this way it will only update full-tile ones +/obj/structure/window/update_icon_state() + . = ..() if(!src) return if(!is_full_window()) @@ -390,7 +389,7 @@ reinf = TRUE flags_atom = NONE -/obj/structure/window/shuttle/update_icon() //icon_state has to be set manually +/obj/structure/window/shuttle/update_icon_state() return //Framed windows @@ -421,8 +420,7 @@ /obj/structure/window/framed/update_icon() QUEUE_SMOOTH(src) - - + return ..() /obj/structure/window/framed/deconstruct(disassembled = TRUE, leave_frame = TRUE) if(window_frame && leave_frame) diff --git a/code/game/objects/structures/window_frame.dm b/code/game/objects/structures/window_frame.dm index cefe080862056..1b8e011f6624a 100644 --- a/code/game/objects/structures/window_frame.dm +++ b/code/game/objects/structures/window_frame.dm @@ -49,6 +49,7 @@ /obj/structure/window_frame/update_icon() QUEUE_SMOOTH(src) + return ..() /obj/structure/window_frame/Destroy() density = FALSE diff --git a/code/game/turfs/floor.dm b/code/game/turfs/floor.dm index 275ea10490e9f..78ab50a1fb775 100644 --- a/code/game/turfs/floor.dm +++ b/code/game/turfs/floor.dm @@ -66,6 +66,7 @@ return W /turf/open/floor/update_icon_state() + . = ..() if(broken) icon_state = broken_states() else if(burnt) diff --git a/code/game/turfs/open_ground.dm b/code/game/turfs/open_ground.dm index 679b0c6bf99d6..8854410f7e02a 100644 --- a/code/game/turfs/open_ground.dm +++ b/code/game/turfs/open_ground.dm @@ -8,9 +8,10 @@ var/icon_variants = 1 /turf/open/ground/update_icon_state() + . = ..() if(icon_variants < 2) - return initial(icon_state) - return "[initial(icon_state)]_[rand(1, icon_variants)]" + icon_state = initial(icon_state) + icon_state = "[initial(icon_state)]_[rand(1, icon_variants)]" /turf/open/ground/AfterChange() . = ..() diff --git a/code/game/turfs/snow.dm b/code/game/turfs/snow.dm index 937067f160fe8..625236a1f91ab 100644 --- a/code/game/turfs/snow.dm +++ b/code/game/turfs/snow.dm @@ -16,12 +16,14 @@ /turf/open/floor/plating/ground/snow/Initialize(mapload) . = ..() RegisterSignal(src, COMSIG_ATOM_ACIDSPRAY_ACT, PROC_REF(acidspray_act)) - update_icon(TRUE,TRUE) //Update icon and sides on start, but skip nearby check for turfs. + update_appearance() + update_sides() // Melting snow /turf/open/floor/plating/ground/snow/fire_act(exposed_temperature, exposed_volume) slayer = 0 - update_icon(TRUE, FALSE) + update_appearance() + update_sides() //Xenos digging up snow /turf/open/floor/plating/ground/snow/attack_alien(mob/living/carbon/xenomorph/M, damage_amount = M.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) @@ -46,7 +48,8 @@ M.visible_message(span_notice("\The [M] clears out \the [src]."), \ span_notice("We clear out \the [src]."), null, 5) slayer = 0 - update_icon(TRUE, FALSE) + update_appearance() + update_sides() //PLACING/REMOVING/BUILDING /turf/open/floor/plating/ground/snow/attackby(obj/item/I, mob/user, params) @@ -79,14 +82,13 @@ var/mob/living/carbon/xenomorph/xeno = arrived if(xeno.is_charging >= CHARGE_ON) // chargers = snow plows slayer = 0 - update_icon(TRUE, FALSE) + update_appearance() + update_sides() return ..() -//Update icon -/turf/open/floor/plating/ground/snow/update_icon(update_full, skip_sides) - icon_state = "snow_[slayer]" - setDir(pick(GLOB.alldirs)) +/turf/open/floor/plating/ground/snow/update_name(updates) + . = ..() switch(slayer) if(0) name = "dirt floor" @@ -97,48 +99,50 @@ if(3) name = "very deep [initial(name)]" - //Update the side overlays - if(update_full) - var/turf/open/T - if(!skip_sides) - for(var/dirn in GLOB.alldirs) - var/turf/open/floor/plating/ground/snow/D = get_step(src,dirn) - if(istype(D)) - //Update turfs that are near us, but only once - D.update_icon(TRUE, TRUE) - - overlays.Cut() - - for(var/dirn in GLOB.alldirs) - T = get_step(src, dirn) - if(istype(T)) - if(slayer > T.slayer && T.slayer < 1) - var/image/I = new('icons/turf/snow2.dmi', "snow_[(dirn & (dirn-1)) ? "outercorner" : pick("innercorner", "outercorner")]", dir = dirn) - switch(dirn) - if(NORTH) - I.pixel_y = 32 - if(SOUTH) - I.pixel_y = -32 - if(EAST) - I.pixel_x = 32 - if(WEST) - I.pixel_x = -32 - if(NORTHEAST) - I.pixel_x = 32 - I.pixel_y = 32 - if(SOUTHEAST) - I.pixel_x = 32 - I.pixel_y = -32 - if(NORTHWEST) - I.pixel_x = -32 - I.pixel_y = 32 - if(SOUTHWEST) - I.pixel_x = -32 - I.pixel_y = -32 - - I.layer = layer + 0.001 + slayer * 0.0001 - overlays += I +/turf/open/floor/plating/ground/snow/update_overlays() + . = ..() + for(var/dirn in GLOB.alldirs) + var/turf/open/T = get_step(src, dirn) + if(!isopenturf(T)) + continue + if(slayer > T.slayer && T.slayer < 1) + var/image/I = new('icons/turf/snow2.dmi', "snow_[(dirn & (dirn-1)) ? "outercorner" : pick("innercorner", "outercorner")]", dir = dirn) + switch(dirn) + if(NORTH) + I.pixel_y = 32 + if(SOUTH) + I.pixel_y = -32 + if(EAST) + I.pixel_x = 32 + if(WEST) + I.pixel_x = -32 + if(NORTHEAST) + I.pixel_x = 32 + I.pixel_y = 32 + if(SOUTHEAST) + I.pixel_x = 32 + I.pixel_y = -32 + if(NORTHWEST) + I.pixel_x = -32 + I.pixel_y = 32 + if(SOUTHWEST) + I.pixel_x = -32 + I.pixel_y = -32 + + I.layer = layer + 0.001 + slayer * 0.0001 + . += I + +/turf/open/floor/plating/ground/snow/update_icon_state() + . = ..() + icon_state = "snow_[slayer]_[rand(1,8)]" +///Fully update all the turfs around us +/turf/open/floor/plating/ground/snow/proc/update_sides() + for(var/dirn in GLOB.alldirs) + var/turf/open/floor/plating/ground/snow/D = get_step(src,dirn) + if(istype(D)) + //Update turfs that are near us, but only once + D.update_appearance(ALL) //Explosion act /turf/open/floor/plating/ground/snow/ex_act(severity) @@ -153,7 +157,8 @@ if(slayer && prob(20)) slayer = max(slayer - 1, 0) - update_icon(TRUE, FALSE) + update_appearance() + update_sides() return ..() //Fire act; fire now melts snow as it should; fire beats ice @@ -169,7 +174,8 @@ if(25 to INFINITY) slayer = 0 - update_icon(TRUE, FALSE) + update_appearance() + update_sides() /turf/open/floor/plating/ground/snow/proc/acidspray_act() SIGNAL_HANDLER @@ -178,7 +184,8 @@ return slayer = max(0, slayer - 1) //Melt a layer - update_icon(TRUE, FALSE) + update_appearance() + update_sides() //SNOW LAYERS-----------------------------------// diff --git a/code/game/turfs/space/transit.dm b/code/game/turfs/space/transit.dm index 3b9250e8e1462..2e46ef3ffacb2 100644 --- a/code/game/turfs/space/transit.dm +++ b/code/game/turfs/space/transit.dm @@ -89,9 +89,11 @@ transform = turn(matrix(), get_transit_angle(src)) /turf/open/space/transit/update_icon_state() + . = ..() icon_state = "speedspace_ns_[get_transit_state(src, available_icon_state_amounts)]" /turf/open/space/transit/atmos/update_icon_state() + . = ..() icon_state = "Cloud_[get_transit_state(src, available_icon_state_amounts)]" /proc/get_transit_state(turf/T, available_icon_state_amounts) diff --git a/code/game/turfs/walls/walls.dm b/code/game/turfs/walls/walls.dm index ea43e83527327..f3e72ee485b49 100644 --- a/code/game/turfs/walls/walls.dm +++ b/code/game/turfs/walls/walls.dm @@ -16,13 +16,8 @@ var/wall_integrity var/max_integrity = 1000 //Wall will break down to girders if damage reaches this point - var/damage_overlay var/global/damage_overlays[8] - var/current_bulletholes = 0 - var/bullethole_increment = 1 - var/bullethole_state = 0 - var/image/bullethole_overlay base_icon_state = "metal" var/max_temperature = 1800 //K, walls will take damage if they're next to a fire hotter than this @@ -150,70 +145,26 @@ if(7) . += span_info("The inner sheath is gone. A blowtorch should finish off this wall.") -#define BULLETHOLE_STATES 10 //How many variations of bullethole patterns there are -#define BULLETHOLE_MAX 8 * 3 //Maximum possible bullet holes. -//Formulas. These don't need to be defines, but helpful green. Should likely reuse these for a base 8 icon system. -#define cur_increment(v) round((v-1)/8)+1 -#define base_dir(v,i) v-(i-1)*8 -#define cur_dir(v) round(v+round(v)/3) +//todo: eventually re-introduce bullhole overlays, they haven't worked in ages and the sprites suck so I'm not going to put effort into making them work +/turf/closed/wall/update_overlays() + . = ..() + if(wall_integrity == max_integrity) + return -/turf/closed/wall/update_icon() if(!damage_overlays[1]) //list hasn't been populated - generate_overlays() - - if(wall_integrity == max_integrity) //If the thing was healed for damage; otherwise update_icon() won't run at all, unless it was strictly damaged. - overlays.Cut() - damage_overlay = initial(damage_overlay) - current_bulletholes = initial(current_bulletholes) - bullethole_increment = initial(current_bulletholes) - bullethole_state = initial(current_bulletholes) - qdel(bullethole_overlay) - bullethole_overlay = null - return + var/alpha_inc = 256 / length(damage_overlays) + + for(var/i = 1; i <= length(damage_overlays); i++) + var/image/img = image(icon = 'icons/turf/walls.dmi', icon_state = "overlay_damage") + img.blend_mode = BLEND_MULTIPLY + img.alpha = (i * alpha_inc) - 1 + damage_overlays[i] = img var/overlay = round((max_integrity - wall_integrity) / max_integrity * length(damage_overlays)) + 1 - if(overlay > length(damage_overlays)) overlay = length(damage_overlays) - - if(!damage_overlay || overlay != damage_overlay) - overlays -= damage_overlays[damage_overlay] - damage_overlay = overlay - overlays += damage_overlays[damage_overlay] - - if(current_bulletholes > BULLETHOLE_MAX) //Could probably get away with a unique layer, but let's keep it standardized. - overlays -= bullethole_overlay //We need this to be the top layer, no matter what, but only if the layer is at max bulletholes. - overlays += bullethole_overlay - - if(current_bulletholes && current_bulletholes <= BULLETHOLE_MAX) - overlays -= bullethole_overlay - if(!bullethole_overlay) - bullethole_state = rand(1, BULLETHOLE_STATES) - bullethole_overlay = image('icons/effects/bulletholes.dmi', src, "bhole_[bullethole_state]_[bullethole_increment]") - //for(var/mob/M in view(7)) to_chat(M, bullethole_overlay) - if(cur_increment(current_bulletholes) > bullethole_increment) bullethole_overlay.icon_state = "bhole_[bullethole_state]_[++bullethole_increment]" - - var/base_direction = base_dir(current_bulletholes,bullethole_increment) - var/current_direction = cur_dir(base_direction) - setDir(current_direction) - /*Hack. Image overlays behave as the parent object, so that means they are also attached to it and follow its directional. - Luckily, it doesn't matter what direction the walls are set to, they link together via icon_state it seems. - But I haven't thoroughly tested it.*/ - overlays += bullethole_overlay - //to_chat(world, span_debuginfo("Increment: [bullethole_increment], Direction: [current_direction]")) - -#undef BULLETHOLE_STATES -#undef BULLETHOLE_MAX -#undef cur_increment -#undef base_dir -#undef cur_dir - -/turf/closed/wall/proc/generate_overlays() - var/alpha_inc = 256 / length(damage_overlays) - - for(var/i = 1; i <= length(damage_overlays); i++) - var/image/img = image(icon = 'icons/turf/walls.dmi', icon_state = "overlay_damage") - img.blend_mode = BLEND_MULTIPLY - img.alpha = (i * alpha_inc) - 1 - damage_overlays[i] = img + if(overlay > length(damage_overlays)) + overlay = length(damage_overlays) + + . += damage_overlays[overlay] ///Applies damage to the wall /turf/closed/wall/proc/take_damage(damage_amount, damage_type = BRUTE, damage_flag = "", armour_penetration = 0) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm index cd985279eda76..3e019efc78ce5 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm @@ -85,7 +85,10 @@ return min(arglist(args)) /proc/_new(type, arguments) - return new type (arglist(arguments)) + var/datum/result = new type(arglist(arguments)) + if(istype(result)) + result.datum_flags |= DF_VAR_EDITED + return result /proc/_num2text(N, SigFig = 6) return num2text(N, SigFig) diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index 9a5dd95b76d59..3448e5d5d7111 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -45,24 +45,24 @@ A.holder_movement() -/obj/item/assembly_holder/update_icon() - cut_overlays() +/obj/item/assembly_holder/update_overlays() + . = ..() if(a_left) - add_overlay("[a_left.icon_state]_left") + . += "[a_left.icon_state]_left" for(var/O in a_left.attached_overlays) - add_overlay("[O]_l") + . += "[O]_l" if(a_right) if(a_right.is_position_sensitive) - add_overlay("[a_right.icon_state]_right") + . += "[a_right.icon_state]_right" for(var/O in a_right.attached_overlays) - add_overlay("[O]_r") + . += "[O]_r" else var/mutable_appearance/right = mutable_appearance(icon, "[a_right.icon_state]_left") right.transform = matrix(-1, 0, 0, 0, 1, 0) for(var/O in a_right.attached_overlays) right.add_overlay("[O]_l") - add_overlay(right) + . += right if(master) master.update_icon() diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 20e961ead7085..123774de124f7 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -57,16 +57,18 @@ update_icon() return secured -/obj/item/assembly/infra/update_icon() - cut_overlays() +/obj/item/assembly/infra/update_overlays() + . = ..() attached_overlays = list() if(on) - add_overlay("infrared_on") + . += "infrared_on" attached_overlays += "infrared_on" if(visible && secured) - add_overlay("infrared_visible") + . += "infrared_visible" attached_overlays += "infrared_visible" +/obj/item/assembly/infra/update_icon() + . = ..() if(holder) holder.update_icon() diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index 7ece31d072a3b..ed0bf5c07fac5 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -31,6 +31,7 @@ /obj/item/assembly/mousetrap/update_icon_state() + . = ..() if(armed) icon_state = "mousetraparmed" else diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index 297280a0ee6d9..384f331fe03d6 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -94,15 +94,19 @@ if(scanning && proximity_monitor.SetRange(sense)) sense() -/obj/item/assembly/prox_sensor/update_icon() - cut_overlays() +/obj/item/assembly/prox_sensor/update_overlays() + . = ..() + attached_overlays = list() if(timing) - add_overlay("prox_timing") + . += "prox_timing" attached_overlays += "prox_timing" if(scanning) - add_overlay("prox_scanning") + . += "prox_scanning" attached_overlays += "prox_scanning" + +/obj/item/assembly/prox_sensor/update_icon() + . = ..() if(holder) holder.update_icon() diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index 2fb4342965066..80f26a091fdce 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -28,6 +28,7 @@ return TRUE /obj/item/assembly/signaler/update_icon() + . = ..() if(holder) holder.update_icon() diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index 2332a74675f16..e04770cc1098e 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -63,12 +63,15 @@ timer_end() time = saved_time -/obj/item/assembly/timer/update_icon() - cut_overlays() +/obj/item/assembly/timer/update_overlays() + . = ..() attached_overlays = list() if(timing) - add_overlay("timer_timing") + . += "timer_timing" attached_overlays += "timer_timing" + +/obj/item/assembly/timer/update_icon() + . = ..() if(holder) holder.update_icon() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm index 18d9828973ce3..b4503752f57b6 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm @@ -24,7 +24,8 @@ mode = CIRCULATOR_COLD -/obj/machinery/atmospherics/components/binary/circulator/update_icon() +/obj/machinery/atmospherics/components/binary/circulator/update_icon_state() + . = ..() if(!is_operational()) icon_state = "circ-p-[flipped]" else diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm index bccd5715e07fc..c85d263280429 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm @@ -14,8 +14,9 @@ pipe_state = "filter" -/obj/machinery/atmospherics/components/trinary/filter/update_icon() - cut_overlays() +/obj/machinery/atmospherics/components/trinary/filter/update_overlays() + . = ..() + for(var/direction in GLOB.cardinals) if(!(direction & initialize_directions)) continue @@ -27,7 +28,7 @@ else cap = getpipeimage(icon, "cap", direction, piping_layer = piping_layer) - add_overlay(cap) + . += cap return ..() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 4170667653ae5..a30831a307fa2 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -120,6 +120,7 @@ set_light(initial(light_range)) /obj/machinery/atmospherics/components/unary/cryo_cell/update_icon_state() + . = ..() if(!on) icon_state = "cell_off" else diff --git a/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm b/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm index 06bbddd1b29d2..934ff6b9541e6 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm @@ -23,7 +23,8 @@ piping_layer = 3 icon_state = "he_map-3" -/obj/machinery/atmospherics/components/unary/heat_exchanger/update_icon() +/obj/machinery/atmospherics/components/unary/heat_exchanger/update_icon_state() + . = ..() if(nodes[1]) icon_state = "he1" var/obj/machinery/atmospherics/node = nodes[1] diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index ac74382c21f2a..205851befdc80 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -35,7 +35,8 @@ B += M.rating heat_capacity = 5000 * ((B - 1) ** 2) -/obj/machinery/atmospherics/components/unary/thermomachine/update_icon() +/obj/machinery/atmospherics/components/unary/thermomachine/update_icon_state() + . = ..() if(CHECK_BITFIELD(machine_stat, PANEL_OPEN)) icon_state = icon_state_open else if(on && is_operational()) diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm index f9f6c98026057..3a2dd4e2707d6 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm @@ -30,12 +30,12 @@ return ..(target, given_layer, FALSE) //we want a normal pipe instead return ..(target, given_layer, TRUE) -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/update_icon() +/obj/machinery/atmospherics/pipe/heat_exchanging/junction/update_icon_state() + . = ..() icon_state = "pipe[nodes[1] ? "1" : "0"][nodes[2] ? "1" : "0"]-[piping_layer]" update_layer() update_alpha() - /obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer1 piping_layer = 1 icon_state = "pipe11-1" diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm index b1b011e25b2c9..b4ba2bbc436fa 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm @@ -26,16 +26,16 @@ initialize_directions = NORTH|SOUTH|EAST|WEST initialize_directions &= ~dir -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/update_icon() - cut_overlays() +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/update_overlays() + . = ..() PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer) - add_overlay(center) + . += center //Add non-broken pieces for(var/i in 1 to device_type) if(nodes[i]) - add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) ) + . += getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) update_layer() update_alpha() diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm index 432413ab63963..5e7fea7215b86 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm @@ -24,16 +24,16 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/SetInitDirections() initialize_directions = initial(initialize_directions) -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/update_icon() - cut_overlays() +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/update_overlays() + . = ..() PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer) - add_overlay(center) + . += center //Add non-broken pieces for(var/i in 1 to device_type) if(nodes[i]) - add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) ) + . += getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) update_layer() update_alpha() diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm index e3ed1a6c37af0..2143ac78a8d52 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm @@ -24,7 +24,8 @@ if(EAST, WEST) initialize_directions = EAST|WEST -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/update_icon() +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/update_icon_state() + . = ..() icon_state = "pipe[nodes[1] ? "1" : "0"][nodes[2] ? "1" : "0"]-[piping_layer]" update_layer() update_alpha() diff --git a/code/modules/atmospherics/machinery/pipes/layermanifold.dm b/code/modules/atmospherics/machinery/pipes/layermanifold.dm index 9b0c5fa98ef40..24a44e0fb05d2 100644 --- a/code/modules/atmospherics/machinery/pipes/layermanifold.dm +++ b/code/modules/atmospherics/machinery/pipes/layermanifold.dm @@ -40,8 +40,8 @@ /obj/machinery/atmospherics/pipe/layer_manifold/proc/get_all_connected_nodes() return front_nodes + back_nodes + nodes -/obj/machinery/atmospherics/pipe/layer_manifold/update_icon() //HEAVILY WIP FOR UPDATE ICONS!! - cut_overlays() +/obj/machinery/atmospherics/pipe/layer_manifold/update_icon() //this sucks and someone should do it properly + . = ..() layer = initial(layer) + (PIPING_LAYER_MAX * PIPING_LAYER_LCHANGE) //This is above everything else. for(var/node in front_nodes) @@ -49,8 +49,6 @@ for(var/node in back_nodes) add_attached_images(node) - update_alpha() - /obj/machinery/atmospherics/pipe/layer_manifold/proc/add_attached_images(obj/machinery/atmospherics/A) if(!A) return diff --git a/code/modules/atmospherics/machinery/pipes/manifold.dm b/code/modules/atmospherics/machinery/pipes/manifold.dm index 2f6e54d888128..a3ffa8c2c4c44 100644 --- a/code/modules/atmospherics/machinery/pipes/manifold.dm +++ b/code/modules/atmospherics/machinery/pipes/manifold.dm @@ -26,17 +26,18 @@ initialize_directions = NORTH|SOUTH|EAST|WEST initialize_directions &= ~dir -/obj/machinery/atmospherics/pipe/manifold/update_icon() - cut_overlays() +/obj/machinery/atmospherics/pipe/manifold/update_overlays() + . = ..() + if(!center) center = mutable_appearance(icon, "manifold_center") PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer) - add_overlay(center) + . += center //Add non-broken pieces for(var/i in 1 to device_type) if(nodes[i]) - add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) ) + . += getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) update_layer() update_alpha() diff --git a/code/modules/atmospherics/machinery/pipes/manifold4w.dm b/code/modules/atmospherics/machinery/pipes/manifold4w.dm index 3f8539eccaeee..9c05f67318715 100644 --- a/code/modules/atmospherics/machinery/pipes/manifold4w.dm +++ b/code/modules/atmospherics/machinery/pipes/manifold4w.dm @@ -23,17 +23,17 @@ /obj/machinery/atmospherics/pipe/manifold4w/SetInitDirections() initialize_directions = initial(initialize_directions) -/obj/machinery/atmospherics/pipe/manifold4w/update_icon() - cut_overlays() +/obj/machinery/atmospherics/pipe/manifold4w/update_overlays() + . = ..() if(!center) center = mutable_appearance(icon, "manifold_center") PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer) - add_overlay(center) + . += center //Add non-broken pieces for(var/i in 1 to device_type) if(nodes[i]) - add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) ) + . += getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) update_layer() update_alpha() diff --git a/code/modules/atmospherics/machinery/pipes/simple.dm b/code/modules/atmospherics/machinery/pipes/simple.dm index 672f4295dbf58..70469ef0ff168 100644 --- a/code/modules/atmospherics/machinery/pipes/simple.dm +++ b/code/modules/atmospherics/machinery/pipes/simple.dm @@ -27,7 +27,8 @@ if(EAST, WEST) initialize_directions = EAST|WEST -/obj/machinery/atmospherics/pipe/simple/update_icon() +/obj/machinery/atmospherics/pipe/simple/update_icon_state() + . = ..() icon_state = "pipe[nodes[1] ? "1" : "0"][nodes[2] ? "1" : "0"]-[piping_layer]" if(pipe_vision_img) pipe_vision_img.icon_state = icon_state diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 0541dd2b5be0e..0a94abeff4c1b 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -50,6 +50,7 @@ icon_state = "black" /obj/machinery/portable_atmospherics/canister/update_icon_state() + . = ..() if(machine_stat & BROKEN) icon_state = "[icon_state]-1" diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm index 0016cd925590d..65ab1b00a3915 100644 --- a/code/modules/atmospherics/machinery/portable/pump.dm +++ b/code/modules/atmospherics/machinery/portable/pump.dm @@ -6,14 +6,17 @@ /// If the pump is on, controls icon_state var/on = FALSE -/obj/machinery/portable_atmospherics/pump/update_icon() +/obj/machinery/portable_atmospherics/pump/update_icon_state() + . = ..() icon_state = "psiphon:[on]" - cut_overlays() +/obj/machinery/portable_atmospherics/pump/update_overlays() + . = ..() + if(holding) - add_overlay("siphon-open") + . += "siphon-open" if(connected_port) - add_overlay("siphon-connector") + . += "siphon-connector" /obj/machinery/portable_atmospherics/pump/emp_act(severity) . = ..() diff --git a/code/modules/buildmode/buttons.dm b/code/modules/buildmode/buttons.dm index cfe90e8396a64..080ef8eec0a7a 100644 --- a/code/modules/buildmode/buttons.dm +++ b/code/modules/buildmode/buttons.dm @@ -39,6 +39,7 @@ /atom/movable/screen/buildmode/mode/update_icon_state() + . = ..() icon_state = bd.mode.get_button_iconstate() diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 782551b9a460f..047f454908234 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -203,7 +203,7 @@ GLOBAL_LIST_INIT(ghost_forms, list("Default" = GHOST_DEFAULT_FORM, "Ghost Ian 1" return var/mob/dead/observer/O = mob - O.update_icon(GLOB.ghost_forms[new_form]) + O.pick_form(GLOB.ghost_forms[new_form]) GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE, GHOST_ORBIT_TRIANGLE, GHOST_ORBIT_SQUARE, GHOST_ORBIT_HEXAGON, GHOST_ORBIT_PENTAGON)) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index a22c884344fb2..6040609dbcb05 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -187,7 +187,7 @@ set_light_on(toggle_on) flags_armor_features ^= ARMOR_LAMP_ON playsound(src, 'sound/items/flashlight.ogg', 15, TRUE) - update_icon(user) + update_icon() update_action_button_icons() /obj/item/clothing/suit/update_clothing_icon() diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index a3524d22663f5..44e49e2cedc47 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -88,7 +88,7 @@ qdel(src) user.put_in_hands(P) - update_icon(user) + update_icon() /obj/item/clothing/glasses/monocle @@ -123,7 +123,7 @@ qdel(src) user.put_in_hands(P) - update_icon(user) + update_icon() /obj/item/clothing/glasses/regular/hipster name = "prescription glasses" @@ -191,7 +191,7 @@ qdel(src) user.put_in_hands(S) - update_icon(user) + update_icon() /obj/item/clothing/glasses/m42_goggles name = "\improper M42 scout sight" @@ -343,7 +343,7 @@ qdel(src) user.put_in_hands(P) - update_icon(user) + update_icon() /obj/item/clothing/glasses/sunglasses/fake/prescription name = "prescription sunglasses" diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 859d238dc30d4..4f622212a99d2 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -44,7 +44,7 @@ X.do_attack_animation(src, ATTACK_EFFECT_CLAW) to_chat(X, span_warning("We disable the metal thing's lights.") ) -/obj/item/clothing/head/hardhat/update_icon() +/obj/item/clothing/head/hardhat/update_icon_state() . = ..() icon_state = "hardhat[light_on]_[hardhat_color]" item_state = "hardhat[light_on]_[hardhat_color]" diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index d091e0ec5eeca..d59bc0612d04b 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -162,7 +162,16 @@ . = ..() helmet_overlays = list("damage","band","item") //To make things simple. -/obj/item/clothing/head/helmet/marine/update_icon() +/obj/item/clothing/head/helmet/marine/on_pocket_insertion() + . = ..() + update_helmet_overlays() + +/obj/item/clothing/head/helmet/marine/on_pocket_removal() + . = ..() + update_helmet_overlays() + +///Updates the helmet_overlays list, inserting and removing images from it as necesarry +/obj/item/clothing/head/helmet/marine/proc/update_helmet_overlays() if(!attachments_by_slot[ATTACHMENT_SLOT_STORAGE]) return if(!istype(attachments_by_slot[ATTACHMENT_SLOT_STORAGE], /obj/item/armor_module/storage)) @@ -201,9 +210,11 @@ var/mutable_appearance/M for(var/i in helmet_overlays) M = helmet_overlays[i] - if(M) - M = mutable_appearance('icons/mob/modular/modular_helmet_storage.dmi',M.icon_state) - standing.overlays += M + if(!M) + continue + + M = mutable_appearance('icons/mob/modular/modular_helmet_storage.dmi', M.icon_state) + standing.overlays += M /obj/item/clothing/head/helmet/marine/specialist name = "\improper B18 helmet" diff --git a/code/modules/clothing/modular_armor/attachments/cape.dm b/code/modules/clothing/modular_armor/attachments/cape.dm index 9e336e7642bdd..021aa489386e0 100644 --- a/code/modules/clothing/modular_armor/attachments/cape.dm +++ b/code/modules/clothing/modular_armor/attachments/cape.dm @@ -167,6 +167,7 @@ var/hood = FALSE /obj/item/armor_module/armor/cape/update_icon_state() + . = ..() var/obj/item/armor_module/highlight = attachments_by_slot[ATTACHMENT_SLOT_CAPE_HIGHLIGHT] if(hood) icon_state = initial(icon_state) + "_[current_variant]_h" @@ -271,6 +272,7 @@ ) /obj/item/armor_module/armor/cape_highlight/update_icon_state() + . = ..() if(!parent) return var/obj/item/armor_module/armor/cape/cape_parent = parent diff --git a/code/modules/clothing/modular_armor/attachments/modules.dm b/code/modules/clothing/modular_armor/attachments/modules.dm index 48263749f3f9d..89806977529b0 100644 --- a/code/modules/clothing/modular_armor/attachments/modules.dm +++ b/code/modules/clothing/modular_armor/attachments/modules.dm @@ -279,6 +279,7 @@ parent.update_icon() /obj/item/armor_module/module/chemsystem/update_icon_state() + . = ..() if(chemsystem_is_active) icon_state = "mod_chemsystem_active" return diff --git a/code/modules/clothing/shoes/marine_shoes.dm b/code/modules/clothing/shoes/marine_shoes.dm index d9a18311802ed..347534d6a6da9 100644 --- a/code/modules/clothing/shoes/marine_shoes.dm +++ b/code/modules/clothing/shoes/marine_shoes.dm @@ -26,6 +26,7 @@ update_icon() /obj/item/clothing/shoes/marine/update_icon_state() + . = ..() icon_state = initial(icon_state) if(!attachments_by_slot[ATTACHMENT_SLOT_STORAGE]) return diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm index 41cdfb6118cb8..12d48e749cd73 100644 --- a/code/modules/clothing/suits/marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor.dm @@ -49,18 +49,14 @@ armor_overlays = list("lamp") //Just one for now, can add more later. update_icon() -/obj/item/clothing/suit/storage/marine/update_icon(mob/user) - var/image/I - I = armor_overlays["lamp"] - overlays -= I - qdel(I) +/obj/item/clothing/suit/storage/marine/update_overlays() + . = ..() if(flags_armor_features & ARMOR_LAMP_OVERLAY) - I = image(icon, src, flags_armor_features & ARMOR_LAMP_ON? "lamp-on" : "lamp-off") + var/image/I = image(icon, src, flags_armor_features & ARMOR_LAMP_ON? "lamp-on" : "lamp-off") armor_overlays["lamp"] = I - overlays += I + . += I else armor_overlays["lamp"] = null - user?.update_inv_wear_suit() /obj/item/clothing/suit/storage/marine/apply_custom(mutable_appearance/standing, inhands, icon_used, state_used) if(inhands) @@ -376,18 +372,14 @@ armor_overlays = list("lamp") update_icon() -/obj/item/clothing/suit/storage/faction/update_icon(mob/user) - var/image/I - I = armor_overlays["lamp"] - overlays -= I - qdel(I) +/obj/item/clothing/suit/storage/faction/update_overlays() + . = ..() if(flags_armor_features & ARMOR_LAMP_OVERLAY) - I = image(icon, src, flags_armor_features & ARMOR_LAMP_ON? "lamp-on" : "lamp-off") + var/image/I = image(icon, src, flags_armor_features & ARMOR_LAMP_ON? "lamp-on" : "lamp-off") armor_overlays["lamp"] = I - overlays += I - else armor_overlays["lamp"] = null - if(user) user.update_inv_wear_suit() - + . += I + else + armor_overlays["lamp"] = null /obj/item/clothing/suit/storage/faction/attack_self(mob/user) if(!isturf(user.loc)) diff --git a/code/modules/economy/cash.dm b/code/modules/economy/cash.dm index 186f6404acbc8..f4b0db02a4a1c 100644 --- a/code/modules/economy/cash.dm +++ b/code/modules/economy/cash.dm @@ -45,8 +45,12 @@ desc = "They are worth 0 dollars." worth = 0 -/obj/item/spacecash/bundle/update_icon() - overlays.Cut() +/obj/item/spacecash/bundle/update_desc(updates) + . = ..() + desc = "They are worth [worth] dollars." + +/obj/item/spacecash/bundle/update_overlays() + . = ..() var/sum = worth var/num = 0 for(var/i in list(1000,500,200,100,50,20,10,1)) @@ -58,15 +62,14 @@ M.Translate(rand(-6, 6), rand(-4, 8)) M.Turn(pick(-45, -27.5, 0, 0, 0, 0, 0, 0, 0, 27.5, 45)) banknote.transform = M - overlays += banknote + . += banknote if(num == 0) // Less than one thaler, let's just make it look like 1 for ease var/image/banknote = image('icons/obj/stack_objects.dmi', "spacecash1") var/matrix/M = matrix() M.Translate(rand(-6, 6), rand(-4, 8)) M.Turn(pick(-45, -27.5, 0, 0, 0, 0, 0, 0, 0, 27.5, 45)) banknote.transform = M - overlays += banknote - desc = "They are worth [worth] dollars." + . += banknote /obj/item/spacecash/bundle/attack_self(mob/user) var/oldloc = loc @@ -76,7 +79,7 @@ if(gc_destroyed || loc != oldloc) return src.worth -= amount - src.update_icon() + src.update_appearance() if(!worth) usr.temporarilyRemoveItemFromInventory(src) if(amount in list(1000,500,200,100,50,20,1)) @@ -86,7 +89,7 @@ else var/obj/item/spacecash/bundle/bundle = new (usr.loc) bundle.worth = amount - bundle.update_icon() + bundle.update_appearance() user.put_in_hands(bundle) if(!worth) qdel(src) @@ -143,7 +146,7 @@ return var/obj/item/spacecash/bundle/bundle = new (spawnloc) bundle.worth = sum - bundle.update_icon() + bundle.update_appearance() if (ishuman(human_user) && !human_user.get_active_held_item()) human_user.put_in_hands(bundle) diff --git a/code/modules/factory/unboxer.dm b/code/modules/factory/unboxer.dm index 154ec3d995a05..a52b07a9e85e2 100644 --- a/code/modules/factory/unboxer.dm +++ b/code/modules/factory/unboxer.dm @@ -54,6 +54,7 @@ balloon_alert(user, "Facing [dir2text(dir)]") /obj/machinery/unboxer/update_icon_state() + . = ..() if(datum_flags & DF_ISPROCESSING) icon_state = "unboxer" return diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index f5b046043353f..4f9a8438e90a5 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -114,16 +114,6 @@ GLOBAL_LIST_INIT(hallucination_list, list( if(target.client) target.client.images |= current_image -/obj/effect/hallucination/simple/update_icon(new_state,new_icon,new_px=0,new_py=0) - icon_state = new_state - if(new_icon) - icon = new_icon - else - icon = initial(icon) - px = new_px - py = new_py - Show() - /obj/effect/hallucination/simple/Moved(atom/OldLoc, Dir) Show() diff --git a/code/modules/hydroponics/hydro_tray.dm b/code/modules/hydroponics/hydro_tray.dm index 8f50c4d7dd787..ce18d8f46bfec 100644 --- a/code/modules/hydroponics/hydro_tray.dm +++ b/code/modules/hydroponics/hydro_tray.dm @@ -366,19 +366,22 @@ //Refreshes the icon and sets the luminosity /obj/machinery/hydroponics/update_icon() + update_bioluminescence() + return ..() - overlays.Cut() +/obj/machinery/hydroponics/update_overlays() + . = ..() // Updates the plant overlay. if(!isnull(seed)) if(draw_warnings && health <= (seed.endurance / 2)) - overlays += "over_lowhealth3" + . += "over_lowhealth3" if(dead) - overlays += "[seed.plant_icon]-dead" + . += "[seed.plant_icon]-dead" else if(harvest) - overlays += "[seed.plant_icon]-harvest" + . += "[seed.plant_icon]-harvest" else if(age < seed.maturation) var/t_growthstate @@ -387,26 +390,27 @@ else t_growthstate = round(seed.maturation / seed.growth_stages) - overlays += "[seed.plant_icon]-grow[t_growthstate]" + . += "[seed.plant_icon]-grow[t_growthstate]" lastproduce = age else - overlays += "[seed.plant_icon]-grow[seed.growth_stages]" + . += "[seed.plant_icon]-grow[seed.growth_stages]" //Draw the cover. if(closed_system) - overlays += "hydrocover" + . += "hydrocover" //Updated the various alert icons. if(draw_warnings) if(waterlevel <= 10) - overlays += "over_lowwater3" + . += "over_lowwater3" if(nutrilevel <= 2) - overlays += "over_lownutri3" + . += "over_lownutri3" if(weedlevel >= 5 || pestlevel >= 5 || toxins >= 40) - overlays += "over_alert3" + . += "over_alert3" if(harvest) - overlays += "over_harvest3" + . += "over_harvest3" +/obj/machinery/hydroponics/proc/update_bioluminescence() // Update bioluminescence. if(seed) if(seed.biolum) @@ -418,7 +422,6 @@ set_light(0) - // If a weed growth is sufficient, this proc is called. /obj/machinery/hydroponics/proc/weed_invasion() diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index b376eb7c549bd..bc40c1bbd3911 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -20,12 +20,17 @@ seed = GLOB.seed_types[seed_type] update_appearance() -//Updates strings and icon appropriately based on seed datum. -/obj/item/seeds/proc/update_appearance() +/obj/item/seeds/update_appearance() + . = ..() icon_state = seed.packet_icon + +/obj/item/seeds/update_name(updates) + . = ..() name = "packet of [seed.seed_name] [seed.seed_noun]" - desc = "It has a picture of [seed.display_name] on the front." +/obj/item/seeds/update_desc(updates) + . = ..() + desc = "It has a picture of [seed.display_name] on the front." /obj/item/seeds/poppyseed name = "poppy seed" diff --git a/code/modules/mob/dead/observer/login.dm b/code/modules/mob/dead/observer/login.dm index 048405d0f3941..7faf4ca564ca9 100644 --- a/code/modules/mob/dead/observer/login.dm +++ b/code/modules/mob/dead/observer/login.dm @@ -32,7 +32,7 @@ ghost_others = client.prefs.ghost_others - update_icon(client.prefs.ghost_form) + pick_form(client.prefs.ghost_form) updateghostimages() for(var/path in subtypesof(/datum/action/observer_action)) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index c8a93f4f57a44..70f322d1002d1 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -123,7 +123,8 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) SSmobs.dead_players_by_zlevel[old_z] -= src SSmobs.dead_players_by_zlevel[new_z] += src -/mob/dead/observer/update_icon(new_form) +///Changes our sprite +/mob/dead/observer/proc/pick_form(new_form) if(client) //We update our preferences in case they changed right before update_icon was called. ghost_others = client.prefs.ghost_others @@ -134,7 +135,6 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) else ghostimage_default.icon_state = new_form - /mob/dead/observer/Topic(href, href_list) . = ..() if(.) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/behemoth/abilities_behemoth.dm b/code/modules/mob/living/carbon/xenomorph/castes/behemoth/abilities_behemoth.dm index 9b94020c2225e..0e8bdf920f36f 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/behemoth/abilities_behemoth.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/behemoth/abilities_behemoth.dm @@ -1281,10 +1281,10 @@ xeno_owner = null return ..() -/// Calls update_icon_state(). +/// Calls update_appearance, this exists to discard the arguments we get from the signals. /obj/structure/earth_pillar/proc/call_update_icon_state() SIGNAL_HANDLER - update_icon_state() + update_appearance() /obj/structure/earth_pillar/update_icon_state() . = ..() diff --git a/code/modules/mob/living/carbon/xenomorph/castes/hivemind/hivemind.dm b/code/modules/mob/living/carbon/xenomorph/castes/hivemind/hivemind.dm index 63992f3c2f1ae..80f64d357e4be 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/hivemind/hivemind.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/hivemind/hivemind.dm @@ -248,6 +248,7 @@ /// handles hivemind updating with their respective weedtype /mob/living/carbon/xenomorph/hivemind/update_icon_state() + . = ..() if(status_flags & INCORPOREAL) icon_state = "hivemind_marker" return diff --git a/code/modules/mob/living/carbon/xenomorph/egg.dm b/code/modules/mob/living/carbon/xenomorph/egg.dm index dd0738cc9e2e8..e9774ba402452 100644 --- a/code/modules/mob/living/carbon/xenomorph/egg.dm +++ b/code/modules/mob/living/carbon/xenomorph/egg.dm @@ -21,6 +21,7 @@ advance_maturity(maturity_stage) /obj/alien/egg/update_icon_state() + . = ..() icon_state = initial(icon_state) + "[maturity_stage]" /obj/alien/egg/obj_break(damage_flag) diff --git a/code/modules/mob/living/carbon/xenomorph/facehuggers.dm b/code/modules/mob/living/carbon/xenomorph/facehuggers.dm index 2088850aa6b3e..0b211e9af29bd 100644 --- a/code/modules/mob/living/carbon/xenomorph/facehuggers.dm +++ b/code/modules/mob/living/carbon/xenomorph/facehuggers.dm @@ -100,7 +100,8 @@ clear_hugger_source() return ..() -/obj/item/clothing/mask/facehugger/update_icon() +/obj/item/clothing/mask/facehugger/update_icon_state() + . = ..() if(stat == DEAD) var/fertility = sterile ? "impregnated" : "dead" icon_state = "[initial(icon_state)]_[fertility]" @@ -286,12 +287,12 @@ if(stat == DEAD || stat == UNCONSCIOUS || !isturf(loc)) //It's dead or inactive or not on a turf don't bother return about_to_jump = TRUE - update_overlays() + update_appearance(UPDATE_OVERLAYS) ///Remove the hugger's alert overlay /obj/item/clothing/mask/facehugger/proc/remove_danger_overlay() about_to_jump = FALSE - update_overlays() + update_appearance(UPDATE_OVERLAYS) /obj/item/clothing/mask/facehugger/proc/check_lifecycle() diff --git a/code/modules/mob/living/carbon/xenomorph/update_icons.dm b/code/modules/mob/living/carbon/xenomorph/update_icons.dm index 67f7955bbdf7a..f26c088b270e9 100644 --- a/code/modules/mob/living/carbon/xenomorph/update_icons.dm +++ b/code/modules/mob/living/carbon/xenomorph/update_icons.dm @@ -185,6 +185,7 @@ update_flame_light(owner.fire_luminosity) /atom/movable/vis_obj/xeno_wounds/fire_overlay/update_icon_state() + . = ..() if(!owner.on_fire) icon_state = "" return diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index f3a37e5f0297c..ccd70bbe026d4 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -18,6 +18,7 @@ /mob/living/silicon/Initialize(mapload) . = ..() + GLOB.silicon_mobs += src radio = new(src) if(SStts.tts_enabled) voice = pick(SStts.available_speakers) @@ -25,6 +26,7 @@ /mob/living/silicon/Destroy() QDEL_NULL(radio) + GLOB.silicon_mobs -= src return ..() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index c69a620fc6e55..43dde1e1f683a 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -30,6 +30,11 @@ GLOB.dead_mob_list += src set_focus(src) prepare_huds() + for(var/v in GLOB.active_alternate_appearances) + if(!v) + continue + var/datum/atom_hud/alternate_appearance/AA = v + AA.onNewMob(src) . = ..() if(islist(skills)) set_skills(getSkills(arglist(skills))) diff --git a/code/modules/paperwork/carbonpaper.dm b/code/modules/paperwork/carbonpaper.dm index 27357cecf4b78..8639ccf0610c1 100644 --- a/code/modules/paperwork/carbonpaper.dm +++ b/code/modules/paperwork/carbonpaper.dm @@ -10,7 +10,8 @@ var/iscopy = 0 -/obj/item/paper/carbon/update_icon() +/obj/item/paper/carbon/update_icon_state() + . = ..() if(iscopy) if(info) icon_state = "cpaper_words" diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm index 371735eec811a..604f015ab91e6 100644 --- a/code/modules/paperwork/clipboard.dm +++ b/code/modules/paperwork/clipboard.dm @@ -35,14 +35,15 @@ return -/obj/item/clipboard/update_icon() - overlays.Cut() +/obj/item/clipboard/update_overlays() + . = ..() + if(toppaper) - overlays += toppaper.icon_state - overlays += toppaper.overlays + . += toppaper.icon_state + . += toppaper.overlays if(haspen) - overlays += "clipboard_pen" - overlays += "clipboard_over" + . += "clipboard_pen" + . += "clipboard_over" /obj/item/clipboard/attackby(obj/item/I, mob/user, params) diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index 36962eebce26a..903afc14fa0ce 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -43,11 +43,11 @@ if(updateicon) update_icon() -/obj/item/folder/update_icon() - overlays.Cut() +/obj/item/folder/update_overlays() + . = ..() if(length(contents)) - overlays += "folder_paper" - return + . += "folder_paper" + /obj/item/folder/attackby(obj/item/I, mob/user, params) . = ..() diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index ba3e46c174c2d..8a9bd25ee3ae4 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -51,9 +51,8 @@ update_icon() updateinfolinks() -/obj/item/paper/update_icon() - if(icon_state == "paper_talisman") - return +/obj/item/paper/update_icon_state() + . = ..() if(info) icon_state = "paper_words" return @@ -354,8 +353,9 @@ icon_state = "commendation" fields = 5 -/obj/item/paper/commendation/update_icon() //it looks fancy and we want it to stay fancy. +/obj/item/paper/commendation/update_icon_state() //it looks fancy and we want it to stay fancy. return + /*Let this be a lesson about pre-made forms. when building your paper, use the above parsed pen code in parsepencode(). no square bracket anything in the info field. @@ -432,9 +432,10 @@ then, for every time you included a field, increment fields. */ name = "paper scrap" icon_state = "scrap" -/obj/item/paper/crumpled/update_icon() +/obj/item/paper/crumpled/update_icon_state() return + /obj/item/paper/crumpled/bloody/ icon_state = "scrap_bloodied" diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index e2ed7ee31f0bf..6bcc51a2d46a2 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -196,36 +196,51 @@ usr.dropItemToGround(src) qdel(src) -/obj/item/paper_bundle/update_icon() +/obj/item/paper_bundle/update_icon_state() + . = ..() if(length(contents)) var/obj/item/I = contents[1] icon_state = I.icon_state - overlays = I.overlays + +/obj/item/paper_bundle/update_desc(updates) + . = ..() + var/paper_number = 0 + var/photo = FALSE + for(var/obj/thing in src) + if(istype(thing, /obj/item/paper)) + paper_number++ + else if(istype(thing, /obj/item/photo)) + photo = TRUE + if(paper_number>1) + desc = "[paper_number] papers clipped to each other." + else + desc = "A single sheet of paper." + if(photo) + desc += "There is a photo attached to it." + + +/obj/item/paper_bundle/update_overlays() + . = ..() + if(length(contents)) + var/obj/item/I = contents[1] + . = I.overlays underlays = 0 - var/i = 0 - var/photo + var/paper_number = 0 for(var/obj/O in src) var/image/IMG = image('icons/obj/items/paper.dmi') if(istype(O, /obj/item/paper)) IMG.icon_state = O.icon_state - IMG.pixel_x -= min(1*i, 2) - IMG.pixel_y -= min(1*i, 2) - pixel_x = min(0.5*i, 1) - pixel_y = min( 1*i, 2) + IMG.pixel_x -= min(1*paper_number, 2) + IMG.pixel_y -= min(1*paper_number, 2) + pixel_x = min(0.5*paper_number, 1) + pixel_y = min( 1*paper_number, 2) underlays += IMG - i++ + paper_number++ else if(istype(O, /obj/item/photo)) var/obj/item/photo/PH = O IMG = PH.picture.picture_icon - photo = 1 - overlays += IMG - if(i>1) - desc = "[i] papers clipped to each other." - else - desc = "A single sheet of paper." - if(photo) - desc += "\nThere is a photo attached to it." - overlays += image('icons/obj/items/paper.dmi', "clip") + . += IMG + . += image('icons/obj/items/paper.dmi', "clip") /obj/item/paper_bundle/proc/attach_doc(obj/item/I, mob/living/user, no_message) if(I.loc == user) diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index c3fd7b637b407..da6fbebe41a25 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -66,7 +66,8 @@ . += span_notice("There are no papers in the bin.") -/obj/structure/paper_bin/update_icon() +/obj/structure/paper_bin/update_icon_state() + . = ..() if(amount < 1) icon_state = "paper_bin0" else diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 3c3e71799e415..fe1737a604065 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -103,7 +103,8 @@ return ..() -/obj/item/photo/update_icon() +/obj/item/photo/update_icon_state() + . = ..() if(!istype(picture) || !picture.picture_image) return var/icon/I = picture.get_small_icon() diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm deleted file mode 100644 index 60e7ba8c3dfdb..0000000000000 --- a/code/modules/power/apc.dm +++ /dev/null @@ -1,1138 +0,0 @@ -#define APC_RESET_EMP 5 - -#define APC_ELECTRONICS_MISSING 0 -#define APC_ELECTRONICS_INSTALLED 1 -#define APC_ELECTRONICS_SECURED 2 - -#define APC_COVER_CLOSED 0 -#define APC_COVER_OPENED 1 -#define APC_COVER_REMOVED 2 - -#define APC_NOT_CHARGING 0 -#define APC_CHARGING 1 -#define APC_FULLY_CHARGED 2 - -#define APC_EXTERNAL_POWER_NONE 0 -#define APC_EXTERNAL_POWER_LOW 1 -#define APC_EXTERNAL_POWER_GOOD 2 - -//The Area Power Controller (APC), formerly Power Distribution Unit (PDU) -//One per area, needs wire conection to power network - -//Controls power to devices in that area -//May be opened to change power cell -//Three different channels (lighting/equipment/environ) - may each be set to on, off, or auto - - -/obj/machinery/power/apc - name = "area power controller" - desc = "A control terminal for the area electrical systems." - icon = 'icons/obj/machines/apc.dmi' - icon_state = "apc0" - //pixel_x = -16 - //pixel_y = -16 - anchored = TRUE - use_power = NO_POWER_USE - req_access = list(ACCESS_CIVILIAN_ENGINEERING) - resistance_flags = UNACIDABLE - interaction_flags = INTERACT_MACHINE_TGUI - light_range = 1 - light_power = 0.5 - var/area/area - var/areastring = null - var/obj/item/cell/cell - var/start_charge = 90 //Initial cell charge % - var/cell_type = /obj/item/cell/apc - var/opened = APC_COVER_CLOSED - var/shorted = FALSE - var/lighting = 3 - var/equipment = 3 - var/environ = 3 - var/operating = TRUE - var/charging = APC_NOT_CHARGING - var/chargemode = 1 - var/chargecount = 0 - var/locked = TRUE - var/coverlocked = TRUE - var/aidisabled = FALSE - var/obj/machinery/power/terminal/terminal = null - var/lastused_light = 0 - var/lastused_equip = 0 - var/lastused_environ = 0 - var/lastused_total = 0 - var/main_status = APC_EXTERNAL_POWER_NONE - var/debug = 0 - var/has_electronics = APC_ELECTRONICS_MISSING - var/overload = 1 //Used for the Blackout malf module - var/beenhit = 0 //Used for counting how many times it has been hit, used for Aliens at the moment - var/longtermpower = 10 - var/update_state = NONE - var/update_overlay = -1 - var/global/status_overlays = 0 - var/updating_icon = 0 - var/crash_break_probability = 85 //Probability of APC being broken by a shuttle crash on the same z-level - var/global/list/status_overlays_lock - var/global/list/status_overlays_charging - var/global/list/status_overlays_equipment - var/global/list/status_overlays_lighting - var/global/list/status_overlays_environ - var/obj/item/circuitboard/apc/electronics = null - -/obj/machinery/power/apc/connect_to_network() - //Override because the APC does not directly connect to the network; it goes through a terminal. - //The terminal is what the power computer looks for anyway. - if(terminal) - terminal.connect_to_network() - -/obj/machinery/power/apc/updateUsrDialog() - if(machine_stat & (BROKEN|MAINT)) - return - ..() - -/obj/machinery/power/apc/Initialize(mapload, ndir, building) - GLOB.apcs_list += src - wires = new /datum/wires/apc(src) - - // offset 32 pixels in direction of dir - // this allows the APC to be embedded in a wall, yet still inside an area - if (ndir) - setDir(ndir) - - switch(dir) - if(NORTH) - pixel_y = -32 - if(SOUTH) - pixel_y = 32 - if(EAST) - pixel_x = -32 - if(WEST) - pixel_x = 32 - - if(building) - var/area/A = get_area(src) - area = A - opened = APC_COVER_OPENED - operating = FALSE - name = "\improper [area.name] APC" - machine_stat |= MAINT - update_icon() - addtimer(CALLBACK(src, PROC_REF(update)), 5) - - start_processing() - - . = ..() - - var/area/A = get_area(src) - - //If area isn't specified use current - if(isarea(A) && areastring == null) - area = A - name = "\improper [area.name] APC" - else - area = get_area_name(areastring) - name = "\improper [area.name] APC" - - update_icon() - update() //areas should be lit on startup - - if(mapload) - has_electronics = APC_ELECTRONICS_SECURED - - //Is starting with a power cell installed, create it and set its charge level - if(cell_type) - set_cell(new cell_type(src)) - cell.charge = start_charge * cell.maxcharge / 100.0 //Convert percentage to actual value - cell.update_icon() - - - make_terminal() - - update() //areas should be lit on startup - - //Break few ACPs on the colony - if(!start_charge && is_ground_level(z) && prob(10)) - addtimer(CALLBACK(src, PROC_REF(set_broken)), 5) - -/obj/machinery/power/apc/Destroy() - GLOB.apcs_list -= src - - area.power_light = 0 - area.power_equip = 0 - area.power_environ = 0 - area.power_change() - - QDEL_NULL(cell) - QDEL_NULL(wires) - if(terminal) - disconnect_terminal() - - return ..() - -///Wrapper to guarantee powercells are properly nulled and avoid hard deletes. -/obj/machinery/power/apc/proc/set_cell(obj/item/cell/new_cell) - if(cell) - UnregisterSignal(cell, COMSIG_QDELETING) - cell = new_cell - if(cell) - RegisterSignal(cell, COMSIG_QDELETING, PROC_REF(on_cell_deletion)) - - -///Called by the deletion of the referenced powercell. -/obj/machinery/power/apc/proc/on_cell_deletion(obj/item/cell/source, force) - SIGNAL_HANDLER - set_cell(null) - - -/obj/machinery/power/apc/proc/make_terminal() - //Create a terminal object at the same position as original turf loc - //Wires will attach to this - terminal = new(loc) - terminal.setDir(REVERSE_DIR(dir)) - terminal.master = src - -/obj/machinery/power/apc/examine(mob/user) - . = ..() - - if(machine_stat & BROKEN) - . += span_info("It appears to be completely broken. It's hard to see what else is wrong with it.") - return - - if(opened) - if(has_electronics && terminal) - . += span_info("The cover is [opened == APC_COVER_REMOVED ? "removed":"open"] and the power cell is [cell ? "installed":"missing"].") - else - . += span_info("It's [ !terminal ? "not" : "" ] wired up.") - . += span_info("The electronics are[!has_electronics?"n't":""] installed.") - else - if(machine_stat & MAINT) - . += span_info("The cover is closed. Something is wrong with it, it doesn't work.") - else - . += span_info("The cover is closed.") - - if(CHECK_BITFIELD(machine_stat, PANEL_OPEN)) - . += span_info("The wiring is exposed.") - -//Update the APC icon to show the three base states -//Also add overlays for indicator lights -/obj/machinery/power/apc/update_icon() //TODO JESUS CHRIST THIS IS SHIT - var/update = check_updates() //Returns 0 if no need to update icons. - //1 if we need to update the icon_state - //2 if we need to update the overlays - if(!update) - return - - set_light(0) - overlays.Cut() - - if(update & 1) - var/broken = CHECK_BITFIELD(update_state, UPSTATE_BROKE) ? "-b" : "" - var/status = (CHECK_BITFIELD(update_state, UPSTATE_WIREEXP) && !CHECK_BITFIELD(update_state, UPSTATE_OPENED1)) ? "-wires" : broken - icon_state = "apc[opened][status]" - - if(update & 2) - if(CHECK_BITFIELD(update_overlay, APC_UPOVERLAY_CELL_IN)) - overlays += "apco-cell" - else if(CHECK_BITFIELD(update_state, UPSTATE_ALLGOOD)) - overlays += emissive_appearance(icon, "apcox-[locked]") - overlays += mutable_appearance(icon, "apcox-[locked]") - overlays += emissive_appearance(icon, "apco3-[charging]") - overlays += mutable_appearance(icon, "apco3-[charging]") - var/operating = CHECK_BITFIELD(update_overlay, APC_UPOVERLAY_OPERATING) - overlays += emissive_appearance(icon, "apco0-[operating ? equipment : 0]") - overlays += mutable_appearance(icon, "apco0-[operating ? equipment : 0]") - overlays += emissive_appearance(icon, "apco1-[operating ? lighting : 0]") - overlays += mutable_appearance(icon, "apco1-[operating ? lighting : 0]") - overlays += emissive_appearance(icon, "apco2-[operating ? environ : 0]") - overlays += mutable_appearance(icon, "apco2-[operating ? environ : 0]") - - switch(charging) - if(APC_NOT_CHARGING) - set_light_color(LIGHT_COLOR_RED) - if(APC_CHARGING) - set_light_color(LIGHT_COLOR_BLUE) - if(APC_FULLY_CHARGED) - set_light_color(LIGHT_COLOR_GREEN) - set_light(initial(light_range)) - -/obj/machinery/power/apc/proc/check_updates() - - var/last_update_state = update_state - var/last_update_overlay = update_overlay - update_state = NONE - update_overlay = 0 - - if(machine_stat & BROKEN) - ENABLE_BITFIELD(update_state, UPSTATE_BROKE) - if(machine_stat & MAINT) - ENABLE_BITFIELD(update_state, UPSTATE_MAINT) - switch(opened) - if(APC_COVER_OPENED) - ENABLE_BITFIELD(update_state, UPSTATE_OPENED1) - if(APC_COVER_REMOVED) - ENABLE_BITFIELD(update_state, UPSTATE_OPENED2) - if(CHECK_BITFIELD(machine_stat, PANEL_OPEN)) - ENABLE_BITFIELD(update_state, UPSTATE_WIREEXP) - if(!update_state) - ENABLE_BITFIELD(update_state, UPSTATE_ALLGOOD) - if(locked) - ENABLE_BITFIELD(update_overlay, APC_UPOVERLAY_LOCKED) - if(operating) - ENABLE_BITFIELD(update_overlay, APC_UPOVERLAY_OPERATING) - - switch(charging) - if(APC_NOT_CHARGING) - ENABLE_BITFIELD(update_overlay, APC_UPOVERLAY_CHARGEING0) - if(APC_CHARGING) - ENABLE_BITFIELD(update_overlay, APC_UPOVERLAY_CHARGEING1) - if(APC_FULLY_CHARGED) - ENABLE_BITFIELD(update_overlay, APC_UPOVERLAY_CHARGEING2) - - switch(equipment) - if(0) - ENABLE_BITFIELD(update_overlay, APC_UPOVERLAY_EQUIPMENT0) - if(1) - ENABLE_BITFIELD(update_overlay, APC_UPOVERLAY_EQUIPMENT1) - if(2) - ENABLE_BITFIELD(update_overlay, APC_UPOVERLAY_EQUIPMENT2) - - switch(lighting) - if(0) - ENABLE_BITFIELD(update_overlay, APC_UPOVERLAY_LIGHTING0) - if(1) - ENABLE_BITFIELD(update_overlay, APC_UPOVERLAY_LIGHTING1) - if(2) - ENABLE_BITFIELD(update_overlay, APC_UPOVERLAY_LIGHTING2) - - switch(environ) - if(0) - ENABLE_BITFIELD(update_overlay, APC_UPOVERLAY_ENVIRON0) - if(1) - ENABLE_BITFIELD(update_overlay, APC_UPOVERLAY_ENVIRON1) - if(2) - ENABLE_BITFIELD(update_overlay, APC_UPOVERLAY_ENVIRON2) - - if(opened && cell && !CHECK_BITFIELD(update_state, UPSTATE_MAINT) && ((CHECK_BITFIELD(update_state, UPSTATE_OPENED1) && !CHECK_BITFIELD(update_state, UPSTATE_BROKE)) || CHECK_BITFIELD(update_state, UPSTATE_OPENED2))) - ENABLE_BITFIELD(update_overlay, APC_UPOVERLAY_CELL_IN) - - var/results = 0 - if(last_update_state == update_state && last_update_overlay == update_overlay) - return 0 - if(last_update_state != update_state) - results += 1 - if(last_update_overlay != update_overlay) - results += 2 - return results - -/obj/machinery/power/apc/proc/queue_icon_update() - updating_icon = TRUE - -/obj/machinery/power/apc/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) - return FALSE - - if(effects) - X.do_attack_animation(src, ATTACK_EFFECT_CLAW) - X.visible_message(span_danger("[X] slashes \the [src]!"), \ - span_danger("We slash \the [src]!"), null, 5) - playsound(loc, "alien_claw_metal", 25, 1) - - var/allcut = wires.is_all_cut() - - if(beenhit >= pick(3, 4) && !CHECK_BITFIELD(machine_stat, PANEL_OPEN)) - ENABLE_BITFIELD(machine_stat, PANEL_OPEN) - update_icon() - visible_message(span_danger("\The [src]'s cover swings open, exposing the wires!"), null, null, 5) - - else if(CHECK_BITFIELD(machine_stat, PANEL_OPEN) && !allcut) - wires.cut_all() - update_icon() - visible_message(span_danger("\The [src]'s wires snap apart in a rain of sparks!"), null, null, 5) - if(X.client) - var/datum/personal_statistics/personal_statistics = GLOB.personal_statistics_list[X.ckey] - personal_statistics.apcs_slashed++ - else - beenhit += 1 - -//Attack with an item - open/close cover, insert cell, or (un)lock interface -/obj/machinery/power/apc/attackby(obj/item/I, mob/user, params) - . = ..() - - if(istype(I, /obj/item/cell) && opened) //Trying to put a cell inside - if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) - user.visible_message(span_notice("[user] fumbles around figuring out how to fit [I] into [src]."), - span_notice("You fumble around figuring out how to fit [I] into [src].")) - var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) - if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) - return - - if(cell) - balloon_alert(user, "Already installed") - return - - if(machine_stat & MAINT) - balloon_alert(user, "No connector") - return - - if(!user.transferItemToLoc(I, src)) - return - - set_cell(I) - user.visible_message("[user] inserts [I] into [src]!", - "You insert [I] into [src]!") - chargecount = 0 - update_icon() - - else if(istype(I, /obj/item/card/id)) //Trying to unlock the interface with an ID card - if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) - user.visible_message(span_notice("[user] fumbles around figuring out where to swipe [I] on [src]."), - span_notice("You fumble around figuring out where to swipe [I] on [src].")) - var/fumbling_time = 3 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) - if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) - return - - if(opened) - balloon_alert(user, "Close the cover first") - return - - if(CHECK_BITFIELD(machine_stat, PANEL_OPEN)) - balloon_alert(user, "Close the panel first") - return - - if(machine_stat & (BROKEN|MAINT)) - balloon_alert(user, "Nothing happens") - return - - if(!allowed(user)) - balloon_alert(user, "Access denied") - return - - locked = !locked - balloon_alert_to_viewers("[locked ? "locked" : "unlocked"]") - update_icon() - - else if(iscablecoil(I) && !terminal && opened && has_electronics != APC_ELECTRONICS_SECURED) - var/obj/item/stack/cable_coil/C = I - - if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) - balloon_alert_to_viewers("fumbles") - var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) - if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) - return - - var/turf/T = get_turf(src) - if(T.intact_tile) - balloon_alert(user, "Remove the floor plating") - return - - if(C.get_amount() < 10) - balloon_alert(user, "Not enough wires") - return - - balloon_alert_to_viewers("starts wiring [src]") - playsound(loc, 'sound/items/deconstruct.ogg', 25, 1) - - if(!do_after(user, 20, NONE, src, BUSY_ICON_BUILD) || terminal || !opened || has_electronics == APC_ELECTRONICS_SECURED) - return - - var/obj/structure/cable/N = T.get_cable_node() - if(prob(50) && electrocute_mob(user, N, N)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() - return - - if(!C.use(10)) - return - - balloon_alert_to_viewers("Wired]") - make_terminal() - terminal.connect_to_network() - - else if(istype(I, /obj/item/circuitboard/apc) && opened && has_electronics == APC_ELECTRONICS_MISSING && !(machine_stat & BROKEN)) - if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) - balloon_alert_to_viewers("fumbles") - var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) - if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) - return - - balloon_alert_to_viewers("Tries to insert APC board into [src]") - playsound(loc, 'sound/items/deconstruct.ogg', 25, 1) - - if(!do_after(user, 15, NONE, src, BUSY_ICON_BUILD)) - return - - has_electronics = APC_ELECTRONICS_INSTALLED - balloon_alert_to_viewers("Inserts APC board into [src]") - electronics = I - qdel(I) - - else if(istype(I, /obj/item/circuitboard/apc) && opened && has_electronics == APC_ELECTRONICS_MISSING && (machine_stat & BROKEN)) - if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) - balloon_alert_to_viewers("fumbles") - var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) - if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) - return - - balloon_alert(user, "Cannot, frame damaged") - - else if(istype(I, /obj/item/frame/apc) && opened && (machine_stat & BROKEN)) - if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) - balloon_alert_to_viewers("fumbles") - var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) - if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) - return - - if(has_electronics) - balloon_alert(user, "Cannot, electronics still inside") - return - - balloon_alert_to_viewers("Begins replacing front panel") - - if(!do_after(user, 50, NONE, src, BUSY_ICON_BUILD)) - return - - balloon_alert_to_viewers("Replaces front panel") - qdel(I) - DISABLE_BITFIELD(machine_stat, BROKEN) - if(opened == APC_COVER_REMOVED) - opened = APC_COVER_OPENED - update_icon() - - else if(istype(I, /obj/item/frame/apc) && opened) - if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) - balloon_alert_to_viewers("fumbles") - var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) - if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) - return - - if(opened == APC_COVER_REMOVED) - opened = APC_COVER_OPENED - balloon_alert_to_viewers("Replaces [src]'s front panel") - qdel(I) - update_icon() - - else - if(((machine_stat & BROKEN)) && !opened && I.force >= 5) - opened = APC_COVER_REMOVED - balloon_alert_to_viewers("Knocks down [src]'s panel") - update_icon() - else - if(issilicon(user)) - return attack_hand(user) - - if(!opened && CHECK_BITFIELD(machine_stat, PANEL_OPEN) && (ismultitool(I) || iswirecutter(I))) - return attack_hand(user) - balloon_alert_to_viewers("Hits [src] with [I]") - - -/obj/machinery/power/apc/crowbar_act(mob/user, obj/item/I) - . = TRUE - if(opened) - if(has_electronics == APC_ELECTRONICS_INSTALLED) - if(terminal) - balloon_alert(user, "Disconnect the wires") - return - if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) - balloon_alert_to_viewers("Fumbles around removing cell from [src]") - var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) - if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) - return - I.play_tool_sound(src) - balloon_alert(user, "Removing APC board") - if(I.use_tool(src, user, 50)) - if(has_electronics == APC_ELECTRONICS_INSTALLED) - has_electronics = APC_ELECTRONICS_MISSING - if(machine_stat & BROKEN) - balloon_alert_to_viewers("Removes the charred control board") - return - else - balloon_alert_to_viewers("Removes the control board") - new /obj/item/circuitboard/apc(loc) - return - else if(opened != APC_COVER_REMOVED) - opened = APC_COVER_CLOSED - coverlocked = TRUE //closing cover relocks it - update_icon() - return - else if(!(machine_stat & BROKEN)) - if(coverlocked && !(machine_stat & MAINT)) // locked... - balloon_alert(user, "Locked") - return - else if(machine_stat & PANEL_OPEN) - balloon_alert(user, "Can't, wires in way") - return - else - opened = APC_COVER_OPENED - update_icon() - return - - -/obj/machinery/power/apc/screwdriver_act(mob/living/user, obj/item/I) - . = ..() - if(.) - return TRUE - . = TRUE - if(opened) - if(cell) - if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) - balloon_alert_to_viewers("fumbles") - var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) - if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) - return - balloon_alert_to_viewers("Removes cell") - var/turf/T = get_turf(user) - cell.forceMove(T) - cell.update_icon() - set_cell(null) - charging = APC_NOT_CHARGING - update_icon() - return - else - switch(has_electronics) - if(APC_ELECTRONICS_INSTALLED) - has_electronics = APC_ELECTRONICS_SECURED - machine_stat &= ~MAINT - I.play_tool_sound(src) - balloon_alert(user, "Screws circuit board in") - if(APC_ELECTRONICS_SECURED) - has_electronics = APC_ELECTRONICS_INSTALLED - machine_stat |= MAINT - I.play_tool_sound(src) - balloon_alert(user, "Unfastens electronics") - else - balloon_alert(user, "Nothing securable") - return - update_icon() - else - TOGGLE_BITFIELD(machine_stat, PANEL_OPEN) - balloon_alert(user, "wires [CHECK_BITFIELD(machine_stat, PANEL_OPEN) ? "exposed" : "unexposed"]") - update_icon() - - -/obj/machinery/power/apc/wirecutter_act(mob/living/user, obj/item/I) - if(terminal && opened) - terminal.deconstruct(user) - return TRUE - - -/obj/machinery/power/apc/welder_act(mob/living/user, obj/item/I) - if(!opened || has_electronics || terminal) - return - - if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) - balloon_alert_to_viewers("fumbles") - var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) - if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) - return - - if(!I.tool_start_check(user, amount = 3)) - return - balloon_alert_to_viewers("welds [src]") - - if(!I.use_tool(src, user, 50, volume = 50, amount = 3)) - return - - if((machine_stat & BROKEN) || opened == APC_COVER_REMOVED) - new /obj/item/stack/sheet/metal(loc) - balloon_alert_to_viewers("cuts apart [src]") - else - new /obj/item/frame/apc(loc) - balloon_alert_to_viewers("cuts [src] from the wall") - qdel(src) - return TRUE - - -//Attack with hand - remove cell (if cover open) or interact with the APC -/obj/machinery/power/apc/attack_hand(mob/living/user) - . = ..() - if(.) - return - - if(opened && cell && !issilicon(user)) - if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) - balloon_alert_to_viewers("fumbles") - var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) - if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) - return - balloon_alert_to_viewers("removes [src] from [src]") - user.put_in_hands(cell) - cell.update_icon() - set_cell(null) - charging = APC_NOT_CHARGING - update_icon() - return - - if(machine_stat & (BROKEN|MAINT)) - return - - interact(user) - - - -/obj/machinery/power/apc/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - - if(!ui) - ui = new(user, src, "Apc", name) - ui.open() - -/obj/machinery/power/apc/ui_data(mob/user) - var/list/data = list( - "locked" = locked, - "isOperating" = operating, - "externalPower" = main_status, - "powerCellStatus" = cell ? cell.percent() : null, - "chargeMode" = chargemode, - "chargingStatus" = charging, - "totalLoad" = DisplayPower(lastused_total), - "coverLocked" = coverlocked, - "siliconUser" = issilicon(user), - - "powerChannels" = list( - list( - "title" = "Equipment", - "powerLoad" = DisplayPower(lastused_equip), - "status" = equipment, - "topicParams" = list( - "auto" = list("eqp" = 3), - "on" = list("eqp" = 2), - "off" = list("eqp" = 1) - ) - ), - list( - "title" = "Lighting", - "powerLoad" = DisplayPower(lastused_light), - "status" = lighting, - "topicParams" = list( - "auto" = list("lgt" = 3), - "on" = list("lgt" = 2), - "off" = list("lgt" = 1) - ) - ), - list( - "title" = "Environment", - "powerLoad" = DisplayPower(lastused_environ), - "status" = environ, - "topicParams" = list( - "auto" = list("env" = 3), - "on" = list("env" = 2), - "off" = list("env" = 1) - ) - ) - ) - ) - return data - - -/obj/machinery/power/apc/proc/setsubsystem(val) - if(cell?.charge > 0) - return (val==1) ? 0 : val - else if(val == 3) - return 1 - else - return 0 - -/obj/machinery/power/apc/proc/can_use(mob/user, loud = FALSE) //used by attack_hand() and Topic() - if(IsAdminGhost(user)) - return TRUE - if(isAI(user) && aidisabled) - if(!loud) - balloon_alert(user, "eee is disabled") - return FALSE - return TRUE - -/obj/machinery/power/apc/ui_act(action, list/params) - . = ..() - if(. || !can_use(usr, TRUE) || (locked && !usr.has_unlimited_silicon_privilege)) - return - switch(action) - if("lock") - if(usr.has_unlimited_silicon_privilege) - if((machine_stat & (BROKEN|MAINT))) - balloon_alert(usr, "APC unresponsive") - else - locked = !locked - update_icon() - . = TRUE - if("cover") - coverlocked = !coverlocked - . = TRUE - if("breaker") - toggle_breaker(usr) - . = TRUE - if("charge") - chargemode = !chargemode - if(!chargemode) - charging = APC_NOT_CHARGING - update_icon() - . = TRUE - if("channel") - if(params["eqp"]) - equipment = setsubsystem(text2num(params["eqp"])) - update_icon() - update() - else if(params["lgt"]) - lighting = setsubsystem(text2num(params["lgt"])) - update_icon() - update() - else if(params["env"]) - environ = setsubsystem(text2num(params["env"])) - update_icon() - update() - . = TRUE - if("overload") - if(usr.has_unlimited_silicon_privilege) - overload_lighting() - . = TRUE - return TRUE - -/obj/machinery/power/apc/proc/report() - return "[area.name] : [equipment]/[lighting]/[environ] ([lastused_equip+lastused_light+lastused_environ]) : [cell? cell.percent() : "N/C"] ([charging])" - - -/obj/machinery/power/apc/proc/update() - if(operating && !shorted) - area.power_light = (lighting > 1) - area.power_equip = (equipment > 1) - area.power_environ = (environ > 1) - else - area.power_light = 0 - area.power_equip = 0 - area.power_environ = 0 - area.power_change() - - -/obj/machinery/power/apc/proc/reset(wire) - switch(wire) - if(WIRE_IDSCAN) - locked = TRUE - if(WIRE_POWER1, WIRE_POWER2) - if(!wires.is_cut(WIRE_POWER1) && !wires.is_cut(WIRE_POWER2)) - shorted = FALSE - if(WIRE_AI) - if(!wires.is_cut(WIRE_AI)) - aidisabled = FALSE - if(APC_RESET_EMP) - equipment = 3 - environ = 3 - update_icon() - update() - -/obj/machinery/power/apc/surplus() - if(terminal) - return terminal.surplus() - else - return 0 - - -/obj/machinery/power/apc/add_load(amount) - if(terminal?.powernet) - return terminal.add_load(amount) - return 0 - - -/obj/machinery/power/apc/avail() - if(terminal) - return terminal.avail() - else - return 0 - - -/obj/machinery/power/apc/process() - if(updating_icon) - update_icon() - if(machine_stat & (BROKEN|MAINT)) - return - if(!area.requires_power) - return - - lastused_light = area.usage(STATIC_LIGHTS) - lastused_light += area.usage(LIGHT) - lastused_equip = area.usage(EQUIP) - lastused_equip += area.usage(STATIC_EQUIP) - lastused_environ = area.usage(ENVIRON) - lastused_environ += area.usage(STATIC_ENVIRON) - area.clear_usage() - - lastused_total = lastused_light + lastused_equip + lastused_environ - - //store states to update icon if any change - var/last_lt = lighting - var/last_eq = equipment - var/last_en = environ - var/last_ch = charging - - var/excess = surplus() - - if(!avail()) - main_status = APC_EXTERNAL_POWER_NONE - else if(excess < 0) - main_status = APC_EXTERNAL_POWER_LOW - else - main_status = APC_EXTERNAL_POWER_GOOD - - if(cell && !shorted) - // draw power from cell as before to power the area - var/cellused = min(cell.charge, GLOB.CELLRATE * lastused_total) // clamp deduction to a max, amount left in cell - cell.use(cellused) - - if(excess > lastused_total) // if power excess recharge the cell - // by the same amount just used - cell.give(cellused) - add_load(cellused / GLOB.CELLRATE) // add the load used to recharge the cell - - - else // no excess, and not enough per-apc - if((cell.charge / GLOB.CELLRATE + excess) >= lastused_total) // can we draw enough from cell+grid to cover last usage? - cell.charge = min(cell.maxcharge, cell.charge + GLOB.CELLRATE * excess) //recharge with what we can - add_load(excess) // so draw what we can from the grid - charging = APC_NOT_CHARGING - - else // not enough power available to run the last tick! - charging = APC_NOT_CHARGING - chargecount = 0 - // This turns everything off in the case that there is still a charge left on the battery, just not enough to run the room. - equipment = autoset(equipment, 0) - lighting = autoset(lighting, 0) - environ = autoset(environ, 0) - - - // set channels depending on how much charge we have left - - // Allow the APC to operate as normal if the cell can charge - if(charging && longtermpower < 10) - longtermpower += 1 - else if(longtermpower > -10) - longtermpower -= 2 - - if(cell.charge <= 0) // zero charge, turn all off - equipment = autoset(equipment, 0) - lighting = autoset(lighting, 0) - environ = autoset(environ, 0) - area.poweralert(0, src) - else if(cell.percent() < 15 && longtermpower < 0) // <15%, turn off lighting & equipment - equipment = autoset(equipment, 2) - lighting = autoset(lighting, 2) - environ = autoset(environ, 1) - area.poweralert(0, src) - else if(cell.percent() < 30 && longtermpower < 0) // <30%, turn off equipment - equipment = autoset(equipment, 2) - lighting = autoset(lighting, 1) - environ = autoset(environ, 1) - area.poweralert(0, src) - else // otherwise all can be on - equipment = autoset(equipment, 1) - lighting = autoset(lighting, 1) - environ = autoset(environ, 1) - area.poweralert(1, src) - if(cell.percent() > 75) - area.poweralert(1, src) - - // now trickle-charge the cell - if(chargemode && charging == APC_CHARGING && operating) - if(excess > 0) // check to make sure we have enough to charge - // Max charge is capped to % per second constant - var/ch = min(excess*GLOB.CELLRATE, cell.maxcharge*GLOB.CHARGELEVEL) - add_load(ch/GLOB.CELLRATE) // Removes the power we're taking from the grid - cell.give(ch) // actually recharge the cell - - else - charging = APC_NOT_CHARGING // stop charging - chargecount = 0 - - // show cell as fully charged if so - if(cell.charge >= cell.maxcharge) - cell.charge = cell.maxcharge - charging = APC_FULLY_CHARGED - - if(chargemode) - if(!charging) - if(excess > cell.maxcharge * GLOB.CHARGELEVEL) - chargecount++ - else - chargecount = 0 - - if(chargecount == 10) - - chargecount = 0 - charging = APC_CHARGING - - else // chargemode off - charging = APC_NOT_CHARGING - chargecount = 0 - - else // no cell, switch everything off - charging = APC_NOT_CHARGING - chargecount = 0 - equipment = autoset(equipment, 0) - lighting = autoset(lighting, 0) - environ = autoset(environ, 0) - area.poweralert(0, src) - - // update icon & area power if anything changed - if(last_lt != lighting || last_eq != equipment || last_en != environ) - queue_icon_update() - update() - else if(last_ch != charging) - queue_icon_update() - -//val 0 = off, 1 = off(auto) 2 = on, 3 = on(auto) -//on 0 = off, 1 = auto-on, 2 = auto-off - -/proc/autoset(val, on) - - switch(on) - if(0) //Turn things off - switch(val) - if(2) //If on, return off - return 0 - if(3) //If auto-on, return auto-off - return 1 - - if(1) //Turn things auto-on - if(val == 1) //If auto-off, return auto-on - return 3 - - if(2) //Turn things auto-off - if(val == 3) //If auto-on, return auto-off - return 1 - return val - - -/obj/machinery/power/apc/emp_act(severity) - if(cell) - cell.emp_act(severity) - lighting = 0 - equipment = 0 - environ = 0 - update_icon() - update() - addtimer(CALLBACK(src, PROC_REF(reset), APC_RESET_EMP), 60 SECONDS) - return ..() - - -/obj/machinery/power/apc/ex_act(severity) - switch(severity) - if(EXPLODE_DEVASTATE) - cell?.ex_act(1) //More lags woohoo - qdel(src) - return - if(EXPLODE_HEAVY) - if(prob(50)) - return - set_broken() - if(!cell || prob(50)) - return - if(EXPLODE_LIGHT) - if(prob(75)) - return - set_broken() - if(!cell || prob(75)) - return - if(EXPLODE_WEAK) - if(prob(80)) - return - set_broken() - if(!cell || prob(85)) - return - - cell.ex_act(severity) - - -/obj/machinery/power/apc/proc/set_broken() - //Aesthetically much better! - visible_message(span_warning("[src]'s screen flickers with warnings briefly!")) - addtimer(CALLBACK(src, PROC_REF(do_break)), rand(2, 5)) - - -/obj/machinery/power/apc/proc/do_break() - visible_message(span_danger("[src]'s screen suddenly explodes in rain of sparks and small debris!")) - machine_stat |= BROKEN - operating = FALSE - update_icon() - update() - - -//Overload all the lights in this APC area -/obj/machinery/power/apc/proc/overload_lighting() - if(!operating || shorted) - return - if(cell?.charge >= 20) - cell.use(20) - INVOKE_ASYNC(src, PROC_REF(break_lights)) - - -/obj/machinery/power/apc/proc/break_lights() - for(var/obj/machinery/light/L in get_area(src)) - L.broken() - stoplag() - - -/obj/machinery/power/apc/disconnect_terminal() - if(terminal) - terminal.master = null - terminal = null - - -/obj/machinery/power/apc/proc/toggle_breaker(mob/user) - if(machine_stat & (NOPOWER|BROKEN|MAINT)) - return - - operating = !operating - log_combat(user, src, "turned [operating ? "on" : "off"]") - update() - update_icon() - - -//------Various APCs ------// - -// mapping helpers -/obj/machinery/power/apc/drained - start_charge = 0 - -/obj/machinery/power/apc/lowcharge - start_charge = 25 - -/obj/machinery/power/apc/potato - cell_type = /obj/item/cell/potato - -/obj/machinery/power/apc/weak - cell_type = /obj/item/cell - -/obj/machinery/power/apc/high - cell_type = /obj/item/cell/high - -/obj/machinery/power/apc/super - cell_type = /obj/item/cell/super - -/obj/machinery/power/apc/hyper - cell_type = /obj/item/cell/hyper - -//------Marine ship APCs ------// - -/obj/machinery/power/apc/mainship - req_access = list(ACCESS_MARINE_ENGINEERING) - cell_type = /obj/item/cell/high - -/obj/machinery/power/apc/mainship/hardened - name = "hardened area power controller" - desc = "A control terminal for the area electrical systems. This one is hardened against sudden power fluctuations caused by electrical grid damage." - crash_break_probability = 0 - -#undef APC_RESET_EMP - -#undef APC_ELECTRONICS_MISSING -#undef APC_ELECTRONICS_INSTALLED -#undef APC_ELECTRONICS_SECURED - -#undef APC_COVER_CLOSED -#undef APC_COVER_OPENED -#undef APC_COVER_REMOVED - -#undef APC_NOT_CHARGING -#undef APC_CHARGING -#undef APC_FULLY_CHARGED - -#undef APC_EXTERNAL_POWER_NONE -#undef APC_EXTERNAL_POWER_LOW -#undef APC_EXTERNAL_POWER_GOOD diff --git a/code/modules/power/apc/apc.dm b/code/modules/power/apc/apc.dm new file mode 100644 index 0000000000000..fd28cb01f026e --- /dev/null +++ b/code/modules/power/apc/apc.dm @@ -0,0 +1,655 @@ +//The Area Power Controller (APC), formerly Power Distribution Unit (PDU) +//One per area, needs wire conection to power network + +//Controls power to devices in that area +//May be opened to change power cell +//Three different channels (lighting/equipment/environ) - may each be set to on, off, or auto + + +/obj/machinery/power/apc + name = "area power controller" + desc = "A control terminal for the area electrical systems." + icon = 'icons/obj/machines/apc.dmi' + icon_state = "apc0" + anchored = TRUE + use_power = NO_POWER_USE + req_access = list(ACCESS_CIVILIAN_ENGINEERING) + resistance_flags = UNACIDABLE + interaction_flags = INTERACT_MACHINE_TGUI + light_range = 1 + light_power = 0.5 + ///The area we're affecting + var/area/area + ///The power cell inside the APC + var/obj/item/cell/cell + ///The charge of the APC when first spawned + var/start_charge = 90 + ///The type of cell to spawn this APC with + var/cell_type = /obj/item/cell/apc + ///The current state of the APC cover + var/opened = APC_COVER_CLOSED + ///Is the APC shorted? + var/shorted = FALSE + ///State of the lighting channel (off, auto off, on, auto on) + var/lighting = APC_CHANNEL_AUTO_ON + ///State of the equipment channel (off, auto off, on, auto on) + var/equipment = APC_CHANNEL_AUTO_ON + ///State of the environmental channel (off, auto off, on, auto on) + var/environ = APC_CHANNEL_AUTO_ON + ///Is the apc working? + var/operating = TRUE + ///State of the apc charging (not charging, charging, fully charged) + var/charging = APC_NOT_CHARGING + ///Can the APC recharge? + var/chargemode = TRUE + ///Number of ticks where the apc is trying to recharge + var/chargecount = 0 + ///Is the apc interface locked? + var/locked = TRUE + ///Is the apc cover locked? + var/coverlocked = TRUE + ///Is the AI locked from using the APC + var/aidisabled = FALSE + ///Reference to our cable terminal + var/obj/machinery/power/terminal/terminal = null + ///Amount of power used by the lighting channel + var/lastused_light = 0 + ///Amount of power used by the equipment channel + var/lastused_equip = 0 + ///Amount of power used by the environmental channel + var/lastused_environ = 0 + ///Total amount of power used by the three channels + var/lastused_total = 0 + var/main_status = APC_EXTERNAL_POWER_NONE + ///State of the electronics inside (missing, installed, secured) + var/has_electronics = APC_ELECTRONICS_MISSING + ///Used for counting how many times it has been hit, used for Aliens at the moment + var/beenhit = 0 + ///Buffer state that makes apcs not shut off channels immediately as long as theres some power left, effect visible in apcs only slowly losing power + var/longtermpower = 10 + ///Stores the flags related to icon updating + var/update_state = NONE + ///Stores the flag for the overlays + var/update_overlay = NONE + ///Used to stop the icon from updating too much + var/icon_update_needed = FALSE + ///Probability of APC being broken by a shuttle crash on the same z-level + var/crash_break_probability = 85 + +/obj/machinery/power/apc/connect_to_network() + //Override because the APC does not directly connect to the network; it goes through a terminal. + //The terminal is what the power computer looks for anyway. + if(terminal) + terminal.connect_to_network() + +/obj/machinery/power/apc/updateUsrDialog() + if(machine_stat & (BROKEN|MAINT)) + return + return ..() + +/obj/machinery/power/apc/Initialize(mapload, ndir, building) + GLOB.apcs_list += src + wires = new /datum/wires/apc(src) + + // offset 32 pixels in direction of dir + // this allows the APC to be embedded in a wall, yet still inside an area + if (ndir) + setDir(ndir) + + switch(dir) + if(NORTH) + pixel_y = -32 + if(SOUTH) + pixel_y = 32 + if(EAST) + pixel_x = -32 + if(WEST) + pixel_x = 32 + + if(building) + var/area/A = get_area(src) + area = A + opened = APC_COVER_OPENED + operating = FALSE + name = "\improper [area.name] APC" + machine_stat |= MAINT + update_icon() + addtimer(CALLBACK(src, PROC_REF(update)), 5) + + start_processing() + + . = ..() + + var/area/A = get_area(src) + area = A + name = "\improper [area.name] APC" + + update_icon() + update() //areas should be lit on startup + + if(mapload) + has_electronics = APC_ELECTRONICS_SECURED + + //Is starting with a power cell installed, create it and set its charge level + if(cell_type) + set_cell(new cell_type(src)) + cell.charge = start_charge * cell.maxcharge / 100.0 //Convert percentage to actual value + cell.update_icon() + + + make_terminal() + + update() //areas should be lit on startup + + //Break few ACPs on the colony + if(!start_charge && is_ground_level(z) && prob(10)) + addtimer(CALLBACK(src, PROC_REF(set_broken)), 5) + +/obj/machinery/power/apc/Destroy() + GLOB.apcs_list -= src + + area.power_light = 0 + area.power_equip = 0 + area.power_environ = 0 + area.power_change() + + QDEL_NULL(cell) + QDEL_NULL(wires) + if(terminal) + disconnect_terminal() + + return ..() + +///Wrapper to guarantee powercells are properly nulled and avoid hard deletes. +/obj/machinery/power/apc/proc/set_cell(obj/item/cell/new_cell) + if(cell) + UnregisterSignal(cell, COMSIG_QDELETING) + cell = new_cell + if(cell) + RegisterSignal(cell, COMSIG_QDELETING, PROC_REF(on_cell_deletion)) + + +///Called by the deletion of the referenced powercell. +/obj/machinery/power/apc/proc/on_cell_deletion(obj/item/cell/source, force) + SIGNAL_HANDLER + set_cell(null) + + +/obj/machinery/power/apc/proc/make_terminal() + //Create a terminal object at the same position as original turf loc + //Wires will attach to this + terminal = new(loc) + terminal.setDir(REVERSE_DIR(dir)) + terminal.master = src + +/obj/machinery/power/apc/examine(mob/user) + . = ..() + + if(machine_stat & BROKEN) + . += span_info("It appears to be completely broken. It's hard to see what else is wrong with it.") + return + + if(opened) + if(has_electronics && terminal) + . += span_info("The cover is [opened == APC_COVER_REMOVED ? "removed":"open"] and the power cell is [cell ? "installed":"missing"].") + else + . += span_info("It's [ !terminal ? "not" : "" ] wired up.") + . += span_info("The electronics are[!has_electronics?"n't":""] installed.") + else + if(machine_stat & MAINT) + . += span_info("The cover is closed. Something is wrong with it, it doesn't work.") + else + . += span_info("The cover is closed.") + + if(CHECK_BITFIELD(machine_stat, PANEL_OPEN)) + . += span_info("The wiring is exposed.") + +/obj/machinery/power/apc/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + + if(!ui) + ui = new(user, src, "Apc", name) + ui.open() + +/obj/machinery/power/apc/ui_data(mob/user) + var/list/data = list( + "locked" = locked, + "isOperating" = operating, + "externalPower" = main_status, + "powerCellStatus" = cell ? cell.percent() : null, + "chargeMode" = chargemode, + "chargingStatus" = charging, + "totalLoad" = DisplayPower(lastused_total), + "coverLocked" = coverlocked, + "siliconUser" = issilicon(user), + + "powerChannels" = list( + list( + "title" = "Equipment", + "powerLoad" = DisplayPower(lastused_equip), + "status" = equipment, + "topicParams" = list( + "auto" = list("eqp" = 3), + "on" = list("eqp" = 2), + "off" = list("eqp" = 1) + ) + ), + list( + "title" = "Lighting", + "powerLoad" = DisplayPower(lastused_light), + "status" = lighting, + "topicParams" = list( + "auto" = list("lgt" = 3), + "on" = list("lgt" = 2), + "off" = list("lgt" = 1) + ) + ), + list( + "title" = "Environment", + "powerLoad" = DisplayPower(lastused_environ), + "status" = environ, + "topicParams" = list( + "auto" = list("env" = 3), + "on" = list("env" = 2), + "off" = list("env" = 1) + ) + ) + ) + ) + return data + + +/obj/machinery/power/apc/proc/setsubsystem(val) + if(cell?.charge > 0) + return (val==1) ? 0 : val + else if(val == 3) + return 1 + else + return 0 + +/obj/machinery/power/apc/proc/can_use(mob/user, loud = FALSE) //used by attack_hand() and Topic() + if(IsAdminGhost(user)) + return TRUE + if(isAI(user) && aidisabled) + if(!loud) + balloon_alert(user, "eee is disabled") + return FALSE + return TRUE + +/obj/machinery/power/apc/ui_act(action, list/params) + . = ..() + if(. || !can_use(usr, TRUE) || (locked && !usr.has_unlimited_silicon_privilege)) + return + switch(action) + if("lock") + if(usr.has_unlimited_silicon_privilege) + if((machine_stat & (BROKEN|MAINT))) + balloon_alert(usr, "APC unresponsive") + else + locked = !locked + update_icon() + . = TRUE + if("cover") + coverlocked = !coverlocked + . = TRUE + if("breaker") + toggle_breaker(usr) + . = TRUE + if("charge") + chargemode = !chargemode + if(!chargemode) + charging = APC_NOT_CHARGING + update_icon() + . = TRUE + if("channel") + if(params["eqp"]) + equipment = setsubsystem(text2num(params["eqp"])) + update_icon() + update() + else if(params["lgt"]) + lighting = setsubsystem(text2num(params["lgt"])) + update_icon() + update() + else if(params["env"]) + environ = setsubsystem(text2num(params["env"])) + update_icon() + update() + . = TRUE + if("overload") + if(usr.has_unlimited_silicon_privilege) + overload_lighting() + . = TRUE + return TRUE + +/obj/machinery/power/apc/proc/report() + return "[area.name] : [equipment]/[lighting]/[environ] ([lastused_equip+lastused_light+lastused_environ]) : [cell? cell.percent() : "N/C"] ([charging])" + + +/obj/machinery/power/apc/proc/update() + if(operating && !shorted) + area.power_light = (lighting > 1) + area.power_equip = (equipment > 1) + area.power_environ = (environ > 1) + else + area.power_light = 0 + area.power_equip = 0 + area.power_environ = 0 + area.power_change() + + +/obj/machinery/power/apc/proc/reset(wire) + switch(wire) + if(WIRE_IDSCAN) + locked = TRUE + if(WIRE_POWER1, WIRE_POWER2) + if(!wires.is_cut(WIRE_POWER1) && !wires.is_cut(WIRE_POWER2)) + shorted = FALSE + if(WIRE_AI) + if(!wires.is_cut(WIRE_AI)) + aidisabled = FALSE + if(APC_RESET_EMP) + equipment = 3 + environ = 3 + update_icon() + update() + +/obj/machinery/power/apc/surplus() + if(terminal) + return terminal.surplus() + else + return 0 + + +/obj/machinery/power/apc/add_load(amount) + if(terminal?.powernet) + return terminal.add_load(amount) + return 0 + + +/obj/machinery/power/apc/avail() + if(terminal) + return terminal.avail() + else + return 0 + + +/obj/machinery/power/apc/process() + if(icon_update_needed) + update_icon() + if(machine_stat & (BROKEN|MAINT)) + return + if(!area.requires_power) + return + + lastused_light = area.usage(STATIC_LIGHTS) + lastused_light += area.usage(LIGHT) + lastused_equip = area.usage(EQUIP) + lastused_equip += area.usage(STATIC_EQUIP) + lastused_environ = area.usage(ENVIRON) + lastused_environ += area.usage(STATIC_ENVIRON) + area.clear_usage() + + lastused_total = lastused_light + lastused_equip + lastused_environ + + //store states to update icon if any change + var/last_lt = lighting + var/last_eq = equipment + var/last_en = environ + var/last_ch = charging + + var/excess = surplus() + + if(!avail()) + main_status = APC_EXTERNAL_POWER_NONE + else if(excess < 0) + main_status = APC_EXTERNAL_POWER_LOW + else + main_status = APC_EXTERNAL_POWER_GOOD + + if(cell && !shorted) + // draw power from cell as before to power the area + var/cellused = min(cell.charge, GLOB.CELLRATE * lastused_total) // clamp deduction to a max, amount left in cell + cell.use(cellused) + + if(excess > lastused_total) // if power excess recharge the cell + // by the same amount just used + cell.give(cellused) + add_load(cellused / GLOB.CELLRATE) // add the load used to recharge the cell + + + else // no excess, and not enough per-apc + if((cell.charge / GLOB.CELLRATE + excess) >= lastused_total) // can we draw enough from cell+grid to cover last usage? + cell.charge = min(cell.maxcharge, cell.charge + GLOB.CELLRATE * excess) //recharge with what we can + add_load(excess) // so draw what we can from the grid + charging = APC_NOT_CHARGING + + else // not enough power available to run the last tick! + charging = APC_NOT_CHARGING + chargecount = 0 + // This turns everything off in the case that there is still a charge left on the battery, just not enough to run the room. + equipment = autoset(equipment, 0) + lighting = autoset(lighting, 0) + environ = autoset(environ, 0) + + + // set channels depending on how much charge we have left + + // Allow the APC to operate as normal if the cell can charge + if(charging && longtermpower < 10) + longtermpower += 1 + else if(longtermpower > -10) + longtermpower -= 2 + + if(cell.charge <= 0) // zero charge, turn all off + equipment = autoset(equipment, 0) + lighting = autoset(lighting, 0) + environ = autoset(environ, 0) + area.poweralert(0, src) + else if(cell.percent() < 15 && longtermpower < 0) // <15%, turn off lighting & equipment + equipment = autoset(equipment, 2) + lighting = autoset(lighting, 2) + environ = autoset(environ, 1) + area.poweralert(0, src) + else if(cell.percent() < 30 && longtermpower < 0) // <30%, turn off equipment + equipment = autoset(equipment, 2) + lighting = autoset(lighting, 1) + environ = autoset(environ, 1) + area.poweralert(0, src) + else // otherwise all can be on + equipment = autoset(equipment, 1) + lighting = autoset(lighting, 1) + environ = autoset(environ, 1) + area.poweralert(1, src) + if(cell.percent() > 75) + area.poweralert(1, src) + + // now trickle-charge the cell + if(chargemode && charging == APC_CHARGING && operating) + if(excess > 0) // check to make sure we have enough to charge + // Max charge is capped to % per second constant + var/ch = min(excess*GLOB.CELLRATE, cell.maxcharge*GLOB.CHARGELEVEL) + add_load(ch/GLOB.CELLRATE) // Removes the power we're taking from the grid + cell.give(ch) // actually recharge the cell + + else + charging = APC_NOT_CHARGING // stop charging + chargecount = 0 + + // show cell as fully charged if so + if(cell.charge >= cell.maxcharge) + cell.charge = cell.maxcharge + charging = APC_FULLY_CHARGED + + if(chargemode) + if(!charging) + if(excess > cell.maxcharge * GLOB.CHARGELEVEL) + chargecount++ + else + chargecount = 0 + + if(chargecount == 10) + + chargecount = 0 + charging = APC_CHARGING + + else // chargemode off + charging = APC_NOT_CHARGING + chargecount = 0 + + else // no cell, switch everything off + charging = APC_NOT_CHARGING + chargecount = 0 + equipment = autoset(equipment, 0) + lighting = autoset(lighting, 0) + environ = autoset(environ, 0) + area.poweralert(0, src) + + // update icon & area power if anything changed + if(last_lt != lighting || last_eq != equipment || last_en != environ) + queue_icon_update() + update() + else if(last_ch != charging) + queue_icon_update() + +//val 0 = off, 1 = off(auto) 2 = on, 3 = on(auto) +//on 0 = off, 1 = auto-on, 2 = auto-off + +/proc/autoset(val, on) + + switch(on) + if(0) //Turn things off + switch(val) + if(2) //If on, return off + return 0 + if(3) //If auto-on, return auto-off + return 1 + + if(1) //Turn things auto-on + if(val == 1) //If auto-off, return auto-on + return 3 + + if(2) //Turn things auto-off + if(val == 3) //If auto-on, return auto-off + return 1 + return val + + +/obj/machinery/power/apc/emp_act(severity) + if(cell) + cell.emp_act(severity) + lighting = 0 + equipment = 0 + environ = 0 + update_icon() + update() + addtimer(CALLBACK(src, PROC_REF(reset), APC_RESET_EMP), 60 SECONDS) + return ..() + + +/obj/machinery/power/apc/ex_act(severity) + switch(severity) + if(EXPLODE_DEVASTATE) + cell?.ex_act(1) //More lags woohoo + qdel(src) + return + if(EXPLODE_HEAVY) + if(prob(50)) + return + set_broken() + if(!cell || prob(50)) + return + if(EXPLODE_LIGHT) + if(prob(75)) + return + set_broken() + if(!cell || prob(75)) + return + if(EXPLODE_WEAK) + if(prob(80)) + return + set_broken() + if(!cell || prob(85)) + return + + cell.ex_act(severity) + + +/obj/machinery/power/apc/proc/set_broken() + //Aesthetically much better! + visible_message(span_warning("[src]'s screen flickers with warnings briefly!")) + addtimer(CALLBACK(src, PROC_REF(do_break)), rand(2, 5)) + + +/obj/machinery/power/apc/proc/do_break() + visible_message(span_danger("[src]'s screen suddenly explodes in rain of sparks and small debris!")) + machine_stat |= BROKEN + operating = FALSE + update_icon() + update() + + +//Overload all the lights in this APC area +/obj/machinery/power/apc/proc/overload_lighting() + if(!operating || shorted) + return + if(cell?.charge >= 20) + cell.use(20) + INVOKE_ASYNC(src, PROC_REF(break_lights)) + + +/obj/machinery/power/apc/proc/break_lights() + for(var/obj/machinery/light/L in get_area(src)) + L.broken() + stoplag() + + +/obj/machinery/power/apc/disconnect_terminal() + if(terminal) + terminal.master = null + terminal = null + + +/obj/machinery/power/apc/proc/toggle_breaker(mob/user) + if(machine_stat & (NOPOWER|BROKEN|MAINT)) + return + + operating = !operating + log_combat(user, src, "turned [operating ? "on" : "off"]") + update() + update_icon() + + +//------Various APCs ------// + +// mapping helpers +/obj/machinery/power/apc/drained + start_charge = 0 + +/obj/machinery/power/apc/lowcharge + start_charge = 25 + +/obj/machinery/power/apc/potato + cell_type = /obj/item/cell/potato + +/obj/machinery/power/apc/weak + cell_type = /obj/item/cell + +/obj/machinery/power/apc/high + cell_type = /obj/item/cell/high + +/obj/machinery/power/apc/super + cell_type = /obj/item/cell/super + +/obj/machinery/power/apc/hyper + cell_type = /obj/item/cell/hyper + +//------Marine ship APCs ------// + +/obj/machinery/power/apc/mainship + req_access = list(ACCESS_MARINE_ENGINEERING) + cell_type = /obj/item/cell/high + +/obj/machinery/power/apc/mainship/hardened + name = "hardened area power controller" + desc = "A control terminal for the area electrical systems. This one is hardened against sudden power fluctuations caused by electrical grid damage." + crash_break_probability = 0 diff --git a/code/modules/power/apc/apc_appearance.dm b/code/modules/power/apc/apc_appearance.dm new file mode 100644 index 0000000000000..fe95cfb680947 --- /dev/null +++ b/code/modules/power/apc/apc_appearance.dm @@ -0,0 +1,88 @@ +/obj/machinery/power/apc/update_appearance(updates=check_updates()) + icon_update_needed = FALSE + if(!updates) + return + . = ..() + // And now, separately for cleanness, the lighting changing + if(!update_state) + switch(charging) + if(APC_NOT_CHARGING) + set_light_color(LIGHT_COLOR_RED) + if(APC_CHARGING) + set_light_color(LIGHT_COLOR_BLUE) + if(APC_FULLY_CHARGED) + set_light_color(LIGHT_COLOR_GREEN) + set_light(initial(light_range)) + return + set_light(0) + +/obj/machinery/power/apc/update_icon_state() + . = ..() + + var/broken = CHECK_BITFIELD(update_state, UPSTATE_BROKE) ? "-b" : "" + var/status = (CHECK_BITFIELD(update_state, UPSTATE_WIREEXP) && !CHECK_BITFIELD(update_state, UPSTATE_OPENED1)) ? "-wires" : broken + icon_state = "apc[opened][status]" + +/obj/machinery/power/apc/update_overlays() + . = ..() + + if(opened && cell) + . += "apco-cell" + + if((machine_stat & (BROKEN|MAINT)) || update_state) + return + + . += emissive_appearance(icon, "apcox-[locked]") + . += mutable_appearance(icon, "apcox-[locked]") + . += emissive_appearance(icon, "apco3-[charging]") + . += mutable_appearance(icon, "apco3-[charging]") + + . += emissive_appearance(icon, "apco0-[operating ? equipment : 0]") + . += mutable_appearance(icon, "apco0-[operating ? equipment : 0]") + . += emissive_appearance(icon, "apco1-[operating ? lighting : 0]") + . += mutable_appearance(icon, "apco1-[operating ? lighting : 0]") + . += emissive_appearance(icon, "apco2-[operating ? environ : 0]") + . += mutable_appearance(icon, "apco2-[operating ? environ : 0]") + +/// Checks for what icon updates we will need to handle +/obj/machinery/power/apc/proc/check_updates() + SIGNAL_HANDLER + . = NONE + + // Handle icon status: + var/new_update_state = NONE + if(machine_stat & BROKEN) + new_update_state |= UPSTATE_BROKE + if(machine_stat & MAINT) + new_update_state |= UPSTATE_MAINT + + if(opened) + new_update_state |= (opened << UPSTATE_COVER_SHIFT) + + else if(CHECK_BITFIELD(machine_stat, PANEL_OPEN)) + new_update_state |= UPSTATE_WIREEXP + + if(new_update_state != update_state) + update_state = new_update_state + . |= UPDATE_ICON_STATE + + // Handle overlay status: + var/new_update_overlay = NONE + if(operating) + new_update_overlay |= UPOVERLAY_OPERATING + + if(!update_state) + if(locked) + new_update_overlay |= UPOVERLAY_LOCKED + + new_update_overlay |= (charging << UPOVERLAY_CHARGING_SHIFT) + new_update_overlay |= (equipment << UPOVERLAY_EQUIPMENT_SHIFT) + new_update_overlay |= (lighting << UPOVERLAY_LIGHTING_SHIFT) + new_update_overlay |= (environ << UPOVERLAY_ENVIRON_SHIFT) + + if(new_update_overlay != update_overlay) + update_overlay = new_update_overlay + . |= UPDATE_OVERLAYS + +/obj/machinery/power/apc/proc/queue_icon_update() + icon_update_needed = TRUE diff --git a/code/modules/power/apc/apc_attack.dm b/code/modules/power/apc/apc_attack.dm new file mode 100644 index 0000000000000..ac98cc52b74a7 --- /dev/null +++ b/code/modules/power/apc/apc_attack.dm @@ -0,0 +1,221 @@ +/obj/machinery/power/apc/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(X.status_flags & INCORPOREAL) + return FALSE + + if(effects) + X.do_attack_animation(src, ATTACK_EFFECT_CLAW) + X.visible_message(span_danger("[X] slashes \the [src]!"), \ + span_danger("We slash \the [src]!"), null, 5) + playsound(loc, "alien_claw_metal", 25, 1) + + var/allcut = wires.is_all_cut() + + if(beenhit >= pick(3, 4) && !CHECK_BITFIELD(machine_stat, PANEL_OPEN)) + ENABLE_BITFIELD(machine_stat, PANEL_OPEN) + update_appearance() + visible_message(span_danger("\The [src]'s cover swings open, exposing the wires!"), null, null, 5) + + else if(CHECK_BITFIELD(machine_stat, PANEL_OPEN) && !allcut) + wires.cut_all() + update_appearance() + visible_message(span_danger("\The [src]'s wires snap apart in a rain of sparks!"), null, null, 5) + if(X.client) + var/datum/personal_statistics/personal_statistics = GLOB.personal_statistics_list[X.ckey] + personal_statistics.apcs_slashed++ + else + beenhit += 1 + +//Attack with an item - open/close cover, insert cell, or (un)lock interface //todo please clean this up +/obj/machinery/power/apc/attackby(obj/item/I, mob/user, params) + . = ..() + + if(istype(I, /obj/item/cell) && opened) //Trying to put a cell inside + if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) + user.visible_message(span_notice("[user] fumbles around figuring out how to fit [I] into [src]."), + span_notice("You fumble around figuring out how to fit [I] into [src].")) + var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) + if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) + return + + if(cell) + balloon_alert(user, "Already installed") + return + + if(machine_stat & MAINT) + balloon_alert(user, "No connector") + return + + if(!user.transferItemToLoc(I, src)) + return + + set_cell(I) + user.visible_message("[user] inserts [I] into [src]!", + "You insert [I] into [src]!") + chargecount = 0 + update_appearance() + + else if(istype(I, /obj/item/card/id)) //Trying to unlock the interface with an ID card + if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) + user.visible_message(span_notice("[user] fumbles around figuring out where to swipe [I] on [src]."), + span_notice("You fumble around figuring out where to swipe [I] on [src].")) + var/fumbling_time = 3 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) + if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) + return + + if(opened) + balloon_alert(user, "Close the cover first") + return + + if(CHECK_BITFIELD(machine_stat, PANEL_OPEN)) + balloon_alert(user, "Close the panel first") + return + + if(machine_stat & (BROKEN|MAINT)) + balloon_alert(user, "Nothing happens") + return + + if(!allowed(user)) + balloon_alert(user, "Access denied") + return + + locked = !locked + balloon_alert_to_viewers("[locked ? "locked" : "unlocked"]") + update_appearance() + + else if(iscablecoil(I) && !terminal && opened && has_electronics != APC_ELECTRONICS_SECURED) + var/obj/item/stack/cable_coil/C = I + + if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) + balloon_alert_to_viewers("fumbles") + var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) + if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) + return + + var/turf/T = get_turf(src) + if(T.intact_tile) + balloon_alert(user, "Remove the floor plating") + return + + if(C.get_amount() < 10) + balloon_alert(user, "Not enough wires") + return + + balloon_alert_to_viewers("starts wiring [src]") + playsound(loc, 'sound/items/deconstruct.ogg', 25, 1) + + if(!do_after(user, 20, NONE, src, BUSY_ICON_BUILD) || terminal || !opened || has_electronics == APC_ELECTRONICS_SECURED) + return + + var/obj/structure/cable/N = T.get_cable_node() + if(prob(50) && electrocute_mob(user, N, N)) + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + s.set_up(5, 1, src) + s.start() + return + + if(!C.use(10)) + return + + balloon_alert_to_viewers("Wired]") + make_terminal() + terminal.connect_to_network() + + else if(istype(I, /obj/item/circuitboard/apc) && opened && has_electronics == APC_ELECTRONICS_MISSING && !(machine_stat & BROKEN)) + if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) + balloon_alert_to_viewers("fumbles") + var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) + if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) + return + + balloon_alert_to_viewers("Tries to insert APC board into [src]") + playsound(loc, 'sound/items/deconstruct.ogg', 25, 1) + + if(!do_after(user, 15, NONE, src, BUSY_ICON_BUILD)) + return + + has_electronics = APC_ELECTRONICS_INSTALLED + balloon_alert_to_viewers("Inserts APC board into [src]") + qdel(I) + + else if(istype(I, /obj/item/circuitboard/apc) && opened && has_electronics == APC_ELECTRONICS_MISSING && (machine_stat & BROKEN)) + if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) + balloon_alert_to_viewers("fumbles") + var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) + if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) + return + + balloon_alert(user, "Cannot, frame damaged") + + else if(istype(I, /obj/item/frame/apc) && opened && (machine_stat & BROKEN)) + if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) + balloon_alert_to_viewers("fumbles") + var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) + if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) + return + + if(has_electronics) + balloon_alert(user, "Cannot, electronics still inside") + return + + balloon_alert_to_viewers("Begins replacing front panel") + + if(!do_after(user, 50, NONE, src, BUSY_ICON_BUILD)) + return + + balloon_alert_to_viewers("Replaces front panel") + qdel(I) + DISABLE_BITFIELD(machine_stat, BROKEN) + if(opened == APC_COVER_REMOVED) + opened = APC_COVER_OPENED + update_appearance() + + else if(istype(I, /obj/item/frame/apc) && opened) + if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) + balloon_alert_to_viewers("fumbles") + var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) + if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) + return + + if(opened == APC_COVER_REMOVED) + opened = APC_COVER_OPENED + balloon_alert_to_viewers("Replaces [src]'s front panel") + qdel(I) + update_appearance() + + else + if(((machine_stat & BROKEN)) && !opened && I.force >= 5) + opened = APC_COVER_REMOVED + balloon_alert_to_viewers("Knocks down [src]'s panel") + update_appearance() + else + if(issilicon(user)) + return attack_hand(user) + + if(!opened && CHECK_BITFIELD(machine_stat, PANEL_OPEN) && (ismultitool(I) || iswirecutter(I))) + return attack_hand(user) + balloon_alert_to_viewers("Hits [src] with [I]") + +//Attack with hand - remove cell (if cover open) or interact with the APC +/obj/machinery/power/apc/attack_hand(mob/living/user) + . = ..() + if(.) + return + + if(opened && cell && !issilicon(user)) + if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) + balloon_alert_to_viewers("fumbles") + var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) + if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) + return + balloon_alert_to_viewers("Removes [src] from [src]") + user.put_in_hands(cell) + cell.update_appearance() + set_cell(null) + charging = APC_NOT_CHARGING + update_appearance() + return + + if(machine_stat & (BROKEN|MAINT)) + return + + interact(user) diff --git a/code/modules/power/apc/apc_tool_act.dm b/code/modules/power/apc/apc_tool_act.dm new file mode 100644 index 0000000000000..6fcf7c5677490 --- /dev/null +++ b/code/modules/power/apc/apc_tool_act.dm @@ -0,0 +1,116 @@ +/obj/machinery/power/apc/crowbar_act(mob/user, obj/item/I) + . = TRUE + if(opened) + if(has_electronics == APC_ELECTRONICS_INSTALLED) + if(terminal) + balloon_alert(user, "Disconnect the wires") + return + if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) + balloon_alert_to_viewers("Fumbles around removing cell from [src]") + var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) + if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) + return + I.play_tool_sound(src) + balloon_alert(user, "Removing APC board") + if(I.use_tool(src, user, 50)) + if(has_electronics == APC_ELECTRONICS_INSTALLED) + has_electronics = APC_ELECTRONICS_MISSING + if(machine_stat & BROKEN) + balloon_alert_to_viewers("Removes the charred control board") + return + else + balloon_alert_to_viewers("Removes the control board") + new /obj/item/circuitboard/apc(loc) + return + else if(opened != APC_COVER_REMOVED) + opened = APC_COVER_CLOSED + coverlocked = TRUE //closing cover relocks it + update_appearance() + return + else if(!(machine_stat & BROKEN)) + if(coverlocked && !(machine_stat & MAINT)) // locked... + balloon_alert(user, "Locked") + return + else if(machine_stat & PANEL_OPEN) + balloon_alert(user, "Can't, wires in way") + return + else + opened = APC_COVER_OPENED + update_appearance() + return + + +/obj/machinery/power/apc/screwdriver_act(mob/living/user, obj/item/I) + . = ..() + if(.) + return TRUE + . = TRUE + if(opened) + if(cell) + if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) + balloon_alert_to_viewers("fumbles") + var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) + if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) + return + balloon_alert_to_viewers("Removes cell") + var/turf/T = get_turf(user) + cell.forceMove(T) + cell.update_appearance() + set_cell(null) + charging = APC_NOT_CHARGING + update_appearance() + return + else + switch(has_electronics) + if(APC_ELECTRONICS_INSTALLED) + has_electronics = APC_ELECTRONICS_SECURED + machine_stat &= ~MAINT + I.play_tool_sound(src) + balloon_alert(user, "Screws circuit board in") + if(APC_ELECTRONICS_SECURED) + has_electronics = APC_ELECTRONICS_INSTALLED + machine_stat |= MAINT + I.play_tool_sound(src) + balloon_alert(user, "Unfastens electronics") + else + balloon_alert(user, "Nothing securable") + return + update_appearance() + else + TOGGLE_BITFIELD(machine_stat, PANEL_OPEN) + balloon_alert(user, "wires [CHECK_BITFIELD(machine_stat, PANEL_OPEN) ? "exposed" : "unexposed"]") + update_appearance() + + +/obj/machinery/power/apc/wirecutter_act(mob/living/user, obj/item/I) + if(terminal && opened) + terminal.deconstruct(user) + return TRUE + + +/obj/machinery/power/apc/welder_act(mob/living/user, obj/item/I) + if(!opened || has_electronics || terminal) + return + + if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) + balloon_alert_to_viewers("fumbles") + var/fumbling_time = 5 SECONDS * ( SKILL_ENGINEER_ENGI - user.skills.getRating(SKILL_ENGINEER) ) + if(!do_after(user, fumbling_time, NONE, src, BUSY_ICON_UNSKILLED)) + return + + if(!I.tool_start_check(user, amount = 3)) + return + balloon_alert_to_viewers("welds [src]") + + if(!I.use_tool(src, user, 50, volume = 50, amount = 3)) + return + + if((machine_stat & BROKEN) || opened == APC_COVER_REMOVED) + new /obj/item/stack/sheet/metal(loc) + balloon_alert_to_viewers("cuts apart [src]") + else + new /obj/item/frame/apc(loc) + balloon_alert_to_viewers("cuts [src] from the wall") + qdel(src) + return TRUE + diff --git a/code/modules/power/batteryrack.dm b/code/modules/power/batteryrack.dm index 9e5b59adea496..485fa245ebc69 100644 --- a/code/modules/power/batteryrack.dm +++ b/code/modules/power/batteryrack.dm @@ -68,19 +68,19 @@ capacity = C * 40 //Basic cells are such crap. Hyper cells needed to get on normal SMES levels. -/obj/machinery/power/smes/batteryrack/update_icon() - overlays.Cut() +/obj/machinery/power/smes/batteryrack/update_overlays() + . = ..() if(machine_stat & BROKEN) return - if (outputting) - overlays += image('icons/obj/power.dmi', "gsmes_outputting") + if(outputting) + . += image('icons/obj/power.dmi', "gsmes_outputting") if(inputting) - overlays += image('icons/obj/power.dmi', "gsmes_charging") + . += image('icons/obj/power.dmi', "gsmes_charging") var/clevel = chargedisplay() if(clevel>0) - overlays += image('icons/obj/power.dmi', "gsmes_og[clevel]") + . += image('icons/obj/power.dmi', "gsmes_og[clevel]") @@ -147,20 +147,21 @@ /obj/machinery/power/smes/batteryrack/makeshift/update_icon() - overlays.Cut() - if(machine_stat & BROKEN) return + . = ..() + if(machine_stat & BROKEN) + return - if (outputting) - overlays += image('icons/obj/power.dmi', "gsmes_outputting") + if(outputting) + . += image('icons/obj/power.dmi', "gsmes_outputting") if(inputting) - overlays += image('icons/obj/power.dmi', "gsmes_charging") - if (overcharge_percent > 100) - overlays += image('icons/obj/power.dmi', "gsmes_overcharge") + . += image('icons/obj/power.dmi', "gsmes_charging") + if(overcharge_percent > 100) + . += image('icons/obj/power.dmi', "gsmes_overcharge") else var/clevel = chargedisplay() if(clevel>0) - overlays += image('icons/obj/power.dmi', "gsmes_og[clevel]") - return + . += image('icons/obj/power.dmi', "gsmes_og[clevel]") + //This mess of if-elses and magic numbers handles what happens if the engies don't pay attention and let it eat too much charge //What happens depends on how much capacity has the ghetto smes and how much it is overcharged. diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 4d06c11d197d2..dbc463c178b70 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -124,6 +124,7 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri /////////////////////////////////// /obj/structure/cable/update_icon_state() + . = ..() if(!linked_dirs) icon_state = "l[cable_layer]-noconnection" else diff --git a/code/modules/power/fusion_engine.dm b/code/modules/power/fusion_engine.dm index 75228d4c32f2b..8f0da0661e366 100644 --- a/code/modules/power/fusion_engine.dm +++ b/code/modules/power/fusion_engine.dm @@ -318,7 +318,8 @@ else . += span_info("There is no fuel cell in the receptacle.") -/obj/machinery/power/fusion_engine/update_icon() +/obj/machinery/power/fusion_engine/update_icon_state() + . = ..() switch(buildstate) if(FUSION_ENGINE_NO_DAMAGE) if(fusion_cell?.fuel_amount > 0) @@ -383,7 +384,8 @@ fuel_amount = rand(0,100) update_icon() -/obj/item/fuel_cell/update_icon() +/obj/item/fuel_cell/update_icon_state() + . = ..() switch(get_fuel_percent()) if(-INFINITY to 0) icon_state = "cell-empty" diff --git a/code/modules/power/groundmap_geothermal.dm b/code/modules/power/groundmap_geothermal.dm index 36bae0c4a6209..3f0edef29a294 100644 --- a/code/modules/power/groundmap_geothermal.dm +++ b/code/modules/power/groundmap_geothermal.dm @@ -56,7 +56,7 @@ GLOBAL_VAR_INIT(generators_on_ground, 0) return TRUE //We don't want to cut/update the power overlays every single proc. Just when it actually changes. This should save on CPU cycles. Efficiency! -/obj/machinery/power/geothermal/update_icon() +/obj/machinery/power/geothermal/update_icon_state() . = ..() switch(buildstate) if(GEOTHERMAL_NO_DAMAGE) @@ -84,6 +84,19 @@ GLOBAL_VAR_INIT(generators_on_ground, 0) icon_state = "wrench" desc = "A thermoelectric generator sitting atop a plasma-filled borehole. This one is lightly damaged. Use a wrench to repair it." +/obj/machinery/power/geothermal/update_desc(updates) + . = ..() + switch(buildstate) + if(GEOTHERMAL_NO_DAMAGE) + if(!is_on) + desc = "A thermoelectric generator sitting atop a borehole dug deep in the planet's surface. It generates energy by boiling the plasma steam that rises from the well.\nIt is old technology and has a large failure rate, and must be repaired frequently.\nIt is currently turned off and silent." + if(GEOTHERMAL_HEAVY_DAMAGE) + desc = "A thermoelectric generator sitting atop a plasma-filled borehole. This one is heavily damaged. Use a blowtorch, wirecutters, and then a wrench to repair it." + if(GEOTHERMAL_MEDIUM_DAMAGE) + desc = "A thermoelectric generator sitting atop a plasma-filled borehole. This one is damaged. Use wirecutters and then a wrench to repair it." + if(GEOTHERMAL_LIGHT_DAMAGE) + desc = "A thermoelectric generator sitting atop a plasma-filled borehole. This one is lightly damaged. Use a wrench to repair it." + /obj/machinery/power/geothermal/update_overlays() . = ..() if(corrupted) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 1130171274dc7..6a3f47bccade4 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -250,7 +250,8 @@ return TRUE return FALSE -/obj/machinery/light/update_icon() +/obj/machinery/light/update_icon_state() + . = ..() switch(status) // set icon_states if(LIGHT_OK) icon_state = "[base_state][light_on]" diff --git a/code/modules/power/pipecleaners.dm b/code/modules/power/pipecleaners.dm index 15f2790b81782..9a55a43d286b1 100644 --- a/code/modules/power/pipecleaners.dm +++ b/code/modules/power/pipecleaners.dm @@ -120,10 +120,14 @@ By design, d1 is the smallest direction and d2 is the highest // General procedures /////////////////////////////////// -/obj/structure/pipe_cleaner/update_icon() +/obj/structure/pipe_cleaner/update_icon_state() + . = ..() icon_state = "[d1]-[d2]" + +/obj/structure/pipe_cleaner/update_icon() color = null add_atom_colour(pipe_cleaner_color, FIXED_COLOUR_PRIORITY) + return ..() // Items usable on a pipe_cleaner : // - Wirecutters : cut it duh ! @@ -206,11 +210,18 @@ By design, d1 is the smallest direction and d2 is the highest /////////////////////////////////// -/obj/item/stack/pipe_cleaner_coil/update_icon() +/obj/item/stack/pipe_cleaner_coil/update_icon_state() + . = ..() icon_state = "[initial(item_state)][amount < 3 ? amount : ""]" + +/obj/item/stack/pipe_cleaner_coil/update_name(updates) + . = ..() name = "pipe cleaner [amount < 3 ? "piece" : "coil"]" + +/obj/item/stack/pipe_cleaner_coil/update_icon() color = null add_atom_colour(pipe_cleaner_color, FIXED_COLOUR_PRIORITY) + return ..() /obj/item/stack/pipe_cleaner_coil/attack_hand(mob/user) . = ..() diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 598cd7880ea1b..0bc09f9a1c9c4 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -70,6 +70,7 @@ soundloop.start() /obj/machinery/power/port_gen/update_icon_state() + . = ..() icon_state = "[base_icon]" /obj/machinery/power/port_gen/process() diff --git a/code/modules/power/power_monitor.dm b/code/modules/power/power_monitor.dm index 1c2875e9f34dc..41dd8c3ddc60c 100644 --- a/code/modules/power/power_monitor.dm +++ b/code/modules/power/power_monitor.dm @@ -87,6 +87,7 @@ set_light(initial(light_range)) /obj/machinery/power/monitor/update_icon_state() + . = ..() if(machine_stat & (BROKEN|DISABLED)) icon_state = "[initial(icon_state)]_broken" else diff --git a/code/modules/power/smes_construction.dm b/code/modules/power/smes_construction.dm index c9bd9c432140b..a8c3587eb3b67 100644 --- a/code/modules/power/smes_construction.dm +++ b/code/modules/power/smes_construction.dm @@ -168,12 +168,10 @@ A.set_broken() // Failing SMES has special icon overlay. -/obj/machinery/power/smes/buildable/update_icon() - if (failing) - overlays.Cut() - overlays += image('icons/obj/power.dmi', "smes_crit") - else - ..() +/obj/machinery/power/smes/buildable/update_overlays() + . = ..() + if(failing) + . += image('icons/obj/power.dmi', "smes_crit") /obj/machinery/power/smes/buildable/attackby(obj/item/I, mob/user, params) // No more disassembling of overloaded SMESs. You broke it, now enjoy the consequences. diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 744d5fe39ff22..16626891e759c 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -53,6 +53,7 @@ update_icon() /obj/item/ammo_magazine/update_icon_state() + . = ..() if(CHECK_BITFIELD(flags_magazine, MAGAZINE_HANDFUL)) setDir(current_rounds + round(current_rounds/3)) return @@ -328,10 +329,16 @@ Turn() or Shift() as there is virtually no overhead. ~N pixel_y = rand(-2, 2) icon_state = initial_icon_state += "[rand(1, number_of_states)]" //Set the icon to it. -//This does most of the heavy lifting. It updates the icon and name if needed, then changes .dir to simulate new casings. -/obj/item/ammo_casing/update_icon() +//This does most of the heavy lifting. It updates the icon and name if needed + +/obj/item/ammo_casing/update_name(updates) + . = ..() + if(max_casings >= current_casings && current_casings == 2) + name += "s" //In case there is more than one. + +/obj/item/ammo_casing/update_icon_state() + . = ..() if(max_casings >= current_casings) - if(current_casings == 2) name += "s" //In case there is more than one. if(round((current_casings-1)/8) > current_icon) current_icon++ icon_state += "_[current_icon]" @@ -339,9 +346,24 @@ Turn() or Shift() as there is virtually no overhead. ~N var/base_direction = current_casings - (current_icon * 8) setDir(base_direction + round(base_direction)/3) switch(current_casings) - if(3 to 5) w_class = WEIGHT_CLASS_SMALL //Slightly heavier. - if(9 to 10) w_class = WEIGHT_CLASS_NORMAL //Can't put it in your pockets and stuff. + if(3 to 5) + w_class = WEIGHT_CLASS_SMALL //Slightly heavier. + if(9 to 10) + w_class = WEIGHT_CLASS_NORMAL //Can't put it in your pockets and stuff. + +///changes .dir to simulate new casings, also sets the new w_class +/obj/item/ammo_casing/proc/update_dir() + var/base_direction = current_casings - (current_icon * 8) + setDir(base_direction + round(base_direction)/3) + switch(current_casings) + if(3 to 5) + w_class = WEIGHT_CLASS_SMALL //Slightly heavier. + if(9 to 10) + w_class = WEIGHT_CLASS_NORMAL //Can't put it in your pockets and stuff. +/obj/item/ammo_casing/update_icon() + update_dir() + return ..() //Making child objects so that locate() and istype() doesn't screw up. /obj/item/ammo_casing/bullet @@ -375,6 +397,7 @@ Turn() or Shift() as there is virtually no overhead. ~N var/caliber = CALIBER_10X24_CASELESS /obj/item/big_ammo_box/update_icon_state() + . = ..() if(bullet_amount) icon_state = base_icon_state return @@ -413,7 +436,7 @@ Turn() or Shift() as there is virtually no overhead. ~N var/S = min(bullet_amount, AM.max_rounds - AM.current_rounds) AM.current_rounds += S bullet_amount -= S - AM.update_icon(S) + AM.update_icon() update_icon() if(AM.current_rounds == AM.max_rounds) to_chat(user, span_notice("You refill [AM].")) @@ -465,7 +488,8 @@ Turn() or Shift() as there is virtually no overhead. ~N var/caliber = CALIBER_12G -/obj/item/shotgunbox/update_icon() +/obj/item/shotgunbox/update_icon_state() + . = ..() if(!deployed) icon_state = "[initial(icon_state)]" else if(current_rounds > 0) diff --git a/code/modules/projectiles/gun_attachables.dm b/code/modules/projectiles/gun_attachables.dm index 88714bd33179c..82ad53043130e 100644 --- a/code/modules/projectiles/gun_attachables.dm +++ b/code/modules/projectiles/gun_attachables.dm @@ -1571,7 +1571,7 @@ inaccurate. Don't worry if force is ever negative, it won't runtime. continue QDEL_NULL(action_to_delete) break - update_icon(user) + update_icon() master_gun.base_gun_icon = initial(master_gun.icon_state) master_gun.update_icon() UnregisterSignal(detaching_item, list(COMSIG_ITEM_EQUIPPED, COMSIG_ATOM_ATTACK_HAND_ALTERNATE, COMSIG_ATOM_ATTACKBY_ALTERNATE)) @@ -1756,7 +1756,7 @@ inaccurate. Don't worry if force is ever negative, it won't runtime. activate(user) new_action.set_toggle(TRUE) new_action.update_button_icon() - update_icon(user) + update_icon() RegisterSignal(master_gun, COMSIG_ITEM_REMOVED_INVENTORY, TYPE_PROC_REF(/obj/item/weapon/gun, drop_connected_mag)) ///This is called when an attachment gun (src) detaches from a gun. @@ -1775,7 +1775,7 @@ inaccurate. Don't worry if force is ever negative, it won't runtime. UnregisterSignal(master_gun, COMSIG_ITEM_REMOVED_INVENTORY) master_gun = null attached_to:gunattachment = null - update_icon(user) + update_icon() ///This activates the weapon for use. /obj/item/weapon/gun/proc/activate(mob/user) diff --git a/code/modules/projectiles/gun_system.dm b/code/modules/projectiles/gun_system.dm index 7d2273db8d77f..9c052b5f0a363 100644 --- a/code/modules/projectiles/gun_system.dm +++ b/code/modules/projectiles/gun_system.dm @@ -510,7 +510,7 @@ SIGNAL_HANDLER set_gun_user(null) -/obj/item/weapon/gun/update_icon(mob/user) +/obj/item/weapon/gun/update_icon() . = ..() for(var/datum/action/action AS in actions) @@ -1486,7 +1486,7 @@ num_of_casings-- if(num_of_casings) casing.current_casings += num_of_casings - casing.update_icon() + casing.update_appearance() playsound(current_turf, sound_to_play, 25, 1, 5) diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index ab9aab2abcfd9..516bf9b29543a 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -1055,12 +1055,12 @@ light_power = 0.1 light_color = LIGHT_COLOR_ORANGE -/obj/item/weapon/gun/energy/lasgun/lasrifle/volkite/update_icon(mob/user) +/obj/item/weapon/gun/energy/lasgun/lasrifle/volkite/update_icon() . = ..() if(rounds) - turn_light(user, TRUE) + turn_light(null, TRUE) else - turn_light(user, FALSE) + turn_light(null, FALSE) /obj/item/weapon/gun/energy/lasgun/lasrifle/volkite/turn_light(mob/user, toggle_on) . = ..() diff --git a/code/modules/projectiles/guns/flamer.dm b/code/modules/projectiles/guns/flamer.dm index 0744be5f23180..12ea0cbcb054b 100644 --- a/code/modules/projectiles/guns/flamer.dm +++ b/code/modules/projectiles/guns/flamer.dm @@ -465,7 +465,8 @@ /turf/open/floor/plating/ground/snow/ignite(fire_lvl, burn_lvl, f_color, fire_stacks = 0, fire_damage = 0) if(slayer > 0) slayer -= 1 - update_icon(1, 0) + update_appearance() + update_sides() return ..() diff --git a/code/modules/projectiles/guns/sentries.dm b/code/modules/projectiles/guns/sentries.dm index 03489ffd340f9..6e89e632bffb8 100644 --- a/code/modules/projectiles/guns/sentries.dm +++ b/code/modules/projectiles/guns/sentries.dm @@ -182,7 +182,7 @@ deployed_machine.max_integrity = max_integrity //Syncs new machine or structure integrity with that of the item. deployed_machine.obj_integrity = obj_integrity - deployed_machine.update_icon_state() + deployed_machine.update_appearance() forceMove(deployed_machine) //Moves the Item into the machine or structure diff --git a/code/modules/projectiles/guns/specialist.dm b/code/modules/projectiles/guns/specialist.dm index 670bf145e008e..254051c985ab0 100644 --- a/code/modules/projectiles/guns/specialist.dm +++ b/code/modules/projectiles/guns/specialist.dm @@ -880,6 +880,7 @@ Note that this means that snipers will have a slowdown of 3, due to the scope update_icon() /obj/item/weapon/gun/launcher/rocket/oneuse/update_icon_state() + . = ..() if(extended) icon_state = "[base_gun_icon]_extended" else diff --git a/code/modules/projectiles/magazines/flamer.dm b/code/modules/projectiles/magazines/flamer.dm index 5da294ba2a55b..824ad515f5a9c 100644 --- a/code/modules/projectiles/magazines/flamer.dm +++ b/code/modules/projectiles/magazines/flamer.dm @@ -54,9 +54,6 @@ to_chat(user, span_notice("You refill [src] with [lowertext(caliber)].")) update_icon() -/obj/item/ammo_magazine/flamer_tank/update_icon() - return - /obj/item/ammo_magazine/flamer_tank/large // Extra thicc tank name = "large flamerthrower tank" desc = "A large fuel tank of ultra thick napthal, a sticky combustable liquid chemical, for use in the FL-84 flamethrower." diff --git a/code/modules/projectiles/magazines/specialist.dm b/code/modules/projectiles/magazines/specialist.dm index cdb166a335417..111e3a196f8ed 100644 --- a/code/modules/projectiles/magazines/specialist.dm +++ b/code/modules/projectiles/magazines/specialist.dm @@ -108,12 +108,22 @@ user.drop_held_item() qdel(src) -/obj/item/ammo_magazine/rocket/update_icon() - overlays.Cut() +/obj/item/ammo_magazine/rocket/update_name(updates) + . = ..() if(current_rounds > 0) return name = "empty rocket frame" + +/obj/item/ammo_magazine/rocket/update_desc(updates) + . = ..() + if(current_rounds > 0) + return desc = "A spent rocket rube. Activate it to deconstruct it and receive some materials." + +/obj/item/ammo_magazine/rocket/update_icon_state() + . = ..() + if(current_rounds > 0) + return icon_state = istype(src, /obj/item/ammo_magazine/rocket/m57a4) ? "quad_rocket_e" : "rocket_e" //------------------------------------------------------- diff --git a/code/modules/projectiles/mounted.dm b/code/modules/projectiles/mounted.dm index f8c2c7991b6e3..49e52959dbe1c 100644 --- a/code/modules/projectiles/mounted.dm +++ b/code/modules/projectiles/mounted.dm @@ -18,7 +18,7 @@ var/has_anchored_sprite = FALSE ///generates the icon based on how much ammo it has. -/obj/machinery/deployable/mounted/update_icon_state(mob/user) +/obj/machinery/deployable/mounted/update_icon_state() . = ..() var/obj/item/weapon/gun/gun = get_internal_item() if(gun && (!length(gun.chamber_items) || !gun.chamber_items[gun.current_chamber_position])) @@ -97,10 +97,10 @@ var/obj/item/weapon/gun/gun = get_internal_item() if(length(gun?.chamber_items)) gun.unload(user) - update_icon_state() + update_appearance() gun?.reload(ammo_magazine, user) - update_icon_state() + update_appearance() REMOVE_TRAIT(src, TRAIT_GUN_RELOADING, GUN_TRAIT) @@ -243,7 +243,7 @@ return FALSE operator.setDir(dir) gun?.set_target(target) - update_icon_state() + update_appearance() return TRUE if(CHECK_BITFIELD(gun?.flags_item, DEPLOYED_NO_ROTATE)) to_chat(operator, "This one is anchored in place and cannot be rotated.") diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 90c32478a7730..21894b65935c1 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -1215,9 +1215,6 @@ So if we are on the 32th absolute pixel coordinate we are on tile 1, but if we a if(damage < 1) return FALSE - if(proj.ammo.flags_ammo_behavior & AMMO_BALLISTIC) - current_bulletholes++ - if(prob(30)) visible_message(span_warning("[src] is damaged by [proj]!"), visible_message_flags = COMBAT_MESSAGE) take_damage(damage) diff --git a/code/modules/projectiles/sentries.dm b/code/modules/projectiles/sentries.dm index f70b258ebf8a6..c0102411a309e 100644 --- a/code/modules/projectiles/sentries.dm +++ b/code/modules/projectiles/sentries.dm @@ -572,4 +572,4 @@ internal_item = null QDEL_NULL(src) - attached_item.update_icon_state() + attached_item.update_appearance() diff --git a/code/modules/reagents/machinery/chem_dispenser.dm b/code/modules/reagents/machinery/chem_dispenser.dm index f03251361439b..612624fb1e424 100644 --- a/code/modules/reagents/machinery/chem_dispenser.dm +++ b/code/modules/reagents/machinery/chem_dispenser.dm @@ -397,6 +397,7 @@ . += image(icon, "[initial(icon_state)]_nobat") /obj/machinery/chem_dispenser/update_icon_state() + . = ..() if(machine_stat & NOPOWER) icon_state = "dispenser_nopower" return @@ -459,6 +460,7 @@ /obj/machinery/chem_dispenser/soda/update_icon_state() return + /obj/machinery/chem_dispenser/beer icon_state = "booze_dispenser" name = "booze dispenser" diff --git a/code/modules/reagents/machinery/chem_master.dm b/code/modules/reagents/machinery/chem_master.dm index 720a925c0ebf3..60a41cb43db8f 100644 --- a/code/modules/reagents/machinery/chem_master.dm +++ b/code/modules/reagents/machinery/chem_master.dm @@ -408,7 +408,8 @@ popup.set_content(dat) popup.open() -/obj/machinery/chem_master/update_icon() +/obj/machinery/chem_master/update_icon_state() + . = ..() if(machine_stat & BROKEN) icon_state = (beaker?"mixer1_b":"mixer0_b") else if(machine_stat & NOPOWER) diff --git a/code/modules/reagents/machinery/reagentgrinder.dm b/code/modules/reagents/machinery/reagentgrinder.dm index 8127b8113fb6c..be489a365bf9e 100644 --- a/code/modules/reagents/machinery/reagentgrinder.dm +++ b/code/modules/reagents/machinery/reagentgrinder.dm @@ -66,6 +66,7 @@ /obj/machinery/reagentgrinder/update_icon_state() + . = ..() icon_state = "juicer"+num2text(!isnull(beaker)) diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index aa3561200a860..8dacbdb9675fe 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -119,6 +119,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) update() /obj/machinery/conveyor/update_icon_state() + . = ..() if(machine_stat & BROKEN) icon_state = "conveyor-broken" else @@ -285,6 +286,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) // update the icon depending on the position /obj/machinery/conveyor_switch/update_icon_state() + . = ..() if(position<0) if(invert_icon) icon_state = "switch-fwd" diff --git a/code/modules/recycling/recycler.dm b/code/modules/recycling/recycler.dm index d0430626397ca..551b82d21eeef 100644 --- a/code/modules/recycling/recycler.dm +++ b/code/modules/recycling/recycler.dm @@ -9,7 +9,8 @@ //Pointing west because that's the only sprite we got dir = NORTH -/obj/machinery/recycler/update_icon() +/obj/machinery/recycler/update_icon_state() + . = ..() icon_state = "grinder-o[(machine_stat & (BROKEN|NOPOWER)) ? "0":"1"]" /obj/machinery/recycler/Bumped(atom/movable/AM) diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 88e1c34f49bc4..292fefaf47538 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -24,8 +24,8 @@ GLOBAL_LIST_EMPTY(tagger_locations) qdel(src) return -/obj/structure/bigDelivery/update_icon() - overlays = new() +/obj/structure/bigDelivery/update_overlays() + . = ..() if(nameset || examtext) var/image/I = new/image('icons/obj/items/storage/storage.dmi',"delivery_label") if(icon_state == "deliverycloset") @@ -38,7 +38,7 @@ GLOBAL_LIST_EMPTY(tagger_locations) label_x = rand(-8, 6) I.pixel_x = label_x I.pixel_y = -3 - overlays += I + . += I if(src.sortTag) var/image/I = new/image('icons/obj/items/storage/storage.dmi',"delivery_tag") if(icon_state == "deliverycloset") @@ -51,7 +51,7 @@ GLOBAL_LIST_EMPTY(tagger_locations) tag_x = rand(-8, 6) I.pixel_x = tag_x I.pixel_y = -3 - overlays += I + . += I /obj/structure/bigDelivery/examine(mob/user) ..() @@ -139,13 +139,13 @@ GLOBAL_LIST_EMPTY(tagger_locations) qdel(src) return -/obj/item/smallDelivery/update_icon() - overlays = new() +/obj/item/smallDelivery/update_overlays() + . = ..() if((nameset || examtext) && icon_state != "deliverycrate1") var/image/I = new/image('icons/obj/items/storage/storage.dmi',"delivery_label") if(icon_state == "deliverycrate5") I.pixel_y = -1 - overlays += I + . += I if(src.sortTag) var/image/I = new/image('icons/obj/items/storage/storage.dmi',"delivery_tag") switch(icon_state) @@ -162,7 +162,7 @@ GLOBAL_LIST_EMPTY(tagger_locations) I.pixel_y = 3 if("deliverycrate5") I.pixel_y = -3 - overlays += I + . += I /obj/item/smallDelivery/examine(mob/user) ..() diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm index 438ef05dab523..8601ec98aafba 100644 --- a/code/modules/security_levels/keycard_authentication.dm +++ b/code/modules/security_levels/keycard_authentication.dm @@ -42,7 +42,8 @@ event_triggered_by = user broadcast_request() //This is the device making the initial event request. It needs to broadcast to other devices -/obj/machinery/keycard_auth/update_icon() +/obj/machinery/keycard_auth/update_icon_state() + . = ..() if(machine_stat &NOPOWER) icon_state = "auth_off" diff --git a/code/modules/vehicles/cargo_train.dm b/code/modules/vehicles/cargo_train.dm index 4997d33549848..983eb1e945eab 100644 --- a/code/modules/vehicles/cargo_train.dm +++ b/code/modules/vehicles/cargo_train.dm @@ -65,7 +65,8 @@ verbs += /obj/vehicle/train/cargo/engine/verb/remove_key -/obj/vehicle/train/cargo/update_icon() +/obj/vehicle/train/cargo/update_icon_state() + . = ..() if(open) icon_state = initial(icon_state) + "_open" else diff --git a/code/modules/vehicles/mecha/mecha_actions.dm b/code/modules/vehicles/mecha/mecha_actions.dm index 8b791b96f0d8c..20cb8ee9b6991 100644 --- a/code/modules/vehicles/mecha/mecha_actions.dm +++ b/code/modules/vehicles/mecha/mecha_actions.dm @@ -147,4 +147,4 @@ chassis.balloon_alert(owner, "controlling pilot seat") chassis.remove_control_flags(owner, VEHICLE_CONTROL_MELEE|VEHICLE_CONTROL_EQUIPMENT) chassis.add_control_flags(owner, VEHICLE_CONTROL_DRIVE|VEHICLE_CONTROL_SETTINGS) - chassis.update_icon_state() + chassis.update_appearance() diff --git a/code/modules/vehicles/multitile/cm_armored.dm b/code/modules/vehicles/multitile/cm_armored.dm index ded3f67384960..0a6b66fa62cad 100644 --- a/code/modules/vehicles/multitile/cm_armored.dm +++ b/code/modules/vehicles/multitile/cm_armored.dm @@ -225,10 +225,8 @@ GLOBAL_LIST_INIT(armorvic_dmg_distributions, list( //Since the vics are 3x4 we need to swap between the two files with different dimensions //Also need to offset to center the tank about the root object -/obj/vehicle/multitile/root/cm_armored/update_icon() - - overlays.Cut() - +/obj/vehicle/multitile/root/cm_armored/update_icon_state() + . = ..() //Assuming 3x3 with half block overlaps in the tank's direction if(dir in list(NORTH, SOUTH)) pixel_x = -32 @@ -240,17 +238,20 @@ GLOBAL_LIST_INIT(armorvic_dmg_distributions, list( pixel_y = -32 icon = 'icons/obj/vehicles/tank_EW.dmi' +/obj/vehicle/multitile/root/cm_armored/update_overlays() + . = ..() + //Basic iteration that snags the overlay from the hardpoint module object for(var/i in hardpoints) var/obj/item/hardpoint/H = hardpoints[i] if((i == HDPT_TREADS && !H) || (H && !H.obj_integrity)) //Treads not installed or broken var/image/I = image(icon, icon_state = "damaged_hardpt_[i]") - overlays += I + . += I if(H) var/image/I = H.get_icon_image(0, 0, dir) - overlays += I + . += I //Hitboxes but with new names /obj/vehicle/multitile/hitbox/cm_armored diff --git a/code/modules/vehicles/multitile/hardpoints.dm b/code/modules/vehicles/multitile/hardpoints.dm index a238093cc6d4c..82df22284f39c 100644 --- a/code/modules/vehicles/multitile/hardpoints.dm +++ b/code/modules/vehicles/multitile/hardpoints.dm @@ -920,7 +920,8 @@ Currently only has the tank hardpoints max_rounds = 4 point_cost = 50 -/obj/item/ammo_magazine/tank/ltb_cannon/update_icon() +/obj/item/ammo_magazine/tank/ltb_cannon/update_icon_state() + . = ..() icon_state = "ltbcannon_[current_rounds]" @@ -969,7 +970,8 @@ Currently only has the tank hardpoints point_cost = 25 -/obj/item/ammo_magazine/tank/tank_glauncher/update_icon() +/obj/item/ammo_magazine/tank/tank_glauncher/update_icon_state() + . = ..() if(current_rounds >= max_rounds) icon_state = "glauncher_2" else if(current_rounds <= 0) @@ -988,7 +990,8 @@ Currently only has the tank hardpoints max_rounds = 6 point_cost = 5 -/obj/item/ammo_magazine/tank/tank_slauncher/update_icon() +/obj/item/ammo_magazine/tank/tank_slauncher/update_icon_state() + . = ..() icon_state = "slauncher_[current_rounds <= 0 ? "0" : "1"]" /////////////// diff --git a/code/modules/vehicles/multitile/tankvendor.dm b/code/modules/vehicles/multitile/tankvendor.dm index 2aee8558ff5ba..4b86e08154c1a 100644 --- a/code/modules/vehicles/multitile/tankvendor.dm +++ b/code/modules/vehicles/multitile/tankvendor.dm @@ -25,7 +25,8 @@ update_icon() updateUsrDialog() -/obj/machinery/tank_part_fabricator/update_icon() +/obj/machinery/tank_part_fabricator/update_icon_state() + . = ..() if(machine_stat & NOPOWER) icon_state = "drone_fab_nopower" return diff --git a/code/modules/vehicles/powerloader.dm b/code/modules/vehicles/powerloader.dm index a5bb786c0cb59..41775a6ae577e 100644 --- a/code/modules/vehicles/powerloader.dm +++ b/code/modules/vehicles/powerloader.dm @@ -176,7 +176,8 @@ return target.attack_powerloader(user, src) -/obj/item/powerloader_clamp/update_icon() +/obj/item/powerloader_clamp/update_icon_state() + . = ..() if(loaded) icon_state = "loader_clamp_full" else diff --git a/code/modules/xenomorph/xeno_structures.dm b/code/modules/xenomorph/xeno_structures.dm index 2a1421f3cc450..e06adc875fcaa 100644 --- a/code/modules/xenomorph/xeno_structures.dm +++ b/code/modules/xenomorph/xeno_structures.dm @@ -103,6 +103,7 @@ take_damage(50, BRUTE, BOMB) /obj/structure/xeno/trap/update_icon_state() + . = ..() switch(trap_type) if(TRAP_HUGGER) icon_state = "traphugger" @@ -1259,6 +1260,7 @@ TUNNEL update_icon() /obj/structure/xeno/pherotower/update_icon_state() + . = ..() switch(current_aura.aura_types[1]) if(AURA_XENO_RECOVERY) icon_state = "recoverytower" diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi index 333934ded88f0dde0e5a417aa84089a421c0b3aa..3cf67f88921661585a6913a792a917b0c5df0794 100644 GIT binary patch literal 33701 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 literal 33722 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
d&z-fH%0 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 Sc6i_}&`TL5=`ty!p#KX$Op5gY diff --git a/icons/obj/items/weapons.dmi b/icons/obj/items/weapons.dmi index 5e8f6b63d92e7fc7acbd0c7ccca49ba4f3760e20..89e8f104822c44322531886b014939251b7c7357 100644 GIT binary patch literal 46371 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

C1c@4aRf>;M7p9l_qax4 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 diff --git a/icons/turf/snow2.dmi b/icons/turf/snow2.dmi index 24f6fc5b0bdb6d71c5f576c53f13725874d547ad..501434e063093dbbe97beeb2a63281c39cc3f956 100644 GIT binary patch literal 18255 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 r+<#JU$w Date: Fri, 12 Jan 2024 03:54:05 +0000 Subject: [PATCH 64/82] Automatic changelog for PR #14767 [ci skip] --- html/changelogs/AutoChangeLog-pr-14767.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14767.yml diff --git a/html/changelogs/AutoChangeLog-pr-14767.yml b/html/changelogs/AutoChangeLog-pr-14767.yml new file mode 100644 index 0000000000000..3a5f6e917be8f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14767.yml @@ -0,0 +1,5 @@ +author: "ivanmixo" +delete-after: True +changes: + - code_imp: "Ported update_appearance, alternative_appearance and ssvisoverlays" + - refactor: "Refactored almost every instance of update_icon, update_icon_state and update_overlays" \ No newline at end of file From 0eb51489a365fde2d6fd7f385b0f0532432e59d3 Mon Sep 17 00:00:00 2001 From: Barnet Date: Fri, 12 Jan 2024 07:55:42 -0800 Subject: [PATCH 65/82] Research Outpost is no longer votable if the gamemode is Nuclear War. (#14797) --- code/__DEFINES/__game.dm | 3 +++ code/datums/gamemodes/_game_mode.dm | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/__game.dm b/code/__DEFINES/__game.dm index 8d928b434bcb1..0258676febbc0 100644 --- a/code/__DEFINES/__game.dm +++ b/code/__DEFINES/__game.dm @@ -14,6 +14,9 @@ #define MAP_GELIDA_IV "Gelida IV" #define MAP_DELTA_STATION "Delta Station" #define MAP_OSCAR_OUTPOST "Oscar Outpost" +#define MAP_DESPARITY "Desparity" +#define MAP_LAWANKA_OUTPOST "Lawanka Outpost" +#define MAP_DAEDALUS_PRISON "Daedalus Prison" #define MAP_PILLAR_OF_SPRING "Pillar of Spring" #define MAP_SULACO "Sulaco" diff --git a/code/datums/gamemodes/_game_mode.dm b/code/datums/gamemodes/_game_mode.dm index 414cb32c32ac5..1ba72838258a0 100644 --- a/code/datums/gamemodes/_game_mode.dm +++ b/code/datums/gamemodes/_game_mode.dm @@ -61,7 +61,7 @@ GLOBAL_VAR(common_report) //Contains common part of roundend report ///If the gamemode has a whitelist of valid ground maps. Whitelist overrides the blacklist var/list/whitelist_ground_maps ///If the gamemode has a blacklist of disallowed ground maps - var/list/blacklist_ground_maps = list(MAP_DELTA_STATION, MAP_PRISON_STATION, MAP_LV_624, MAP_WHISKEY_OUTPOST, MAP_OSCAR_OUTPOST, MAP_FORT_PHOBOS) + var/list/blacklist_ground_maps = list(MAP_DELTA_STATION, MAP_RESEARCH_OUTPOST, MAP_PRISON_STATION, MAP_LV_624, MAP_WHISKEY_OUTPOST, MAP_OSCAR_OUTPOST, MAP_FORT_PHOBOS) ///if fun tads are enabled by default var/enable_fun_tads = FALSE From 1f5662649b9e876fc3a4976866a3307256608eea Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 12 Jan 2024 15:56:03 +0000 Subject: [PATCH 66/82] Automatic changelog for PR #14797 [ci skip] --- html/changelogs/AutoChangeLog-pr-14797.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14797.yml diff --git a/html/changelogs/AutoChangeLog-pr-14797.yml b/html/changelogs/AutoChangeLog-pr-14797.yml new file mode 100644 index 0000000000000..b7ffaf0d809ae --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14797.yml @@ -0,0 +1,4 @@ +author: "Barnet2" +delete-after: True +changes: + - rscdel: "Research Outpost is no longer votable when Nuclear War is selected." \ No newline at end of file From bcd5424e9a0a6cb90f9bbc64b85a9402e4e69468 Mon Sep 17 00:00:00 2001 From: TiviPlus <57223640+TiviPlus@users.noreply.github.com> Date: Fri, 12 Jan 2024 21:03:16 +0100 Subject: [PATCH 67/82] Removes trange() (#14803) Co-authored-by: TiviPlus <572233640+TiviPlus@users.noreply.com> --- code/__HELPERS/game.dm | 8 -------- 1 file changed, 8 deletions(-) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index d29ff6dfdab30..6387ca4f6e1f1 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -41,14 +41,6 @@ return ERROR_NO_SUPPORT return NO_ERROR -/proc/trange(rad = 0, turf/centre = null) //alternative to range (ONLY processes turfs and thus less intensive) - if(!centre) - return - - var/turf/x1y1 = locate(((centre.x - rad) < 1 ? 1 : centre.x - rad), ((centre.y-rad) < 1 ? 1 : centre.y - rad), centre.z) - var/turf/x2y2 = locate(((centre.x + rad) > world.maxx ? world.maxx : centre.x + rad), ((centre.y + rad) > world.maxy ? world.maxy : centre.y + rad), centre.z) - return block(x1y1, x2y2) - // Same as above but for alien candidates. /proc/get_alien_candidate() var/mob/dead/observer/picked From 4fb088f4da0f31eaf22a0cea3528bfa6f70194e5 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 13 Jan 2024 00:52:36 +0000 Subject: [PATCH 68/82] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-14767.yml | 5 ----- html/changelogs/AutoChangeLog-pr-14797.yml | 4 ---- html/changelogs/archive/2024-01.yml | 7 +++++++ 3 files changed, 7 insertions(+), 9 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-14767.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14797.yml diff --git a/html/changelogs/AutoChangeLog-pr-14767.yml b/html/changelogs/AutoChangeLog-pr-14767.yml deleted file mode 100644 index 3a5f6e917be8f..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14767.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "ivanmixo" -delete-after: True -changes: - - code_imp: "Ported update_appearance, alternative_appearance and ssvisoverlays" - - refactor: "Refactored almost every instance of update_icon, update_icon_state and update_overlays" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14797.yml b/html/changelogs/AutoChangeLog-pr-14797.yml deleted file mode 100644 index b7ffaf0d809ae..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14797.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Barnet2" -delete-after: True -changes: - - rscdel: "Research Outpost is no longer votable when Nuclear War is selected." \ No newline at end of file diff --git a/html/changelogs/archive/2024-01.yml b/html/changelogs/archive/2024-01.yml index 2f7613bfb46ce..056229d5c763b 100644 --- a/html/changelogs/archive/2024-01.yml +++ b/html/changelogs/archive/2024-01.yml @@ -118,3 +118,10 @@ - rscadd: 'New Gorger primordial: Oppose. Staggers and slows nearby marines while healing nearby xenomorphs, at a cost. Replaces current primordial ability, Rejuvenate' - rscdel: Rejuvenate +2024-01-13: + Barnet2: + - rscdel: Research Outpost is no longer votable when Nuclear War is selected. + ivanmixo: + - code_imp: Ported update_appearance, alternative_appearance and ssvisoverlays + - refactor: Refactored almost every instance of update_icon, update_icon_state and + update_overlays From 12e81c0fd008914d7eef160bdc63d55f4b00b700 Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Sat, 13 Jan 2024 01:49:05 -0800 Subject: [PATCH 69/82] Update byond version for ci; remove max compile version warnings. (#14801) --- code/__byond_version_compat.dm | 7 ------- code/controllers/globals.dm | 3 --- dependencies.sh | 2 +- 3 files changed, 1 insertion(+), 11 deletions(-) diff --git a/code/__byond_version_compat.dm b/code/__byond_version_compat.dm index 445bfee77327e..753b8fe4b47ec 100644 --- a/code/__byond_version_compat.dm +++ b/code/__byond_version_compat.dm @@ -9,13 +9,6 @@ #endif #endif -//Update this whenever the byond version is stable so people stop updating to hilariously broken versions -#define MAX_COMPILER_VERSION 515 -#define MAX_COMPILER_BUILD 1620 -#if DM_VERSION > MAX_COMPILER_VERSION || DM_BUILD > MAX_COMPILER_BUILD -#warn WARNING! your byond version is over the recommended version! There may be unexpected byond bugs! -#endif - // So we want to have compile time guarantees these methods exist on local type // We use wrappers for this in case some part of the api ever changes, and to make their function more clear // For the record: GLOBAL_VERB_REF would be useless as verbs can't be global. diff --git a/code/controllers/globals.dm b/code/controllers/globals.dm index 5758429a6491a..b8851195288ee 100644 --- a/code/controllers/globals.dm +++ b/code/controllers/globals.dm @@ -18,9 +18,6 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars) controller_vars["vars"] = null gvars_datum_in_built_vars = controller_vars + list(NAMEOF(src, gvars_datum_protected_varlist), NAMEOF(src, gvars_datum_in_built_vars), NAMEOF(src, gvars_datum_init_order)) -#if DM_VERSION >= 515 && DM_BUILD > 1620 - #warn datum.vars hanging a ref should now be fixed, there should be no reason to remove the vars list from our controller's vars list anymore -#endif QDEL_IN(exclude_these, 1) //signal logging isn't ready log_world("[length(vars) - length(gvars_datum_in_built_vars)] global variables") diff --git a/dependencies.sh b/dependencies.sh index 24990cd52eb8a..dbe91b966de22 100644 --- a/dependencies.sh +++ b/dependencies.sh @@ -5,7 +5,7 @@ # byond version export BYOND_MAJOR=515 -export BYOND_MINOR=1620 +export BYOND_MINOR=1626 #rust_g git tag export RUST_G_VERSION=3.0.0 From 4790df8d3b60a9a8f046fbf047de9fce2ab9c1af Mon Sep 17 00:00:00 2001 From: Wisemonster <87689371+Wisemonster@users.noreply.github.com> Date: Sat, 13 Jan 2024 04:49:14 -0500 Subject: [PATCH 70/82] Changes The Minion Spawner To Require Tactical Points Instead of Strategic Points (#14804) --- code/modules/mob/living/carbon/xenomorph/hive_upgrades.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/xenomorph/hive_upgrades.dm b/code/modules/mob/living/carbon/xenomorph/hive_upgrades.dm index 8d13674b52d01..9c89625881ee1 100644 --- a/code/modules/mob/living/carbon/xenomorph/hive_upgrades.dm +++ b/code/modules/mob/living/carbon/xenomorph/hive_upgrades.dm @@ -238,6 +238,7 @@ GLOBAL_LIST_INIT(tier_to_primo_upgrade, list( psypoint_cost = 600 icon = "spawner" flags_gamemode = ABILITY_NUCLEARWAR + flags_upgrade = UPGRADE_FLAG_USES_TACTICAL building_type = /obj/structure/xeno/spawner /datum/hive_upgrade/defence From db710bc8c3c4318ace173f54533be12fc90e660a Mon Sep 17 00:00:00 2001 From: Xander3359 <66163761+Xander3359@users.noreply.github.com> Date: Sat, 13 Jan 2024 04:49:53 -0500 Subject: [PATCH 71/82] Adds a "Smartguns/IFF" to the valhalla vendor (#14808) --- .../machinery/vending/marine_vending.dm | 41 ++++++++++++------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/code/game/objects/machinery/vending/marine_vending.dm b/code/game/objects/machinery/vending/marine_vending.dm index fbae7752164ea..0aa6b7d27a0aa 100644 --- a/code/game/objects/machinery/vending/marine_vending.dm +++ b/code/game/objects/machinery/vending/marine_vending.dm @@ -1401,10 +1401,6 @@ /obj/item/ammo_magazine/railgun = -1, /obj/item/ammo_magazine/railgun/smart = -1, /obj/item/ammo_magazine/railgun/hvap = -1, - /obj/item/weapon/gun/rifle/tx8 = -1, - /obj/item/ammo_magazine/rifle/tx8 = -1, - /obj/item/ammo_magazine/rifle/tx8/impact = -1, - /obj/item/ammo_magazine/rifle/tx8/incendiary = -1, /obj/item/ammo_magazine/packet/scout_rifle = -1, /obj/item/weapon/gun/energy/lasgun/lasrifle/xray = -1, /obj/item/weapon/gun/launcher/rocket/m57a4/t57 = -1, @@ -1417,18 +1413,8 @@ /obj/item/ammo_magazine/rocket/sadar/wp/unguided = -1, /obj/item/weapon/gun/shotgun/zx76 = -1, /obj/item/ammo_magazine/shotgun/incendiary = -1, - /obj/item/weapon/gun/rifle/standard_autosniper = -1, - /obj/item/ammo_magazine/rifle/autosniper = -1, - /obj/item/weapon/gun/rifle/sniper/antimaterial = -1, - /obj/item/ammo_magazine/sniper = -1, - /obj/item/ammo_magazine/rifle/autosniper = -1, /obj/item/weapon/gun/minigun/valhalla = -1, /obj/item/ammo_magazine/minigun_powerpack = -1, - /obj/item/weapon/gun/rifle/standard_smartmachinegun = -1, - /obj/item/ammo_magazine/standard_smartmachinegun = -1, - /obj/item/weapon/gun/minigun/smart_minigun = -1, - /obj/item/ammo_magazine/minigun_powerpack/smartgun = -1, - /obj/item/ammo_magazine/packet/smart_minigun = -1, /obj/item/weapon/gun/launcher/rocket/oneuse = -1, /obj/item/storage/holster/belt/mateba/full = -1, /obj/item/ammo_magazine/revolver/mateba = -1, @@ -1448,6 +1434,33 @@ /obj/item/weapon/gun/rifle/famas = -1, /obj/item/ammo_magazine/rifle/famas = -1, ), + "Smartguns/IFF" = list( + /obj/item/weapon/gun/rifle/standard_smartmachinegun = -1, + /obj/item/ammo_magazine/standard_smartmachinegun = -1, + /obj/item/weapon/gun/minigun/smart_minigun = -1, + /obj/item/ammo_magazine/minigun_powerpack/smartgun = -1, + /obj/item/ammo_magazine/packet/smart_minigun = -1, + /obj/item/weapon/gun/rifle/standard_smarttargetrifle = -1, + /obj/item/ammo_magazine/rifle/standard_smarttargetrifle = -1, + /obj/item/ammo_magazine/packet/smart_targetrifle = -1, + /obj/item/ammo_magazine/rifle/standard_spottingrifle = -1, + /obj/item/ammo_magazine/rifle/standard_spottingrifle/highimpact = -1, + /obj/item/ammo_magazine/rifle/standard_spottingrifle/heavyrubber = -1, + /obj/item/ammo_magazine/rifle/standard_spottingrifle/tungsten = -1, + /obj/item/ammo_magazine/rifle/standard_spottingrifle/flak = -1, + /obj/item/ammo_magazine/rifle/standard_spottingrifle/plasmaloss = -1, + /obj/item/ammo_magazine/rifle/standard_spottingrifle/incendiary = -1, + /obj/item/weapon/gun/pistol/smart_pistol = -1, + /obj/item/ammo_magazine/pistol/standard_pistol/smart_pistol = -1, + /obj/item/weapon/gun/rifle/tx8 = -1, + /obj/item/ammo_magazine/rifle/tx8 = -1, + /obj/item/ammo_magazine/rifle/tx8/impact = -1, + /obj/item/ammo_magazine/rifle/tx8/incendiary = -1, + /obj/item/weapon/gun/rifle/standard_autosniper = -1, + /obj/item/ammo_magazine/rifle/autosniper = -1, + /obj/item/weapon/gun/rifle/sniper/antimaterial = -1, + /obj/item/ammo_magazine/sniper = -1, + ), "Mounted" = list( /obj/item/weapon/gun/standard_auto_cannon = -1, /obj/item/ammo_magazine/auto_cannon = -1, From 7ccd8b592396a190567c584a33e664ab7bb341f3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 13 Jan 2024 09:51:50 +0000 Subject: [PATCH 72/82] Automatic changelog for PR #14804 [ci skip] --- html/changelogs/AutoChangeLog-pr-14804.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14804.yml diff --git a/html/changelogs/AutoChangeLog-pr-14804.yml b/html/changelogs/AutoChangeLog-pr-14804.yml new file mode 100644 index 0000000000000..3bb8d24ed0923 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14804.yml @@ -0,0 +1,4 @@ +author: "Wisemonster" +delete-after: True +changes: + - balance: "The Minion Spawner now uses tactical points instead of strategic." \ No newline at end of file From 6f2034d31e10d237eff80e797f50ef4ad93de3b6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 13 Jan 2024 09:57:54 +0000 Subject: [PATCH 73/82] Automatic changelog for PR #14808 [ci skip] --- html/changelogs/AutoChangeLog-pr-14808.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14808.yml diff --git a/html/changelogs/AutoChangeLog-pr-14808.yml b/html/changelogs/AutoChangeLog-pr-14808.yml new file mode 100644 index 0000000000000..f8393d777d5c9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14808.yml @@ -0,0 +1,4 @@ +author: "Xander3359" +delete-after: True +changes: + - qol: "Adds a \"Smartguns/IFF\" to the valhalla vendor" \ No newline at end of file From 9b69342d88a947c6981b14922b307acf06802249 Mon Sep 17 00:00:00 2001 From: RipGrayson <49290523+RipGrayson@users.noreply.github.com> Date: Sat, 13 Jan 2024 10:37:46 -0500 Subject: [PATCH 74/82] Fixes some busted stairs in EORG maps (#14809) --- _maps/modularmaps/EORG/cs_mansion.dmm | 32 +- _maps/modularmaps/EORG/cs_militia.dmm | 363 +++++++++++----------- _maps/modularmaps/EORG/cs_office.dmm | 41 ++- _maps/modularmaps/EORG/de_inferno.dmm | 93 +++++- _maps/modularmaps/EORG/de_nuke.dmm | 425 +++++++++++++++----------- 5 files changed, 553 insertions(+), 401 deletions(-) diff --git a/_maps/modularmaps/EORG/cs_mansion.dmm b/_maps/modularmaps/EORG/cs_mansion.dmm index 5fb22d5bcf08b..99a4286f678f8 100644 --- a/_maps/modularmaps/EORG/cs_mansion.dmm +++ b/_maps/modularmaps/EORG/cs_mansion.dmm @@ -392,8 +392,8 @@ /obj/structure/platform{ dir = 1 }, -/obj/structure/stairs/edge{ - dir = 4 +/obj/structure/stairs/seamless/edge{ + dir = 8 }, /turf/open/floor/tile/dark, /area/deathmatch) @@ -598,8 +598,8 @@ /area/deathmatch) "Ay" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/stairs/edge{ - dir = 4 +/obj/structure/stairs/seamless/edge{ + dir = 8 }, /turf/open/floor/tile/dark, /area/deathmatch) @@ -654,6 +654,13 @@ /obj/effect/decal/remains/human, /turf/open/floor/wood, /area/deathmatch) +"CK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/stairs/seamless/edge{ + dir = 1 + }, +/turf/open/floor/tile/dark, +/area/deathmatch) "CV" = ( /obj/structure/platform{ dir = 4 @@ -929,6 +936,13 @@ "Oh" = ( /turf/open/floor/grime, /area/deathmatch) +"Oj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/stairs/seamless{ + dir = 4 + }, +/turf/open/floor/tile/dark, +/area/deathmatch) "Op" = ( /obj/structure/barricade/wooden{ dir = 1 @@ -1086,8 +1100,8 @@ "Vm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/platform, -/obj/structure/stairs/edge{ - dir = 4 +/obj/structure/stairs/seamless/edge{ + dir = 1 }, /turf/open/floor/tile/dark, /area/deathmatch) @@ -1704,7 +1718,7 @@ wz (11,1,1) = {" wz Ay -Ay +CK wz Gl Gl @@ -1786,7 +1800,7 @@ BK Wk yM Ay -Ay +CK Db Gl Gl @@ -2157,7 +2171,7 @@ Gl Gl jU tm -Ay +Oj Vm tN Gl diff --git a/_maps/modularmaps/EORG/cs_militia.dmm b/_maps/modularmaps/EORG/cs_militia.dmm index 9622c071d4bab..ea1e6aa1fa301 100644 --- a/_maps/modularmaps/EORG/cs_militia.dmm +++ b/_maps/modularmaps/EORG/cs_militia.dmm @@ -158,6 +158,9 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/ground/mars/random/sand, /area/deathmatch) +"rx" = ( +/turf/closed/mineral/smooth/desertdamrockwall/indestructible, +/area/deathmatch) "rK" = ( /obj/machinery/door/window/right, /turf/open/floor/wood, @@ -550,55 +553,55 @@ /area/deathmatch) (1,1,1) = {" -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx "} (2,1,1) = {" -Uv +rx Uv Uv Uv @@ -643,10 +646,10 @@ WC WC WC WC -Uv +rx "} (3,1,1) = {" -Uv +rx Uv Uv Uv @@ -691,10 +694,10 @@ WV GH WV WC -Uv +rx "} (4,1,1) = {" -Uv +rx Uv Uv Uv @@ -739,10 +742,10 @@ WV NB WV WC -Uv +rx "} (5,1,1) = {" -Uv +rx Uv Uv Uv @@ -787,10 +790,10 @@ GB GB WV WC -Uv +rx "} (6,1,1) = {" -Uv +rx Uv Uv Uv @@ -835,10 +838,10 @@ WC WC WC WC -Uv +rx "} (7,1,1) = {" -Uv +rx Uv Uv Uv @@ -883,10 +886,10 @@ Uv Uv Uv Uv -Uv +rx "} (8,1,1) = {" -Uv +rx Uv Uv Uv @@ -931,10 +934,10 @@ Uv Uv Uv Uv -Uv +rx "} (9,1,1) = {" -Uv +rx Uv Uv Uv @@ -979,10 +982,10 @@ Uv Uv Uv Uv -Uv +rx "} (10,1,1) = {" -Uv +rx Uv Uv Uv @@ -1027,10 +1030,10 @@ Uv Uv Uv Uv -Uv +rx "} (11,1,1) = {" -Uv +rx Uv Uv Uv @@ -1075,10 +1078,10 @@ Uv Uv Uv Uv -Uv +rx "} (12,1,1) = {" -Uv +rx Uv Uv Uv @@ -1123,10 +1126,10 @@ Uv Uv Uv Uv -Uv +rx "} (13,1,1) = {" -Uv +rx Uv Uv Uv @@ -1171,10 +1174,10 @@ WC WC Uv Uv -Uv +rx "} (14,1,1) = {" -Uv +rx Uv Uv Uv @@ -1219,10 +1222,10 @@ WV WC Uv Uv -Uv +rx "} (15,1,1) = {" -Uv +rx Uv Uv Uv @@ -1267,10 +1270,10 @@ hw WC Uv Uv -Uv +rx "} (16,1,1) = {" -Uv +rx Uv Uv Uv @@ -1315,10 +1318,10 @@ WV WC Uv Uv -Uv +rx "} (17,1,1) = {" -Uv +rx Uv Uv Uv @@ -1363,10 +1366,10 @@ WV WC Uv Uv -Uv +rx "} (18,1,1) = {" -Uv +rx Uv Uv Uv @@ -1411,10 +1414,10 @@ WV WC Uv Uv -Uv +rx "} (19,1,1) = {" -Uv +rx Uv Uv Uv @@ -1459,10 +1462,10 @@ WV WC Uv Uv -Uv +rx "} (20,1,1) = {" -Uv +rx Uv Uv Uv @@ -1507,10 +1510,10 @@ WV WC Uv Uv -Uv +rx "} (21,1,1) = {" -Uv +rx Uv Uv Uv @@ -1555,10 +1558,10 @@ cR WC Uv Uv -Uv +rx "} (22,1,1) = {" -Uv +rx Uv Uv Uv @@ -1603,10 +1606,10 @@ WV WC Uv Uv -Uv +rx "} (23,1,1) = {" -Uv +rx Uv Uv Uv @@ -1651,10 +1654,10 @@ WV WC Uv Uv -Uv +rx "} (24,1,1) = {" -Uv +rx Uv Uv Uv @@ -1699,10 +1702,10 @@ hw WC Uv Uv -Uv +rx "} (25,1,1) = {" -Uv +rx Uv Uv Uv @@ -1747,10 +1750,10 @@ WC WC Uv Uv -Uv +rx "} (26,1,1) = {" -Uv +rx Uv Uv Uv @@ -1795,10 +1798,10 @@ Uv Uv Uv Uv -Uv +rx "} (27,1,1) = {" -Uv +rx Uv Uv Uv @@ -1843,10 +1846,10 @@ Uv Uv Uv Uv -Uv +rx "} (28,1,1) = {" -Uv +rx Uv Uv mY @@ -1891,10 +1894,10 @@ Uv Uv Uv Uv -Uv +rx "} (29,1,1) = {" -Uv +rx Uv Uv mY @@ -1939,10 +1942,10 @@ Uv Uv Uv Uv -Uv +rx "} (30,1,1) = {" -Uv +rx Uv aB kv @@ -1987,10 +1990,10 @@ Uv Uv Uv Uv -Uv +rx "} (31,1,1) = {" -Uv +rx Uv mY uR @@ -2035,10 +2038,10 @@ Uv Uv Uv Uv -Uv +rx "} (32,1,1) = {" -Uv +rx Uv mY uR @@ -2083,10 +2086,10 @@ WC WC WC WC -Uv +rx "} (33,1,1) = {" -Uv +rx Uv mY uR @@ -2131,10 +2134,10 @@ WV sv NB WC -Uv +rx "} (34,1,1) = {" -Uv +rx aB kv rf @@ -2179,10 +2182,10 @@ WV GB GB WC -Uv +rx "} (35,1,1) = {" -Uv +rx kv uR uR @@ -2227,10 +2230,10 @@ WC WC WC WC -Uv +rx "} (36,1,1) = {" -Uv +rx uR uR uR @@ -2275,10 +2278,10 @@ Uv Uv Uv Uv -Uv +rx "} (37,1,1) = {" -Uv +rx uR uR Gx @@ -2323,10 +2326,10 @@ Uv Uv Uv Uv -Uv +rx "} (38,1,1) = {" -Uv +rx uR uR vb @@ -2371,10 +2374,10 @@ Uv Uv Uv Uv -Uv +rx "} (39,1,1) = {" -Uv +rx bP Vo Yq @@ -2419,10 +2422,10 @@ Uv Uv Uv Uv -Uv +rx "} (40,1,1) = {" -Uv +rx mY uR uR @@ -2467,10 +2470,10 @@ Uv Uv Uv Uv -Uv +rx "} (41,1,1) = {" -Uv +rx Uv bP uR @@ -2515,10 +2518,10 @@ Uv Uv Uv Uv -Uv +rx "} (42,1,1) = {" -Uv +rx Uv Uv bP @@ -2563,10 +2566,10 @@ Uv Uv Uv Uv -Uv +rx "} (43,1,1) = {" -Uv +rx Uv Uv Uv @@ -2611,10 +2614,10 @@ Uv Uv Uv Uv -Uv +rx "} (44,1,1) = {" -Uv +rx Uv Uv Uv @@ -2659,10 +2662,10 @@ Uv Uv Uv Uv -Uv +rx "} (45,1,1) = {" -Uv +rx Uv Uv Uv @@ -2707,53 +2710,53 @@ Uv Uv Uv Uv -Uv +rx "} (46,1,1) = {" -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv -Uv +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx +rx "} diff --git a/_maps/modularmaps/EORG/cs_office.dmm b/_maps/modularmaps/EORG/cs_office.dmm index 5a829e60fcca1..5a9e87da3eb92 100644 --- a/_maps/modularmaps/EORG/cs_office.dmm +++ b/_maps/modularmaps/EORG/cs_office.dmm @@ -4,8 +4,8 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/obj/structure/stairs/edge{ - dir = 8 +/obj/structure/stairs/seamless/edge{ + dir = 4 }, /turf/open/floor/tile/dark, /area/deathmatch) @@ -623,6 +623,11 @@ }, /turf/open/floor/tile/dark2, /area/deathmatch) +"pm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/stairs/seamless/edge, +/turf/open/floor/tile/dark, +/area/deathmatch) "pn" = ( /obj/structure/reagent_dispensers/water_cooler, /turf/open/floor/tile/dark/blue2{ @@ -813,6 +818,13 @@ "tn" = ( /turf/open/floor/tile/dark/blue2, /area/deathmatch) +"tp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/stairs/seamless/edge{ + dir = 4 + }, +/turf/open/floor/tile/dark, +/area/deathmatch) "tv" = ( /obj/structure/window/framed/mainship/gray/toughened/hull, /obj/structure/platform{ @@ -1103,6 +1115,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/tile/dark2, /area/deathmatch) +"zD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/stairs/seamless/edge{ + dir = 1 + }, +/turf/open/floor/tile/dark, +/area/deathmatch) "zR" = ( /obj/structure/cargo_container/hd, /turf/open/floor/plating/ground/snow/layer1, @@ -1450,8 +1469,8 @@ /area/deathmatch) "HB" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/stairs/edge{ - dir = 4 +/obj/structure/stairs/seamless/edge{ + dir = 8 }, /turf/open/floor/tile/dark, /area/deathmatch) @@ -1567,7 +1586,7 @@ /area/deathmatch) "Le" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/stairs/edge{ +/obj/structure/stairs/seamless{ dir = 8 }, /turf/open/floor/tile/dark, @@ -2876,7 +2895,7 @@ qe qe ad Le -Le +pm Xv Mr Mr @@ -3356,8 +3375,8 @@ ZD ZD ZD Xv -Le -Le +tp +pm Nm YU YU @@ -3412,7 +3431,7 @@ gE WK Nm HB -HB +zD Nm Xv "} @@ -3452,8 +3471,8 @@ ZD ZD ZD Xv -Le -Le +tp +pm If Jz tl diff --git a/_maps/modularmaps/EORG/de_inferno.dmm b/_maps/modularmaps/EORG/de_inferno.dmm index f9eacf5d5c216..dd783e275d187 100644 --- a/_maps/modularmaps/EORG/de_inferno.dmm +++ b/_maps/modularmaps/EORG/de_inferno.dmm @@ -517,6 +517,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/ground/dirt_desert, /area/deathmatch) +"hS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/stairs/seamless{ + dir = 4 + }, +/turf/open/floor/tile/dark, +/area/deathmatch) "hX" = ( /obj/machinery/door/airlock/mainship/medical/glass/free_access{ name = "\improper Civilian Housing" @@ -592,6 +599,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/ground/dirt_desert, /area/deathmatch) +"kE" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor/plating/asteroidfloor, +/area/deathmatch) "kI" = ( /obj/structure/largecrate/guns/merc, /obj/effect/decal/cleanable/dirt, @@ -608,6 +621,13 @@ /obj/effect/ai_node, /turf/open/floor/wood, /area/deathmatch) +"kR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/stairs/seamless/edge{ + dir = 8 + }, +/turf/open/floor/tile/dark, +/area/deathmatch) "lc" = ( /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/structure/platform, @@ -820,6 +840,13 @@ /obj/structure/flora/ausbushes/leafybush, /turf/open/ground/grass, /area/deathmatch) +"rT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/stairs/seamless/edge{ + dir = 1 + }, +/turf/open/floor/tile/dark, +/area/deathmatch) "sa" = ( /obj/structure/bed/chair/wood/wings{ dir = 4 @@ -907,6 +934,11 @@ /obj/effect/decal/cleanable/cobweb2, /turf/open/floor/wood, /area/deathmatch) +"uF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/stairs/seamless/edge, +/turf/open/floor/tile/dark, +/area/deathmatch) "uG" = ( /obj/structure/table/gamblingtable, /obj/item/toy/plush/rouny{ @@ -1059,8 +1091,8 @@ /obj/effect/turf_decal/warning_stripes/thin{ dir = 8 }, -/obj/structure/stairs/edge{ - dir = 4 +/obj/structure/stairs/seamless/edge{ + dir = 8 }, /turf/open/floor/tile/dark, /area/deathmatch) @@ -1167,6 +1199,13 @@ /obj/structure/flora/ausbushes/brflowers, /turf/open/ground/grass, /area/deathmatch) +"Gf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/stairs/seamless/edge{ + dir = 1 + }, +/turf/open/floor/plating/asteroidfloor, +/area/deathmatch) "Gr" = ( /obj/structure/largecrate/random/secure, /obj/effect/decal/cleanable/dirt, @@ -1458,10 +1497,10 @@ /area/deathmatch) "OK" = ( /obj/effect/landmark/deathmatch, -/obj/structure/platform_decoration{ - dir = 4 - }, /obj/effect/decal/cleanable/dirt, +/obj/structure/platform{ + dir = 8 + }, /turf/open/floor/plating/asteroidfloor, /area/deathmatch) "OS" = ( @@ -1474,6 +1513,13 @@ /obj/structure/largecrate/random/barrel/yellow, /turf/open/floor/wood, /area/deathmatch) +"Pq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/stairs/seamless/edge{ + dir = 4 + }, +/turf/open/floor/tile/dark, +/area/deathmatch) "PO" = ( /obj/structure/table/gamblingtable, /obj/item/toy/plush/moth, @@ -1499,6 +1545,13 @@ /obj/structure/prop/mainship/ship_memorial, /turf/open/floor/plating/mainship, /area/deathmatch) +"RH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/stairs/seamless{ + dir = 8 + }, +/turf/open/floor/tile/dark, +/area/deathmatch) "RO" = ( /obj/effect/landmark/deathmatch, /obj/effect/landmark/weapon_spawn/tier2_weapon_spawn, @@ -1666,6 +1719,16 @@ /obj/structure/table/woodentable, /turf/open/floor/wood, /area/deathmatch) +"YM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/warning_stripes/thin{ + dir = 8 + }, +/obj/structure/stairs/seamless{ + dir = 4 + }, +/turf/open/floor/tile/dark, +/area/deathmatch) "YO" = ( /obj/effect/landmark/weapon_spawn/tier1_weapon_spawn, /obj/effect/decal/cleanable/dirt, @@ -2544,9 +2607,9 @@ eB Sq eB eB -dT -dT -dT +Pq +RH +uF yG ce ce @@ -2594,7 +2657,7 @@ dG Ow eB eB -nu +eB ce ce ce @@ -2641,10 +2704,10 @@ zD dG ei Ba -Ba -Bs +YM +Gf OK -fI +kE fI fI Xz @@ -3610,9 +3673,9 @@ fI pj pj pj -si -si -si +kR +hS +rT dG jA Dn diff --git a/_maps/modularmaps/EORG/de_nuke.dmm b/_maps/modularmaps/EORG/de_nuke.dmm index b587035c92d58..e486c7412288b 100644 --- a/_maps/modularmaps/EORG/de_nuke.dmm +++ b/_maps/modularmaps/EORG/de_nuke.dmm @@ -6,6 +6,12 @@ "bi" = ( /turf/open/floor/plating/ground/mars/random/dirt, /area/deathmatch) +"cW" = ( +/obj/structure/stairs/seamless/edge{ + color = "#888888" + }, +/turf/open/floor/tile/dark, +/area/deathmatch) "db" = ( /obj/effect/landmark/weapon_spawn/tier2_weapon_spawn, /turf/open/floor/plating/ground/mars/random/sand, @@ -50,13 +56,19 @@ /obj/effect/landmark/deathmatch, /turf/open/floor/plating/ground/mars/random/dirt, /area/deathmatch) +"hM" = ( +/obj/structure/stairs/seamless{ + dir = 4 + }, +/turf/open/floor/tile/dark, +/area/deathmatch) "ix" = ( /obj/structure/rack, /obj/effect/landmark/weapon_spawn/tier3_weapon_spawn, /turf/open/floor/plating/asteroidfloor, /area/deathmatch) "jb" = ( -/obj/structure/stairs/edge{ +/obj/structure/stairs/seamless{ color = "#888888"; dir = 8 }, @@ -158,7 +170,7 @@ /turf/open/floor/plating/asteroidplating, /area/deathmatch) "rF" = ( -/obj/structure/stairs/edge{ +/obj/structure/stairs/seamless{ dir = 8 }, /turf/open/floor/tile/dark, @@ -177,6 +189,16 @@ /obj/structure/largecrate, /turf/open/floor/plating/asteroidplating, /area/deathmatch) +"to" = ( +/obj/machinery/door/poddoor/railing{ + dir = 1 + }, +/obj/structure/stairs/seamless{ + color = "#888888"; + dir = 8 + }, +/turf/open/floor/tile/dark, +/area/deathmatch) "tF" = ( /obj/structure/rack, /turf/open/floor/plating/asteroidplating, @@ -233,12 +255,15 @@ /obj/machinery/door/poddoor/railing{ dir = 1 }, -/obj/structure/stairs/edge{ +/obj/structure/stairs/seamless/edge{ color = "#888888"; - dir = 8 + dir = 4 }, /turf/open/floor/tile/dark, /area/deathmatch) +"xv" = ( +/turf/closed/mineral/smooth/desertdamrockwall/indestructible, +/area/deathmatch) "xE" = ( /obj/effect/landmark/eord_roomba, /turf/open/floor/plating/ground/mars/random/sand, @@ -286,16 +311,28 @@ }, /turf/open/floor/plating/ground/mars/random/sand, /area/deathmatch) +"AR" = ( +/obj/structure/stairs/seamless/edge{ + dir = 4 + }, +/turf/open/floor/tile/dark, +/area/deathmatch) +"BY" = ( +/obj/structure/stairs/seamless/edge{ + dir = 8 + }, +/turf/open/floor/tile/dark, +/area/deathmatch) "De" = ( /obj/effect/landmark/weapon_spawn/tier2_weapon_spawn, -/obj/structure/stairs/edge{ - dir = 4 +/obj/structure/stairs/seamless/edge{ + dir = 8 }, /turf/open/floor/tile/dark, /area/deathmatch) "Do" = ( /obj/effect/landmark/deathmatch, -/obj/structure/stairs/edge{ +/obj/structure/stairs/seamless{ dir = 8 }, /turf/open/floor/tile/dark, @@ -306,6 +343,13 @@ }, /turf/open/floor/plating/asteroidfloor, /area/deathmatch) +"Ej" = ( +/obj/effect/landmark/weapon_spawn/tier2_weapon_spawn, +/obj/structure/stairs/seamless/edge{ + dir = 1 + }, +/turf/open/floor/tile/dark, +/area/deathmatch) "Fc" = ( /obj/structure/table/reinforced, /turf/open/floor/plating/asteroidfloor, @@ -333,6 +377,12 @@ dir = 8 }, /area/deathmatch) +"Hl" = ( +/obj/structure/stairs/seamless/edge{ + dir = 1 + }, +/turf/open/floor/tile/dark, +/area/deathmatch) "HV" = ( /obj/structure/window/framed/wood, /turf/open/floor/wood, @@ -377,14 +427,14 @@ /area/deathmatch) "LA" = ( /obj/effect/landmark/weapon_spawn/tier2_weapon_spawn, -/obj/structure/stairs/edge{ +/obj/structure/stairs/seamless{ dir = 8 }, /turf/open/floor/tile/dark, /area/deathmatch) "LY" = ( /obj/effect/landmark/weapon_spawn/tier3_weapon_spawn, -/obj/structure/stairs/edge{ +/obj/structure/stairs/seamless{ color = "#888888"; dir = 8 }, @@ -413,9 +463,8 @@ /obj/machinery/door/poddoor/railing{ dir = 2 }, -/obj/structure/stairs/edge{ - color = "#888888"; - dir = 8 +/obj/structure/stairs/seamless/edge{ + color = "#888888" }, /turf/open/floor/tile/dark, /area/deathmatch) @@ -454,6 +503,10 @@ }, /turf/open/floor/plating/asteroidfloor, /area/deathmatch) +"UO" = ( +/obj/structure/stairs/seamless/edge, +/turf/open/floor/tile/dark, +/area/deathmatch) "VQ" = ( /obj/structure/cargo_container/ch_red, /turf/open/floor/plating/ground/mars/random/sand, @@ -477,7 +530,7 @@ desc = "You can't get in. Heh."; name = "Blocker" }, -/turf/closed/wall, +/turf/closed/wall/r_wall/unmeltable/regular, /area/deathmatch) "WO" = ( /obj/effect/landmark/deathmatch, @@ -553,55 +606,55 @@ /area/deathmatch) (1,1,1) = {" -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv Wn Wn Wn Wn Wn -XY -XY -XY -XY -XY +xv +xv +xv +xv +xv "} (2,1,1) = {" -XY +xv XY XY XY @@ -649,7 +702,7 @@ od Wn "} (3,1,1) = {" -XY +xv XY XY XY @@ -697,7 +750,7 @@ Mn Wn "} (4,1,1) = {" -XY +xv XY XY XY @@ -745,7 +798,7 @@ Mn Wn "} (5,1,1) = {" -XY +xv XY XY XY @@ -793,7 +846,7 @@ Mn Wn "} (6,1,1) = {" -XY +xv XY XY XY @@ -841,7 +894,7 @@ Mn Wn "} (7,1,1) = {" -XY +xv XY XY XY @@ -873,7 +926,7 @@ XY XY od rF -rF +UO od od Sf @@ -889,7 +942,7 @@ Mn Wn "} (8,1,1) = {" -XY +xv XY XY XY @@ -937,7 +990,7 @@ MV Wn "} (9,1,1) = {" -XY +xv XY XY XY @@ -985,7 +1038,7 @@ Mn Wn "} (10,1,1) = {" -XY +xv XY XY XY @@ -1033,7 +1086,7 @@ Mn Wn "} (11,1,1) = {" -XY +xv XY XY XY @@ -1081,7 +1134,7 @@ My Wn "} (12,1,1) = {" -XY +xv XY XY XY @@ -1129,7 +1182,7 @@ Mn Wn "} (13,1,1) = {" -XY +xv XY XY XY @@ -1177,7 +1230,7 @@ od Wn "} (14,1,1) = {" -XY +xv XY XY XY @@ -1225,7 +1278,7 @@ Mn Wn "} (15,1,1) = {" -XY +xv XY XY XY @@ -1262,9 +1315,9 @@ od od Sf Fp +AR rF -rF -rF +UO Fp jc od @@ -1273,7 +1326,7 @@ ix Wn "} (16,1,1) = {" -XY +xv XY XY XY @@ -1321,7 +1374,7 @@ od Wn "} (17,1,1) = {" -XY +xv XY XY XY @@ -1366,10 +1419,10 @@ od od XY XY -XY +xv "} (18,1,1) = {" -XY +xv XY XY XY @@ -1414,10 +1467,10 @@ od XY XY XY -XY +xv "} (19,1,1) = {" -XY +xv XY XY XY @@ -1462,10 +1515,10 @@ od XY XY XY -XY +xv "} (20,1,1) = {" -XY +xv XY XY XY @@ -1510,10 +1563,10 @@ od XY XY XY -XY +xv "} (21,1,1) = {" -XY +xv XY XY XY @@ -1552,16 +1605,16 @@ od od jb jb -jb +cW od od XY XY XY -XY +xv "} (22,1,1) = {" -XY +xv XY XY XY @@ -1600,16 +1653,16 @@ XY od jb LY -jb +cW od XY XY XY XY -XY +xv "} (23,1,1) = {" -XY +xv XY XY XY @@ -1654,10 +1707,10 @@ XY XY XY XY -XY +xv "} (24,1,1) = {" -XY +xv XY XY XY @@ -1702,10 +1755,10 @@ XY XY XY XY -XY +xv "} (25,1,1) = {" -XY +xv XY XY XY @@ -1750,10 +1803,10 @@ XY XY XY XY -XY +xv "} (26,1,1) = {" -XY +xv XY XY XY @@ -1798,10 +1851,10 @@ XY XY XY XY -XY +xv "} (27,1,1) = {" -XY +xv XY dj dj @@ -1846,10 +1899,10 @@ XY XY XY XY -XY +xv "} (28,1,1) = {" -XY +xv db Go Ax @@ -1894,10 +1947,10 @@ XY ZH ZH XY -XY +xv "} (29,1,1) = {" -XY +xv dj dj dj @@ -1942,10 +1995,10 @@ db dj dj Ax -XY +xv "} (30,1,1) = {" -XY +xv ZH ZH XY @@ -1990,10 +2043,10 @@ dj dj dj Go -XY +xv "} (31,1,1) = {" -XY +xv XY XY XY @@ -2038,10 +2091,10 @@ dj dj dj dj -XY +xv "} (32,1,1) = {" -XY +xv XY XY XY @@ -2086,10 +2139,10 @@ dj dj dj dj -XY +xv "} (33,1,1) = {" -XY +xv XY XY XY @@ -2134,10 +2187,10 @@ dj dj dj dj -XY +xv "} (34,1,1) = {" -XY +xv XY XY XY @@ -2182,10 +2235,10 @@ dj dj db XY -XY +xv "} (35,1,1) = {" -XY +xv XY XY XY @@ -2230,10 +2283,10 @@ dj dj XY XY -XY +xv "} (36,1,1) = {" -XY +xv XY XY XY @@ -2278,10 +2331,10 @@ XY XY XY XY -XY +xv "} (37,1,1) = {" -XY +xv XY XY XY @@ -2326,10 +2379,10 @@ XY XY XY XY -XY +xv "} (38,1,1) = {" -XY +xv XY XY XY @@ -2346,13 +2399,13 @@ XY XY XY od -YO -YO +hM +Hl xu jb Px -YO -YO +hM +Hl od XY XY @@ -2374,10 +2427,10 @@ XY XY XY XY -XY +xv "} (39,1,1) = {" -XY +xv XY XY XY @@ -2394,13 +2447,13 @@ XY XY XY od -YO -YO -xu +hM +Hl +to LY Px -YO -YO +hM +Hl od XY XY @@ -2422,10 +2475,10 @@ XY XY XY XY -XY +xv "} (40,1,1) = {" -XY +xv XY XY XY @@ -2443,12 +2496,12 @@ XY XY od De -YO -xu +Hl +to jb Px -YO -De +BY +Ej od XY XY @@ -2470,10 +2523,10 @@ XY XY XY XY -XY +xv "} (41,1,1) = {" -XY +xv XY XY XY @@ -2518,10 +2571,10 @@ XY XY XY XY -XY +xv "} (42,1,1) = {" -XY +xv XY XY XY @@ -2566,10 +2619,10 @@ XY XY XY XY -XY +xv "} (43,1,1) = {" -XY +xv XY XY XY @@ -2614,10 +2667,10 @@ XY XY XY XY -XY +xv "} (44,1,1) = {" -XY +xv XY XY XY @@ -2662,10 +2715,10 @@ XY XY XY XY -XY +xv "} (45,1,1) = {" -XY +xv XY XY XY @@ -2710,53 +2763,53 @@ XY XY XY XY -XY +xv "} (46,1,1) = {" -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv Wn Wn Wn Wn Wn -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY -XY +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv +xv "} From d405ee3847f622a1cd1fe607e251e86b18709150 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 13 Jan 2024 15:38:03 +0000 Subject: [PATCH 75/82] Automatic changelog for PR #14809 [ci skip] --- html/changelogs/AutoChangeLog-pr-14809.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14809.yml diff --git a/html/changelogs/AutoChangeLog-pr-14809.yml b/html/changelogs/AutoChangeLog-pr-14809.yml new file mode 100644 index 0000000000000..889d369503857 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14809.yml @@ -0,0 +1,4 @@ +author: "RipGrayson" +delete-after: True +changes: + - bugfix: "Fixed some improper stairs on the EORG maps." \ No newline at end of file From 3fbee6d7252a62a26cec4d0afb42710201718cc5 Mon Sep 17 00:00:00 2001 From: Xander3359 <66163761+Xander3359@users.noreply.github.com> Date: Sat, 13 Jan 2024 15:12:13 -0500 Subject: [PATCH 76/82] Remove the non-smart pistol bundle from sg (#14810) --- code/__DEFINES/loadout.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/__DEFINES/loadout.dm b/code/__DEFINES/loadout.dm index 4866435ef0d61..9efd2a1915b82 100644 --- a/code/__DEFINES/loadout.dm +++ b/code/__DEFINES/loadout.dm @@ -174,7 +174,6 @@ GLOBAL_LIST_INIT(commander_gear_listed_products, list( //A way to give them everything at once that still works with loadouts would be nice, but barring that make sure that your point calculation is set up so they don't get more than what they're supposed to GLOBAL_LIST_INIT(smartgunner_gear_listed_products, list( - /obj/item/clothing/glasses/night/m56_goggles = list(CAT_ESS, "KLTD Smart Goggles", 0, "white"), /obj/effect/vendor_bundle/smartgunner_pistol = list(CAT_ESS, "SP-13 smart pistol and KLTD Smart Goggles bundle", 0, "white"), /obj/item/ammo_magazine/pistol/standard_pistol/smart_pistol = list(CAT_SGSUP, "SP-13 smart pistol ammo", 2, "black"), /obj/item/weapon/gun/rifle/standard_smartmachinegun = list(CAT_SGSUP, "SG-29 Smart Machine Gun", 29, "orange"), //If a smartgunner buys a SG-29, then they will have 16 points to purchase 4 SG-29 drums From 529364a8362b7b2ffae1bac953296ace048c69c9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 13 Jan 2024 20:12:30 +0000 Subject: [PATCH 77/82] Automatic changelog for PR #14810 [ci skip] --- html/changelogs/AutoChangeLog-pr-14810.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14810.yml diff --git a/html/changelogs/AutoChangeLog-pr-14810.yml b/html/changelogs/AutoChangeLog-pr-14810.yml new file mode 100644 index 0000000000000..897f42f13d851 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14810.yml @@ -0,0 +1,4 @@ +author: "Xander3359" +delete-after: True +changes: + - rscdel: "Removes the NVG-only smartgunner option." \ No newline at end of file From b44be9723151f043b052fcda0c27a305cade13df Mon Sep 17 00:00:00 2001 From: ivanmixo Date: Sat, 13 Jan 2024 22:26:16 +0100 Subject: [PATCH 78/82] Fix hud thing I forgor (#14811) --- code/modules/clothing/glasses/hud.dm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 9a59748446852..79eb93cc46cd5 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -21,13 +21,13 @@ if(active) activate_hud(user) else if(affected_user) - deactivate_hud() + deactivate_hud(user) return ..() /obj/item/clothing/glasses/hud/dropped(mob/user) if(affected_user) - deactivate_hud() + deactivate_hud(user) return ..() @@ -52,24 +52,24 @@ ///Activates the hud(s) these glasses have /obj/item/clothing/glasses/hud/proc/activate_hud(mob/living/carbon/human/user) + affected_user = user if(islist(hud_type)) for(var/hud in hud_type) var/datum/atom_hud/hud_datum = GLOB.huds[hud] - hud_datum.add_hud_to(user) + hud_datum.add_hud_to(affected_user) else var/datum/atom_hud/hud_datum = GLOB.huds[hud_type] - hud_datum.add_hud_to(user) - affected_user = user + hud_datum.add_hud_to(affected_user) ///Deactivates the hud(s) these glasses have /obj/item/clothing/glasses/hud/proc/deactivate_hud(mob/user) if(islist(hud_type)) for(var/hud in hud_type) var/datum/atom_hud/hud_datum = GLOB.huds[hud] - hud_datum.remove_hud_from(user) + hud_datum.remove_hud_from(affected_user) else var/datum/atom_hud/hud_datum = GLOB.huds[hud_type] - hud_datum.remove_hud_from(user) + hud_datum.remove_hud_from(affected_user) affected_user = null From a8f712647060ba500869d0015488092f76d29a60 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 13 Jan 2024 21:26:32 +0000 Subject: [PATCH 79/82] Automatic changelog for PR #14811 [ci skip] --- html/changelogs/AutoChangeLog-pr-14811.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14811.yml diff --git a/html/changelogs/AutoChangeLog-pr-14811.yml b/html/changelogs/AutoChangeLog-pr-14811.yml new file mode 100644 index 0000000000000..a86f6e2e54a8a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14811.yml @@ -0,0 +1,4 @@ +author: "ivanmixo" +delete-after: True +changes: + - bugfix: "Fixed an exploit related to hudglasses" \ No newline at end of file From 166206446835c7fe7da06a73de2024701004cbd8 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sun, 14 Jan 2024 00:57:32 +0000 Subject: [PATCH 80/82] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-14804.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14808.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14809.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14810.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14811.yml | 4 ---- html/changelogs/archive/2024-01.yml | 10 ++++++++++ 6 files changed, 10 insertions(+), 20 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-14804.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14808.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14809.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14810.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14811.yml diff --git a/html/changelogs/AutoChangeLog-pr-14804.yml b/html/changelogs/AutoChangeLog-pr-14804.yml deleted file mode 100644 index 3bb8d24ed0923..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14804.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Wisemonster" -delete-after: True -changes: - - balance: "The Minion Spawner now uses tactical points instead of strategic." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14808.yml b/html/changelogs/AutoChangeLog-pr-14808.yml deleted file mode 100644 index f8393d777d5c9..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14808.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Xander3359" -delete-after: True -changes: - - qol: "Adds a \"Smartguns/IFF\" to the valhalla vendor" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14809.yml b/html/changelogs/AutoChangeLog-pr-14809.yml deleted file mode 100644 index 889d369503857..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14809.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "RipGrayson" -delete-after: True -changes: - - bugfix: "Fixed some improper stairs on the EORG maps." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14810.yml b/html/changelogs/AutoChangeLog-pr-14810.yml deleted file mode 100644 index 897f42f13d851..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14810.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Xander3359" -delete-after: True -changes: - - rscdel: "Removes the NVG-only smartgunner option." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-14811.yml b/html/changelogs/AutoChangeLog-pr-14811.yml deleted file mode 100644 index a86f6e2e54a8a..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-14811.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ivanmixo" -delete-after: True -changes: - - bugfix: "Fixed an exploit related to hudglasses" \ No newline at end of file diff --git a/html/changelogs/archive/2024-01.yml b/html/changelogs/archive/2024-01.yml index 056229d5c763b..71a6f36b518a4 100644 --- a/html/changelogs/archive/2024-01.yml +++ b/html/changelogs/archive/2024-01.yml @@ -125,3 +125,13 @@ - code_imp: Ported update_appearance, alternative_appearance and ssvisoverlays - refactor: Refactored almost every instance of update_icon, update_icon_state and update_overlays +2024-01-14: + RipGrayson: + - bugfix: Fixed some improper stairs on the EORG maps. + Wisemonster: + - balance: The Minion Spawner now uses tactical points instead of strategic. + Xander3359: + - rscdel: Removes the NVG-only smartgunner option. + - qol: Adds a "Smartguns/IFF" to the valhalla vendor + ivanmixo: + - bugfix: Fixed an exploit related to hudglasses From 49d1c9e67050acc5d046526bc4b831f9cc4adaf2 Mon Sep 17 00:00:00 2001 From: Lumipharon Date: Sun, 14 Jan 2024 15:03:30 +1300 Subject: [PATCH 81/82] AMR fix (#14813) --- code/modules/projectiles/gun_system.dm | 8 +++++++- code/modules/projectiles/guns/specialist.dm | 9 ++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/code/modules/projectiles/gun_system.dm b/code/modules/projectiles/gun_system.dm index 9c052b5f0a363..6a3b35c1d13eb 100644 --- a/code/modules/projectiles/gun_system.dm +++ b/code/modules/projectiles/gun_system.dm @@ -496,7 +496,8 @@ else RegisterSignal(gun_user, COMSIG_KB_UNIQUEACTION, PROC_REF(unique_action)) RegisterSignal(gun_user, COMSIG_QDELETING, PROC_REF(clean_gun_user)) - RegisterSignals(gun_user, list(COMSIG_MOB_MOUSEUP, COMSIG_ITEM_ZOOM, COMSIG_ITEM_UNZOOM), PROC_REF(stop_fire)) + RegisterSignals(gun_user, list(COMSIG_MOB_MOUSEUP, COMSIG_ITEM_ZOOM), PROC_REF(stop_fire)) + RegisterSignal(gun_user, COMSIG_ITEM_UNZOOM, PROC_REF(on_unzoom)) RegisterSignal(gun_user, COMSIG_KB_RAILATTACHMENT, PROC_REF(activate_rail_attachment)) RegisterSignal(gun_user, COMSIG_KB_UNDERRAILATTACHMENT, PROC_REF(activate_underrail_attachment)) RegisterSignal(gun_user, COMSIG_KB_UNLOADGUN, PROC_REF(unload_gun)) @@ -751,6 +752,11 @@ active_attachable?.clean_target() target = get_turf(target) +///Handles unzoom behavior +/obj/item/weapon/gun/proc/on_unzoom(mob/user) + SIGNAL_HANDLER + stop_fire() + ///Reset variables used in firing and remove the gun from the autofire system /obj/item/weapon/gun/proc/stop_fire() SIGNAL_HANDLER diff --git a/code/modules/projectiles/guns/specialist.dm b/code/modules/projectiles/guns/specialist.dm index 254051c985ab0..76886d0b5f981 100644 --- a/code/modules/projectiles/guns/specialist.dm +++ b/code/modules/projectiles/guns/specialist.dm @@ -172,6 +172,12 @@ Note that this means that snipers will have a slowdown of 3, due to the scope else return TRUE +/obj/item/weapon/gun/rifle/sniper/antimaterial/on_unzoom(mob/user) + . = ..() + if(!targetmarker_primed && !laser_target) + return + laser_off(user) + /obj/item/weapon/gun/rifle/sniper/antimaterial/proc/activate_laser_target(atom/target, mob/living/user) laser_target = target to_chat(user, span_danger("You focus your target marker on [target]!")) @@ -203,7 +209,6 @@ Note that this means that snipers will have a slowdown of 3, due to the scope to_chat(user, span_warning("You must be zoomed in to use your target marker!")) return TRUE targetmarker_primed = TRUE //We prime the target laser - RegisterSignal(user, COMSIG_ITEM_UNZOOM, PROC_REF(laser_off)) if(user?.client) user.client.click_intercept = src to_chat(user, span_notice("You activate your target marker and take careful aim.")) @@ -219,8 +224,6 @@ Note that this means that snipers will have a slowdown of 3, due to the scope STOP_PROCESSING(SSobj, src) targetmarker_on = FALSE targetmarker_primed = FALSE - if(user) - UnregisterSignal(user, COMSIG_ITEM_UNZOOM) if(user?.client) user.client.click_intercept = null to_chat(user, span_notice("You deactivate your target marker.")) From 8966febb9eb20da6285cde07ab7775cdf49c18d6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 14 Jan 2024 02:03:48 +0000 Subject: [PATCH 82/82] Automatic changelog for PR #14813 [ci skip] --- html/changelogs/AutoChangeLog-pr-14813.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14813.yml diff --git a/html/changelogs/AutoChangeLog-pr-14813.yml b/html/changelogs/AutoChangeLog-pr-14813.yml new file mode 100644 index 0000000000000..a08779358018a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14813.yml @@ -0,0 +1,4 @@ +author: "Lumipharon" +delete-after: True +changes: + - bugfix: "fixed an issue with AMR lase continuously trying to turn off" \ No newline at end of file

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 scC6gi@d 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 )b5!27AY8w0##TGu<}GmE_H*X! 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