diff --git a/code/__DEFINES/door.dm b/code/__DEFINES/door.dm new file mode 100644 index 00000000000..198d38a3af6 --- /dev/null +++ b/code/__DEFINES/door.dm @@ -0,0 +1,18 @@ +// Door animation defines +#define DOOR_OPENING_ANIMATION "opening" +#define DOOR_CLOSING_ANIMATION "closing" +#define DOOR_DENY_ANIMATION "deny" + +// Door animation STEP defines +// These are used to mark points in the animtion when things in game should change +#define DOOR_OPENING_PASSABLE "opening_passable" +#define DOOR_OPENING_FINISHED "opening_finished" +#define DOOR_CLOSING_UNPASSABLE "closing_unpassable" +#define DOOR_CLOSING_FINISHED "closing_finished" + +#define AIRLOCK_OPENING_TRANSPARENT "airlock_opening_transparent" +#define AIRLOCK_OPENING_PASSABLE "airlock_opening_passable" +#define AIRLOCK_OPENING_FINISHED "airlock_opening_finished" +#define AIRLOCK_CLOSING_OPAQUE "airlock_closing_opaque" +#define AIRLOCK_CLOSING_UNPASSABLE "airlock_closing_unpassable" +#define AIRLOCK_CLOSING_FINISHED "airlock_closing_finished" diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm index 8049f08d8dc..584e862eb5d 100644 --- a/code/datums/wires/airlock.dm +++ b/code/datums/wires/airlock.dm @@ -126,7 +126,7 @@ A.update_appearance() if(WIRE_IDSCAN) // Pulse to disable emergency access and flash the red lights. if(A.hasPower() && A.density) - A.do_animate("deny") + A.run_animation(DOOR_DENY_ANIMATION) if(A.emergency) A.emergency = FALSE A.update_appearance() diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 67f069c062c..33465809f42 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -591,13 +591,13 @@ floorlight.pixel_y = 0 . += floorlight -/obj/machinery/door/airlock/do_animate(animation) +/obj/machinery/door/airlock/run_animation(animation) switch(animation) - if("opening") + if(DOOR_OPENING_ANIMATION) update_icon(ALL, AIRLOCK_OPENING) - if("closing") + if(DOOR_OPENING_ANIMATION) update_icon(ALL, AIRLOCK_CLOSING) - if("deny") + if(DOOR_DENY_ANIMATION) if(!machine_stat) update_icon(ALL, AIRLOCK_DENY) playsound(src,doorDeni,50,FALSE,3) @@ -607,6 +607,28 @@ if(airlock_state == AIRLOCK_DENY) update_icon(ALL, AIRLOCK_CLOSED) +/obj/machinery/door/airlock/animation_length(animation) + switch(animation) + if(DOOR_OPENING_ANIMATION) + return 0.6 SECONDS + if(DOOR_CLOSING_ANIMATION) + return 0.6 SECONDS + +/obj/machinery/door/airlock/animation_segment_delay(animation) + switch(animation) + if(AIRLOCK_OPENING_TRANSPARENT) + return 0.1 SECONDS + if(AIRLOCK_OPENING_PASSABLE) + return 0.5 SECONDS + if(AIRLOCK_OPENING_FINISHED) + return 0.6 SECONDS + if(AIRLOCK_CLOSING_UNPASSABLE) + return 0.2 SECONDS + if(AIRLOCK_CLOSING_OPAQUE) + return 0.5 SECONDS + if(AIRLOCK_CLOSING_FINISHED) + return 0.6 SECONDS + /obj/machinery/door/airlock/examine(mob/user) . = ..() if(closeOtherId) @@ -1234,18 +1256,21 @@ SEND_SIGNAL(src, COMSIG_AIRLOCK_OPEN, forced) operating = TRUE update_icon(ALL, AIRLOCK_OPENING, TRUE) - sleep(0.1 SECONDS) + var/transparent_delay = animation_segment_delay(AIRLOCK_OPENING_TRANSPARENT) + sleep(transparent_delay) set_opacity(0) if(multi_tile) filler.set_opacity(FALSE) update_freelook_sight() - sleep(0.4 SECONDS) + var/passable_delay = animation_segment_delay(AIRLOCK_OPENING_PASSABLE) - transparent_delay + sleep(passable_delay) set_density(FALSE) if(multi_tile) filler.set_density(FALSE) flags_1 &= ~PREVENT_CLICK_UNDER_1 air_update_turf(TRUE, FALSE) - sleep(0.1 SECONDS) + var/open_delay = animation_segment_delay(AIRLOCK_OPENING_FINISHED) - transparent_delay - passable_delay + sleep(open_delay) layer = OPEN_DOOR_LAYER update_icon(ALL, AIRLOCK_OPEN, TRUE) operating = FALSE @@ -1314,14 +1339,16 @@ filler.density = TRUE flags_1 |= PREVENT_CLICK_UNDER_1 air_update_turf(TRUE, TRUE) - sleep(0.1 SECONDS) + var/unpassable_delay = animation_segment_delay(AIRLOCK_CLOSING_UNPASSABLE) + sleep(unpassable_delay) if(!air_tight) set_density(TRUE) if(multi_tile) filler.density = TRUE flags_1 |= PREVENT_CLICK_UNDER_1 air_update_turf(TRUE, TRUE) - sleep(0.4 SECONDS) + var/opaque_delay = animation_segment_delay(AIRLOCK_CLOSING_OPAQUE) - unpassable_delay + sleep(opaque_delay) if(dangerous_close) crush() if(visible && !glass) @@ -1329,7 +1356,8 @@ if(multi_tile) filler.set_opacity(TRUE) update_freelook_sight() - sleep(0.1 SECONDS) + var/close_delay = animation_segment_delay(AIRLOCK_CLOSING_FINISHED) - unpassable_delay - opaque_delay + sleep(close_delay) update_icon(ALL, AIRLOCK_CLOSED, 1) operating = FALSE delayed_close_requested = FALSE diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index b1fec07f422..9298859b64b 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -3,7 +3,7 @@ name = "door" desc = "It opens and closes." icon = 'icons/obj/doors/doorint.dmi' - icon_state = "door1" + icon_state = "door_closed" base_icon_state = "door" opacity = TRUE density = TRUE @@ -24,6 +24,8 @@ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.1 active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.2 + /// The animation we're currently playing, if any + var/animation var/visible = TRUE var/operating = FALSE var/glass = FALSE @@ -252,7 +254,7 @@ if(requiresID() && check_access(I)) open() else - do_animate("deny") + run_animation(DOOR_DENY_ANIMATION) return /obj/machinery/door/Move() @@ -282,7 +284,7 @@ else if(requiresID() && allowed(user)) open() else - do_animate("deny") + run_animation(DOOR_DENY_ANIMATION) /obj/machinery/door/attack_hand(mob/user, list/modifiers) . = ..() @@ -310,7 +312,7 @@ close() return TRUE if(density) - do_animate("deny") + run_animation(DOOR_DENY_ANIMATION) /obj/machinery/door/allowed(mob/M) if(emergency) @@ -405,24 +407,67 @@ INVOKE_ASYNC(src, PROC_REF(open)) /obj/machinery/door/update_icon_state() - icon_state = "[base_icon_state][density]" - return ..() - -/obj/machinery/door/proc/do_animate(animation) + . = ..() switch(animation) - if("opening") + if(DOOR_OPENING_ANIMATION) if(panel_open) - flick("o_doorc0", src) + icon_state = "o_door_opening" else - flick("doorc0", src) - if("closing") + icon_state = "door_opening" + if(DOOR_CLOSING_ANIMATION) if(panel_open) - flick("o_doorc1", src) + icon_state = "o_door_closing" else - flick("doorc1", src) - if("deny") + icon_state = "door_closing" + if(DOOR_DENY_ANIMATION) if(!machine_stat) - flick("door_deny", src) + icon_state = "door_deny" + else + icon_state = "[base_icon_state]_[density ? "closed" : "open"]" + +/obj/machinery/door/update_overlays() + . = ..() + if(panel_open) + . += mutable_appearance(icon, "panel_open") + +/// Returns the delay to use for the passed in animation +/// We'll do our cleanup once the delay runs out +/obj/machinery/door/proc/animation_length(animation) + switch(animation) + if(DOOR_OPENING_ANIMATION) + return 0.6 SECONDS + if(DOOR_CLOSING_ANIMATION) + return 0.6 SECONDS + if(DOOR_DENY_ANIMATION) + return 0.3 SECONDS + +/// Returns the time required to hit particular points in an animation +/// Used to manage delays for opening/closing and such +/obj/machinery/door/proc/animation_segment_delay(animation) + switch(animation) + if(DOOR_OPENING_PASSABLE) + return 0.5 SECONDS + if(DOOR_OPENING_FINISHED) + return 0.6 SECONDS + if(DOOR_CLOSING_UNPASSABLE) + return 0.2 SECONDS + if(DOOR_CLOSING_FINISHED) + return 0.6 SECONDS + +/// Override this to do misc tasks on animation start +/obj/machinery/door/proc/animation_effects(animation) + return + +/// Used to start a new animation +/// Accepts the animation to start as an arg +/obj/machinery/door/proc/run_animation(animation) + set_animation(animation) + addtimer(CALLBACK(src, PROC_REF(set_animation), null), animation_length(animation), TIMER_UNIQUE|TIMER_OVERRIDE) + +// React to our animation changing +/obj/machinery/door/proc/set_animation(animation) + src.animation = animation + update_appearance() /// Public proc that simply handles opening the door. Returns TRUE if the door was opened, FALSE otherwise. /// Use argument "forced" in conjunction with try_to_force_door_open if you want/need additional checks depending on how sorely you need the door opened. @@ -433,12 +478,14 @@ return FALSE operating = TRUE use_energy(active_power_usage) - do_animate("opening") + run_animation(DOOR_OPENING_ANIMATION) set_opacity(0) - SLEEP_NOT_DEL(0.5 SECONDS) + var/passable_delay = animation_segment_delay(DOOR_OPENING_PASSABLE) + SLEEP_NOT_DEL(passable_delay) set_density(FALSE) flags_1 &= ~PREVENT_CLICK_UNDER_1 - SLEEP_NOT_DEL(0.5 SECONDS) + var/open_delay = animation_segment_delay(DOOR_OPENING_FINISHED) - passable_delay + SLEEP_NOT_DEL(open_delay) layer = initial(layer) update_appearance() set_opacity(0) @@ -470,12 +517,14 @@ operating = TRUE - do_animate("closing") + run_animation(DOOR_CLOSING_ANIMATION) layer = closingLayer - SLEEP_NOT_DEL(0.5 SECONDS) + var/unpassable_delay = animation_segment_delay(DOOR_CLOSING_UNPASSABLE) + SLEEP_NOT_DEL(unpassable_delay) set_density(TRUE) flags_1 |= PREVENT_CLICK_UNDER_1 - SLEEP_NOT_DEL(0.5 SECONDS) + var/close_delay = animation_segment_delay(DOOR_CLOSING_FINISHED) - unpassable_delay + SLEEP_NOT_DEL(close_delay) update_appearance() if(visible && !glass) set_opacity(1) @@ -556,6 +605,26 @@ /obj/machinery/door/get_dumping_location() return null +/obj/machinery/door/morgue/animation_length(animation) + switch(animation) + if(DOOR_OPENING_ANIMATION) + return 1.5 SECONDS + if(DOOR_CLOSING_ANIMATION) + return 1.5 SECONDS + if(DOOR_DENY_ANIMATION) + return 0.1 SECONDS + +/obj/machinery/door/morgue/animation_segment_delay(animation) + switch(animation) + if(DOOR_OPENING_PASSABLE) + return 1.4 SECONDS + if(DOOR_OPENING_FINISHED) + return 1.5 SECONDS + if(DOOR_CLOSING_UNPASSABLE) + return 0.2 SECONDS + if(DOOR_CLOSING_FINISHED) + return 1.5 SECONDS + /obj/machinery/door/proc/lock() return diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 30deaef9183..1de24c94a02 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -609,16 +609,37 @@ if(active) addtimer(CALLBACK(src, PROC_REF(correct_state)), 2 SECONDS, TIMER_UNIQUE) -/obj/machinery/door/firedoor/do_animate(animation) - switch(animation) - if("opening") - flick("[base_icon_state]_opening", src) - if("closing") - flick("[base_icon_state]_closing", src) - /obj/machinery/door/firedoor/update_icon_state() . = ..() - icon_state = "[base_icon_state]_[density ? "closed" : "open"]" + switch(animation) + if(DOOR_OPENING_ANIMATION) + icon_state = "[base_icon_state]_opening" + if(DOOR_CLOSING_ANIMATION) + icon_state = "[base_icon_state]_closing" + if(DOOR_DENY_ANIMATION) + icon_state = "[base_icon_state]_deny" + else + icon_state = "[base_icon_state]_[density ? "closed" : "open"]" + +/obj/machinery/door/firedoor/animation_length(animation) + switch(animation) + if(DOOR_OPENING_ANIMATION) + return 1.2 SECONDS + if(DOOR_CLOSING_ANIMATION) + return 1.2 SECONDS + if(DOOR_DENY_ANIMATION) + return 0.3 SECONDS + +/obj/machinery/door/firedoor/animation_segment_delay(animation) + switch(animation) + if(DOOR_OPENING_PASSABLE) + return 1.0 SECONDS + if(DOOR_OPENING_FINISHED) + return 1.2 SECONDS + if(DOOR_CLOSING_UNPASSABLE) + return 0.2 SECONDS + if(DOOR_CLOSING_FINISHED) + return 1.2 SECONDS /obj/machinery/door/firedoor/update_overlays() . = ..() diff --git a/code/game/machinery/doors/passworddoor.dm b/code/game/machinery/doors/passworddoor.dm index df8f7fa936a..bccc243381b 100644 --- a/code/game/machinery/doors/passworddoor.dm +++ b/code/game/machinery/doors/passworddoor.dm @@ -62,22 +62,44 @@ if(access_bypass || ask_for_pass(user)) open() else - do_animate("deny") + run_animation(DOOR_DENY_ANIMATION) /obj/machinery/door/password/update_icon_state() . = ..() - icon_state = density ? "closed" : "open" - -/obj/machinery/door/password/do_animate(animation) + //Deny animation would be nice to have. switch(animation) - if("opening") - flick("opening", src) + if(DOOR_OPENING_ANIMATION) + icon_state = "opening" + if(DOOR_CLOSING_ANIMATION) + icon_state = "closing" + else + icon_state = density ? "closed" : "open" + +/obj/machinery/door/password/animation_length(animation) + switch(animation) + if(DOOR_OPENING_ANIMATION) + return 1.1 SECONDS + if(DOOR_CLOSING_ANIMATION) + return 1.1 SECONDS + +/obj/machinery/door/password/animation_segment_delay(animation) + switch(animation) + if(DOOR_OPENING_PASSABLE) + return 0.5 SECONDS + if(DOOR_OPENING_FINISHED) + return 1.1 SECONDS + if(DOOR_CLOSING_UNPASSABLE) + return 0.2 SECONDS + if(DOOR_CLOSING_FINISHED) + return 1.1 SECONDS + +/obj/machinery/door/password/animation_effects(animation) + switch(animation) + if(DOOR_OPENING_ANIMATION) playsound(src, door_open, 50, TRUE) - if("closing") - flick("closing", src) + if(DOOR_CLOSING_ANIMATION) playsound(src, door_close, 50, TRUE) - if("deny") - //Deny animation would be nice to have. + if(DOOR_DENY_ANIMATION) playsound(src, door_deny, 30, TRUE) /obj/machinery/door/password/proc/ask_for_pass(mob/user) diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index 5e90d9dac18..ab18a63361c 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -211,18 +211,42 @@ return FALSE return ..() -/obj/machinery/door/poddoor/do_animate(animation) - switch(animation) - if("opening") - flick("opening", src) - playsound(src, animation_sound, 50, TRUE) - if("closing") - flick("closing", src) - playsound(src, animation_sound, 50, TRUE) - /obj/machinery/door/poddoor/update_icon_state() . = ..() - icon_state = density ? "closed" : "open" + switch(animation) + if(DOOR_OPENING_ANIMATION) + icon_state = "opening" + if(DOOR_CLOSING_ANIMATION) + icon_state = "closing" + if(DOOR_DENY_ANIMATION) + icon_state = "deny" + else + icon_state = density ? "closed" : "open" + +/obj/machinery/door/poddoor/animation_length(animation) + switch(animation) + if(DOOR_OPENING_ANIMATION) + return 1.1 SECONDS + if(DOOR_CLOSING_ANIMATION) + return 1.1 SECONDS + +/obj/machinery/door/poddoor/animation_segment_delay(animation) + switch(animation) + if(DOOR_OPENING_PASSABLE) + return 0.5 SECONDS + if(DOOR_OPENING_FINISHED) + return 1.1 SECONDS + if(DOOR_CLOSING_UNPASSABLE) + return 0.2 SECONDS + if(DOOR_CLOSING_FINISHED) + return 1.1 SECONDS + +/obj/machinery/door/poddoor/animation_effects(animation) + switch(animation) + if(DOOR_OPENING_ANIMATION) + playsound(src, animation_sound, 50, TRUE) + if(DOOR_CLOSING_ANIMATION) + playsound(src, animation_sound, 50, TRUE) /obj/machinery/door/poddoor/attack_alien(mob/living/carbon/alien/adult/user, list/modifiers) if(density & !(resistance_flags & INDESTRUCTIBLE)) diff --git a/code/game/machinery/doors/shutters.dm b/code/game/machinery/doors/shutters.dm index 0df6024ca82..56e2f5a9743 100644 --- a/code/game/machinery/doors/shutters.dm +++ b/code/game/machinery/doors/shutters.dm @@ -11,6 +11,24 @@ recipe_type = /datum/crafting_recipe/shutters animation_sound = 'sound/machines/shutter.ogg' +/obj/machinery/door/poddoor/shutters/animation_length(animation) + switch(animation) + if(DOOR_OPENING_ANIMATION) + return 1.388 SECONDS + if(DOOR_CLOSING_ANIMATION) + return 1.388 SECONDS + +/obj/machinery/door/poddoor/shutters/animation_segment_delay(animation) + switch(animation) + if(DOOR_OPENING_PASSABLE) + return 0.76 SECONDS + if(DOOR_OPENING_FINISHED) + return 1.388 SECONDS + if(DOOR_CLOSING_UNPASSABLE) + return 0.152 SECONDS + if(DOOR_CLOSING_FINISHED) + return 1.388 SECONDS + /obj/machinery/door/poddoor/shutters/preopen icon_state = "open" density = FALSE diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 828177f90a8..0c897c68096 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -76,7 +76,15 @@ /obj/machinery/door/window/update_icon_state() . = ..() - icon_state = "[base_state][density ? null : "open"]" + switch(animation) + if(DOOR_OPENING_ANIMATION) + icon_state = "[base_state]opening" + if(DOOR_CLOSING_ANIMATION) + icon_state = "[base_state]closing" + if(DOOR_DENY_ANIMATION) + icon_state = "[base_state]deny" + else + icon_state = "[base_state][density ? null : "open"]" if(hasPower() && unres_sides) set_light(l_range = 2, l_power = 1) @@ -84,6 +92,24 @@ set_light(l_range = 0) +/obj/machinery/door/window/animation_length(animation) + switch(animation) + if(DOOR_OPENING_ANIMATION) + return 0.9 SECONDS + if(DOOR_CLOSING_ANIMATION) + return 0.9 SECONDS + +/obj/machinery/door/window/animation_segment_delay(animation) + switch(animation) + if(DOOR_OPENING_PASSABLE) + return 0.7 SECONDS + if(DOOR_OPENING_FINISHED) + return 0.9 SECONDS + if(DOOR_CLOSING_UNPASSABLE) + return 0.2 SECONDS + if(DOOR_CLOSING_FINISHED) + return 0.9 SECONDS + /obj/machinery/door/window/update_overlays() . = ..() @@ -135,7 +161,7 @@ if(allowed(occupant)) open_and_close() return - do_animate("deny") + run_animation(DOOR_DENY_ANIMATION) return if(!SSticker) return @@ -159,7 +185,7 @@ open_and_close() else - do_animate("deny") + run_animation(DOOR_DENY_ANIMATION) return @@ -218,11 +244,13 @@ if(!operating) //in case of emag operating = TRUE - do_animate("opening") + run_animation(DOOR_OPENING_ANIMATION) playsound(src, 'sound/machines/windowdoor.ogg', 100, TRUE) - icon_state ="[base_state]open" - sleep(1 SECONDS) + var/passable_delay = animation_segment_delay(DOOR_OPENING_PASSABLE) + sleep(passable_delay) set_density(FALSE) + var/open_delay = animation_segment_delay(DOOR_OPENING_FINISHED) - passable_delay + sleep(open_delay) air_update_turf(TRUE, FALSE) update_freelook_sight() @@ -261,14 +289,15 @@ return FALSE operating = TRUE - do_animate("closing") + run_animation(DOOR_CLOSING_ANIMATION) playsound(src, 'sound/machines/windowdoor.ogg', 100, TRUE) - icon_state = base_state - + var/unpassable_delay = animation_segment_delay(DOOR_CLOSING_UNPASSABLE) + sleep(unpassable_delay) set_density(TRUE) air_update_turf(TRUE, TRUE) update_freelook_sight() - sleep(1 SECONDS) + var/close_delay = animation_segment_delay(DOOR_CLOSING_FINISHED) - unpassable_delay + sleep(close_delay) operating = FALSE return TRUE @@ -439,15 +468,6 @@ else to_chat(user, span_warning("The door's motors resist your efforts to force it!")) -/obj/machinery/door/window/do_animate(animation) - switch(animation) - if("opening") - flick("[base_state]opening", src) - if("closing") - flick("[base_state]closing", src) - if("deny") - flick("[base_state]deny", src) - /obj/machinery/door/window/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) switch(the_rcd.mode) if(RCD_DECONSTRUCT) diff --git a/code/game/objects/items/puzzle_pieces.dm b/code/game/objects/items/puzzle_pieces.dm index 847254d2785..7e7076e842c 100644 --- a/code/game/objects/items/puzzle_pieces.dm +++ b/code/game/objects/items/puzzle_pieces.dm @@ -86,6 +86,18 @@ puzzle_id = null //honestly these cant be closed anyway and im not fucking around with door code anymore INVOKE_ASYNC(src, PROC_REF(try_puzzle_open), null) +/obj/machinery/door/puzzle/animation_length(animation) + switch(animation) + if(DOOR_OPENING_ANIMATION) + return 1.0 SECONDS + +/obj/machinery/door/puzzle/animation_segment_delay(animation) + switch(animation) + if(DOOR_OPENING_PASSABLE) + return 0.8 SECONDS + if(DOOR_OPENING_FINISHED) + return 1.0 SECONDS + /obj/machinery/door/puzzle/Bumped(atom/movable/AM) return !density && ..() diff --git a/code/modules/mapfluff/ruins/icemoonruin_code/library.dm b/code/modules/mapfluff/ruins/icemoonruin_code/library.dm index 1de9ce2dc72..2f3b6381f04 100644 --- a/code/modules/mapfluff/ruins/icemoonruin_code/library.dm +++ b/code/modules/mapfluff/ruins/icemoonruin_code/library.dm @@ -5,6 +5,18 @@ puzzle_id = "library" open_message = "The door opens with a loud creak." +/obj/machinery/door/puzzle/keycard/library/animation_length(animation) + switch(animation) + if(DOOR_OPENING_ANIMATION) + return 1.2 SECONDS + +/obj/machinery/door/puzzle/keycard/library/animation_segment_delay(animation) + switch(animation) + if(DOOR_OPENING_PASSABLE) + return 1.0 SECONDS + if(DOOR_OPENING_FINISHED) + return 1.2 SECONDS + /obj/item/keycard/library name = "golden key" desc = "A dull, golden key." diff --git a/icons/obj/doors/blastdoor.dmi b/icons/obj/doors/blastdoor.dmi index 9457690cda3..9c7bec103ce 100644 Binary files a/icons/obj/doors/blastdoor.dmi and b/icons/obj/doors/blastdoor.dmi differ diff --git a/icons/obj/doors/doorfireglass.dmi b/icons/obj/doors/doorfireglass.dmi index 250b5ca833a..83156ae4351 100644 Binary files a/icons/obj/doors/doorfireglass.dmi and b/icons/obj/doors/doorfireglass.dmi differ diff --git a/icons/obj/doors/doormorgue.dmi b/icons/obj/doors/doormorgue.dmi index c0ed1147325..381e5c3385e 100644 Binary files a/icons/obj/doors/doormorgue.dmi and b/icons/obj/doors/doormorgue.dmi differ diff --git a/icons/obj/doors/puzzledoor/danger.dmi b/icons/obj/doors/puzzledoor/danger.dmi index 89d19131cc1..ed78272037e 100644 Binary files a/icons/obj/doors/puzzledoor/danger.dmi and b/icons/obj/doors/puzzledoor/danger.dmi differ diff --git a/icons/obj/doors/puzzledoor/default.dmi b/icons/obj/doors/puzzledoor/default.dmi index 49a92061395..685fc448bde 100644 Binary files a/icons/obj/doors/puzzledoor/default.dmi and b/icons/obj/doors/puzzledoor/default.dmi differ diff --git a/icons/obj/doors/puzzledoor/wood.dmi b/icons/obj/doors/puzzledoor/wood.dmi index f2b53e85739..58717aacf1e 100644 Binary files a/icons/obj/doors/puzzledoor/wood.dmi and b/icons/obj/doors/puzzledoor/wood.dmi differ diff --git a/icons/obj/doors/shutters.dmi b/icons/obj/doors/shutters.dmi index 1cc727cdbf7..5fd2b2a8213 100644 Binary files a/icons/obj/doors/shutters.dmi and b/icons/obj/doors/shutters.dmi differ diff --git a/icons/obj/doors/shutters_radiation.dmi b/icons/obj/doors/shutters_radiation.dmi index 2e70b24a4aa..37b8cf72cbc 100644 Binary files a/icons/obj/doors/shutters_radiation.dmi and b/icons/obj/doors/shutters_radiation.dmi differ diff --git a/icons/obj/doors/shutters_window.dmi b/icons/obj/doors/shutters_window.dmi index fcf8af5b94f..b86fe675366 100644 Binary files a/icons/obj/doors/shutters_window.dmi and b/icons/obj/doors/shutters_window.dmi differ diff --git a/icons/obj/doors/windoor.dmi b/icons/obj/doors/windoor.dmi index 86893eb9c45..117cd78e134 100644 Binary files a/icons/obj/doors/windoor.dmi and b/icons/obj/doors/windoor.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 5663065a768..2ea00d40eba 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -84,6 +84,7 @@ #include "code\__DEFINES\DNA.dm" #include "code\__DEFINES\dna_infuser_defines.dm" #include "code\__DEFINES\do_afters.dm" +#include "code\__DEFINES\door.dm" #include "code\__DEFINES\drone.dm" #include "code\__DEFINES\dye_keys.dm" #include "code\__DEFINES\dynamic.dm"