Prevents mindless candidates for mutiny mode, adds loyalists/mutineers to AntagHUD, allows admins to reassign heads, and adds remaining Directive X objectives to Check Antagonists panel.

Conflicts:
	code/__HELPERS/names.dm
	code/modules/mob/living/carbon/human/life.dm
	code/modules/mob/mob.dm
	code/modules/mob/new_player/new_player.dm
This commit is contained in:
Jeremy Liberman
2014-06-03 21:26:34 -05:00
committed by ZomgPonies
parent b9fe3ab514
commit 33cd27e032
16 changed files with 183 additions and 85 deletions
+3 -1
View File
@@ -43,6 +43,8 @@ var/religion_name = null
return capitalize(name)
/proc/system_name()
return "Tau Ceti"
/proc/station_name()
if (station_name)
@@ -321,4 +323,4 @@ var/syndicate_code_response//Code response for traitors.
if(5)
return
*/
*/
+3
View File
@@ -21,6 +21,9 @@ datum/directive
proc/initialize()
return 1
proc/get_remaining_orders()
return ""
/proc/get_directive(type)
var/datum/game_mode/mutiny/mode = get_mutiny_mode()
if(!mode || !mode.current_directive || !istype(mode.current_directive, text2path("/datum/directive/[type]")))
@@ -19,7 +19,7 @@ datum/directive/terminations/alien_fraud/get_description()
return {"
<p>
An extensive conspiracy network aimed at defrauding NanoTrasen of large amounts of funds has been uncovered
operating within Tau Ceti. Human personnel are not suspected to be involved. Further information is classified.
operating within [system_name()]. Human personnel are not suspected to be involved. Further information is classified.
</p>
"}
@@ -43,6 +43,12 @@ datum/directive/bluespace_contagion/meets_prerequisites()
datum/directive/bluespace_contagion/directives_complete()
return infected.len == 0
datum/directive/bluespace_contagion/get_remaining_orders()
var/text = ""
for(var/victim in infected)
text += "<li>Kill [victim]</li>"
return text
/hook/death/proc/infected_killed(mob/living/carbon/human/deceased, gibbed)
var/datum/directive/bluespace_contagion/D = get_directive("bluespace_contagion")
if(!D) return 1
@@ -15,7 +15,7 @@ datum/directive/terminations/financial_crisis/get_crew_to_terminate()
datum/directive/terminations/financial_crisis/get_description()
return {"
<p>
Tau Ceti system banks in financial crisis. Local emergency situation ongoing.
[system_name()] system banks in financial crisis. Local emergency situation ongoing.
NT Funds redistributed, impact upon civilian department expected.
Further information is classified.
</p>
@@ -49,6 +49,19 @@ datum/directive/ipc_virus/meets_prerequisites()
datum/directive/ipc_virus/directives_complete()
return brains_to_enslave.len == 0 && cyborgs_to_make.len == 0 && ids_to_terminate.len == 0
datum/directive/ipc_virus/get_remaining_orders()
var/text = ""
for(var/brain in brains_to_enslave)
text += "<li>Debrain [brain]</li>"
for(var/brain in cyborgs_to_make)
text += "<li>Borgify [brain]</li>"
for(var/id in ids_to_terminate)
text += "<li>Terminate [id]</li>"
return text
/hook/debrain/proc/debrain_directive(obj/item/brain/B)
var/datum/directive/ipc_virus/D = get_directive("ipc_virus")
if (!D) return 1
@@ -25,7 +25,7 @@ datum/directive/research_to_ripleys
datum/directive/research_to_ripleys/get_description()
return {"
<p>
The NanoTrasen Tau Ceti Manufactory faces an ore deficit. Financial crisis imminent. [station_name()] has been reassigned as a mining platform.
The NanoTrasen [system_name()] Manufactory faces an ore deficit. Financial crisis imminent. [station_name()] has been reassigned as a mining platform.
The Research Director is to assist the Head of Personnel in coordinating assets.
Weapons department reports solid sales. Further information is classified.
</p>
@@ -47,6 +47,17 @@ datum/directive/research_to_ripleys/directives_complete()
if (materials_shipped < MATERIALS_REQUIRED) return 0
return count_researchers_reassigned() == ids_to_reassign.len
datum/directive/research_to_ripleys/get_remaining_orders()
var/text = ""
if(MATERIALS_REQUIRED > materials_shipped)
text += "<li>Ship [MATERIALS_REQUIRED - materials_shipped] sheets of metal or minerals.</li>"
for(var/id in ids_to_reassign)
if(!ids_to_reassign[id])
text += "<li>Reassign [id] to Shaft Miner</li>"
return text
/hook/reassign_employee/proc/research_reassignments(obj/item/weapon/card/id/id_card)
var/datum/directive/research_to_ripleys/D = get_directive("research_to_ripleys")
if(!D) return 1
@@ -43,7 +43,7 @@ datum/directive/tau_ceti_needs_women
datum/directive/tau_ceti_needs_women/get_description()
return {"
<p>
Recent evidence suggests [get_target_gender()] aptitudes may be effected by radiation from Tau Ceti.
Recent evidence suggests [get_target_gender()] aptitudes may be effected by radiation from [system_name()].
Effects were measured under laboratory and station conditions. Humans remain more trusted than Xeno. Further information is classified.
</p>
"}
@@ -75,6 +75,17 @@ datum/directive/tau_ceti_needs_women/meets_prerequisites()
datum/directive/tau_ceti_needs_women/directives_complete()
return command_targets.len == count_heads_reassigned() && alien_targets.len == 0
datum/directive/tau_ceti_needs_women/get_remaining_orders()
var/text = ""
for(var/head in command_targets)
if(!command_targets[head])
text += "<li>Remove [head] from a Head Role</li>"
for(var/id in alien_targets)
text += "<li>Terminate [id]</li>"
return text
/hook/reassign_employee/proc/command_reassignments(obj/item/weapon/card/id/id_card)
var/datum/directive/tau_ceti_needs_women/D = get_directive("tau_ceti_needs_women")
if(!D) return 1
@@ -28,6 +28,21 @@ datum/directive/terminations/initialize()
accounts_to_suspend["[account.account_number]"] = account.suspended
ids_to_terminate+=(H.wear_id)
datum/directive/terminations/get_remaining_orders()
var/text = ""
for(var/account_number in accounts_to_suspend)
if(!accounts_to_suspend[account_number])
text += "<li>Suspend Account #[account_number]</li>"
for(var/account_number in accounts_to_revoke)
if(!accounts_to_revoke[account_number])
text += "<li>Revoke Account #[account_number]</li>"
for(var/id in ids_to_terminate)
text += "<li>Terminate [id]</li>"
return text
/hook/revoke_payroll/proc/payroll_directive(datum/money_account/account)
var/datum/directive/terminations/D = get_directive("terminations")
if (!D) return 1
+20 -70
View File
@@ -87,18 +87,29 @@ datum/game_mode/mutiny
"right hand" = slot_r_hand)
proc/equip_head_loyalist()
var/mob/living/carbon/human/H = head_loyalist.current
captains_key = new(H)
H.equip_in_one_of_slots(captains_key, get_equipment_slots())
H.update_icons()
H.verbs += /mob/living/carbon/human/proc/recruit_loyalist
equip_head(head_loyalist, "loyalist", /mob/living/carbon/human/proc/recruit_loyalist)
proc/equip_head_mutineer()
var/mob/living/carbon/human/H = head_mutineer.current
secondary_key = new(H)
H.equip_in_one_of_slots(secondary_key, get_equipment_slots())
equip_head(head_mutineer, "mutineer", /mob/living/carbon/human/proc/recruit_mutineer)
proc/equip_head(datum/mind/head, faction, proc/recruitment_verb)
var/mob/living/carbon/human/H = head.current
H << "You are the Head [capitalize(faction)]!"
head.special_role = "head_[faction]"
var/slots = get_equipment_slots()
switch(faction)
if("loyalist")
if(captains_key) del(captains_key)
captains_key = new(H)
H.equip_in_one_of_slots(captains_key, slots)
if("mutineer")
if(secondary_key) del(secondary_key)
secondary_key = new(H)
H.equip_in_one_of_slots(secondary_key, slots)
H.update_icons()
H.verbs += /mob/living/carbon/human/proc/recruit_mutineer
H.verbs += recruitment_verb
proc/add_loyalist(datum/mind/M)
add_faction(M, "loyalist", loyalists)
@@ -217,48 +228,6 @@ datum/game_mode/mutiny
return 1
proc/check_antagonists_ui(admins)
var/turf/captains_key_loc = captains_key ? captains_key.get_loc_turf() : "Lost or Destroyed"
var/turf/secondary_key_loc = secondary_key ? secondary_key.get_loc_turf() : "Lost or Destroyed"
var/txt = {"
<h5>Context:</h5>
<p>
[current_directive.get_description()]
</p>
<h5>Orders:</h5>
<ol>
[fluff.get_orders()]
</ol>
<br>
<h5>Authentication:</h5>
<b>Captain's Key:</b> [captains_key_loc]
<a href='?src=\ref[admins];choice=activate_captains_key'>Activate</a><br>
<b>Secondary Key:</b> [secondary_key_loc]
<a href='?src=\ref[admins];choice=activate_secondary_key'>Activate</a><br>
<b>EAD: [ead ? ead.get_status() : "Lost or Destroyed"]</b>
<a href='?src=\ref[admins];choice=activate_ead'>Activate</a><br>
<hr>
"}
if(head_loyalist)
txt += check_role_table("Head Loyalist", list(head_loyalist), admins, 0)
var/list/loyal_crew = loyalists - head_loyalist
if(loyal_crew.len)
txt += check_role_table("Loyalists", loyal_crew, admins, 0)
if(head_mutineer)
txt += check_role_table("Head Mutineer", list(head_mutineer), admins, 0)
var/list/mutiny_crew = mutineers - head_mutineer
if(mutiny_crew.len)
txt += check_role_table("Mutineers", mutiny_crew, admins, 0)
if(body_count.len)
txt += check_role_table("Casualties", body_count, admins, 0)
return txt
/datum/game_mode/mutiny/announce()
fluff.announce()
@@ -285,12 +254,7 @@ datum/game_mode/mutiny
return 1
/datum/game_mode/mutiny/post_setup()
head_loyalist.current << "You are the Head Loyalist!"
head_loyalist.special_role = "head_loyalist"
equip_head_loyalist()
head_mutineer.current << "You are the Head Mutineer!"
head_mutineer.special_role = "head_mutineer"
equip_head_mutineer()
loyalists+=head_loyalist
@@ -306,20 +270,6 @@ datum/game_mode/mutiny
reveal_directives()
..()
/datum/game_mode/mutiny/check_antagonists_topic(href, href_list[])
switch(href_list["choice"])
if("activate_captains_key")
ead.captains_key = 1
return 1
if("activate_secondary_key")
ead.secondary_key = 1
return 1
if("activate_ead")
ead.activated = 1
return 1
else
return 0
/mob/living/carbon/human/proc/recruit_loyalist()
set name = "Recruit Loyalist"
set category = "Mutiny"
@@ -0,0 +1,83 @@
/datum/game_mode/mutiny/proc/check_antagonists_ui(admins)
var/turf/captains_key_loc = captains_key ? captains_key.get_loc_turf() : "Lost or Destroyed"
var/turf/secondary_key_loc = secondary_key ? secondary_key.get_loc_turf() : "Lost or Destroyed"
var/remaining_objectives = current_directive.get_remaining_orders()
var/txt = {"
<h5>Context:</h5>
<p>
[current_directive.get_description()]
</p>
<h5>Orders:</h5>
<ol>
[fluff.get_orders()]
</ol>
<br>
<h5>Remaining Objectives</h5>
<ol>
[remaining_objectives ? remaining_objectives : "<li>None</li>"]
</ol>
<br>
<h5>Authentication:</h5>
<b>Captain's Key:</b> [captains_key_loc]
<a href='?src=\ref[admins];choice=activate_captains_key'>Activate</a><br>
<b>Secondary Key:</b> [secondary_key_loc]
<a href='?src=\ref[admins];choice=activate_secondary_key'>Activate</a><br>
<b>EAD: [ead ? ead.get_status() : "Lost or Destroyed"]</b>
<a href='?src=\ref[admins];choice=activate_ead'>Activate</a><br>
<hr>
"}
txt += "<a href='?src=\ref[admins];choice=reassign_head_loyalist'>Reassign Head Loyalist</a><br>"
if(head_loyalist)
txt += check_role_table("Head Loyalist", list(head_loyalist), admins, 0)
var/list/loyal_crew = loyalists - head_loyalist
if(loyal_crew.len)
txt += check_role_table("Loyalists", loyal_crew, admins, 0)
txt += "<a href='?src=\ref[admins];choice=reassign_head_mutineer'>Reassign Head Mutineer</a><br>"
if(head_mutineer)
txt += check_role_table("Head Mutineer", list(head_mutineer), admins, 0)
var/list/mutiny_crew = mutineers - head_mutineer
if(mutiny_crew.len)
txt += check_role_table("Mutineers", mutiny_crew, admins, 0)
if(body_count.len)
txt += check_role_table("Casualties", body_count, admins, 0)
return txt
/datum/game_mode/mutiny/check_antagonists_topic(href, href_list[])
switch(href_list["choice"])
if("activate_captains_key")
ead.captains_key = 1
return 1
if("activate_secondary_key")
ead.secondary_key = 1
return 1
if("activate_ead")
ead.activated = 1
return 1
if("reassign_head_loyalist")
var/mob/M = get_reassignment_candidate("Loyalist")
if(M)
head_loyalist = M.mind
equip_head_loyalist()
return 1
if("reassign_head_mutineer")
var/mob/M = get_reassignment_candidate("Mutineer")
if(M)
head_mutineer = M.mind
equip_head_mutineer()
return 1
else
return 0
/datum/game_mode/mutiny/proc/get_reassignment_candidate(faction)
var/list/targets[0]
for(var/mob/living/carbon/human/H in player_list)
if(H.is_ready() && !H.is_dead())
targets.Add(H)
return input("Select a player to lead the [faction] faction.", "Head [faction] reassignment", null) as mob in targets
+6 -6
View File
@@ -154,7 +154,7 @@ Both keys are required to activate the <b>Emergency Authentication Device (EAD)<
proc/loyalist_major_victory()
return {"
NanoTrasen has praised the efforts of Captain [mode.head_loyalist] and loyal members of [their(mode.head_loyalist)] crew, who recently managed to put down a mutiny--amid a local interstellar crisis--aboard the <b>[station_name()]</b>, a research station in Tau Ceti.
NanoTrasen has praised the efforts of Captain [mode.head_loyalist] and loyal members of [their(mode.head_loyalist)] crew, who recently managed to put down a mutiny--amid a local interstellar crisis--aboard the <b>[station_name()]</b>, a research station in [system_name()].
The mutiny was spurred by a top secret directive sent to the station, presumably in response to the crisis within the system.
Despite the mutiny, the crew was successful in implementing the directive and activating their on-board emergency authentication device.
[mode.mutineers.len] members of the station's personnel were charged with sedition against the company and if found guilty will be sentenced to life incarceration.
@@ -165,7 +165,7 @@ NanoTrasen will be awarding [mode.loyalists.len] members of the crew with the [l
proc/loyalist_minor_victory()
return {"
NanoTrasen has praised the efforts of Captain [mode.head_loyalist] and loyal members of [their(mode.head_loyalist)] crew, who recently managed to put down a mutiny--amid a local interstellar crisis--aboard the <b>[station_name()]</b>, a research station in Tau Ceti.
NanoTrasen has praised the efforts of Captain [mode.head_loyalist] and loyal members of [their(mode.head_loyalist)] crew, who recently managed to put down a mutiny--amid a local interstellar crisis--aboard the <b>[station_name()]</b>, a research station in [system_name()].
The mutiny was spurred by a top secret directive sent to the station, presumably in response to the crisis within the system.
Despite the mutiny, the crew was successful in implementing the directive. Unfortunately, they failed to notify Central Command of their successes due to a breach in the chain of command.
[mode.mutineers.len] members of the station's personnel were charged with sedition against the Company and if found guilty will be sentenced to life incarceration.
@@ -176,7 +176,7 @@ NanoTrasen will be awarding [mode.loyalists.len] members of the crew with the [l
proc/no_victory()
return {"
NanoTrasen has been thrust into turmoil following an apparent mutiny by key personnel aboard the <b>[station_name()]</b>, a research station in Tau Ceti.
NanoTrasen has been thrust into turmoil following an apparent mutiny by key personnel aboard the <b>[station_name()]</b>, a research station in [system_name()].
The mutiny was spurred by a top secret directive sent to the station, presumably in response to the crisis within the system.
No further information has yet emerged from the station or its crew, who are presumed to be in holding with NanoTrasen investigators.
NanoTrasen officials refuse to comment.
@@ -187,7 +187,7 @@ Sources indicate that [mode.mutineers.len] members of the station's personnel ar
proc/mutineer_minor_victory()
return {"
Reports have emerged that an impromptu mutiny has taken place, amid a local interstellar crisis, aboard the <b>[station_name()]</b>, a research station in Tau Ceti.
Reports have emerged that an impromptu mutiny has taken place, amid a local interstellar crisis, aboard the <b>[station_name()]</b>, a research station in [system_name()].
The mutiny was spurred by a top secret directive sent to the station, presumably in response to the crisis within the system.
Information at present indicates that the top-secret directive--which has since been retracted--was invalid due to a broken authentication code. Members of the crew, including an unidentified Head of Staff, prevented the directive from being accomplished.
[mode.mutineers.len] members of the station's personnel were released from interrogations today, following a mutiny investigation.
@@ -198,7 +198,7 @@ NanoTrasen has reprimanded [mode.loyalists.len] members of the crew for failing
proc/mutineer_major_victory()
return {"
NanoTrasen has praised the efforts of [mode.head_mutineer.assigned_role] [mode.head_mutineer] and several other members of the crew, who recently seized control of a research station in Tau Ceti--<b>[station_name()]</b>--amid a local interstellar crisis.
NanoTrasen has praised the efforts of [mode.head_mutineer.assigned_role] [mode.head_mutineer] and several other members of the crew, who recently seized control of a research station in [system_name()]--<b>[station_name()]</b>--amid a local interstellar crisis.
What appears to have been a "legitimate" mutiny was spurred by a top secret directive sent to the station, presumably in response to the crisis within the system.
It has been revealed that the directive was invalid and fraudulent. Company officials have not released a statement about the source of the directive.
Thanks to the efforts of the resistant members of the crew, the directive was not carried out.
@@ -225,7 +225,7 @@ D: Mr. Mitchell, first you send cryptic messages to my office and then you reque
<center>\[Sound of the internal airlock door shutting\]</center>
TM: Do you remember <b>Mallory</b>?<br>
D: Who?<br>
TM: It's not who, it's what. The computer program we planted in the Tau Ceti communications satellite.<br>
TM: It's not who, it's what. The computer program we planted in the [system_name()] communications satellite.<br>
D: What is so important about this computer program?<br>
TM: We call her an eavesdropper. Captures network traffic, records it, and forwards the stream to the receiver autonomously.<br>
D: Speak English <i>goddamnit</i>.<br>
+4 -1
View File
@@ -2004,9 +2004,12 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
holder.icon_state = "hudvampthrall"
if("head_loyalist")
holder.icon_state = "loyalist"
if("loyalist")
holder.icon_state = "loyalist"
if("head_mutineer")
holder.icon_state = "mutineer"
if("mutineer")
holder.icon_state = "mutineer"
hud_list[SPECIALROLE_HUD] = holder
+2 -2
View File
@@ -808,7 +808,7 @@ var/list/slot_equipment_priority = list( \
return istype(src, /mob/living/silicon) || get_species() == "Machine"
/mob/proc/is_ready()
return !!client
return client && !!mind
/mob/proc/get_gender()
return gender
@@ -1215,4 +1215,4 @@ mob/proc/yank_out_object()
if(host)
host.ckey = src.ckey
host << "<span class='info'>You are now a mouse. Try to avoid interaction with players, and do not give hints away that you are more than a simple rodent.</span>"
host << "<span class='info'>You are now a mouse. Try to avoid interaction with players, and do not give hints away that you are more than a simple rodent.</span>"
+1 -1
View File
@@ -510,4 +510,4 @@
return client.prefs.gender
/mob/new_player/is_ready()
return ready && !!client
return ready && ..()