pushies.
This commit is contained in:
@@ -697,6 +697,38 @@
|
||||
. += "<span class='notice'>Alt-click [src] to [ secondsElectrified ? "un-electrify" : "permanently electrify"] it.</span>"
|
||||
. += "<span class='notice'>Ctrl-Shift-click [src] to [ emergency ? "disable" : "enable"] emergency access.</span>"
|
||||
|
||||
/obj/machinery/door/airlock/add_context(atom/source, list/context, obj/item/held_item, mob/living/user)
|
||||
. = ..()
|
||||
|
||||
switch (held_item?.tool_behaviour)
|
||||
if (TOOL_CROWBAR)
|
||||
if (panel_open)
|
||||
if (security_level == AIRLOCK_SECURITY_PLASTEEL_O_S || security_level == AIRLOCK_SECURITY_PLASTEEL_I_S)
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Remove shielding"
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
else if (should_try_removing_electronics())
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Remove electronics"
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
// Not always contextually true, but is contextually false in ways that make gameplay interesting.
|
||||
// For example, trying to pry open an airlock, only for the bolts to be down and the lights off.
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Pry open"
|
||||
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
if (TOOL_WELDER)
|
||||
context[SCREENTIP_CONTEXT_RMB] = "Weld shut"
|
||||
|
||||
if (panel_open)
|
||||
switch (security_level)
|
||||
if (AIRLOCK_SECURITY_METAL, AIRLOCK_SECURITY_PLASTEEL_I, AIRLOCK_SECURITY_PLASTEEL_O)
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Cut shielding"
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Repair"
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
return .
|
||||
|
||||
/obj/machinery/door/airlock/attack_ai(mob/user)
|
||||
if(!src.canAIControl(user))
|
||||
if(src.canAIHack())
|
||||
@@ -1024,6 +1056,31 @@
|
||||
return
|
||||
return !operating && density
|
||||
|
||||
/// Returns if a crowbar would remove the airlock electronics
|
||||
/obj/machinery/door/airlock/proc/should_try_removing_electronics()
|
||||
if (security_level != 0)
|
||||
return FALSE
|
||||
|
||||
if (!panel_open)
|
||||
return FALSE
|
||||
|
||||
if (obj_flags & EMAGGED)
|
||||
return TRUE
|
||||
|
||||
if (!density)
|
||||
return FALSE
|
||||
|
||||
if (!welded)
|
||||
return FALSE
|
||||
|
||||
if (hasPower())
|
||||
return FALSE
|
||||
|
||||
if (locked)
|
||||
return FALSE
|
||||
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/door/airlock/try_to_crowbar(obj/item/I, mob/living/user)
|
||||
var/beingcrowbarred = null
|
||||
if(I.tool_behaviour == TOOL_CROWBAR)
|
||||
@@ -1042,9 +1099,9 @@
|
||||
charge.forceMove(get_turf(user))
|
||||
charge = null
|
||||
return
|
||||
if(beingcrowbarred && panel_open && ((obj_flags & EMAGGED) || (density && welded && !operating && !hasPower() && !locked)))
|
||||
user.visible_message("[user] removes the electronics from the airlock assembly.", \
|
||||
"<span class='notice'>You start to remove electronics from the airlock assembly...</span>")
|
||||
if(beingcrowbarred && should_try_removing_electronics() && !operating)
|
||||
user.visible_message(span_notice("[user] removes the electronics from the airlock assembly."), \
|
||||
span_notice("You start to remove electronics from the airlock assembly..."))
|
||||
if(I.use_tool(src, user, 40, volume=100))
|
||||
deconstruct(TRUE, user)
|
||||
return
|
||||
|
||||
@@ -55,6 +55,13 @@
|
||||
if(!poddoor)
|
||||
. += "<span class='notice'>Its maintenance panel is <b>screwed</b> in place.</span>"
|
||||
|
||||
/obj/machinery/door/add_context(atom/source, list/context, obj/item/held_item, mob/living/user)
|
||||
. = ..()
|
||||
|
||||
if (isnull(held_item))
|
||||
context[SCREENTIP_CONTEXT_LMB] = density ? "Open" : "Close"
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
/obj/machinery/door/check_access_list(list/access_list)
|
||||
if(red_alert_access && GLOB.security_level >= SEC_LEVEL_RED)
|
||||
return TRUE
|
||||
@@ -65,6 +72,7 @@
|
||||
set_init_door_layer()
|
||||
update_freelook_sight()
|
||||
air_update_turf(1)
|
||||
register_context()
|
||||
GLOB.airlocks += src
|
||||
spark_system = new /datum/effect_system/spark_spread
|
||||
spark_system.set_up(2, 1, src)
|
||||
|
||||
@@ -46,6 +46,44 @@
|
||||
else
|
||||
. += "<span class='notice'>The bolt locks have been <i>unscrewed</i>, but the bolts themselves are still <b>wrenched</b> to the floor.</span>"
|
||||
|
||||
/obj/machinery/door/firedoor/add_context(atom/source, list/context, obj/item/held_item, mob/living/user)
|
||||
. = ..()
|
||||
|
||||
if (isnull(held_item))
|
||||
if (density)
|
||||
// This should be LMB/RMB one day
|
||||
if (user.a_intent == INTENT_HARM)
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Knock"
|
||||
else
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Bash"
|
||||
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
else
|
||||
return .
|
||||
|
||||
switch (held_item.tool_behaviour)
|
||||
if (TOOL_CROWBAR)
|
||||
if (density)
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Close"
|
||||
else if (!welded)
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Hold open"
|
||||
context[SCREENTIP_CONTEXT_RMB] = "Open permanently"
|
||||
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
if (TOOL_WELDER)
|
||||
context[SCREENTIP_CONTEXT_LMB] = welded ? "Unweld shut" : "Weld shut"
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
if (TOOL_WRENCH)
|
||||
if (welded && !boltslocked)
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Unfasten bolts"
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
if (TOOL_SCREWDRIVER)
|
||||
if (welded)
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Unlock bolts"
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
return .
|
||||
|
||||
/obj/machinery/door/firedoor/proc/CalculateAffectingAreas()
|
||||
remove_from_areas()
|
||||
affecting_areas = get_adjacent_open_areas(src) | get_base_area(src)
|
||||
|
||||
@@ -51,6 +51,12 @@
|
||||
myarea = get_base_area(src)
|
||||
LAZYADD(myarea.firealarms, src)
|
||||
|
||||
AddElement( \
|
||||
/datum/element/contextual_screentip_bare_hands, \
|
||||
lmb_text = "Turn on", \
|
||||
rmb_text = "Turn off", \
|
||||
)
|
||||
|
||||
/obj/machinery/firealarm/Destroy()
|
||||
myarea.firereset(src)
|
||||
LAZYREMOVE(myarea.firealarms, src)
|
||||
|
||||
Reference in New Issue
Block a user