Skip to content

Commit

Permalink
PO can remove queens override again, bit by bit edition (#5143)
Browse files Browse the repository at this point in the history
# About the pull request
PO can perform a 20 seconds do_after to remove additional 20 seconds of
the lockdown.

# Explain why it's good for the game
You used to be able to remove lockdown completely if you perform a 3
minutes do_after, but it was lost during the port to new shuttle system.
Now it's back in another, better form! Gives marines a chance to remove
lockdown sooner if they control the cockpit. In best case scenario you
can remove the lock in 5 minutes.


# Testing Photographs and Procedure
<details>
<summary>Screenshots & Videos</summary>

Put screenshots and videos here with an empty line between the
screenshots and the `<details>` tags.

</details>


# Changelog
:cl: ihatethisengine
balance: PO can remove queens dropship override again.
/:cl:

---------

Co-authored-by: Drathek <[email protected]>
  • Loading branch information
ihatethisengine and Drulikar committed Dec 7, 2023
1 parent fae1705 commit 2e04468
Showing 1 changed file with 25 additions and 7 deletions.
32 changes: 25 additions & 7 deletions code/modules/shuttle/computers/dropship_computer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
unacidable = TRUE
exproof = TRUE
needs_power = FALSE
var/override_being_removed = FALSE

// Admin disabled
var/disabled = FALSE
Expand Down Expand Up @@ -143,15 +144,31 @@
to_chat(user, SPAN_NOTICE("\The [src] is not responsive"))
return

if(dropship_control_lost && skillcheck(user, SKILL_PILOT, SKILL_PILOT_EXPERT))
if(dropship_control_lost)
var/remaining_time = timeleft(door_control_cooldown) / 10
if(remaining_time > 60)
to_chat(user, SPAN_WARNING("The shuttle is not responding, try again in [remaining_time] seconds."))
to_chat(user, SPAN_WARNING("The shuttle is not responding due to an unauthorized access attempt. In large text it says the lockout will be automatically removed in [remaining_time] seconds."))
if(!skillcheck(user, SKILL_PILOT, SKILL_PILOT_EXPERT))
return
to_chat(user, SPAN_NOTICE("You start to remove the Queens override."))
if(!do_after(user, 3 MINUTES, INTERRUPT_ALL, BUSY_ICON_HOSTILE))
to_chat(user, SPAN_WARNING("You fail to remove the Queens override"))
if(user.action_busy || override_being_removed)
return
to_chat(user, SPAN_NOTICE("You start to remove the lockout."))
override_being_removed = TRUE
while(remaining_time > 20)
if(!do_after(user, 20 SECONDS, INTERRUPT_ALL|INTERRUPT_CHANGED_LYING, BUSY_ICON_HOSTILE, numticks = 20))
to_chat(user, SPAN_WARNING("You fail to remove the lockout!"))
override_being_removed = FALSE
return
if(!dropship_control_lost)
to_chat(user, SPAN_NOTICE("The lockout is already removed."))
break
remaining_time = timeleft(door_control_cooldown) / 10 - 20
if(remaining_time > 0)
to_chat(user, SPAN_NOTICE("You partially bypass the lockout, only [remaining_time] seconds left."))
door_control_cooldown = addtimer(CALLBACK(src, PROC_REF(remove_door_lock)), remaining_time SECONDS, TIMER_STOPPABLE|TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_NO_HASH_WAIT)
override_being_removed = FALSE
if(dropship_control_lost)
remove_door_lock()
to_chat(user, SPAN_NOTICE("You succesfully removed the lockout!"))
playsound(loc, 'sound/machines/terminal_success.ogg', KEYBOARD_SOUND_VOLUME, 1)

if(!shuttle.is_hijacked)
Expand Down Expand Up @@ -216,7 +233,7 @@
if(!dropship_control_lost)
dropship.control_doors("unlock", "all", TRUE)
dropship_control_lost = TRUE
door_control_cooldown = addtimer(CALLBACK(src, PROC_REF(remove_door_lock)), SHUTTLE_LOCK_COOLDOWN, TIMER_STOPPABLE)
door_control_cooldown = addtimer(CALLBACK(src, PROC_REF(remove_door_lock)), SHUTTLE_LOCK_COOLDOWN, TIMER_STOPPABLE|TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_NO_HASH_WAIT)
if(GLOB.almayer_orbital_cannon)
GLOB.almayer_orbital_cannon.is_disabled = TRUE
addtimer(CALLBACK(GLOB.almayer_orbital_cannon, TYPE_PROC_REF(/obj/structure/orbital_cannon, enable)), 10 MINUTES, TIMER_UNIQUE)
Expand Down Expand Up @@ -299,6 +316,7 @@
playsound(loc, 'sound/machines/terminal_success.ogg', KEYBOARD_SOUND_VOLUME, 1)
dropship_control_lost = FALSE
if(door_control_cooldown)
deltimer(door_control_cooldown)
door_control_cooldown = null

/obj/structure/machinery/computer/shuttle/dropship/flight/ui_data(mob/user)
Expand Down

0 comments on commit 2e04468

Please sign in to comment.