diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index bea67c366e7..460173b2cc7 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -1,6 +1,6 @@ #define LOCKER_FULL -1 -/obj/structure/closet//SKYRAT EDIT - ICON OVERRIDEN BY AESTHETICS - SEE MODULE +/obj/structure/closet//SKYRAT EDIT - ICON OVERRIDEN BY CLOSETS.DM IN ANIMATED DOORS name = "closet" desc = "It's a basic storage unit." icon = 'icons/obj/closet.dmi' @@ -90,7 +90,7 @@ /obj/structure/closet/proc/closet_update_overlays(list/new_overlays) . = new_overlays - if(enable_door_overlay) + if(enable_door_overlay && !is_animating_door) //SKYRAT EDIT CHANGE if(opened && has_opened_overlay) . += "[icon_door_override ? icon_door : icon_state]_open" var/mutable_appearance/door_blocker = mutable_appearance(icon, "[icon_door || icon_state]_open", plane = EMISSIVE_PLANE) @@ -188,6 +188,7 @@ if(!dense_when_open) set_density(FALSE) dump_contents() + animate_door(FALSE) //SKYRAT EDIT ADDITION update_appearance() after_open(user, force) return TRUE @@ -245,6 +246,7 @@ playsound(loc, close_sound, close_sound_volume, TRUE, -3) opened = FALSE set_density(TRUE) + animate_door(TRUE) //SKYRAT EDIT ADDITION update_appearance() after_close(user) return TRUE diff --git a/modular_skyrat/master_files/icons/obj/closet.dmi b/modular_skyrat/master_files/icons/obj/closet.dmi new file mode 100644 index 00000000000..87ddecd3489 Binary files /dev/null and b/modular_skyrat/master_files/icons/obj/closet.dmi differ diff --git a/modular_skyrat/modules/advanced_shuttles/code/closet.dm b/modular_skyrat/modules/advanced_shuttles/code/closet.dm index 881525dcf19..d689c080fa6 100644 --- a/modular_skyrat/modules/advanced_shuttles/code/closet.dm +++ b/modular_skyrat/modules/advanced_shuttles/code/closet.dm @@ -1,13 +1,13 @@ /obj/structure/closet/shuttle anchored = TRUE density = TRUE - icon = 'modular_skyrat/modules/advanced_shuttles/icons/closet.dmi' + icon = 'modular_skyrat/master_files/icons/obj/closet.dmi' icon_state = "wallcloset" + door_anim_time = 0 //CONVERT THESE DOORS YOU LAZY ASSHATS /obj/structure/closet/shuttle/white anchored = TRUE density = TRUE - icon = 'modular_skyrat/modules/advanced_shuttles/icons/closet.dmi' icon_state = "wallcloset_white" icon_door_override = TRUE icon_door = "wallcloset_door" @@ -15,7 +15,6 @@ /obj/structure/closet/shuttle/wagon name = "emergency closet" desc = "It's a storage unit for emergency breathmasks and o2 tanks." - icon = 'modular_skyrat/modules/advanced_shuttles/icons/closet.dmi' icon_state = "wallcloset_white" /obj/structure/closet/shuttle/wagon/PopulateContents() @@ -27,7 +26,6 @@ /obj/structure/closet/shuttle/mining name = "emergency closet" desc = "It's a storage unit for emergency o2 supply and pressure suit." - icon = 'modular_skyrat/modules/advanced_shuttles/icons/closet.dmi' icon_state = "wallcloset_mining" /obj/structure/closet/shuttle/mining/PopulateContents() @@ -41,7 +39,6 @@ /obj/structure/closet/shuttle/medical_wall/erokez //wall mounted medical closet name = "first-aid closet" desc = "It's wall-mounted storage unit for first aid supplies." - icon = 'modular_skyrat/modules/advanced_shuttles/icons/closet.dmi' icon_state = "wallcloset_med" /obj/structure/closet/shuttle/medical_wall/erokez/PopulateContents() @@ -55,13 +52,11 @@ /obj/structure/closet/shuttle/erokez name = "Closet" desc = "It's wall-mounted storage unit" - icon = 'modular_skyrat/modules/advanced_shuttles/icons/closet.dmi' icon_state = "wallcloset" /obj/structure/closet/shuttle/evacvent name = "Engine ventilation" desc = "Looks like you can get in this small engine ventilation shaft." - icon = 'modular_skyrat/modules/advanced_shuttles/icons/closet.dmi' icon_state = "shuttle" anchored = TRUE @@ -69,26 +64,30 @@ wall_mounted = TRUE anchored = TRUE density = TRUE - icon = 'modular_skyrat/modules/advanced_shuttles/icons/closet.dmi' + icon = 'modular_skyrat/master_files/icons/obj/closet.dmi' icon_state = "fire_wall" + door_anim_time = 0 //CONVERT THESE DOORS YOU LAZY ASSHATS /obj/structure/closet/emcloset/wall wall_mounted = TRUE anchored = TRUE density = TRUE - icon = 'modular_skyrat/modules/advanced_shuttles/icons/closet.dmi' + icon = 'modular_skyrat/master_files/icons/obj/closet.dmi' icon_state = "emergency_wall" + door_anim_time = 0 //CONVERT THESE DOORS YOU LAZY ASSHATS /obj/structure/closet/secure_closet/wall wall_mounted = TRUE anchored = TRUE density = TRUE - icon = 'modular_skyrat/modules/advanced_shuttles/icons/closet.dmi' + icon = 'modular_skyrat/master_files/icons/obj/closet.dmi' icon_state = "closet_wall" + door_anim_time = 0 //CONVERT THESE DOORS YOU LAZY ASSHATS /obj/structure/closet/secure_closet/personal/wall wall_mounted = TRUE anchored = TRUE density = TRUE - icon = 'modular_skyrat/modules/advanced_shuttles/icons/closet.dmi' + icon = 'modular_skyrat/master_files/icons/obj/closet.dmi' icon_state = "closet_wall" + door_anim_time = 0 //CONVERT THESE DOORS YOU LAZY ASSHATS diff --git a/modular_skyrat/modules/advanced_shuttles/icons/closet.dmi b/modular_skyrat/modules/advanced_shuttles/icons/closet.dmi deleted file mode 100644 index 9fe006756cb..00000000000 Binary files a/modular_skyrat/modules/advanced_shuttles/icons/closet.dmi and /dev/null differ diff --git a/modular_skyrat/modules/aesthetics/closet/closet.dmi b/modular_skyrat/modules/aesthetics/closet/closet.dmi deleted file mode 100644 index 6d4d3368ddf..00000000000 Binary files a/modular_skyrat/modules/aesthetics/closet/closet.dmi and /dev/null differ diff --git a/modular_skyrat/modules/animated_doors/code/closets.dm b/modular_skyrat/modules/animated_doors/code/closets.dm new file mode 100644 index 00000000000..1b217261b8e --- /dev/null +++ b/modular_skyrat/modules/animated_doors/code/closets.dm @@ -0,0 +1,76 @@ +/obj/structure/closet + icon = 'modular_skyrat/master_files/icons/obj/closet.dmi' + var/obj/effect/overlay/closet_door/door_obj + var/is_animating_door = FALSE + var/door_anim_squish = 0.30 + var/door_anim_angle = 136 + var/door_hinge = -6.5 + var/door_anim_time = 2.0 // set to 0 to make the door not animate at all + +/obj/structure/closet/proc/animate_door(closing = FALSE) + if(!door_anim_time) + return + if(!door_obj) door_obj = new + vis_contents |= door_obj + door_obj.icon = icon + door_obj.icon_state = "[icon_door || icon_state]_door" + is_animating_door = TRUE + var/num_steps = door_anim_time / world.tick_lag + for(var/I in 0 to num_steps) + var/angle = door_anim_angle * (closing ? 1 - (I/num_steps) : (I/num_steps)) + var/matrix/M = get_door_transform(angle) + var/door_state = angle >= 90 ? "[icon_door_override ? icon_door : icon_state]_back" : "[icon_door || icon_state]_door" + var/door_layer = angle >= 90 ? FLOAT_LAYER : ABOVE_MOB_LAYER + + if(I == 0) + door_obj.transform = M + door_obj.icon_state = door_state + door_obj.layer = door_layer + else if(I == 1) + animate(door_obj, transform = M, icon_state = door_state, layer = door_layer, time = world.tick_lag, flags = ANIMATION_END_NOW) + else + animate(transform = M, icon_state = door_state, layer = door_layer, time = world.tick_lag) + addtimer(CALLBACK(src,.proc/end_door_animation),door_anim_time,TIMER_UNIQUE|TIMER_OVERRIDE) + +/obj/structure/closet/proc/end_door_animation() + is_animating_door = FALSE + vis_contents -= door_obj + update_appearance() + COMPILE_OVERLAYS(src) + +/obj/structure/closet/proc/get_door_transform(angle) + var/matrix/M = matrix() + M.Translate(-door_hinge, 0) + M.Multiply(matrix(cos(angle), 0, 0, -sin(angle) * door_anim_squish, 1, 0)) + M.Translate(door_hinge, 0) + return M + +//////////////////////////ANIM OVERRIDES +/obj/structure/closet/body_bag + door_anim_time = 0 + +/obj/structure/closet/cardboard + door_anim_time = 0 + +/obj/structure/closet/cabinet + door_anim_time = 0 + +/obj/structure/closet/acloset + door_anim_time = 0 + +/obj/structure/closet/secure_closet/bar + door_anim_time = 0 + +/obj/structure/closet/secure_closet/freezer + door_anim_squish = 0.22 + door_anim_angle = 123 + door_anim_time = 2.50 + +/obj/structure/closet/secure_closet/personal/cabinet + door_anim_time = 0 + +/obj/structure/closet/secure_closet/detective + door_anim_time = 0 + +/obj/structure/closet/crate + door_anim_time = 0 diff --git a/modular_skyrat/modules/animated_doors/code/overlays.dm b/modular_skyrat/modules/animated_doors/code/overlays.dm new file mode 100644 index 00000000000..e37ad0cbb4d --- /dev/null +++ b/modular_skyrat/modules/animated_doors/code/overlays.dm @@ -0,0 +1,6 @@ +/obj/effect/overlay/closet_door + anchored = TRUE + plane = FLOAT_PLANE + layer = FLOAT_LAYER + vis_flags = VIS_INHERIT_ID + appearance_flags = KEEP_TOGETHER | LONG_GLIDE | PIXEL_SCALE diff --git a/modular_skyrat/modules/bluespace_locker/code/game/objects/structures/crates_lockers/bluespace_locker.dm b/modular_skyrat/modules/bluespace_locker/code/game/objects/structures/crates_lockers/bluespace_locker.dm index 627a58bdd97..5686ff1a1ac 100644 --- a/modular_skyrat/modules/bluespace_locker/code/game/objects/structures/crates_lockers/bluespace_locker.dm +++ b/modular_skyrat/modules/bluespace_locker/code/game/objects/structures/crates_lockers/bluespace_locker.dm @@ -95,7 +95,7 @@ var/obj/structure/closet/other = get_other_locker() if(!other) other = src - var/mutable_appearance/masked_icon = mutable_appearance('modular_skyrat/modules/bluespace_locker/icons/obj/closet.dmi', "bluespace_locker_mask") + var/mutable_appearance/masked_icon = mutable_appearance('modular_skyrat/master_files/icons/obj/closet.dmi', "bluespace_locker_mask") masked_icon.appearance_flags = KEEP_TOGETHER var/mutable_appearance/masking_icon = mutable_appearance(other.icon, other.icon_state) masking_icon.blend_mode = BLEND_MULTIPLY diff --git a/modular_skyrat/modules/bluespace_locker/icons/obj/closet.dmi b/modular_skyrat/modules/bluespace_locker/icons/obj/closet.dmi deleted file mode 100644 index d48ff477310..00000000000 Binary files a/modular_skyrat/modules/bluespace_locker/icons/obj/closet.dmi and /dev/null differ diff --git a/modular_skyrat/modules/brigoff/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/modular_skyrat/modules/brigoff/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 147fcb1e83e..abe025d01ce 100644 --- a/modular_skyrat/modules/brigoff/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/modular_skyrat/modules/brigoff/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -1,7 +1,8 @@ /obj/structure/closet/secure_closet/brigoff - icon = 'modular_skyrat/modules/brigoff/icons/lockers/closet.dmi' + icon = 'modular_skyrat/master_files/icons/obj/closet.dmi' name = "corrections officer riot gear" icon_state = "riot" + door_anim_time = 0 //CONVERT THESE DOORS YOU LAZY ASSHATS /obj/structure/closet/secure_closet/brigoff/PopulateContents() ..() diff --git a/modular_skyrat/modules/brigoff/icons/lockers/closet.dmi b/modular_skyrat/modules/brigoff/icons/lockers/closet.dmi deleted file mode 100644 index 35e2cdb3f57..00000000000 Binary files a/modular_skyrat/modules/brigoff/icons/lockers/closet.dmi and /dev/null differ diff --git a/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_representative.dm b/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_representative.dm index de7dab6fe5a..b78b6f14a3e 100644 --- a/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_representative.dm +++ b/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_representative.dm @@ -127,7 +127,8 @@ name = "\proper nanotrasen representative's locker" req_access = list(ACCESS_CAPTAIN, ACCESS_CENT_GENERAL) icon_state = "cc" - icon = 'modular_skyrat/modules/aesthetics/closet/closet.dmi' + icon = 'modular_skyrat/master_files/icons/obj/closet.dmi' + door_anim_time = 0 //CONVERT THESE DOORS YOU LAZY ASSHATS /obj/structure/closet/secure_closet/nanotrasen_representative/station/PopulateContents() ..() diff --git a/modular_skyrat/modules/sec_haul/code/peacekeeper/peacekeeper_lockers.dm b/modular_skyrat/modules/sec_haul/code/peacekeeper/peacekeeper_lockers.dm deleted file mode 100644 index 7909e78380c..00000000000 --- a/modular_skyrat/modules/sec_haul/code/peacekeeper/peacekeeper_lockers.dm +++ /dev/null @@ -1,17 +0,0 @@ -/obj/structure/closet/secure_closet/hos - icon = 'modular_skyrat/modules/sec_haul/icons/lockers/closet.dmi' - -/obj/structure/closet/secure_closet/warden - icon = 'modular_skyrat/modules/sec_haul/icons/lockers/closet.dmi' - -/obj/structure/closet/secure_closet/security - icon = 'modular_skyrat/modules/sec_haul/icons/lockers/closet.dmi' - -/obj/structure/closet/secure_closet/armory1 - icon = 'modular_skyrat/modules/sec_haul/icons/lockers/closet.dmi' - -/obj/structure/closet/secure_closet/armory2 - icon = 'modular_skyrat/modules/sec_haul/icons/lockers/closet.dmi' - -/obj/structure/closet/secure_closet/armory3 - icon = 'modular_skyrat/modules/sec_haul/icons/lockers/closet.dmi' diff --git a/modular_skyrat/modules/sec_haul/code/security_medic/security_medic.dm b/modular_skyrat/modules/sec_haul/code/security_medic/security_medic.dm index 9e768c37dec..1606d0fabff 100644 --- a/modular_skyrat/modules/sec_haul/code/security_medic/security_medic.dm +++ b/modular_skyrat/modules/sec_haul/code/security_medic/security_medic.dm @@ -74,8 +74,7 @@ /obj/structure/closet/secure_closet/security_medic name = "security medics's locker" req_access = list(ACCESS_SECURITY) - icon = 'modular_skyrat/modules/sec_haul/icons/lockers/closet.dmi' - icon_state = "secmed" + icon_state = "brig_phys" /obj/structure/closet/secure_closet/security_medic/PopulateContents() ..() diff --git a/modular_skyrat/modules/sec_haul/icons/lockers/closet.dmi b/modular_skyrat/modules/sec_haul/icons/lockers/closet.dmi deleted file mode 100644 index a3c359abed8..00000000000 Binary files a/modular_skyrat/modules/sec_haul/icons/lockers/closet.dmi and /dev/null differ diff --git a/tgstation.dme b/tgstation.dme index 0c4effa2436..3defbeaf183 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3860,6 +3860,8 @@ #include "modular_skyrat\modules\ambitions\code\mind.dm" #include "modular_skyrat\modules\ammo_workbench\code\ammo_workbench.dm" #include "modular_skyrat\modules\ammo_workbench\code\design_disks.dm" +#include "modular_skyrat\modules\animated_doors\code\closets.dm" +#include "modular_skyrat\modules\animated_doors\code\overlays.dm" #include "modular_skyrat\modules\antagonists\code\gamemodes.dm" #include "modular_skyrat\modules\antagonists\code\gang_things.dm" #include "modular_skyrat\modules\antagonists\eldritch_cult\knowledge\ash_lore_skyrat.dm" @@ -4407,7 +4409,6 @@ #include "modular_skyrat\modules\sec_haul\code\peacekeeper\peacekeeper_baton.dm" #include "modular_skyrat\modules\sec_haul\code\peacekeeper\peacekeeper_clothing.dm" #include "modular_skyrat\modules\sec_haul\code\peacekeeper\peacekeeper_hammer.dm" -#include "modular_skyrat\modules\sec_haul\code\peacekeeper\peacekeeper_lockers.dm" #include "modular_skyrat\modules\sec_haul\code\security_medic\secmed_clothes.dm" #include "modular_skyrat\modules\sec_haul\code\security_medic\security_medic.dm" #include "modular_skyrat\modules\sec_haul\code\security_sergeant\secseg_clothes.dm"