Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.

Commit 873299f

Browse files
authored
Transfer votes (#22888)
* Transfer vote * Fixes inheritance * Okay, maybe the original proc was better * Var
1 parent 312f01b commit 873299f

File tree

3 files changed

+53
-2
lines changed

3 files changed

+53
-2
lines changed

code/controllers/subsystem/shuttle.dm

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,8 @@ SUBSYSTEM_DEF(shuttle)
140140
var/shuttle_loading
141141
/// Did the supermatter start a cascade event?
142142
var/supermatter_cascade = FALSE
143+
/// Has any transfer votes been started, ongoing, or finished?
144+
var/transfer_votes_done = 0
143145

144146
/datum/controller/subsystem/shuttle/Initialize(timeofday)
145147
order_number = rand(1, 9000)
@@ -239,8 +241,16 @@ SUBSYSTEM_DEF(shuttle)
239241
priority_announce("Catastrophic casualties detected: crisis shuttle protocols activated - jamming recall signals across all frequencies.")
240242
emergency.request(null, set_coefficient = ALERT_COEFF_AUTOEVAC_CRITICAL)
241243
return
242-
if(world.time >= 2 HOURS) //auto call the shuttle after 2 hours
243-
emergency_no_recall = TRUE //no recalling after 2 hours
244+
if(world.time >= 2 HOURS && transfer_votes_done < 1)
245+
transfer_votes_done += 1
246+
if(EMERGENCY_IDLE_OR_RECALLED)
247+
SSvote.initiate_vote(/datum/vote/transfer_vote, "automatic crew transfer", forced = TRUE)
248+
if(world.time >= 2.5 HOURS && transfer_votes_done < 2)
249+
transfer_votes_done += 1
250+
if(EMERGENCY_IDLE_OR_RECALLED)
251+
SSvote.initiate_vote(/datum/vote/transfer_vote, "automatic crew transfer", forced = TRUE)
252+
if(world.time >= 3 HOURS) //auto call the shuttle after 3 hours
253+
emergency_no_recall = TRUE //no recalling after 3 hours
244254
if(EMERGENCY_IDLE_OR_RECALLED)
245255
var/msg = "Automatically dispatching shuttle due to lack of shift end response."
246256
message_admins(msg)

code/datums/votes/transfer_vote.dm

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#define CHOICE_CALL_SHUTTLE "Call emergency shuttle"
2+
#define CHOICE_NO_CALL_SHUTTLE "Don't call emergency shuttle"
3+
4+
/datum/vote/transfer_vote
5+
name = "Transfer"
6+
message = "Vote for whether the emergency shuttle should be called for crew transfer!"
7+
default_choices = list(
8+
CHOICE_CALL_SHUTTLE,
9+
CHOICE_NO_CALL_SHUTTLE
10+
)
11+
player_startable = FALSE
12+
var/transfer_percentage = 60
13+
var/result
14+
15+
/datum/vote/transfer_vote/New()
16+
. = ..()
17+
if(world.time >= 2.5 HOURS)
18+
transfer_percentage = 80
19+
20+
/datum/vote/transfer_vote/get_vote_result(list/non_voters)
21+
RETURN_TYPE(/list)
22+
var/list/winners = list()
23+
result = choices_by_ckey.len>0 ? (choices[CHOICE_NO_CALL_SHUTTLE]/(choices[CHOICE_CALL_SHUTTLE]+choices[CHOICE_NO_CALL_SHUTTLE]))*100 : 0
24+
if(result<=transfer_percentage)
25+
winners += CHOICE_CALL_SHUTTLE
26+
else
27+
winners += CHOICE_NO_CALL_SHUTTLE
28+
return winners
29+
30+
/datum/vote/transfer_vote/finalize_vote(winning_option)
31+
if(winning_option == CHOICE_CALL_SHUTTLE)
32+
priority_announce("Dispatching shuttle for scheduled crew transfer.")
33+
message_admins("Shuttle called after successful transfer vote ([result]% voted to stay, requirement is [transfer_percentage]%)")
34+
SSshuttle.emergency_no_recall = TRUE //No, you aren't allowed to reverse a vote
35+
SSshuttle.emergency.request(null)
36+
else
37+
message_admins("Transfer vote failed ([result]% voted to stay, requirement is [transfer_percentage]%)")
38+
39+
#undef CHOICE_CALL_SHUTTLE
40+
#undef CHOICE_NO_CALL_SHUTTLE

yogstation.dme

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -924,6 +924,7 @@
924924
#include "code\datums\votes\map_vote.dm"
925925
#include "code\datums\votes\restart_vote.dm"
926926
#include "code\datums\votes\rock_the_vote.dm"
927+
#include "code\datums\votes\transfer_vote.dm"
927928
#include "code\datums\votes\wanna_do_vote.dm"
928929
#include "code\datums\weather\weather.dm"
929930
#include "code\datums\weather\weather_types\acid_rain.dm"

0 commit comments

Comments
 (0)