From d23340a49bf720ca74eaf5665e33e1c3b3f6f9ca Mon Sep 17 00:00:00 2001 From: Jeremy Liberman Date: Wed, 7 May 2014 18:42:35 -0500 Subject: [PATCH 1/5] Mutiny Mode --- baystation12.dme | 14 + code/__HELPERS/time.dm | 6 + code/controllers/hooks-defs.dm | 70 ++ code/controllers/hooks.dm | 4 +- code/controllers/shuttle_controller.dm | 16 +- code/game/gamemodes/game_mode.dm | 4 + code/game/gamemodes/mutiny/auth_key.dm | 39 + code/game/gamemodes/mutiny/directive.dm | 29 + .../directives/alien_fraud_directive.dm | 36 + .../bluespace_contagion_directive.dm | 45 + .../directives/financial_crisis_directive.dm | 26 + .../mutiny/directives/ipc_virus_directive.dm | 83 ++ .../research_to_ripleys_directive.dm | 65 ++ .../tau_ceti_needs_women_directive.dm | 83 ++ .../directives/terminations_directive.dm | 56 + .../mutiny/directives/test_directive.dm | 23 + .../mutiny/emergency_authentication_device.dm | 105 ++ code/game/gamemodes/mutiny/key_pinpointer.dm | 49 + code/game/gamemodes/mutiny/mutiny.dm | 350 +++++++ code/game/gamemodes/mutiny/mutiny_fluff.dm | 209 ++++ code/game/gamemodes/mutiny/mutiny_hooks.dm | 27 + code/game/machinery/cloning.dm | 1 + code/game/machinery/computer/card.dm | 423 +++----- code/game/machinery/podmen.dm | 2 + code/game/objects/items.dm | 6 + code/game/objects/items/robot/robot_parts.dm | 7 +- code/game/response_team.dm | 2 +- code/game/supplyshuttle.dm | 2 + code/modules/admin/player_panel.dm | 965 +++++++++--------- code/modules/admin/topic.dm | 4 + code/modules/client/preferences.dm | 5 +- code/modules/economy/Accounts_DB.dm | 296 ++++-- .../mob/living/carbon/brain/brain_item.dm | 5 +- code/modules/mob/living/carbon/human/death.dm | 6 +- code/modules/mob/living/login.dm | 41 +- code/modules/mob/mob.dm | 3 + code/modules/mob/transform_procs.dm | 2 + .../security levels/keycard authentication.dm | 15 +- code/setup.dm | 30 +- icons/mob/mob.dmi | Bin 178925 -> 182145 bytes nano/css/shared.css | 19 +- nano/templates/accounts_terminal.tmpl | 168 +++ nano/templates/identification_computer.tmpl | 236 +++++ 43 files changed, 2644 insertions(+), 933 deletions(-) create mode 100644 code/game/gamemodes/mutiny/auth_key.dm create mode 100644 code/game/gamemodes/mutiny/directive.dm create mode 100644 code/game/gamemodes/mutiny/directives/alien_fraud_directive.dm create mode 100644 code/game/gamemodes/mutiny/directives/bluespace_contagion_directive.dm create mode 100644 code/game/gamemodes/mutiny/directives/financial_crisis_directive.dm create mode 100644 code/game/gamemodes/mutiny/directives/ipc_virus_directive.dm create mode 100644 code/game/gamemodes/mutiny/directives/research_to_ripleys_directive.dm create mode 100644 code/game/gamemodes/mutiny/directives/tau_ceti_needs_women_directive.dm create mode 100644 code/game/gamemodes/mutiny/directives/terminations_directive.dm create mode 100644 code/game/gamemodes/mutiny/directives/test_directive.dm create mode 100644 code/game/gamemodes/mutiny/emergency_authentication_device.dm create mode 100644 code/game/gamemodes/mutiny/key_pinpointer.dm create mode 100644 code/game/gamemodes/mutiny/mutiny.dm create mode 100644 code/game/gamemodes/mutiny/mutiny_fluff.dm create mode 100644 code/game/gamemodes/mutiny/mutiny_hooks.dm create mode 100644 nano/templates/accounts_terminal.tmpl create mode 100644 nano/templates/identification_computer.tmpl diff --git a/baystation12.dme b/baystation12.dme index 6bded644ace..24052903c43 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -231,6 +231,20 @@ #include "code\game\gamemodes\malfunction\malfunction.dm" #include "code\game\gamemodes\meteor\meteor.dm" #include "code\game\gamemodes\meteor\meteors.dm" +#include "code\game\gamemodes\mutiny\auth_key.dm" +#include "code\game\gamemodes\mutiny\directive.dm" +#include "code\game\gamemodes\mutiny\emergency_authentication_device.dm" +#include "code\game\gamemodes\mutiny\key_pinpointer.dm" +#include "code\game\gamemodes\mutiny\mutiny.dm" +#include "code\game\gamemodes\mutiny\mutiny_fluff.dm" +#include "code\game\gamemodes\mutiny\mutiny_hooks.dm" +#include "code\game\gamemodes\mutiny\directives\alien_fraud_directive.dm" +#include "code\game\gamemodes\mutiny\directives\bluespace_contagion_directive.dm" +#include "code\game\gamemodes\mutiny\directives\financial_crisis_directive.dm" +#include "code\game\gamemodes\mutiny\directives\ipc_virus_directive.dm" +#include "code\game\gamemodes\mutiny\directives\research_to_ripleys_directive.dm" +#include "code\game\gamemodes\mutiny\directives\tau_ceti_needs_women_directive.dm" +#include "code\game\gamemodes\mutiny\directives\terminations_directive.dm" #include "code\game\gamemodes\ninja\ninja.dm" #include "code\game\gamemodes\nuclear\nuclear.dm" #include "code\game\gamemodes\nuclear\nuclearbomb.dm" diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index 51f56d9d122..bcd52b9e888 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -1,3 +1,9 @@ +#define SECOND *10 +#define SECONDS *10 + +#define MINUTE *600 +#define MINUTES *600 + //Returns the world time in english proc/worldtime2text(time = world.time) return "[round(time / 36000)+12]:[(time / 600 % 60) < 10 ? add_zero(time / 600 % 60, 1) : time / 600 % 60]" diff --git a/code/controllers/hooks-defs.dm b/code/controllers/hooks-defs.dm index cb51229c9fb..1cd7c4aad8a 100644 --- a/code/controllers/hooks-defs.dm +++ b/code/controllers/hooks-defs.dm @@ -15,3 +15,73 @@ * Called in gameticker.dm when a round ends. */ /hook/roundend + +/** + * Death hook. + * Called in death.dm when someone dies. + * Parameters: var/mob/living/carbon/human, var/gibbed + */ +/hook/death + +/** + * Cloning hook. + * Called in cloning.dm when someone is brought back by the wonders of modern science. + * Parameters: var/mob/living/carbon/human + */ +/hook/clone + +/** + * Debrained hook. + * Called in brain_item.dm when someone gets debrained. + * Parameters: var/obj/item/brain + */ +/hook/debrain + +/** + * Borged hook. + * Called in robot_parts.dm when someone gets turned into a cyborg. + * Parameters: var/mob/living/silicon/robot + */ +/hook/borgify + +/** + * Podman hook. + * Called in podmen.dm when someone is brought back as a Diona. + * Parameters: var/mob/living/carbon/monkey/diona + */ +/hook/harvest_podman + +/** + * Payroll revoked hook. + * Called in Accounts_DB.dm when someone's payroll is stolen at the Accounts terminal. + * Parameters: var/datum/money_account + */ +/hook/revoke_payroll + +/** + * Account suspension hook. + * Called in Accounts_DB.dm when someone's account is suspended or unsuspended at the Accounts terminal. + * Parameters: var/datum/money_account + */ +/hook/change_account_status + +/** + * Employee reassignment hook. + * Called in card.dm when someone's card is reassigned at the HoP's desk. + * Parameters: var/obj/item/weapon/card/id + */ +/hook/reassign_employee + +/** + * Employee terminated hook. + * Called in card.dm when someone's card is terminated at the HoP's desk. + * Parameters: var/obj/item/weapon/card/id + */ +/hook/terminate_employee + +/** + * Crate sold hook. + * Called in supplyshuttle.dm when a crate is sold on the shuttle. + * Parameters: var/obj/structure/closet/crate/sold, var/area/shuttle + */ +/hook/sell_crate diff --git a/code/controllers/hooks.dm b/code/controllers/hooks.dm index 5045da75925..48f1199ef76 100644 --- a/code/controllers/hooks.dm +++ b/code/controllers/hooks.dm @@ -23,7 +23,7 @@ * @param hook Identifier of the hook to call. * @returns 1 if all hooked code runs successfully, 0 otherwise. */ -/proc/callHook(hook) +/proc/callHook(hook, list/args=null) var/hook_path = text2path("/hook/[hook]") if(!hook_path) error("Invalid hook '/hook/[hook]' called.") @@ -32,7 +32,7 @@ var/caller = new hook_path var/status = 1 for(var/P in typesof("[hook_path]/proc")) - if(!call(caller, P)()) + if(!call(caller, P)(arglist(args))) error("Hook '[P]' failed or runtimed.") status = 0 diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index f92d8b1c7b1..ac804dc4f2e 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -36,7 +36,7 @@ datum/shuttle_controller if(direction == -1) setdirection(1) else - settimeleft(SHUTTLEARRIVETIME*coeff) + settimeleft(get_shuttle_arrive_time()*coeff) online = 1 if(always_fake_recall) fake_recall = rand(300,500) //turning on the red lights in hallways @@ -45,10 +45,16 @@ datum/shuttle_controller if(istype(A, /area/hallway)) A.readyalert() + proc/get_shuttle_arrive_time() + // During mutiny rounds, the shuttle takes twice as long. + if(ticker && istype(ticker.mode,/datum/game_mode/mutiny)) + return SHUTTLEARRIVETIME * 2 + + return SHUTTLEARRIVETIME + datum/shuttle_controller/proc/shuttlealert(var/X) alert = X - datum/shuttle_controller/proc/recall() if(direction == 1) var/timeleft = timeleft() @@ -78,9 +84,9 @@ datum/shuttle_controller/proc/timeleft() if(direction == 1 || direction == 2) return timeleft else - return SHUTTLEARRIVETIME-timeleft + return get_shuttle_arrive_time()-timeleft else - return SHUTTLEARRIVETIME + return get_shuttle_arrive_time() // sets the time left to a given delay (in seconds) datum/shuttle_controller/proc/settimeleft(var/delay) @@ -95,7 +101,7 @@ datum/shuttle_controller/proc/setdirection(var/dirn) direction = dirn // if changing direction, flip the timeleft by SHUTTLEARRIVETIME var/ticksleft = endtime - world.timeofday - endtime = world.timeofday + (SHUTTLEARRIVETIME*10 - ticksleft) + endtime = world.timeofday + (get_shuttle_arrive_time()*10 - ticksleft) return datum/shuttle_controller/proc/process() diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index fe252c3ab32..e97c915c0ba 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -28,6 +28,7 @@ var/required_enemies = 0 var/recommended_enemies = 0 var/newscaster_announcements = null + var/ert_disabled = 0 var/uplink_welcome = "Syndicate Uplink Console:" var/uplink_uses = 10 var/uplink_items = {"Highly Visible and Dangerous Weapons; @@ -407,6 +408,9 @@ Implants; heads += player.mind return heads +/datum/game_mode/proc/check_antagonists_topic(href, href_list[]) + return 0 + /datum/game_mode/New() newscaster_announcements = pick(newscaster_standard_feeds) diff --git a/code/game/gamemodes/mutiny/auth_key.dm b/code/game/gamemodes/mutiny/auth_key.dm new file mode 100644 index 00000000000..f053d7c3a3b --- /dev/null +++ b/code/game/gamemodes/mutiny/auth_key.dm @@ -0,0 +1,39 @@ +/obj/item/weapon/mutiny/auth_key + name = "authentication key" + desc = "Better keep this safe." + icon = 'icons/obj/items.dmi' + icon_state = "nucleardisk" + item_state = "card-id" + w_class = 1 + + var/time_entered_space + var/obj/item/device/radio/radio + + New() + radio = new(src) + spawn(20 SECONDS) + keep_alive() + ..() + + proc/keep_alive() + var/in_space = istype(loc, /turf/space) + if (!in_space && time_entered_space) + // Recovered before the key was lost + time_entered_space = null + else if (in_space && !time_entered_space) + // The key has left the station + time_entered_space = world.time + else if (in_space && time_entered_space + (10 SECONDS) < world.time) + // Time is up + radio.autosay("This device has left the station's perimeter. Triggering emergency activation failsafe.", name) + del(src) + return + + spawn(10 SECONDS) + keep_alive() + +/obj/item/weapon/mutiny/auth_key/captain + name = "Captain's Authentication Key" + +/obj/item/weapon/mutiny/auth_key/secondary + name = "Emergency Secondary Authentication Key" diff --git a/code/game/gamemodes/mutiny/directive.dm b/code/game/gamemodes/mutiny/directive.dm new file mode 100644 index 00000000000..823645beef4 --- /dev/null +++ b/code/game/gamemodes/mutiny/directive.dm @@ -0,0 +1,29 @@ +datum/directive + var/datum/game_mode/mutiny/mode + var/list/special_orders + + New(var/datum/game_mode/mutiny/M) + mode = M + + proc/get_description() + return {" +

+ NanoTrasen's reasons for the following directives are classified. +

+ "} + + proc/meets_prerequisites() + return 0 + + proc/directives_complete() + return 1 + + proc/initialize() + return 1 + +/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]"))) + return null + + return mode.current_directive diff --git a/code/game/gamemodes/mutiny/directives/alien_fraud_directive.dm b/code/game/gamemodes/mutiny/directives/alien_fraud_directive.dm new file mode 100644 index 00000000000..5c76326ad35 --- /dev/null +++ b/code/game/gamemodes/mutiny/directives/alien_fraud_directive.dm @@ -0,0 +1,36 @@ +datum/directive/terminations/alien_fraud + special_orders = list( + "Suspend financial accounts of all Tajaran and Unathi personnel.", + "Transfer their payrolls to the station account.", + "Terminate their employment.") + +datum/directive/terminations/alien_fraud/get_crew_to_terminate() + var/list/aliens[0] + for(var/mob/living/carbon/human/H in player_list) + if (H.species.name == "Tajaran" || H.species.name == "Unathi") + aliens.Add(H) + return aliens + +datum/directive/terminations/alien_fraud/get_description() + return {" +

+ 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. +

+ "} + +datum/directive/terminations/alien_fraud/meets_prerequisites() + // There must be at least one Tajaran and at least one Unathi, but the total + // of the Tajarans and Unathi combined can't be more than 1/3rd of the crew. + var/tajarans = 0 + var/unathi = 0 + for(var/mob/living/carbon/human/H in player_list) + if (H.species.name == "Tajaran") + tajarans++ + if (H.species.name == "Unathi") + unathi++ + + if (!tajarans || !unathi) + return 0 + + return (tajarans + unathi) <= (player_list.len / 3) diff --git a/code/game/gamemodes/mutiny/directives/bluespace_contagion_directive.dm b/code/game/gamemodes/mutiny/directives/bluespace_contagion_directive.dm new file mode 100644 index 00000000000..65058e80150 --- /dev/null +++ b/code/game/gamemodes/mutiny/directives/bluespace_contagion_directive.dm @@ -0,0 +1,45 @@ +#define INFECTION_COUNT 5 + +datum/directive/bluespace_contagion + var/infection_count = 5 + var/list/infected = list() + +datum/directive/bluespace_contagion/get_description() + return {" +

+ A manufactured and near-undetectable virus is spreading on NanoTrasen stations. + The pathogen travels by bluespace after maturing for one day. + No treatment has yet been discovered. Personnel onboard [station_name()] have been infected. Further information is classified. +

+ "} + +datum/directive/bluespace_contagion/initialize() + var/list/candidates = player_list.Copy() + var/list/infected_names = list() + for(var/i=0, i < INFECTION_COUNT, i++) + if(!candidates.len) + break + + var/mob/living/carbon/human/candidate = pick(candidates) + candidates.Remove(candidate) + infected.Add(candidate) + infected_names.Add("[candidate.mind.assigned_role] [candidate.mind.name]") + + special_orders = list( + "Quarantine these personnel: [list2text(infected_names, ", ")].", + "Allow one hour for a cure to be manufactured.", + "If no cure arrives after that time, execute the infected.") + +datum/directive/bluespace_contagion/meets_prerequisites() + return player_list.len >= 7 + +datum/directive/bluespace_contagion/directives_complete() + return infected.len == 0 + +/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 + + if(deceased in D.infected) + D.infected.Remove(deceased) + return 1 diff --git a/code/game/gamemodes/mutiny/directives/financial_crisis_directive.dm b/code/game/gamemodes/mutiny/directives/financial_crisis_directive.dm new file mode 100644 index 00000000000..a6c4ce28968 --- /dev/null +++ b/code/game/gamemodes/mutiny/directives/financial_crisis_directive.dm @@ -0,0 +1,26 @@ +datum/directive/terminations/financial_crisis + special_orders = list( + "Suspend financial accounts of all civilian personnel, excluding the Head of Personnel.", + "Transfer their payrolls to the station account.", + "Terminate their employment.") + +datum/directive/terminations/financial_crisis/get_crew_to_terminate() + var/list/civilians[0] + var/list/candidates = civilian_positions - "Head of Personnel" + for(var/mob/living/carbon/human/H in player_list) + if (candidates.Find(H.mind.assigned_role)) + civilians.Add(H) + return civilians + +datum/directive/terminations/financial_crisis/get_description() + return {" +

+ Tau Ceti system banks in financial crisis. Local emergency situation ongoing. + NT Funds redistributed, impact upon civilian department expected. + Further information is classified. +

+ "} + +datum/directive/terminations/financial_crisis/meets_prerequisites() + var/list/civilians = get_crew_to_terminate() + return civilians.len >= 5 diff --git a/code/game/gamemodes/mutiny/directives/ipc_virus_directive.dm b/code/game/gamemodes/mutiny/directives/ipc_virus_directive.dm new file mode 100644 index 00000000000..08890128297 --- /dev/null +++ b/code/game/gamemodes/mutiny/directives/ipc_virus_directive.dm @@ -0,0 +1,83 @@ +datum/directive/ipc_virus + special_orders = list( + "Terminate employment of all IPC personnel.", + "Extract the Positronic Brains from IPC units.", + "Mount the Positronic Brains into Cyborgs.") + + var/list/roboticist_roles = list( + "Research Director", + "Roboticist" + ) + + var/list/brains_to_enslave = list() + var/list/cyborgs_to_make = list() + var/list/ids_to_terminate = list() + + proc/get_ipcs() + var/list/machines[0] + for(var/mob/living/carbon/human/H in player_list) + if (H.species.name == "Machine") + machines.Add(H) + return machines + + proc/get_roboticists() + var/list/roboticists[0] + for(var/mob/living/carbon/human/H in player_list) + if (roboticist_roles.Find(H.mind.assigned_role)) + roboticists.Add(H) + return roboticists + +datum/directive/ipc_virus/initialize() + for(var/mob/living/carbon/human/H in get_ipcs()) + brains_to_enslave.Add(H.mind) + cyborgs_to_make.Add(H.mind) + ids_to_terminate.Add(H.wear_id) + +datum/directive/ipc_virus/get_description() + return {" +

+ IPC units have been found to be infected with a violent and undesired virus in Virgus Ferrorus system. + Risk to NSS Exodus IPC units has not been assessed. Further information is classified. +

+ "} + +datum/directive/ipc_virus/meets_prerequisites() + var/list/ipcs = get_ipcs() + var/list/roboticists = get_roboticists() + return ipcs.len > 2 && roboticists.len > 1 + +datum/directive/ipc_virus/directives_complete() + return brains_to_enslave.len == 0 && cyborgs_to_make.len == 0 && ids_to_terminate.len == 0 + +/hook/debrain/proc/debrain_directive(obj/item/brain/B) + var/datum/directive/ipc_virus/D = get_directive("ipc_virus") + if (!D) return 1 + + if(D.brains_to_enslave.Find(B.brainmob.mind)) + D.brains_to_enslave.Remove(B.brainmob.mind) + + return 1 + +/hook/borgify/proc/borgify_directive(mob/living/silicon/robot/cyborg) + var/datum/directive/ipc_virus/D = get_directive("ipc_virus") + if (!D) return 1 + + if(D.cyborgs_to_make.Find(cyborg.mind)) + D.cyborgs_to_make.Remove(cyborg.mind) + + // In case something glitchy happened and the victim got + // borged without us tracking the brain removal, go ahead + // and update that list too. + if(D.brains_to_enslave.Find(cyborg.mind)) + D.brains_to_enslave.Remove(cyborg.mind) + + return 1 + +/hook/terminate_employee/proc/ipc_termination(obj/item/weapon/card/id) + var/datum/directive/ipc_virus/D = get_directive("ipc_virus") + if (!D) return 1 + + if(D.ids_to_terminate && D.ids_to_terminate.Find(id)) + D.ids_to_terminate.Remove(id) + + return 1 diff --git a/code/game/gamemodes/mutiny/directives/research_to_ripleys_directive.dm b/code/game/gamemodes/mutiny/directives/research_to_ripleys_directive.dm new file mode 100644 index 00000000000..a6305a2a566 --- /dev/null +++ b/code/game/gamemodes/mutiny/directives/research_to_ripleys_directive.dm @@ -0,0 +1,65 @@ +#define MATERIALS_REQUIRED 200 + +datum/directive/research_to_ripleys + var/list/ids_to_reassign = list() + var/materials_shipped = 0 + + proc/get_researchers() + var/list/researchers[0] + for(var/mob/living/carbon/human/H in player_list) + if (H.mind.assigned_role in science_positions - "Research Director") + researchers.Add(H) + return researchers + + proc/count_researchers_reassigned() + var/researchers_reassigned = 0 + for(var/obj/item/weapon/card/id in ids_to_reassign) + if (ids_to_reassign[id]) + researchers_reassigned++ + + return researchers_reassigned + +datum/directive/research_to_ripleys/get_description() + return {" +

+ The NanoTrasen Tau Ceti 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. +

+ "} + +datum/directive/research_to_ripleys/meets_prerequisites() + var/list/researchers = get_researchers() + return researchers.len > 3 + +datum/directive/research_to_ripleys/initialize() + for(var/mob/living/carbon/human/R in get_researchers()) + ids_to_reassign[R.wear_id] = 0 + + special_orders = list( + "Reassign all research personnel, excluding the Research Director, to Shaft Miner.", + "Deliver [MATERIALS_REQUIRED] sheets of metal or minerals via the supply shuttle to CentCom.") + +datum/directive/research_to_ripleys/directives_complete() + if (materials_shipped < MATERIALS_REQUIRED) return 0 + return count_researchers_reassigned() == ids_to_reassign.len + +/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 + + if(D.ids_to_reassign && D.ids_to_reassign.Find(id_card)) + D.ids_to_reassign[id_card] = id_card.assignment == "Shaft Miner" ? 1 : 0 + + return 1 + +/hook/sell_crate/proc/deliver_materials(obj/structure/closet/crate/sold, area/shuttle) + var/datum/directive/research_to_ripleys/D = get_directive("research_to_ripleys") + if(!D) return 1 + + for(var/atom/A in sold) + if(istype(A, /obj/item/stack/sheet/mineral) || istype(A, /obj/item/stack/sheet/metal)) + var/obj/item/stack/S = A + D.materials_shipped += S.amount + + return 1 diff --git a/code/game/gamemodes/mutiny/directives/tau_ceti_needs_women_directive.dm b/code/game/gamemodes/mutiny/directives/tau_ceti_needs_women_directive.dm new file mode 100644 index 00000000000..c9b86ecdf11 --- /dev/null +++ b/code/game/gamemodes/mutiny/directives/tau_ceti_needs_women_directive.dm @@ -0,0 +1,83 @@ +datum/directive/tau_ceti_needs_women + var/list/command_targets = list() + var/list/alien_targets = list() + + proc/get_target_gender() + if(!mode.head_loyalist) return FEMALE + return mode.head_loyalist.current.gender == FEMALE ? MALE : FEMALE + + proc/get_crew_of_target_gender() + var/list/targets[0] + for(var/mob/living/carbon/human/H in player_list) + if(H.species.name != "Machine" && H.gender == get_target_gender()) + targets.Add(H) + return targets + + proc/get_target_heads() + var/list/heads[0] + for(var/mob/living/carbon/human/H in get_crew_of_target_gender()) + if(command_positions.Find(H.mind.assigned_role)) + heads.Add(H) + return heads + + proc/get_target_aliens() + var/list/aliens[0] + for(var/mob/living/carbon/human/H in get_crew_of_target_gender()) + if (H.species.name == "Tajaran" || H.species.name == "Unathi" || H.species.name == "Skrell") + aliens.Add(H) + return aliens + + proc/count_heads_reassigned() + var/heads_reassigned = 0 + for(var/obj/item/weapon/card/id in command_targets) + if (command_targets[id]) + heads_reassigned++ + + return heads_reassigned + +datum/directive/tau_ceti_needs_women/get_description() + return {" +

+ Recent evidence suggests [get_target_gender()] aptitudes may be effected by radiation from Tau Ceti. + Effects were measured under laboratory and station conditions. Humans remain more trusted than Xeno. Further information is classified. +

+ "} + +datum/directive/tau_ceti_needs_women/initialize() + for(var/mob/living/carbon/human/H in get_target_heads()) + command_targets[H.wear_id] = 0 + + for(var/mob/living/carbon/human/H in get_target_aliens()) + alien_targets.Add(H.wear_id) + + special_orders = list( + "Remove [get_target_gender()] personnel from Command positions.", + "Terminate employment of all [get_target_gender()] Skrell, Tajara, and Unathi.") + +datum/directive/tau_ceti_needs_women/meets_prerequisites() + var/list/targets = get_crew_of_target_gender() + return targets.len >= 3 + +datum/directive/tau_ceti_needs_women/directives_complete() + return command_targets.len == count_heads_reassigned() && alien_targets.len == 0 + +/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 + + if(D.command_targets && D.command_targets.Find(id_card)) + D.command_targets[id_card] = command_positions.Find(id_card.assignment) ? 0 : 1 + + return 1 + +/hook/terminate_employee/proc/gender_target_termination_directive(obj/item/weapon/card/id) + var/datum/directive/tau_ceti_needs_women/D = get_directive("tau_ceti_needs_women") + if (!D) return 1 + + if(D.alien_targets && D.alien_targets.Find(id)) + D.alien_targets.Remove(id) + + if(D.command_targets && D.command_targets.Find(id)) + D.command_targets[id] = 1 + + return 1 diff --git a/code/game/gamemodes/mutiny/directives/terminations_directive.dm b/code/game/gamemodes/mutiny/directives/terminations_directive.dm new file mode 100644 index 00000000000..bc9f808d907 --- /dev/null +++ b/code/game/gamemodes/mutiny/directives/terminations_directive.dm @@ -0,0 +1,56 @@ +// This is a parent directive meant to be derived by directives that fit +// the "fire X type of employee" pattern of directives. Simply apply your +// flavor text and override get_crew_to_terminate in your child datum. +// See alien_fraud_directive.dm for an example. +datum/directive/terminations + var/list/accounts_to_revoke = list() + var/list/accounts_to_suspend = list() + var/list/ids_to_terminate = list() + + proc/get_crew_to_terminate() + return list() + +datum/directive/terminations/directives_complete() + for(var/account_number in accounts_to_suspend) + if (!accounts_to_suspend[account_number]) + return 0 + + for(var/account_number in accounts_to_revoke) + if (!accounts_to_revoke[account_number]) + return 0 + + return ids_to_terminate.len == 0 + +datum/directive/terminations/initialize() + for(var/mob/living/carbon/human/A in get_crew_to_terminate()) + var/datum/money_account/account = A.mind.initial_account + accounts_to_revoke["[account.account_number]"] = 0 + accounts_to_suspend["[account.account_number]"] = account.suspended + ids_to_terminate.Add(A.wear_id) + +/hook/revoke_payroll/proc/payroll_directive(datum/money_account/account) + var/datum/directive/terminations/D = get_directive("terminations") + if (!D) return 1 + + if(D.accounts_to_revoke && D.accounts_to_revoke.Find("[account.account_number]")) + D.accounts_to_revoke["[account.account_number]"] = 1 + + return 1 + +/hook/change_account_status/proc/suspension_directive(datum/money_account/account) + var/datum/directive/terminations/D = get_directive("terminations") + if (!D) return 1 + + if(D.accounts_to_suspend && D.accounts_to_suspend.Find("[account.account_number]")) + D.accounts_to_suspend["[account.account_number]"] = account.suspended + + return 1 + +/hook/terminate_employee/proc/termination_directive(obj/item/weapon/card/id) + var/datum/directive/terminations/D = get_directive("terminations") + if (!D) return 1 + + if(D.ids_to_terminate && D.ids_to_terminate.Find(id)) + D.ids_to_terminate.Remove(id) + + return 1 diff --git a/code/game/gamemodes/mutiny/directives/test_directive.dm b/code/game/gamemodes/mutiny/directives/test_directive.dm new file mode 100644 index 00000000000..74e990f41c4 --- /dev/null +++ b/code/game/gamemodes/mutiny/directives/test_directive.dm @@ -0,0 +1,23 @@ +// For testing +datum/directive/terminations/test + special_orders = list( + "Suspend financial accounts of all ugly personnel.", + "Transfer their payrolls to the station account.", + "Terminate their employment.") + +datum/directive/terminations/test/get_crew_to_terminate() + var/list/uglies[0] + for(var/mob/living/carbon/human/H in player_list) + uglies.Add(H) + return uglies + +datum/directive/terminations/test/get_description() + return {" +

+ Wow. Much ugly. So painful. + Many terminations. Very classified. +

+ "} + +datum/directive/terminations/test/meets_prerequisites() + return 1 diff --git a/code/game/gamemodes/mutiny/emergency_authentication_device.dm b/code/game/gamemodes/mutiny/emergency_authentication_device.dm new file mode 100644 index 00000000000..8aee11e11f1 --- /dev/null +++ b/code/game/gamemodes/mutiny/emergency_authentication_device.dm @@ -0,0 +1,105 @@ +/obj/machinery/emergency_authentication_device + var/datum/game_mode/mutiny/mode + + name = "\improper Emergency Authentication Device" + icon = 'icons/obj/stationobjs.dmi' + icon_state = "blackbox" + density = 1 + anchored = 1 + + var/captains_key + var/secondary_key + var/activated = 0 + + flags = FPRINT + use_power = 0 + + New(loc, mode) + src.mode = mode + ..(loc) + + proc/check_key_existence() + if(!mode.captains_key) + captains_key = 1 + + if(!mode.secondary_key) + secondary_key = 1 + + proc/get_status() + if(activated) + return "Activated" + if(captains_key && secondary_key) + return "Both Keys Authenticated" + if(captains_key) + return "Captain's Key Authenticated" + if(secondary_key) + return "Secondary Key Authenticated" + else + return "Inactive" + +/obj/machinery/emergency_authentication_device/attack_hand(mob/user) + if(activated) + user << "\blue \The [src] is already active!" + return + + if(!mode.current_directive.directives_complete()) + state("Command aborted. Communication with CentComm is prohibited until Directive X has been completed.") + return + + check_key_existence() + if(captains_key && secondary_key) + activated = 1 + user << "\blue You activate \the [src]!" + state("Command acknowledged. Initiating quantum entanglement relay to NanoTrasen High Command.") + return + + if(!captains_key && !secondary_key) + state("Command aborted. Please present the authentication keys before proceeding.") + return + + if(!captains_key) + state("Command aborted. Please present the Captain's Authentication Key.") + return + + if(!secondary_key) + state("Command aborted. Please present the Emergency Secondary Authentication Key.") + return + + // Impossible! + state("Command aborted. This unit is defective.") + +/obj/machinery/emergency_authentication_device/attackby(obj/item/weapon/O, mob/user) + if(activated) + user << "\blue \The [src] is already active!" + return + + if(!mode.current_directive.directives_complete()) + state({"Command aborted. Communication with CentCom is prohibited until Directive X has been completed."}) + return + + check_key_existence() + if(istype(O, /obj/item/weapon/mutiny/auth_key/captain) && !captains_key) + captains_key = O + user.drop_item() + O.loc = src + + state("Key received. Thank you, Captain [mode.head_loyalist].") + spawn(5) + state(secondary_key ? "Your keys have been authenticated. Communication with CentCom is now authorized." : "Please insert the Emergency Secondary Authentication Key now.") + return + + if(istype(O, /obj/item/weapon/mutiny/auth_key/secondary) && !secondary_key) + secondary_key = O + user.drop_item() + O.loc = src + + state("Key received. Thank you, Secondary Authenticator [mode.head_mutineer].") + spawn(5) + state(captains_key ? "Your keys have been authenticated. Communication with CentCom is now authorized." : "Please insert the Captain's Authentication Key now.") + return + ..() + +/obj/machinery/emergency_authentication_device/examine() + usr << {" +This is a specialized communications device that is able to instantly send a message to NanoTrasen High Command via quantum entanglement with a sister device at CentCom. +The EAD's status is [get_status()]."} diff --git a/code/game/gamemodes/mutiny/key_pinpointer.dm b/code/game/gamemodes/mutiny/key_pinpointer.dm new file mode 100644 index 00000000000..d847f8b70bd --- /dev/null +++ b/code/game/gamemodes/mutiny/key_pinpointer.dm @@ -0,0 +1,49 @@ +/obj/item/weapon/pinpointer/advpinpointer/auth_key + name = "\improper Authentication Key Pinpointer" + desc = "Tracks the positions of the emergency authentication keys." + var/datum/game_mode/mutiny/mutiny + + New() + mutiny = ticker.mode + ..() + +/obj/item/weapon/pinpointer/advpinpointer/auth_key/attack_self() + switch(mode) + if (0) + mode = 1 + active = 1 + target = mutiny.captains_key + workobj() + usr << "\blue You calibrate \the [src] to locate the Captain's Authentication Key." + if (1) + mode = 2 + target = mutiny.secondary_key + usr << "\blue You calibrate \the [src] to locate the Emergency Secondary Authentication Key." + else + mode = 0 + active = 0 + icon_state = "pinoff" + usr << "\blue You switch \the [src] off." + +/obj/item/weapon/pinpointer/advpinpointer/auth_key/examine() + switch(mode) + if (0) + usr << "Is is calibrated for the Captain's Authentication Key." + if (1) + usr << "It is calibrated for the Emergency Secondary Authentication Key." + else + usr << "It is switched off." + +/datum/supply_packs/key_pinpointer + name = "Authentication Key Pinpointer crate" + contains = list(/obj/item/weapon/pinpointer/advpinpointer/auth_key) + cost = 250 + containertype = /obj/structure/closet/crate + containername = "Authentication Key Pinpointer crate" + access = access_heads + group = "Operations" + + New() + // This crate is only accessible during mutiny rounds + if (istype(ticker.mode,/datum/game_mode/mutiny)) + ..() diff --git a/code/game/gamemodes/mutiny/mutiny.dm b/code/game/gamemodes/mutiny/mutiny.dm new file mode 100644 index 00000000000..acef3b1d088 --- /dev/null +++ b/code/game/gamemodes/mutiny/mutiny.dm @@ -0,0 +1,350 @@ +datum/game_mode/mutiny + var/datum/mutiny_fluff/fluff + var/datum/directive/current_directive + var/obj/item/weapon/mutiny/auth_key/captain/captains_key + var/obj/item/weapon/mutiny/auth_key/secondary/secondary_key + var/obj/machinery/emergency_authentication_device/ead + var/datum/mind/head_loyalist + var/datum/mind/head_mutineer + var/list/loyalists = list() + var/list/mutineers = list() + var/list/body_count = list() + + name = "mutiny" + config_tag = "mutiny" + required_players = 7 + ert_disabled = 1 + + uplink_welcome = "Mutineers Uplink Console:" + uplink_uses = 0 + + New() + fluff = new(src) + + proc/reveal_directives() + spawn(rand(1 MINUTE, 3 MINUTES)) + fluff.announce_incoming_fax() + spawn(rand(3 MINUTES, 5 MINUTES)) + send_pda_message() + spawn(rand(3 MINUTES, 5 MINUTES)) + fluff.announce_directives() + spawn(rand(2 MINUTES, 3 MINUTE)) + fluff.announce_ert_unavailable() + + // Returns an array in case we want to expand on this later. + proc/get_head_loyalist_candidates() + var/list/candidates[0] + for(var/mob/loyalist in player_list) + if(loyalist.mind.assigned_role == "Captain") + candidates.Add(loyalist.mind) + return candidates + + proc/get_head_mutineer_candidates() + var/list/candidates[0] + for(var/mob/mutineer in player_list) + if(mutineer.client.prefs.be_special & BE_MUTINEER) + for(var/job in command_positions - "Captain") + if(mutineer.mind.assigned_role == job) + candidates.Add(mutineer.mind) + return candidates + + proc/get_directive_candidates() + var/list/candidates[0] + for(var/T in typesof(/datum/directive) - /datum/directive) + var/datum/directive/D = new T(src) + if (D.meets_prerequisites()) + candidates.Add(D) + return candidates + + proc/send_pda_message() + var/obj/item/device/pda/pda = null + for(var/obj/item/device/pda/P in head_mutineer.current) + pda = P + break + + if (!pda) + return 0 + + if (!pda.silent) + playsound(pda.loc, 'sound/machines/twobeep.ogg', 50, 1) + for (var/mob/O in hearers(3, pda.loc)) + O.show_message(text("\icon[pda] *[pda.ttone]*")) + + head_mutineer.current << fluff.get_pda_body() + return 1 + + proc/get_equipment_slots() + return list( + "left pocket" = slot_l_store, + "right pocket" = slot_r_store, + "backpack" = slot_in_backpack, + "left hand" = slot_l_hand, + "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 + + 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()) + H.update_icons() + H.verbs += /mob/living/carbon/human/proc/recruit_mutineer + + proc/add_loyalist(datum/mind/M) + loyalists.Add(M) + if (M in mutineers) + mutineers.Remove(M) + + M.current << fluff.loyalist_tag("You have joined the loyalists!") + head_loyalist.current << fluff.loyalist_tag("[M] has joined the loyalists!") + update_icon(M) + + proc/add_mutineer(datum/mind/M) + mutineers.Add(M) + if (M in loyalists) + loyalists.Remove(M) + + M.current << fluff.mutineer_tag("You have joined the mutineers!") + head_mutineer.current << fluff.mutineer_tag("[M] has joined the mutineers!") + update_icon(M) + + proc/was_bloodbath() + var/list/remaining_loyalists = loyalists - body_count + if (!remaining_loyalists.len) + return 1 + + var/list/remaining_mutineers = mutineers - body_count + if (!remaining_mutineers.len) + return 1 + + return 0 + + proc/replace_nuke_with_ead() + for(var/obj/machinery/nuclearbomb/N in world) + ead = new(N.loc, src) + del(N) + + proc/unbolt_vault_door() + var/obj/machinery/door/airlock/vault = locate(/obj/machinery/door/airlock/vault) + vault.locked = 0 + + proc/round_outcome() + world << "

Breaking News



" + if (was_bloodbath()) + world << fluff.no_victory() + return + + var/directives_completed = current_directive.directives_complete() + var/ead_activated = ead.activated + if (directives_completed && ead_activated) + world << fluff.loyalist_major_victory() + else if (directives_completed && !ead_activated) + world << fluff.loyalist_minor_victory() + else if (!directives_completed && ead_activated) + world << fluff.mutineer_minor_victory() + else if (!directives_completed && !ead_activated) + world << fluff.mutineer_major_victory() + + world << sound('sound/machines/twobeep.ogg') + + proc/update_all_icons() + spawn(0) + for(var/datum/mind/M in mutineers) + update_icon(M) + + for(var/datum/mind/M in loyalists) + update_icon(M) + return 1 + + proc/update_icon(datum/mind/M) + if(!M.current || !M.current.client) + return 0 + + for(var/image/I in M.current.client.images) + if (I.icon_state == "loyalist" || I.icon_state == "mutineer") + del(I) + + if(M in loyalists) + var/I = image('icons/mob/mob.dmi', loc=M.current, icon_state = "loyalist") + head_loyalist.current.client.images += I + + if(M in mutineers) + var/I = image('icons/mob/mob.dmi', loc=M.current, icon_state = "mutineer") + head_mutineer.current.client.images += I + + return 1 + + proc/check_antagonists_ui(admins) + var/turf/captains_key_loc = captains_key ? captains_key.get_turf() : "Lost or Destroyed" + var/turf/secondary_key_loc = secondary_key ? secondary_key.get_turf() : "Lost or Destroyed" + var/txt = {" +
Context:
+

+ [current_directive.get_description()] +

+
Orders:
+
    + [fluff.get_orders()] +
+
+
Authentication:
+ Captain's Key: [captains_key_loc] + Activate
+ Secondary Key: [secondary_key_loc] + Activate
+ EAD: [ead ? ead.get_status() : "Lost or Destroyed"] + Activate
+
+ "} + + 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() + +/datum/game_mode/mutiny/pre_setup() + var/list/loyalist_candidates = get_head_loyalist_candidates() + if(!loyalist_candidates || loyalist_candidates.len == 0) + world << "Mutiny mode aborted: no valid candidates for head loyalist." + return 0 + + var/list/mutineer_candidates = get_head_mutineer_candidates() + if(!mutineer_candidates || mutineer_candidates.len == 0) + world << "Mutiny mode aborted: no valid candidates for head mutineer." + return 0 + + var/list/directive_candidates = get_directive_candidates() + if(!directive_candidates || directive_candidates.len == 0) + world << "Mutiny mode aborted: no valid candidates for Directive X." + return 0 + + head_loyalist = pick(loyalist_candidates) + head_mutineer = pick(mutineer_candidates) + current_directive = pick(directive_candidates) + + 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.Add(head_loyalist) + mutineers.Add(head_mutineer) + + replace_nuke_with_ead() + current_directive.initialize() + unbolt_vault_door() + + update_all_icons() + spawn(0) + 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" + + var/datum/game_mode/mutiny/mode = get_mutiny_mode() + if (!mode || src != mode.head_loyalist.current) + return + + var/list/candidates = list() + for (var/mob/living/carbon/human/P in oview(src)) + if(!stat && P.client && P.mind && !P.mind.special_role) + candidates += P + + if(!candidates.len) + src << "\red You aren't close enough to anybody that can be recruited." + return + + var/mob/living/carbon/human/M = input("Select a person to recruit", "Loyalist recruitment", null) as mob in candidates + + if (M) + src << "Attempting to recruit [M]..." + log_admin("[src]([src.ckey]) attempted to recruit [M] as a loyalist.") + message_admins("\red [src]([src.ckey]) attempted to recruit [M] as a loyalist.") + + var/choice = alert(M, "Asked by [src]: Will you help me complete Directive X?", "Loyalist recruitment", "No", "Yes") + if(choice == "Yes") + mode.add_loyalist(M.mind) + else if(choice == "No") + M << "\red You declined to join the loyalists." + mode.head_loyalist.current << "\red [M] declined to support the loyalists." + +/mob/living/carbon/human/proc/recruit_mutineer() + set name = "Recruit Mutineer" + set category = "Mutiny" + + var/datum/game_mode/mutiny/mode = get_mutiny_mode() + if (!mode || src != mode.head_mutineer.current) + return + + var/list/candidates = list() + for (var/mob/living/carbon/human/P in oview(src)) + if(!stat && P.client && P.mind && !P.mind.special_role) + candidates += P + + if(!candidates.len) + src << "\red You aren't close enough to anybody that can be recruited." + return + + var/mob/living/carbon/human/M = input("Select a person to recruit", "Mutineer recruitment", null) as mob in candidates + + if (M) + src << "Attempting to recruit [M]..." + log_admin("[src]([src.ckey]) attempted to recruit [M] as a mutineer.") + message_admins("\red [src]([src.ckey]) attempted to recruit [M] as a mutineer.") + + var/choice = alert(M, "Asked by [src]: Will you help me stop Directive X?", "Mutineer recruitment", "No", "Yes") + if(choice == "Yes") + mode.add_mutineer(M.mind) + else if(choice == "No") + M << "\red You declined to join the mutineers." + mode.head_mutineer.current << "\red [M] declined to support the mutineers." + +/proc/get_mutiny_mode() + if(!ticker || !istype(ticker.mode, /datum/game_mode/mutiny)) + return null + + return ticker.mode diff --git a/code/game/gamemodes/mutiny/mutiny_fluff.dm b/code/game/gamemodes/mutiny/mutiny_fluff.dm new file mode 100644 index 00000000000..dc13acda625 --- /dev/null +++ b/code/game/gamemodes/mutiny/mutiny_fluff.dm @@ -0,0 +1,209 @@ +/datum/mutiny_fluff + var/datum/game_mode/mutiny/mode + + New(datum/game_mode/mutiny/M) + mode = M + + proc/centcom_announce(text) + world << {" +
:-:=:-: CENTRAL COMMAND ANNOUNCEMENT :-:=:-:

+[text] + "} + world << sound('sound/AI/commandreport.ogg') + + proc/announce_incoming_fax() + centcom_announce({" +Incoming Emergency Directive: +Captain's Office Fax Machine, [station_name()] + "}) + + proc/announce_directives() + for (var/obj/machinery/faxmachine/fax in world) + if (fax.department == "Captain's Office") + var/obj/item/weapon/paper/directive_x = new(fax.loc) + directive_x.name = "emergency action message" + directive_x.info = get_fax_body() + + proc/get_fax_body() + return {" +
NOT A DRILL . . . EMERGENCY DIRECTIVE . . . NOT A DRILL
+

+ TO: Captain [mode.head_loyalist], Commanding Officer, [station_name()]
+ FROM: NanoTrasen Emergency Messaging Relay
+ DATE: [time2text(world.realtime, "MM/DD")]/[game_year]
+ SUBJECT: Directive X
+

+ + [mode.current_directive.get_description()] + +
+
Emergency Authentication Protocol
+

+ A member of your Command Staff is this shift's designated Emergency Secondary Authenticator.
+ This Emergency Secondary Authenticator is uniquely aware of their role and possesses the Emergency Secondary Authentication Key.
+ As Captain, you possess the Captain's Authentication Key.
+ The Emergency Authentication Device is located in the vault of your station, and requires simultaneous activation of the Authentication Keys.
+ An Authentication Key Pinpointer can be delivered via Cargo Bay to assist recovery of the Authentication Keys should they be lost aboard the station.
+ A key's destruction or removal from the station's perimeter will automatically and irreversibly activate the Emergency Authentication Device. +

+
+ +
Orders
+

+ Captain [mode.head_loyalist], you are to immediately initiate the following procedure; codenamed Directive X: +

+
    + [get_orders()] +
+
+ +
Authentication
+ + Encoded Authentication String: T0JCJUwoIVFDQA==
+ Emergency Action Code: O B B _ L _ _ Q C _
+ ERROR: DECODING INCOMPLETE (40% LOSS) +
+
+
+ +
NOT A DRILL . . . EMERGENCY DIRECTIVE . . . NOT A DRILL
+ "} + + proc/get_orders() + var/text = "
  • Immediate external transmission and signals silence. Evacuation and Cargo services will remain available. All ERT teams are engaged elsewhere. Do not communicate with Central Command under any circumstances.
  • " + for(var/order in mode.current_directive.special_orders) + text += "
  • [order]
  • " + + text += "
  • Upon completion of this Directive, Captain [mode.head_loyalist] and the Emergency Secondary Authenticator must utilise the Captain's Authentication Key and the Emergency Secondary Authentication Key to activate the Emergency Authentication Device.
  • " + return text + + proc/get_pda_body() + return {"← From Anonymous Channel:

    \"You must read this! NanoTrasen Chain of Command COMPROMISED. Command Encryptions BROKEN. [station_name()] Captain [mode.head_loyalist] will receive orders that must NOT BE BROUGHT TO FRUITION! + +They don't care about us they only care about WEALTH and POWER... Share this message with people you trust. + +Be safe, friend.\" (Unable to Reply)

    "} + + + proc/announce_ert_unavailable() + // I might have gotten a little carried away. + centcom_announce({" +

    The presence of [pick( + "political instability", + "quantum fluctuations", + "hostile raiders", + "derelict station debris", + "REDACTED", + "ancient alien artillery", + "solar magnetic storms", + "sentient time-travelling killbots", + "gravitational anomalies", + "wormholes to another dimension", + "a telescience mishap", + "radiation flares", + "supermatter dust", + "leaks into a negative reality", + "antiparticle clouds", + "residual bluespace energy", + "suspected syndicate operatives", + "malfunctioning von Neumann probe swarms", + "shadowy interlopers", + "a stranded Vox arkship", + "haywire IPC constructs", + "rogue Unathi exiles", + "artifacts of eldritch horror", + "a brain slug infestation", + "killer bugs that lay eggs in the husks of the living", + "a deserted transport carrying xenomorph specimens", + "an emissary for the gestalt requesting a security detail", + "a Tajaran slave rebellion", + "radical Skrellian transevolutionaries", + "classified security operations", + "science-defying raw elemental chaos")] +in the region is tying up all available local emergency resources; +emergency response teams can not be called at this time.

    + "}) + + proc/announce() + world << "The current game mode is - Mutiny!" + world << {" +

    The crew will be divided by their sense of ethics when a morally turbulent emergency directive arrives with an incomplete command validation code.

    +The [loyalist_tag("Head Loyalist")] is the Captain, who carries the [loyalist_tag("Captain's Authentication Key")] at all times.
    +The [mutineer_tag("Head Mutineer")] is a random Head of Staff who carries the [mutineer_tag("Emergency Secondary Authentication Key")].

    +Both keys are required to activate the Emergency Authentication Device (EAD) in the vault, signalling to NanoTrasen that the directive is complete. +
    +

    +Loyalists - Follow the Head Loyalist in carrying out [loyalist_tag("NanoTrasen's directives")] then activate the EAD.
    +Mutineers - Prevent the completion of the [mutineer_tag("improperly validated directives")] and the activation of the EAD. +

    + "} + + proc/loyalist_tag(text) + return "[text]" + + proc/mutineer_tag(text) + return "[text]" + + proc/their(datum/mind/head) + if (head.current.gender == MALE) + return "his" + else if (head.current.gender == FEMALE) + return "her" + + return "their" + + 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 [station_name()], a research station in Tau Ceti. +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. +NanoTrasen will be awarding [mode.loyalists.len] members of the crew with the [loyalist_tag("Star of Loyalty")], following their successful efforts, at a ceremony this coming Thursday. +[mode.body_count.len] are believed to have died during the coup. +

    NanoTrasen's image will forever be haunted by the fact that a mutiny took place on one of its own stations.

    + "} + + 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 [station_name()], a research station in Tau Ceti. +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. +NanoTrasen will be awarding [mode.loyalists.len] members of the crew with the [loyalist_tag("Star of Loyalty")], following their mostly successful efforts, at a ceremony this coming Thursday. +[mode.body_count.len] are believed to have died during the coup. +

    NanoTrasen's image will forever be haunted by the fact that a mutiny took place on one of its own stations.

    + "} + + proc/no_victory() + return {" +NanoTrasen has been thrust into turmoil following an apparent mutiny by key personnel aboard the [station_name()], a research station in Tau Ceti. +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. +Sources indicate that [mode.mutineers.len] members of the station's personnel are currently under investigation for mutiny, and [mode.loyalists.len] crew are currently providing evidence to investigators, believed to be the 'loyal' station personnel. +[mode.body_count.len] are believed to have died during the coup. +

    NanoTrasen's image will forever be haunted by the fact that a mutiny took place on one of its own stations.

    + "} + + proc/mutineer_minor_victory() + return {" +Reports have emerged that an impromptu mutiny has taken place, amid a local interstellar crisis, aboard the [station_name()], a research station in Tau Ceti. +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. +NanoTrasen has reprimanded [mode.loyalists.len] members of the crew for failing to follow command validation procedures. +[mode.body_count.len] are believed to have died during the coup. +

    Even though the directive was not successfully implemented, NanoTrasen's image will forever be haunted by the fact that its authentication protocol was breached with such magnitude and that a mutiny was the result.

    + "} + + 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--[station_name()]--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. +[mode.mutineers.len] members of the station's personnel were congratulated and awarded with the [mutineer_tag("Star of Bravery")], for their efforts in preventing the illegal directive's completion. +NanoTrasen has [mode.loyalists.len] members of the crew in holding, while it investigates the circumstances that led to the acceptance and initiation of an invalid directive. +[mode.body_count.len] are believed to have died during the coup. +

    Even though the directive was not successfully implemented, NanoTrasen's image will forever be haunted by the fact that its authentication protocol was breached with such magnitude and that a mutiny was the result.

    + "} diff --git a/code/game/gamemodes/mutiny/mutiny_hooks.dm b/code/game/gamemodes/mutiny/mutiny_hooks.dm new file mode 100644 index 00000000000..4edb763ac02 --- /dev/null +++ b/code/game/gamemodes/mutiny/mutiny_hooks.dm @@ -0,0 +1,27 @@ +/hook/death/proc/track_kills(mob/living/carbon/human/deceased, gibbed) + var/datum/game_mode/mutiny/mode = get_mutiny_mode() + if (!mode) return 1 + + mode.body_count.Add(deceased.mind) + return 1 + +/hook/clone/proc/update_icon(mob/living/carbon/human/H) + var/datum/game_mode/mutiny/mode = get_mutiny_mode() + if (!mode) return 1 + + mode.update_icon(H.mind) + return 1 + +/hook/harvest_podman/proc/update_icon(mob/living/carbon/monkey/diona/D) + var/datum/game_mode/mutiny/mode = get_mutiny_mode() + if (!mode) return 1 + + mode.update_icon(D.mind) + return 1 + +/hook/roundend/proc/report_mutiny_news() + var/datum/game_mode/mutiny/mode = get_mutiny_mode() + if (!mode) return 1 + + mode.round_outcome() + return 1 diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 4361460980f..853481b1440 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -183,6 +183,7 @@ H << "Consciousness slowly creeps over you as your body regenerates.
    So this is what cloning feels like?
    " // -- Mode/mind specific stuff goes here + callHook("clone", list(H)) switch(ticker.mode.name) if("revolution") diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index fcf525cc364..176606face1 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -2,247 +2,124 @@ /obj/machinery/computer/card name = "Identification Computer" - desc = "You can use this to change ID's." + desc = "Terminal for programming NanoTrasen employee ID cards to access parts of the station." icon_state = "id" req_access = list(access_change_ids) circuit = "/obj/item/weapon/circuitboard/card" var/obj/item/weapon/card/id/scan = null var/obj/item/weapon/card/id/modify = null - var/authenticated = 0.0 var/mode = 0.0 var/printing = null + proc/is_centcom() + return istype(src, /obj/machinery/computer/card/centcom) -/obj/machinery/computer/card/attackby(O as obj, user as mob)//TODO:SANITY - if(istype(O, /obj/item/weapon/card/id)) - var/obj/item/weapon/card/id/idcard = O - if(access_change_ids in idcard.access) - if(!scan) - usr.drop_item() - idcard.loc = src - scan = idcard - else if(!modify) - usr.drop_item() - idcard.loc = src - modify = idcard - else - if(!modify) - usr.drop_item() - idcard.loc = src - modify = idcard - else - ..() + proc/is_authenticated() + return scan ? check_access(scan) : 0 + proc/get_target_rank() + return modify && modify.assignment ? modify.assignment : "Unassigned" + + proc/format_jobs(list/jobs) + var/list/formatted = list() + for(var/job in jobs) + formatted.Add(list(list( + "display_name" = replacetext(job, " ", " "), + "target_rank" = get_target_rank(), + "job" = job))) + + return formatted + +/obj/machinery/computer/card/attackby(obj/item/weapon/card/id/id_card, mob/user) + if(!istype(id_card)) + return ..() + + if(!scan && access_change_ids in id_card.access) + user.drop_item() + id_card.loc = src + scan = id_card + else if(!modify) + user.drop_item() + id_card.loc = src + modify = id_card + + nanomanager.update_uis(src) + attack_hand(user) /obj/machinery/computer/card/attack_ai(var/mob/user as mob) return attack_hand(user) - /obj/machinery/computer/card/attack_paw(var/mob/user as mob) return attack_hand(user) +/obj/machinery/computer/card/attack_hand(mob/user as mob) + if(..()) return + if(stat & (NOPOWER|BROKEN)) return + ui_interact(user) -/obj/machinery/computer/card/attack_hand(var/mob/user as mob) - if(..()) - return - +/obj/machinery/computer/card/ui_interact(mob/user, ui_key="main", datum/nanoui/ui=null) user.set_machine(src) - var/dat - if (!( ticker )) - return - if (mode) // accessing crew manifest - dat += "

    Crew Manifest

    " - dat += "Entries cannot be modified from this terminal.

    " - if(data_core) - dat += data_core.get_manifest(0) // make it monochrome - dat += "
    " - dat += "Print
    " - dat += "
    " - dat += "Access ID modification console.
    " + var/data[0] + data["src"] = "\ref[src]" + data["station_name"] = station_name() + data["mode"] = mode + data["printing"] = printing + data["manifest"] = data_core ? data_core.get_manifest(0) : null + data["target_name"] = modify ? modify.name : "-----" + data["target_owner"] = modify && modify.registered_name ? modify.registered_name : "-----" + data["target_rank"] = get_target_rank() + data["scan_name"] = scan ? scan.name : "-----" + data["authenticated"] = is_authenticated() + data["has_modify"] = !!modify + data["account_number"] = modify ? modify.associated_account_number : null + data["centcom_access"] = is_centcom() + data["all_centcom_access"] = null + data["regions"] = null - /*var/crew = "" - var/list/L = list() - for (var/datum/data/record/t in data_core.general) - var/R = t.fields["name"] + " - " + t.fields["rank"] - L += R - for(var/R in sortList(L)) - crew += "[R]
    "*/ - //dat = "Crew Manifest:
    Please use security record computer to modify entries.

    [crew]Print

    Access ID modification console.
    " - else - var/header = "
    Identification Card Modifier
    " + data["engineering_jobs"] = format_jobs(engineering_positions) + data["medical_jobs"] = format_jobs(medical_positions) + data["science_jobs"] = format_jobs(science_positions) + data["security_jobs"] = format_jobs(security_positions) + data["civilian_jobs"] = format_jobs(civilian_positions) + data["centcom_jobs"] = format_jobs(get_all_centcom_jobs()) - var/target_name - var/target_owner - var/target_rank - if(modify) - target_name = modify.name - else - target_name = "--------" - if(modify && modify.registered_name) - target_owner = modify.registered_name - else - target_owner = "--------" - if(modify && modify.assignment) - target_rank = modify.assignment - else - target_rank = "Unassigned" + if (modify && is_centcom()) + var/list/all_centcom_access = list() + for(var/access in get_all_centcom_access()) + all_centcom_access.Add(list(list( + "desc" = replacetext(get_centcom_access_desc(access), " ", " "), + "ref" = access, + "allowed" = (access in modify.access) ? 1 : 0))) - var/scan_name - if(scan) - scan_name = scan.name - else - scan_name = "--------" + data["all_centcom_access"] = all_centcom_access + else if (modify) + var/list/regions = list() + for(var/i = 1; i <= 7; i++) + var/list/accesses = list() + for(var/access in get_region_accesses(i)) + if (get_access_desc(access)) + accesses.Add(list(list( + "desc" = replacetext(get_access_desc(access), " ", " "), + "ref" = access, + "allowed" = (access in modify.access) ? 1 : 0))) - if(!authenticated) - header += "
    Please insert the cards into the slots
    " - header += "Target: [target_name]
    " - header += "Confirm Identity: [scan_name]
    " - else - header += "

    " - header += "Remove [target_name] || " - header += "Remove [scan_name]
    " - header += "Access Crew Manifest || " - header += "Log Out
    " + regions.Add(list(list( + "name" = get_region_accesses_name(i), + "accesses" = accesses))) - header += "
    " - - var/jobs_all = "" - var/counter = 0 - jobs_all += "" - - jobs_all += ""//Captain in special because he is head of heads ~Intercross21 - jobs_all += "" - jobs_all += "" - - counter = 0 - jobs_all += ""//Orange - for(var/job in engineering_positions) - counter++ - if(counter >= 6) - jobs_all += "" - counter = 0 - jobs_all += "" - - counter = 0 - jobs_all += ""//Green - for(var/job in medical_positions) - counter++ - if(counter >= 6) - jobs_all += "" - counter = 0 - jobs_all += "" - - counter = 0 - jobs_all += ""//Purple - for(var/job in science_positions) - counter++ - if(counter >= 6) - jobs_all += "" - counter = 0 - jobs_all += "" - - counter = 0 - jobs_all += ""//Grey - for(var/job in civilian_positions) - counter++ - if(counter >= 6) - jobs_all += "" - counter = 0 - jobs_all += "" - - if(istype(src,/obj/machinery/computer/card/centcom)) - counter = 0 - jobs_all += ""//Brown - for(var/job in get_all_centcom_jobs()) - if(counter >= 6) - jobs_all += "" - counter = 0 - jobs_all += "" - - var/body - if (authenticated && modify) - var/carddesc = {""} - carddesc += "" - carddesc += "" - carddesc += "" - carddesc += "registered_name:" - carddesc += "" - carddesc += "" - - carddesc += "" - carddesc += "" - carddesc += "" - carddesc += "Stored account number:" - carddesc += "" - carddesc += "" - - carddesc += "Assignment: " - var/jobs = "[target_rank]" //CHECK THIS - var/accesses = "" - if(istype(src,/obj/machinery/computer/card/centcom)) - accesses += "
    Central Command:
    " - for(var/A in get_all_centcom_access()) - if(A in modify.access) - accesses += "[replacetext(get_centcom_access_desc(A), " ", " ")] " - else - accesses += "[replacetext(get_centcom_access_desc(A), " ", " ")] " - else - accesses += "
    Access
    " - accesses += "
    Command
    SpecialCaptainCustom
    Engineering
    [replacetext(job, " ", " ")]
    Medical
    [replacetext(job, " ", " ")]
    Science
    [replacetext(job, " ", " ")]
    Civilian
    [replacetext(job, " ", " ")]
    CentComm
    [replacetext(job, " ", " ")]
    " - accesses += "" - for(var/i = 1; i <= 7; i++) - accesses += "" - accesses += "" - for(var/i = 1; i <= 7; i++) - accesses += "" - accesses += "
    [get_region_accesses_name(i)]:
    " - for(var/A in get_region_accesses(i)) - if(A in modify.access) - accesses += "[replacetext(get_access_desc(A), " ", " ")] " - else - accesses += "[replacetext(get_access_desc(A), " ", " ")] " - accesses += "
    " - accesses += "
    " - body = "[carddesc]
    [jobs]

    [accesses]" //CHECK THIS - else - body = "{Log in}

    " - body += "Access Crew Manifest" - dat = "[header][body]

    " - user << browse(dat, "window=id_com;size=900x520") - onclose(user, "id_com") - return + data["regions"] = regions + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) + if (!ui) + ui = new(user, src, ui_key, "identification_computer.tmpl", src.name, 600, 700) + ui.set_initial_data(data) + ui.open() /obj/machinery/computer/card/Topic(href, href_list) if(..()) - return - usr.set_machine(src) + return 1 + switch(href_list["choice"]) if ("modify") if (modify) @@ -262,7 +139,6 @@ usr.drop_item() I.loc = src modify = I - authenticated = 0 if ("scan") if (scan) @@ -280,26 +156,19 @@ usr.drop_item() I.loc = src scan = I - authenticated = 0 - if ("auth") - if ((!( authenticated ) && (scan || (istype(usr, /mob/living/silicon))) && (modify || mode))) - if (check_access(scan)) - authenticated = 1 - else if ((!( authenticated ) && (istype(usr, /mob/living/silicon))) && (!modify)) - usr << "You can't modify an ID without an ID inserted to modify. Once one is in the modify slot on the computer, you can log in." - if ("logout") - authenticated = 0 + if("access") if(href_list["allowed"]) - if(authenticated) + if(is_authenticated()) var/access_type = text2num(href_list["access_target"]) var/access_allowed = text2num(href_list["allowed"]) - if(access_type in (istype(src,/obj/machinery/computer/card/centcom)?get_all_centcom_access() : get_all_accesses())) + if(access_type in (is_centcom() ? get_all_centcom_access() : get_all_accesses())) modify.access -= access_type - if(access_allowed == 1) + if(!access_allowed) modify.access += access_type + if ("assign") - if (authenticated) + if (is_authenticated() && modify) var/t1 = href_list["assign_target"] if(t1 == "Custom") var/temp_t = copytext(sanitize(input("Enter a custom job assignment.","Assignment")),1,45) @@ -307,69 +176,91 @@ if(temp_t && modify) modify.assignment = temp_t else - var/datum/job/jobdatum - for(var/jobtype in typesof(/datum/job)) - var/datum/job/J = new jobtype - if(ckey(J.title) == ckey(t1)) - jobdatum = J - break - if(!jobdatum) - usr << "\red No log exists for this job." - return + var/list/access = list() + if(is_centcom()) + access = get_centcom_access(t1) + else + var/datum/job/jobdatum + for(var/jobtype in typesof(/datum/job)) + var/datum/job/J = new jobtype + if(ckey(J.title) == ckey(t1)) + jobdatum = J + break + if(!jobdatum) + usr << "\red No log exists for this job: [t1]" + return + + access = jobdatum.get_access() + + modify.access = access + modify.assignment = t1 + modify.rank = t1 + + callHook("reassign_employee", list(modify)) - modify.access = ( istype(src,/obj/machinery/computer/card/centcom) ? get_centcom_access(t1) : jobdatum.get_access() ) - if (modify) - modify.assignment = t1 - modify.rank = t1 if ("reg") - if (authenticated) + if (is_authenticated()) var/t2 = modify - //var/t1 = input(usr, "What name?", "ID computer", null) as text - if ((authenticated && modify == t2 && (in_range(src, usr) || (istype(usr, /mob/living/silicon))) && istype(loc, /turf))) + if ((modify == t2 && (in_range(src, usr) || (istype(usr, /mob/living/silicon))) && istype(loc, /turf))) var/temp_name = reject_bad_name(href_list["reg"]) if(temp_name) modify.registered_name = temp_name else src.visible_message("[src] buzzes rudely.") + nanomanager.update_uis(src) + if ("account") - if (authenticated) + if (is_authenticated()) var/t2 = modify - //var/t1 = input(usr, "What name?", "ID computer", null) as text - if ((authenticated && modify == t2 && (in_range(src, usr) || (istype(usr, /mob/living/silicon))) && istype(loc, /turf))) + if ((modify == t2 && (in_range(src, usr) || (istype(usr, /mob/living/silicon))) && istype(loc, /turf))) var/account_num = text2num(href_list["account"]) modify.associated_account_number = account_num + nanomanager.update_uis(src) + if ("mode") mode = text2num(href_list["mode_target"]) + if ("print") - if (!( printing )) + if (!printing) printing = 1 - sleep(50) - var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( loc ) - /*var/t1 = "Crew Manifest:
    " - var/list/L = list() - for (var/datum/data/record/t in data_core.general) - var/R = t.fields["name"] + " - " + t.fields["rank"] - L += R - for(var/R in sortList(L)) - t1 += "[R]
    "*/ + spawn(50) + printing = null + nanomanager.update_uis(src) - var/t1 = "

    Crew Manifest

    " - t1 += "
    " - if(data_core) - t1 += data_core.get_manifest(0) // make it monochrome + var/obj/item/weapon/paper/P = new(loc) + if (mode) + P.name = text("crew manifest ([])", worldtime2text()) + P.info = {"

    Crew Manifest

    +
    + [data_core ? data_core.get_manifest(0) : ""] + "} + else if (modify) + P.name = "access report" + P.info = {"

    Access Report

    + Prepared By: [scan.registered_name ? scan.registered_name : "Unknown"]
    + For: [modify.registered_name ? modify.registered_name : "Unregistered"]
    +
    + Assignment: [modify.assignment]
    + Account Number: #[modify.associated_account_number]
    + Blood Type: [modify.blood_type]

    + Access:
    + "} + + for(var/A in modify.access) + P.info += " [get_access_desc(A)]" + + if ("terminate") + modify.assignment = "Terminated" + modify.access = list() + + callHook("terminate_employee", list(modify)) - P.info = t1 - P.name = text("Crew Manifest ([])", worldtime2text()) - printing = null if (modify) modify.name = text("[modify.registered_name]'s ID Card ([modify.assignment])") - updateUsrDialog() - return - + return 1 /obj/machinery/computer/card/centcom name = "CentCom Identification Computer" circuit = "/obj/item/weapon/circuitboard/card/centcom" req_access = list(access_cent_captain) - diff --git a/code/game/machinery/podmen.dm b/code/game/machinery/podmen.dm index 6dd173f4478..8e0fd140237 100644 --- a/code/game/machinery/podmen.dm +++ b/code/game/machinery/podmen.dm @@ -129,6 +129,8 @@ Growing it to term with nothing injected will grab a ghost from the observers. * podman.dna.real_name = podman.real_name // Update mode specific HUD icons. + callHook("harvest_podman", list(podman)) + switch(ticker.mode.name) if ("revolution") if (podman.mind in ticker.mode:revolutionaries) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 1b10ee72b95..624c3824d19 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -476,6 +476,12 @@ /obj/item/proc/IsShield() return 0 +/obj/item/proc/get_turf() + var/atom/L = loc + while(L && !istype(L, /turf/)) + L = L.loc + return loc + /obj/item/proc/eyestab(mob/living/carbon/M as mob, mob/living/carbon/user as mob) var/mob/living/carbon/human/H = M diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 3d3b88f4d06..6626b4d36c7 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -166,7 +166,7 @@ var/obj/item/device/mmi/M = W if(check_completion()) if(!istype(loc,/turf)) - user << "\red You can't put the [W] in, the frame has to be standing on the ground to be perfectly precise." + user << "\red You can't put \the [W] in, the frame has to be standing on the ground to be perfectly precise." return if(!M.brainmob) user << "\red Sticking an empty [W] into the frame would sort of defeat the purpose." @@ -179,7 +179,7 @@ ghost_can_reenter = 1 break if(!ghost_can_reenter) - user << "The [W] is completely unresponsive; there's no point." + user << "\The [W] is completely unresponsive; there's no point." return if(M.brainmob.stat == DEAD) @@ -222,6 +222,7 @@ cell_component.installed = 1 feedback_inc("cyborg_birth",1) + callHook("borgify", list(O)) O.Namepick() del(src) @@ -294,4 +295,4 @@ user << "\red You slide [W] into the dataport on [src] and short out the safeties." sabotaged = 1 return - ..() \ No newline at end of file + ..() diff --git a/code/game/response_team.dm b/code/game/response_team.dm index a518cef566e..ce719f6c68d 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -329,4 +329,4 @@ proc/trigger_armed_response_team(var/force = 0) /*client/verb/ResponseTeam() set category = "Admin" if(!send_emergency_team) - send_emergency_team = 1*/ \ No newline at end of file + send_emergency_team = 1*/ diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 037956d5fd7..a9a5a5715e3 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -241,6 +241,8 @@ var/list/mechtoys = list( // Must be in a crate! if(istype(MA,/obj/structure/closet/crate)) + callHook("sell_crate", list(MA, shuttle)) + points += points_per_crate var/find_slip = 1 diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index 87ed4787058..c051a72eb1e 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -1,527 +1,506 @@ /datum/admins/proc/player_panel_new()//The new one - if (!usr.client.holder) - return - var/dat = "Admin Player Panel" + if (!usr.client.holder) + return + var/dat = "Admin Player Panel" - //javascript, the part that does most of the work~ - dat += {" + //javascript, the part that does most of the work~ + dat += {" - - - - - - "} - - //body tag start + onload and onkeypress (onkeyup) javascript event calls - dat += "" - - //title + search bar - dat += {" - - - - - - - - -
    - Player panel
    - Hover over a line to see more information - Check antagonists -

    -

    - Search: -
    - - "} - - //player table header - dat += {" - - "} - - var/list/mobs = sortmobs() - var/i = 1 - for(var/mob/M in mobs) - if(M.ckey) - - var/color = "#e6e6e6" - if(i%2 == 0) - color = "#f2f2f2" - var/is_antagonist = is_special_character(M) - - var/M_job = "" - - if(isliving(M)) - - if(iscarbon(M)) //Carbon stuff - if(ishuman(M)) - M_job = M.job - else if(isslime(M)) - M_job = "slime" - else if(ismonkey(M)) - M_job = "Monkey" - else if(isalien(M)) //aliens - if(islarva(M)) - M_job = "Alien larva" - else - M_job = "Alien" - else - M_job = "Carbon-based" - - else if(issilicon(M)) //silicon - if(isAI(M)) - M_job = "AI" - else if(ispAI(M)) - M_job = "pAI" - else if(isrobot(M)) - M_job = "Cyborg" - else - M_job = "Silicon-based" - - else if(isanimal(M)) //simple animals - if(iscorgi(M)) - M_job = "Corgi" - else - M_job = "Animal" - - else - M_job = "Living" - - else if(istype(M,/mob/new_player)) - M_job = "New player" - - else if(isobserver(M)) - M_job = "Ghost" - - M_job = replacetext(M_job, "'", "") - M_job = replacetext(M_job, "\"", "") - M_job = replacetext(M_job, "\\", "") - - var/M_name = M.name - M_name = replacetext(M_name, "'", "") - M_name = replacetext(M_name, "\"", "") - M_name = replacetext(M_name, "\\", "") - var/M_rname = M.real_name - M_rname = replacetext(M_rname, "'", "") - M_rname = replacetext(M_rname, "\"", "") - M_rname = replacetext(M_rname, "\\", "") - - var/M_key = M.key - M_key = replacetext(M_key, "'", "") - M_key = replacetext(M_key, "\"", "") - M_key = replacetext(M_key, "\\", "") - - //output for each mob - dat += {" - - - - - - "} - - i++ - - - //player table ending - dat += {" -
    - - - [M_name] - [M_rname] - [M_key] ([M_job]) - -
    -
    -
    - - - - "} - - usr << browse(dat, "window=players;size=600x480") + var maintable_data = document.getElementById('maintable_data'); + var ltr = maintable_data.getElementsByTagName("tr"); + for ( var i = 0; i < ltr.length; ++i ) + { + try{ + var tr = ltr\[i\]; + if(tr.getAttribute("id").indexOf("data") != 0){ + continue; + } + var ltd = tr.getElementsByTagName("td"); + var td = ltd\[0\]; + var lsearch = td.getElementsByTagName("b"); + var search = lsearch\[0\]; + //var inner_span = li.getElementsByTagName("span")\[1\] //Should only ever contain one element. + //document.write("

    "+search.innerText+"
    "+filter+"
    "+search.innerText.indexOf(filter)) + if ( search.innerText.toLowerCase().indexOf(filter) == -1 ) + { + //document.write("a"); + //ltr.removeChild(tr); + td.innerHTML = ""; + i--; + } + }catch(err) { } + } + } + + var count = 0; + var index = -1; + var debug = document.getElementById("debug"); + + locked_tabs = new Array(); + + } + + function expand(id,job,name,real_name,image,key,ip,antagonist,ref){ + + clearAll(); + + var span = document.getElementById(id); + + body = "
    "; + + body += ""; + + body += ""+job+" "+name+"
    Real name "+real_name+"
    Played by "+key+" ("+ip+")
    " + + body += "
    "; + + body += "PP - " + body += "N - " + body += "VV - " + body += "TP - " + body += "PM - " + body += "SM - " + body += "JMP
    " + if(antagonist > 0) + body += "Antagonist"; + + body += "
    "; + + + span.innerHTML = body + } + + function clearAll(){ + var spans = document.getElementsByTagName('span'); + for(var i = 0; i < spans.length; i++){ + var span = spans\[i\]; + + var id = span.getAttribute("id"); + + if(!(id.indexOf("item")==0)) + continue; + + var pass = 1; + + for(var j = 0; j < locked_tabs.length; j++){ + if(locked_tabs\[j\]==id){ + pass = 0; + break; + } + } + + if(pass != 1) + continue; + + + + + span.innerHTML = ""; + } + } + + function addToLocked(id,link_id,notice_span_id){ + var link = document.getElementById(link_id); + var decision = link.getAttribute("name"); + if(decision == "1"){ + link.setAttribute("name","2"); + }else{ + link.setAttribute("name","1"); + removeFromLocked(id,link_id,notice_span_id); + return; + } + + var pass = 1; + for(var j = 0; j < locked_tabs.length; j++){ + if(locked_tabs\[j\]==id){ + pass = 0; + break; + } + } + if(!pass) + return; + locked_tabs.push(id); + var notice_span = document.getElementById(notice_span_id); + notice_span.innerHTML = "Locked "; + //link.setAttribute("onClick","attempt('"+id+"','"+link_id+"','"+notice_span_id+"');"); + //document.write("removeFromLocked('"+id+"','"+link_id+"','"+notice_span_id+"')"); + //document.write("aa - "+link.getAttribute("onClick")); + } + + function attempt(ab){ + return ab; + } + + function removeFromLocked(id,link_id,notice_span_id){ + //document.write("a"); + var index = 0; + var pass = 0; + for(var j = 0; j < locked_tabs.length; j++){ + if(locked_tabs\[j\]==id){ + pass = 1; + index = j; + break; + } + } + if(!pass) + return; + locked_tabs\[index\] = ""; + var notice_span = document.getElementById(notice_span_id); + notice_span.innerHTML = ""; + //var link = document.getElementById(link_id); + //link.setAttribute("onClick","addToLocked('"+id+"','"+link_id+"','"+notice_span_id+"')"); + } + + function selectTextField(){ + var filter_text = document.getElementById('filter'); + filter_text.focus(); + filter_text.select(); + } + + + + + + "} + + //body tag start + onload and onkeypress (onkeyup) javascript event calls + dat += "" + + //title + search bar + dat += {" + + + + + + + + +
    + Player panel
    + Hover over a line to see more information - Check antagonists +

    +

    + Search: +
    + + "} + + //player table header + dat += {" + + "} + + var/list/mobs = sortmobs() + var/i = 1 + for(var/mob/M in mobs) + if(M.ckey) + + var/color = "#e6e6e6" + if(i%2 == 0) + color = "#f2f2f2" + var/is_antagonist = is_special_character(M) + + var/M_job = "" + + if(isliving(M)) + + if(iscarbon(M)) //Carbon stuff + if(ishuman(M)) + M_job = M.job + else if(isslime(M)) + M_job = "slime" + else if(ismonkey(M)) + M_job = "Monkey" + else if(isalien(M)) //aliens + if(islarva(M)) + M_job = "Alien larva" + else + M_job = "Alien" + else + M_job = "Carbon-based" + + else if(issilicon(M)) //silicon + if(isAI(M)) + M_job = "AI" + else if(ispAI(M)) + M_job = "pAI" + else if(isrobot(M)) + M_job = "Cyborg" + else + M_job = "Silicon-based" + + else if(isanimal(M)) //simple animals + if(iscorgi(M)) + M_job = "Corgi" + else + M_job = "Animal" + + else + M_job = "Living" + + else if(istype(M,/mob/new_player)) + M_job = "New player" + + else if(isobserver(M)) + M_job = "Ghost" + + M_job = replacetext(M_job, "'", "") + M_job = replacetext(M_job, "\"", "") + M_job = replacetext(M_job, "\\", "") + + var/M_name = M.name + M_name = replacetext(M_name, "'", "") + M_name = replacetext(M_name, "\"", "") + M_name = replacetext(M_name, "\\", "") + var/M_rname = M.real_name + M_rname = replacetext(M_rname, "'", "") + M_rname = replacetext(M_rname, "\"", "") + M_rname = replacetext(M_rname, "\\", "") + + var/M_key = M.key + M_key = replacetext(M_key, "'", "") + M_key = replacetext(M_key, "\"", "") + M_key = replacetext(M_key, "\\", "") + + //output for each mob + dat += {" + + + + + + "} + + i++ + + + //player table ending + dat += {" +
    + + + [M_name] - [M_rname] - [M_key] ([M_job]) + +
    +
    +
    + + + + "} + + usr << browse(dat, "window=players;size=600x480") //The old one /datum/admins/proc/player_panel_old() - if (!usr.client.holder) - return - var/dat = "Player Menu" - dat += "" - //add to this if wanting to add back in IP checking - //add if you want to know their ip to the lists below - var/list/mobs = sortmobs() + if (!usr.client.holder) + return + var/dat = "Player Menu" + dat += "
    NameReal NameAssigned JobKeyOptionsPMTraitor?
    IP:(IP: [M.lastKnownIP])
    " + //add to this if wanting to add back in IP checking + //add if you want to know their ip to the lists below + var/list/mobs = sortmobs() - for(var/mob/M in mobs) - if(!M.ckey) continue + for(var/mob/M in mobs) + if(!M.ckey) continue - dat += "" - if(isAI(M)) - dat += "" - else if(isrobot(M)) - dat += "" - else if(ishuman(M)) - dat += "" - else if(istype(M, /mob/living/silicon/pai)) - dat += "" - else if(istype(M, /mob/new_player)) - dat += "" - else if(isobserver(M)) - dat += "" - else if(ismonkey(M)) - dat += "" - else if(isalien(M)) - dat += "" - else - dat += "" + dat += "" + if(isAI(M)) + dat += "" + else if(isrobot(M)) + dat += "" + else if(ishuman(M)) + dat += "" + else if(istype(M, /mob/living/silicon/pai)) + dat += "" + else if(istype(M, /mob/new_player)) + dat += "" + else if(isobserver(M)) + dat += "" + else if(ismonkey(M)) + dat += "" + else if(isalien(M)) + dat += "" + else + dat += "" - if(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(H.mind && H.mind.assigned_role) - dat += "" - else - dat += "" + if(istype(M,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + if(H.mind && H.mind.assigned_role) + dat += "" + else + dat += "" - dat += {" - - - "} - switch(is_special_character(M)) - if(0) - dat += {""} - if(1) - dat += {""} - if(2) - dat += {""} + dat += {" + + + "} + switch(is_special_character(M)) + if(0) + dat += {""} + if(1) + dat += {""} + if(2) + dat += {""} - dat += "
    NameReal NameAssigned JobKeyOptionsPMTraitor?
    IP:(IP: [M.lastKnownIP])
    [M.name]AICyborg[M.real_name]pAINew PlayerGhostMonkeyAlienUnknown
    [M.name]AICyborg[M.real_name]pAINew PlayerGhostMonkeyAlienUnknown[H.mind.assigned_role]NA[H.mind.assigned_role]NA[(M.client ? "[M.client]" : "No client")]XPMTraitor?Traitor?Traitor?[(M.client ? "[M.client]" : "No client")]XPMTraitor?Traitor?Traitor?
    " + dat += "" - usr << browse(dat, "window=players;size=640x480") + usr << browse(dat, "window=players;size=640x480") /datum/admins/proc/check_antagonists() - if (ticker && ticker.current_state >= GAME_STATE_PLAYING) - var/dat = "Round Status

    Round Status

    " - dat += "Current Game Mode: [ticker.mode.name]
    " - dat += "Round Duration: [round(world.time / 36000)]:[add_zero(world.time / 600 % 60, 2)]:[world.time / 100 % 6][world.time / 100 % 10]
    " - dat += "Emergency shuttle
    " - if (!emergency_shuttle.online) - dat += "Call Shuttle
    " - else - var/timeleft = emergency_shuttle.timeleft() - switch(emergency_shuttle.location) - if(0) - dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
    " - dat += "Send Back
    " - if(1) - dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
    " - dat += "[ticker.delay_end ? "End Round Normally" : "Delay Round End"]
    " - if(ticker.mode.syndicates.len) - dat += "
    " - for(var/datum/mind/N in ticker.mode.syndicates) - var/mob/M = N.current - if(M) - dat += "" - dat += "" - else - dat += "" - dat += "
    Syndicates
    [M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM
    Nuclear Operative not found!

    " - for(var/obj/item/weapon/disk/nuclear/N in world) - dat += "" - dat += "
    Nuclear Disk(s)
    [N.name], " - var/atom/disk_loc = N.loc - while(!istype(disk_loc, /turf)) - if(istype(disk_loc, /mob)) - var/mob/M = disk_loc - dat += "carried by [M.real_name] " - if(istype(disk_loc, /obj)) - var/obj/O = disk_loc - dat += "in \a [O.name] " - disk_loc = disk_loc.loc - dat += "in [disk_loc.loc] at ([disk_loc.x], [disk_loc.y], [disk_loc.z])
    " + if (ticker && ticker.current_state >= GAME_STATE_PLAYING) + var/dat = "Round Status

    Round Status

    " + dat += "Current Game Mode: [ticker.mode.name]
    " + dat += "Round Duration: [round(world.time / 36000)]:[add_zero(world.time / 600 % 60, 2)]:[world.time / 100 % 6][world.time / 100 % 10]
    " + dat += "Emergency shuttle
    " + if (!emergency_shuttle.online) + dat += "Call Shuttle
    " + else + var/timeleft = emergency_shuttle.timeleft() + switch(emergency_shuttle.location) + if(0) + dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
    " + dat += "Send Back
    " + if(1) + dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
    " + dat += "[ticker.delay_end ? "End Round Normally" : "Delay Round End"]
    " + if(ticker.mode.syndicates.len) + dat += "
    " + for(var/datum/mind/N in ticker.mode.syndicates) + var/mob/M = N.current + if(M) + dat += "" + dat += "" + else + dat += "" + dat += "
    Syndicates
    [M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM
    Nuclear Operative not found!

    " + for(var/obj/item/weapon/disk/nuclear/N in world) + dat += "" + dat += "
    Nuclear Disk(s)
    [N.name], " + var/atom/disk_loc = N.loc + while(!istype(disk_loc, /turf)) + if(istype(disk_loc, /mob)) + var/mob/M = disk_loc + dat += "carried by [M.real_name] " + if(istype(disk_loc, /obj)) + var/obj/O = disk_loc + dat += "in \a [O.name] " + disk_loc = disk_loc.loc + dat += "in [disk_loc.loc] at ([disk_loc.x], [disk_loc.y], [disk_loc.z])
    " - if(ticker.mode.head_revolutionaries.len || ticker.mode.revolutionaries.len) - dat += "
    " - for(var/datum/mind/N in ticker.mode.head_revolutionaries) - var/mob/M = N.current - if(!M) - dat += "" - else - dat += "" - dat += "" - for(var/datum/mind/N in ticker.mode.revolutionaries) - var/mob/M = N.current - if(M) - dat += "" - dat += "" - dat += "
    Revolutionaries
    Head Revolutionary not found!
    [M.real_name] (Leader)[M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM
    [M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM
    " - for(var/datum/mind/N in ticker.mode.get_living_heads()) - var/mob/M = N.current - if(M) - dat += "" - dat += "" - var/turf/mob_loc = get_turf_loc(M) - dat += "" - else - dat += "" - dat += "
    Target(s)Location
    [M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM[mob_loc.loc]
    Head not found!
    " + if(ticker.mode.head_revolutionaries.len || ticker.mode.revolutionaries.len) + dat += "
    " + for(var/datum/mind/N in ticker.mode.head_revolutionaries) + var/mob/M = N.current + if(!M) + dat += "" + else + dat += "" + dat += "" + for(var/datum/mind/N in ticker.mode.revolutionaries) + var/mob/M = N.current + if(M) + dat += "" + dat += "" + dat += "
    Revolutionaries
    Head Revolutionary not found!
    [M.real_name] (Leader)[M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM
    [M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM
    " + for(var/datum/mind/N in ticker.mode.get_living_heads()) + var/mob/M = N.current + if(M) + dat += "" + dat += "" + var/turf/mob_loc = get_turf_loc(M) + dat += "" + else + dat += "" + dat += "
    Target(s)Location
    [M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM[mob_loc.loc]
    Head not found!
    " - if(ticker.mode.changelings.len > 0) - dat += "
    " - for(var/datum/mind/changeling in ticker.mode.changelings) - var/mob/M = changeling.current - if(M) - dat += "" - dat += "" - dat += "" - else - dat += "" - dat += "
    Changelings
    [M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PMShow Objective
    Changeling not found!
    " + if(ticker.mode.changelings.len) + dat += check_role_table("Changelings", ticker.mode.changelings, src) - if(ticker.mode.wizards.len > 0) - dat += "
    " - for(var/datum/mind/wizard in ticker.mode.wizards) - var/mob/M = wizard.current - if(M) - dat += "" - dat += "" - dat += "" - else - dat += "" - dat += "
    Wizards
    [M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PMShow Objective
    Wizard not found!
    " + if(ticker.mode.wizards.len) + dat += check_role_table("Wizards", ticker.mode.wizards, src) - if(ticker.mode.raiders.len > 0) - dat += "
    " - for(var/datum/mind/raider in ticker.mode.raiders) - var/mob/M = raider.current - if(M) - dat += "" - dat += "" - dat += "" - dat += "
    Raiders
    [M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PMShow Objective
    " + if(ticker.mode.raiders.len) + dat += check_role_table("Raiders", ticker.mode.raiders, src) - if(ticker.mode.ninjas.len > 0) - dat += "
    " - for(var/datum/mind/ninja in ticker.mode.ninjas) - var/mob/M = ninja.current - if(M) - dat += "" - dat += "" - dat += "" - else - dat += "" - dat += "
    Ninjas
    [M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PMShow Objective
    Ninja not found!
    " + if(ticker.mode.ninjas.len) + dat += check_role_table("Ninjas", ticker.mode.ninjas, src) - if(ticker.mode.cult.len) - dat += "
    " - for(var/datum/mind/N in ticker.mode.cult) - var/mob/M = N.current - if(M) - dat += "" - dat += "" - dat += "
    Cultists
    [M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM
    " + if(ticker.mode.cult.len) + dat += check_role_table("Cultists", ticker.mode.cult, src, 0) - /*if(istype(ticker.mode, /datum/game_mode/anti_revolution) && ticker.mode:heads.len) //comment out anti-revolution - dat += "
    " - for(var/datum/mind/N in ticker.mode:heads) - var/mob/M = N.current - if(M) - dat += "" - dat += "" - dat += "
    Corrupt Heads
    [M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM
    " -*/ - if(ticker.mode.traitors.len > 0) - dat += "
    " - for(var/datum/mind/traitor in ticker.mode.traitors) - var/mob/M = traitor.current - if(M) - dat += "" - dat += "" - dat += "" - else - dat += "" - dat += "
    Traitors
    [M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PMShow Objective
    Traitor not found!
    " + if(ticker.mode.traitors.len) + dat += check_role_table("Traitors", ticker.mode.traitors, src) - dat += "" - usr << browse(dat, "window=roundstatus;size=400x500") - else - alert("The game hasn't started yet!") + var/datum/game_mode/mutiny/mutiny = get_mutiny_mode() + if(mutiny) + dat += mutiny.check_antagonists_ui(src) + + dat += "" + usr << browse(dat, "window=roundstatus;size=400x500") + else + alert("The game hasn't started yet!") + +/proc/check_role_table(name, list/members, admins, show_objectives=1) + var/txt = "
    " + for(var/datum/mind/M in members) + txt += check_role_table_row(M.current, admins, show_objectives) + txt += "
    [name]
    " + return txt + +/proc/check_role_table_row(mob/M, admins=src, show_objectives) + if (!istype(M)) + return "Not found!" + + var/txt = {" + + + [M.real_name] + [M.client ? "" : " (logged out)"] + [M.is_dead() ? " (DEAD)" : ""] + + + PM + + "} + + if (show_objectives) + txt += {" + + Show Objective + + "} + + txt += "" + return txt diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 87588e97e89..5129bba4a0c 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -6,6 +6,10 @@ message_admins("[usr.key] has attempted to override the admin panel!") return + if(ticker.mode && ticker.mode.check_antagonists_topic(href, href_list)) + check_antagonists() + return + if(href_list["makeAntag"]) switch(href_list["makeAntag"]) if("1") diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 12ae785a553..08615a6b25c 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -14,9 +14,10 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set "pAI candidate" = 1, // -- TLE // 7 "cultist" = IS_MODE_COMPILED("cult"), // 8 "infested monkey" = IS_MODE_COMPILED("monkey"), // 9 - "ninja" = "true", // 10 - "vox raider" = IS_MODE_COMPILED("heist"), // 11 + "ninja" = "true", // 10 + "vox raider" = IS_MODE_COMPILED("heist"), // 11 "diona" = 1, // 12 + "mutineer" = IS_MODE_COMPILED("mutiny"), // 13 ) var/const/MAX_SAVE_SLOTS = 10 diff --git a/code/modules/economy/Accounts_DB.dm b/code/modules/economy/Accounts_DB.dm index 70bf8ee125f..f94766f16cb 100644 --- a/code/modules/economy/Accounts_DB.dm +++ b/code/modules/economy/Accounts_DB.dm @@ -1,6 +1,6 @@ /obj/machinery/account_database - name = "Accounts uplink console" + name = "Accounts uplink terminal" desc = "Access transaction logs, account data and all kinds of other financial records." icon = 'icons/obj/computer.dmi' icon_state = "aiupload" @@ -9,115 +9,134 @@ var/receipt_num var/machine_id = "" var/obj/item/weapon/card/id/held_card - var/access_level = 0 var/datum/money_account/detailed_account_view var/creating_new_account = 0 + proc/get_access_level() + if (!held_card) + return 0 + if(access_cent_captain in held_card.access) + return 2 + else if(access_hop in held_card.access || access_captain in held_card.access) + return 1 + + proc/create_transation(target, reason, amount) + var/datum/transaction/T = new() + T.target_name = target + T.purpose = reason + T.amount = amount + T.date = current_date_string + T.time = worldtime2text() + T.source_terminal = machine_id + return T + + proc/accounting_letterhead(report_name) + return {" +

    [report_name]

    +
    [station_name()] Accounting Report
    +
    + Generated By: [held_card.registered_name], [held_card.assignment]
    + "} + /obj/machinery/account_database/New() - ..() machine_id = "[station_name()] Acc. DB #[num_financial_terminals++]" + ..() + +/obj/machinery/account_database/attackby(obj/O, mob/user) + if(!istype(O, /obj/item/weapon/card/id)) + return ..() + + if(!held_card) + user.drop_item() + O.loc = src + held_card = O + + nanomanager.update_uis(src) + + attack_hand(user) /obj/machinery/account_database/attack_hand(mob/user as mob) - if(get_dist(src,user) <= 1) - var/dat = "Accounts Database
    " - dat += "[machine_id]
    " - dat += "Confirm identity: [held_card ? held_card : "-----"]
    " + if(stat & (NOPOWER|BROKEN)) return + ui_interact(user) - if(access_level > 0) - dat += "You may not edit accounts at this terminal, only create and view them.
    " - if(creating_new_account) - dat += "
    " - dat += "Return to accounts list" - dat += "
    " - dat += "" - dat += "" - dat += "Holder name:
    " - dat += "Initial funds: (subtracted from station account)
    " - dat += "New accounts are automatically assigned a secret number and pin, which are printed separately in a sealed package.
    " - dat += "
    " - dat += "
    " - else - if(detailed_account_view) - dat += "
    " - dat += "Return to accounts list
    " - dat += "Account number: #[detailed_account_view.account_number]
    " - dat += "Account holder: [detailed_account_view.owner_name]
    " - dat += "Account balance: $[detailed_account_view.money]
    " - if(access_level > 1) - dat += "Silently add funds (no transaction log)
    " - dat += "Silently remove funds (no transaction log)
    " - dat += "[detailed_account_view.suspended ? "Unsuspend account" : "Suspend account"]
    " - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - for(var/datum/transaction/T in detailed_account_view.transaction_log) - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "
    DateTimeTargetPurposeValueSource terminal ID
    [T.date][T.time][T.target_name][T.purpose]$[T.amount][T.source_terminal]
    " - else - dat += "Create new account

    " - dat += "" - for(var/i=1, i<=all_money_accounts.len, i++) - var/datum/money_account/D = all_money_accounts[i] - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "
    #[D.account_number][D.owner_name][D.suspended ? "SUSPENDED" : ""]View in detail
    " +/obj/machinery/account_database/ui_interact(mob/user, ui_key="main", datum/nanoui/ui=null) + user.set_machine(src) - user << browse(dat,"window=account_db;size=700x650") - else - user << browse(null,"window=account_db") + var/data[0] + data["src"] = "\ref[src]" + data["id_inserted"] = !!held_card + data["id_card"] = held_card ? text("[held_card.registered_name], [held_card.assignment]") : "-----" + data["access_level"] = get_access_level() + data["machine_id"] = machine_id + data["creating_new_account"] = creating_new_account + data["detailed_account_view"] = !!detailed_account_view + data["station_account_number"] = station_account.account_number + data["transactions"] = null + data["accounts"] = null -/obj/machinery/account_database/attackby(O as obj, user as mob)//TODO:SANITY - if(istype(O, /obj/item/weapon/card)) - var/obj/item/weapon/card/id/idcard = O - if(!held_card) - usr.drop_item() - idcard.loc = src - held_card = idcard + if (detailed_account_view) + data["account_number"] = detailed_account_view.account_number + data["owner_name"] = detailed_account_view.owner_name + data["money"] = detailed_account_view.money + data["suspended"] = detailed_account_view.suspended - if(access_cent_captain in idcard.access) - access_level = 2 - else if(access_hop in idcard.access || access_captain in idcard.access) - access_level = 1 - else - ..() + var/list/trx[0] + for (var/datum/transaction/T in detailed_account_view.transaction_log) + trx.Add(list(list(\ + "date" = T.date, \ + "time" = T.time, \ + "target_name" = T.target_name, \ + "purpose" = T.purpose, \ + "amount" = T.amount, \ + "source_terminal" = T.source_terminal))) -/obj/machinery/account_database/Topic(var/href, var/href_list) + if (trx.len > 0) + data["transactions"] = trx + + var/list/accounts[0] + for(var/i=1, i<=all_money_accounts.len, i++) + var/datum/money_account/D = all_money_accounts[i] + accounts.Add(list(list(\ + "account_number"=D.account_number,\ + "owner_name"=D.owner_name,\ + "suspended"=D.suspended ? "SUSPENDED" : "",\ + "account_index"=i))) + + if (accounts.len > 0) + data["accounts"] = accounts + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) + if (!ui) + ui = new(user, src, ui_key, "accounts_terminal.tmpl", src.name, 400, 640) + ui.set_initial_data(data) + ui.open() + +/obj/machinery/account_database/Topic(href, href_list) + if(..()) + return 1 + + var/datum/nanoui/ui = nanomanager.get_open_ui(usr, src, "main") if(href_list["choice"]) switch(href_list["choice"]) if("create_account") creating_new_account = 1 + if("add_funds") var/amount = input("Enter the amount you wish to add", "Silently add funds") as num if(detailed_account_view) detailed_account_view.money += amount + if("remove_funds") var/amount = input("Enter the amount you wish to remove", "Silently remove funds") as num if(detailed_account_view) detailed_account_view.money -= amount + if("toggle_suspension") if(detailed_account_view) - if(detailed_account_view.suspended) - detailed_account_view.suspended = 0 - else - detailed_account_view.suspended = 1 + detailed_account_view.suspended = !detailed_account_view.suspended + callHook("change_account_status", list(detailed_account_view)) + if("finalise_create_account") var/account_name = href_list["holder_name"] var/starting_funds = max(text2num(href_list["starting_funds"]), 0) @@ -127,14 +146,11 @@ station_account.money -= starting_funds //create a transaction log entry - var/datum/transaction/T = new() - T.target_name = account_name - T.purpose = "New account funds initialisation" - T.amount = "([starting_funds])" - T.date = current_date_string - T.time = worldtime2text() - T.source_terminal = machine_id - station_account.transaction_log.Add(T) + var/trx = create_transation(account_name, "New account activation", "([starting_funds])") + station_account.transaction_log.Add(trx) + + creating_new_account = 0 + ui.close() creating_new_account = 0 if("insert_card") @@ -144,7 +160,6 @@ if(ishuman(usr) && !usr.get_active_hand()) usr.put_in_hands(held_card) held_card = null - access_level = 0 else var/obj/item/I = usr.get_active_hand() @@ -154,16 +169,103 @@ C.loc = src held_card = C - if(access_cent_captain in C.access) - access_level = 2 - else if(access_hop in C.access || access_captain in C.access) - access_level = 1 if("view_account_detail") var/index = text2num(href_list["account_index"]) if(index && index <= all_money_accounts.len) detailed_account_view = all_money_accounts[index] + if("view_accounts_list") detailed_account_view = null creating_new_account = 0 - src.attack_hand(usr) + if("revoke_payroll") + var/funds = detailed_account_view.money + var/account_trx = create_transation(station_account.owner_name, "Revoke payroll", "([funds])") + var/station_trx = create_transation(detailed_account_view.owner_name, "Revoke payroll", funds) + + station_account.money += funds + detailed_account_view.money = 0 + + detailed_account_view.transaction_log.Add(account_trx) + station_account.transaction_log.Add(station_trx) + + callHook("revoke_payroll", list(detailed_account_view)) + + if("print") + var/text + var/obj/item/weapon/paper/P = new(loc) + if (detailed_account_view) + P.name = "account #[detailed_account_view.account_number] details" + var/title = "Account #[detailed_account_view.account_number] Details" + text = {" + [accounting_letterhead(title)] + Holder: [detailed_account_view.owner_name]
    + Balance: $[detailed_account_view.money]
    + Status: [detailed_account_view.suspended ? "Suspended" : "Active"]
    + Transactions: ([detailed_account_view.transaction_log.len])
    + + + + + + + + + + + + "} + + for (var/datum/transaction/T in detailed_account_view.transaction_log) + text += {" + + + + + + + + "} + + text += {" + +
    TimestampTargetReasonValueTerminal
    [T.date] [T.time][T.target_name][T.purpose][T.amount][T.source_terminal]
    + "} + + else + P.name = "financial account list" + text = {" + [accounting_letterhead("Financial Account List")] + + + + + + + + + + + + "} + + for(var/i=1, i<=all_money_accounts.len, i++) + var/datum/money_account/D = all_money_accounts[i] + text += {" + + + + + + + "} + + text += {" + +
    Account NumberHolderBalanceStatus
    #[D.account_number][D.owner_name]$[D.money][D.suspended ? "Suspended" : "Active"]
    + "} + + P.info = text + state("The terminal prints out a report.") + + return 1 diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index 5e94ea9bc97..27b9da88e88 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -32,8 +32,9 @@ brainmob.timeofhostdeath = H.timeofdeath if(H.mind) H.mind.transfer_to(brainmob) + brainmob << "\blue You feel slightly disoriented. That's normal when you're just a brain." - return + callHook("debrain", list(brainmob)) /obj/item/brain/examine() // -- TLE set src in oview(12) @@ -95,4 +96,4 @@ del(src) else ..() - return \ No newline at end of file + return diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 018f154b864..bebd5680ef8 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -58,12 +58,12 @@ dizziness = 0 jitteriness = 0 - + hud_updateflag |= 1 << HEALTH_HUD hud_updateflag |= 1 << STATUS_HUD handle_hud_list() - + //Handle species-specific deaths. if(species) species.handle_death(src) @@ -86,6 +86,8 @@ verbs -= /mob/living/carbon/proc/release_control + callHook("death", list(src, gibbed)) + //Check for heist mode kill count. if(ticker.mode && ( istype( ticker.mode,/datum/game_mode/heist) ) ) //Check for last assailant's mutantrace. diff --git a/code/modules/mob/living/login.dm b/code/modules/mob/living/login.dm index 10c0746dc65..bdd834a80dc 100644 --- a/code/modules/mob/living/login.dm +++ b/code/modules/mob/living/login.dm @@ -17,41 +17,8 @@ if("nuclear emergency") if(mind in ticker.mode:syndicates) ticker.mode.update_all_synd_icons() + if("mutiny") + var/datum/game_mode/mutiny/mode = get_mutiny_mode() + if(mode) + mode.update_all_icons() return . - -//This stuff needs to be merged from cloning.dm but I'm not in the mood to be shouted at for breaking all the things :< ~Carn - /* clones - switch(ticker.mode.name) - if("revolution") - if(src.occupant.mind in ticker.mode:revolutionaries) - ticker.mode:update_all_rev_icons() //So the icon actually appears - if(src.occupant.mind in ticker.mode:head_revolutionaries) - ticker.mode:update_all_rev_icons() - if("nuclear emergency") - if (src.occupant.mind in ticker.mode:syndicates) - ticker.mode:update_all_synd_icons() - if("cult") - if (src.occupant.mind in ticker.mode:cult) - ticker.mode:add_cultist(src.occupant.mind) - ticker.mode:update_all_cult_icons() //So the icon actually appears - */ - - /* Plantpeople - switch(ticker.mode.name) - if ("revolution") - if (podman.mind in ticker.mode:revolutionaries) - ticker.mode:add_revolutionary(podman.mind) - ticker.mode:update_all_rev_icons() //So the icon actually appears - if (podman.mind in ticker.mode:head_revolutionaries) - ticker.mode:update_all_rev_icons() - if ("nuclear emergency") - if (podman.mind in ticker.mode:syndicates) - ticker.mode:update_all_synd_icons() - if ("cult") - if (podman.mind in ticker.mode:cult) - ticker.mode:add_cultist(podman.mind) - ticker.mode:update_all_cult_icons() //So the icon actually appears - if ("changeling") - if (podman.mind in ticker.mode:changelings) - podman.make_changeling() - */ \ No newline at end of file diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index fdb32e82ccb..388cab4e108 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -600,6 +600,9 @@ var/list/slot_equipment_priority = list( \ /mob/proc/is_active() return (0 >= usr.stat) +/mob/proc/is_dead() + return stat == DEAD + /mob/proc/see(message) if(!is_active()) return 0 diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 9a2493f23ac..6efec2f7ec1 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -181,6 +181,8 @@ O.mmi = new /obj/item/device/mmi(O) O.mmi.transfer_identity(src)//Does not transfer key/client. + callHook("borgify", list(O)) + O.Namepick() spawn(0)//To prevent the proc from returning null. diff --git a/code/modules/security levels/keycard authentication.dm b/code/modules/security levels/keycard authentication.dm index 1364f579bbf..3e9f1e437e5 100644 --- a/code/modules/security levels/keycard authentication.dm +++ b/code/modules/security levels/keycard authentication.dm @@ -71,7 +71,7 @@ dat += "
  • Red alert
  • " if(!config.ert_admin_call_only) dat += "
  • Emergency Response Team
  • " - + dat += "
  • Grant Emergency Maintenance Access
  • " dat += "
  • Revoke Emergency Maintenance Access
  • " dat += "" @@ -154,9 +154,16 @@ revoke_maint_all_access() feedback_inc("alert_keycard_auth_maintRevoke",1) if("Emergency Response Team") - if(!config.ert_admin_call_only) - trigger_armed_response_team(1) - feedback_inc("alert_keycard_auth_ert",1) + if(is_ert_blocked()) + usr << "\red All emergency response teams are dispatched and can not be called at this time." + return + + trigger_armed_response_team(1) + feedback_inc("alert_keycard_auth_ert",1) + +/obj/machinery/keycard_auth/proc/is_ert_blocked() + if(config.ert_admin_call_only) return 1 + return ticker.mode && ticker.mode.ert_disabled var/global/maint_all_access = 0 diff --git a/code/setup.dm b/code/setup.dm index c9edaa28441..24066cd2dff 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -647,19 +647,20 @@ var/list/TAGGERLOCATIONS = list("Disposals", #define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_ATTACKLOGS|CHAT_LOOC) -#define BE_TRAITOR 1 -#define BE_OPERATIVE 2 -#define BE_CHANGELING 4 -#define BE_WIZARD 8 -#define BE_MALF 16 -#define BE_REV 32 -#define BE_ALIEN 64 -#define BE_PAI 128 -#define BE_CULTIST 256 -#define BE_MONKEY 512 -#define BE_NINJA 1024 -#define BE_RAIDER 2048 -#define BE_PLANT 4096 +#define BE_TRAITOR 1 +#define BE_OPERATIVE 2 +#define BE_CHANGELING 4 +#define BE_WIZARD 8 +#define BE_MALF 16 +#define BE_REV 32 +#define BE_ALIEN 64 +#define BE_PAI 128 +#define BE_CULTIST 256 +#define BE_MONKEY 512 +#define BE_NINJA 1024 +#define BE_RAIDER 2048 +#define BE_PLANT 4096 +#define BE_MUTINEER 8192 var/list/be_special_flags = list( "Traitor" = BE_TRAITOR, @@ -674,7 +675,8 @@ var/list/be_special_flags = list( "Monkey" = BE_MONKEY, "Ninja" = BE_NINJA, "Raider" = BE_RAIDER, - "Diona" = BE_PLANT + "Diona" = BE_PLANT, + "Mutineer" = BE_MUTINEER ) #define AGE_MIN 17 //youngest a character can be diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index 09e29051f074b665924477561a838266b8ba4618..6623ca98fae0ce3252ec764e99f4bb88e79067f8 100644 GIT binary patch delta 165988 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%0A? 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 delta 162743 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®@d= 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⪼@6w6DA=lVcQJCmI0q;y-`xL9 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 z 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�{5O{O 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 +

    +
    + {{:machine_id}} +
    + +
    +
    + ID: +
    +
    + {{:~link(id_card, 'eject', {'choice' : "insert_card"}, null, id_inserted ? 'fixedLeftWidest' : 'fixedLeft')}} +
    +
    + +{{if access_level > 0}} +
    +

    Menu

    +
    + {{:~link('Home', 'home', {'choice' : 'view_accounts_list'}, !creating_new_account && !detailed_account_view ? 'disabled' : null, 'fixedLeft')}} + {{:~link('New Account', 'gear', {'choice' : 'create_account'}, creating_new_account ? 'disabled' : null, 'fixedLeft')}} + {{:~link('Print', 'print', {'choice' : 'print'}, creating_new_account ? 'disabled' : null, 'fixedLeft')}} + + {{if creating_new_account}} +
    +

    Create Account

    +
    + +
    + + +
    +
    + Account Holder: +
    +
    + +
    +
    +
    +
    + Initial Deposit: +
    +
    + +
    +
    +
    + +
    +
    + {{else}} + {{if detailed_account_view}} +
    +

    Account Details

    +
    + +
    +
    + Account Number: +
    +
    + #{{:account_number}} +
    +
    + +
    +
    + Holder: +
    +
    + {{:owner_name}} +
    +
    + +
    +
    + Balance: +
    +
    + ${{:~formatNumber(money)}} +
    +
    + +
    +
    + Status: +
    +
    + + {{: suspended ? "Suspended" : "Active"}} + +
    +
    +
    + {{:~link(suspended ? "Unsuspend" : "Suspend", 'gear', {'choice' : 'toggle_suspension'})}} +
    + +
    + {{if transactions}} + + + + + + + + + + + + {{for transactions}} + + + + + + + + {{/for}} + +
    TimestampTargetReasonValueTerminal
    {{:date}} {{:time}}{{:target_name}}{{:purpose}}{{:amount}}{{:source_terminal}}
    + {{else}} + This account has no financial transactions on record for today. + {{/if}} +
    + +
    +

    CentCom Administrator

    +
    +
    +
    + Payroll: +
    + {{:~link('Revoke', 'transferthick-e-w', {'choice' : 'revoke_payroll'}, account_number == station_account_number ? 'disabled' : null, 'linkDanger')}} +
    + {{if access_level >= 2}} +
    +
    + Silent Fund Adjustment: +
    + {{:~link('Add', 'plus', {'choice' : 'add_funds'})}} + {{:~link('Remove', 'minus', {'choice' : 'remove_funds'})}} +
    + {{/if}} + {{else}} + +
    +

    NanoTrasen Accounts

    +
    + {{if accounts}} + + {{for accounts}} + + + + + + {{/for}} +
    {{:~link('#' + account_number, '', {'choice' : 'view_account_detail', 'account_index' : account_index})}}{{:owner_name}}{{:suspended}}
    + {{else}} + There are no accounts available. + {{/if}} + {{/if}} + {{/if}} +{{/if}} diff --git a/nano/templates/identification_computer.tmpl b/nano/templates/identification_computer.tmpl new file mode 100644 index 00000000000..3c52746ce8f --- /dev/null +++ b/nano/templates/identification_computer.tmpl @@ -0,0 +1,236 @@ +{{if printing}} +
    The computer is currently busy.
    +
    +
    Printing...
    +
    +

    + Thank you for your patience! +

    +{{else}} + {{:~link('Access Modification', 'home', {'choice' : 'mode', 'mode_target' : 0}, !mode ? 'disabled' : null)}} + {{:~link('Crew Manifest', 'folder-open', {'choice' : 'mode', 'mode_target' : 1}, mode ? 'disabled' : null)}} + {{:~link('Print', 'print', {'choice' : 'print'}, (mode || has_modify) ? null : 'disabled')}} + + {{if mode}} +
    +

    Crew Manifest

    +
    +
    + {{:manifest}} +
    + {{else}} +
    +

    Access Modification

    +
    + + {{if !authenticated}} + Please insert the IDs into the terminal to proceed.
    + {{/if}} + +
    +
    + Target Identity: +
    +
    + {{:~link(target_name, 'eject', {'choice' : 'modify'})}} +
    +
    +
    +
    + Authorized Identity: +
    +
    + {{:~link(scan_name, 'eject', {'choice' : 'scan'})}} +
    +
    +
    + + {{if authenticated}} + + + {{if has_modify}} +
    +

    Details

    +
    + +
    +
    +
    + + + Registered Name: +
    +
    + + +
    +
    +
    + +
    +
    +
    + + + Account Number: +
    +
    + + +
    +
    +
    + +
    +
    + Terminations: +
    +
    + {{:~link('Terminate ' + target_owner, 'gear', {'choice' : 'terminate'}, target_rank == "Terminated" ? 'disabled' : null, target_rank == "Terminated" ? 'disabled' : 'linkDanger')}} +
    +
    + +
    +

    Assignment

    +
    + +
    +
    + +
    + + {{if centcom_access}} +
    +

    Central Command

    +
    +
    + {{for all_centcom_access}} +
    + {{:~link(desc, '', {'choice' : 'access', 'access_target' : ref, 'allowed' : allowed}, null, allowed ? 'selected' : null)}} +
    + {{/for}} +
    + {{else}} +
    +

    {{:station_name}}

    +
    +
    + {{for regions}} +
    +
    {{:name}}
    + {{for accesses}} +
    + {{:~link(desc, '', {'choice' : 'access', 'access_target' : ref, 'allowed' : allowed}, null, allowed ? 'selected' : null)}} +
    + {{/for}} +
    + {{/for}} +
    + {{/if}} + {{/if}} + {{/if}} + {{/if}} +{{/if}} From 28aed34284873aeedb7b5f561cde4e9e45a429b1 Mon Sep 17 00:00:00 2001 From: Jeremy Liberman Date: Tue, 13 May 2014 22:36:16 -0500 Subject: [PATCH 2/5] Prevent request forgery exploit in card.dm --- code/game/machinery/computer/card.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 176606face1..78e0b16c641 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -250,10 +250,11 @@ P.info += " [get_access_desc(A)]" if ("terminate") - modify.assignment = "Terminated" - modify.access = list() + if (is_authenticated()) + modify.assignment = "Terminated" + modify.access = list() - callHook("terminate_employee", list(modify)) + callHook("terminate_employee", list(modify)) if (modify) modify.name = text("[modify.registered_name]'s ID Card ([modify.assignment])") From 5f025b630a32e64f9ab1d2e0c3ba80cc9a0eb63e Mon Sep 17 00:00:00 2001 From: Jeremy Liberman Date: Sun, 18 May 2014 11:05:04 -0500 Subject: [PATCH 3/5] Mutiny fixes; add sanity checks, prevent recruitment spam, fix pinpointer description, fix overlays when changing teams, and convert indents to tabs --- code/game/gamemodes/mutiny/auth_key.dm | 60 +- code/game/gamemodes/mutiny/directive.dm | 40 +- .../directives/alien_fraud_directive.dm | 54 +- .../bluespace_contagion_directive.dm | 58 +- .../directives/financial_crisis_directive.dm | 38 +- .../mutiny/directives/ipc_virus_directive.dm | 114 +-- .../research_to_ripleys_directive.dm | 84 +- .../tau_ceti_needs_women_directive.dm | 114 +-- .../directives/terminations_directive.dm | 64 +- .../mutiny/directives/test_directive.dm | 30 +- .../mutiny/emergency_authentication_device.dm | 156 +-- code/game/gamemodes/mutiny/key_pinpointer.dm | 80 +- code/game/gamemodes/mutiny/mutiny.dm | 589 +++++------ code/game/gamemodes/mutiny/mutiny_fluff.dm | 252 ++--- code/game/gamemodes/mutiny/mutiny_hooks.dm | 32 +- code/game/objects/items.dm | 2 +- code/modules/admin/player_panel.dm | 928 +++++++++--------- 17 files changed, 1368 insertions(+), 1327 deletions(-) diff --git a/code/game/gamemodes/mutiny/auth_key.dm b/code/game/gamemodes/mutiny/auth_key.dm index f053d7c3a3b..1f7ea3c888b 100644 --- a/code/game/gamemodes/mutiny/auth_key.dm +++ b/code/game/gamemodes/mutiny/auth_key.dm @@ -1,39 +1,39 @@ /obj/item/weapon/mutiny/auth_key - name = "authentication key" - desc = "Better keep this safe." - icon = 'icons/obj/items.dmi' - icon_state = "nucleardisk" - item_state = "card-id" - w_class = 1 + name = "authentication key" + desc = "Better keep this safe." + icon = 'icons/obj/items.dmi' + icon_state = "nucleardisk" + item_state = "card-id" + w_class = 1 - var/time_entered_space - var/obj/item/device/radio/radio + var/time_entered_space + var/obj/item/device/radio/radio - New() - radio = new(src) - spawn(20 SECONDS) - keep_alive() - ..() + New() + radio = new(src) + spawn(20 SECONDS) + keep_alive() + ..() - proc/keep_alive() - var/in_space = istype(loc, /turf/space) - if (!in_space && time_entered_space) - // Recovered before the key was lost - time_entered_space = null - else if (in_space && !time_entered_space) - // The key has left the station - time_entered_space = world.time - else if (in_space && time_entered_space + (10 SECONDS) < world.time) - // Time is up - radio.autosay("This device has left the station's perimeter. Triggering emergency activation failsafe.", name) - del(src) - return + proc/keep_alive() + var/in_space = istype(loc, /turf/space) + if (!in_space && time_entered_space) + // Recovered before the key was lost + time_entered_space = null + else if (in_space && !time_entered_space) + // The key has left the station + time_entered_space = world.time + else if (in_space && time_entered_space + (10 SECONDS) < world.time) + // Time is up + radio.autosay("This device has left the station's perimeter. Triggering emergency activation failsafe.", name) + del(src) + return - spawn(10 SECONDS) - keep_alive() + spawn(10 SECONDS) + keep_alive() /obj/item/weapon/mutiny/auth_key/captain - name = "Captain's Authentication Key" + name = "Captain's Authentication Key" /obj/item/weapon/mutiny/auth_key/secondary - name = "Emergency Secondary Authentication Key" + name = "Emergency Secondary Authentication Key" diff --git a/code/game/gamemodes/mutiny/directive.dm b/code/game/gamemodes/mutiny/directive.dm index 823645beef4..3cb9071dc73 100644 --- a/code/game/gamemodes/mutiny/directive.dm +++ b/code/game/gamemodes/mutiny/directive.dm @@ -1,29 +1,29 @@ datum/directive - var/datum/game_mode/mutiny/mode - var/list/special_orders + var/datum/game_mode/mutiny/mode + var/list/special_orders - New(var/datum/game_mode/mutiny/M) - mode = M + New(var/datum/game_mode/mutiny/M) + mode = M - proc/get_description() - return {" -

    - NanoTrasen's reasons for the following directives are classified. -

    - "} + proc/get_description() + return {" +

    + NanoTrasen's reasons for the following directives are classified. +

    + "} - proc/meets_prerequisites() - return 0 + proc/meets_prerequisites() + return 0 - proc/directives_complete() - return 1 + proc/directives_complete() + return 1 - proc/initialize() - return 1 + proc/initialize() + return 1 /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]"))) - return null + var/datum/game_mode/mutiny/mode = get_mutiny_mode() + if(!mode || !mode.current_directive || !istype(mode.current_directive, text2path("/datum/directive/[type]"))) + return null - return mode.current_directive + return mode.current_directive diff --git a/code/game/gamemodes/mutiny/directives/alien_fraud_directive.dm b/code/game/gamemodes/mutiny/directives/alien_fraud_directive.dm index 5c76326ad35..109d6164770 100644 --- a/code/game/gamemodes/mutiny/directives/alien_fraud_directive.dm +++ b/code/game/gamemodes/mutiny/directives/alien_fraud_directive.dm @@ -1,36 +1,36 @@ datum/directive/terminations/alien_fraud - special_orders = list( - "Suspend financial accounts of all Tajaran and Unathi personnel.", - "Transfer their payrolls to the station account.", - "Terminate their employment.") + special_orders = list( + "Suspend financial accounts of all Tajaran and Unathi personnel.", + "Transfer their payrolls to the station account.", + "Terminate their employment.") datum/directive/terminations/alien_fraud/get_crew_to_terminate() - var/list/aliens[0] - for(var/mob/living/carbon/human/H in player_list) - if (H.species.name == "Tajaran" || H.species.name == "Unathi") - aliens.Add(H) - return aliens + var/list/aliens[0] + for(var/mob/living/carbon/human/H in player_list) + if (H.species.name == "Tajaran" || H.species.name == "Unathi") + aliens.Add(H) + return aliens datum/directive/terminations/alien_fraud/get_description() - return {" -

    - 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. -

    - "} + return {" +

    + 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. +

    + "} datum/directive/terminations/alien_fraud/meets_prerequisites() - // There must be at least one Tajaran and at least one Unathi, but the total - // of the Tajarans and Unathi combined can't be more than 1/3rd of the crew. - var/tajarans = 0 - var/unathi = 0 - for(var/mob/living/carbon/human/H in player_list) - if (H.species.name == "Tajaran") - tajarans++ - if (H.species.name == "Unathi") - unathi++ + // There must be at least one Tajaran and at least one Unathi, but the total + // of the Tajarans and Unathi combined can't be more than 1/3rd of the crew. + var/tajarans = 0 + var/unathi = 0 + for(var/mob/living/carbon/human/H in player_list) + if (H.species.name == "Tajaran") + tajarans++ + if (H.species.name == "Unathi") + unathi++ - if (!tajarans || !unathi) - return 0 + if (!tajarans || !unathi) + return 0 - return (tajarans + unathi) <= (player_list.len / 3) + return (tajarans + unathi) <= (player_list.len / 3) diff --git a/code/game/gamemodes/mutiny/directives/bluespace_contagion_directive.dm b/code/game/gamemodes/mutiny/directives/bluespace_contagion_directive.dm index 65058e80150..2757677e89c 100644 --- a/code/game/gamemodes/mutiny/directives/bluespace_contagion_directive.dm +++ b/code/game/gamemodes/mutiny/directives/bluespace_contagion_directive.dm @@ -1,45 +1,45 @@ #define INFECTION_COUNT 5 datum/directive/bluespace_contagion - var/infection_count = 5 - var/list/infected = list() + var/infection_count = 5 + var/list/infected = list() datum/directive/bluespace_contagion/get_description() - return {" -

    - A manufactured and near-undetectable virus is spreading on NanoTrasen stations. - The pathogen travels by bluespace after maturing for one day. - No treatment has yet been discovered. Personnel onboard [station_name()] have been infected. Further information is classified. -

    - "} + return {" +

    + A manufactured and near-undetectable virus is spreading on NanoTrasen stations. + The pathogen travels by bluespace after maturing for one day. + No treatment has yet been discovered. Personnel onboard [station_name()] have been infected. Further information is classified. +

    + "} datum/directive/bluespace_contagion/initialize() - var/list/candidates = player_list.Copy() - var/list/infected_names = list() - for(var/i=0, i < INFECTION_COUNT, i++) - if(!candidates.len) - break + var/list/candidates = player_list.Copy() + var/list/infected_names = list() + for(var/i=0, i < INFECTION_COUNT, i++) + if(!candidates.len) + break - var/mob/living/carbon/human/candidate = pick(candidates) - candidates.Remove(candidate) - infected.Add(candidate) - infected_names.Add("[candidate.mind.assigned_role] [candidate.mind.name]") + var/mob/living/carbon/human/candidate = pick(candidates) + candidates.Remove(candidate) + infected.Add(candidate) + infected_names.Add("[candidate.mind.assigned_role] [candidate.mind.name]") - special_orders = list( - "Quarantine these personnel: [list2text(infected_names, ", ")].", - "Allow one hour for a cure to be manufactured.", - "If no cure arrives after that time, execute the infected.") + special_orders = list( + "Quarantine these personnel: [list2text(infected_names, ", ")].", + "Allow one hour for a cure to be manufactured.", + "If no cure arrives after that time, execute the infected.") datum/directive/bluespace_contagion/meets_prerequisites() - return player_list.len >= 7 + return player_list.len >= 7 datum/directive/bluespace_contagion/directives_complete() - return infected.len == 0 + return infected.len == 0 /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 + var/datum/directive/bluespace_contagion/D = get_directive("bluespace_contagion") + if(!D) return 1 - if(deceased in D.infected) - D.infected.Remove(deceased) - return 1 + if(deceased in D.infected) + D.infected.Remove(deceased) + return 1 diff --git a/code/game/gamemodes/mutiny/directives/financial_crisis_directive.dm b/code/game/gamemodes/mutiny/directives/financial_crisis_directive.dm index a6c4ce28968..3ba5f47345f 100644 --- a/code/game/gamemodes/mutiny/directives/financial_crisis_directive.dm +++ b/code/game/gamemodes/mutiny/directives/financial_crisis_directive.dm @@ -1,26 +1,26 @@ datum/directive/terminations/financial_crisis - special_orders = list( - "Suspend financial accounts of all civilian personnel, excluding the Head of Personnel.", - "Transfer their payrolls to the station account.", - "Terminate their employment.") + special_orders = list( + "Suspend financial accounts of all civilian personnel, excluding the Head of Personnel.", + "Transfer their payrolls to the station account.", + "Terminate their employment.") datum/directive/terminations/financial_crisis/get_crew_to_terminate() - var/list/civilians[0] - var/list/candidates = civilian_positions - "Head of Personnel" - for(var/mob/living/carbon/human/H in player_list) - if (candidates.Find(H.mind.assigned_role)) - civilians.Add(H) - return civilians + var/list/civilians[0] + var/list/candidates = civilian_positions - "Head of Personnel" + for(var/mob/living/carbon/human/H in player_list) + if (candidates.Find(H.mind.assigned_role)) + civilians.Add(H) + return civilians datum/directive/terminations/financial_crisis/get_description() - return {" -

    - Tau Ceti system banks in financial crisis. Local emergency situation ongoing. - NT Funds redistributed, impact upon civilian department expected. - Further information is classified. -

    - "} + return {" +

    + Tau Ceti system banks in financial crisis. Local emergency situation ongoing. + NT Funds redistributed, impact upon civilian department expected. + Further information is classified. +

    + "} datum/directive/terminations/financial_crisis/meets_prerequisites() - var/list/civilians = get_crew_to_terminate() - return civilians.len >= 5 + var/list/civilians = get_crew_to_terminate() + return civilians.len >= 5 diff --git a/code/game/gamemodes/mutiny/directives/ipc_virus_directive.dm b/code/game/gamemodes/mutiny/directives/ipc_virus_directive.dm index 08890128297..755b83d4d16 100644 --- a/code/game/gamemodes/mutiny/directives/ipc_virus_directive.dm +++ b/code/game/gamemodes/mutiny/directives/ipc_virus_directive.dm @@ -1,83 +1,83 @@ datum/directive/ipc_virus - special_orders = list( - "Terminate employment of all IPC personnel.", - "Extract the Positronic Brains from IPC units.", - "Mount the Positronic Brains into Cyborgs.") + special_orders = list( + "Terminate employment of all IPC personnel.", + "Extract the Positronic Brains from IPC units.", + "Mount the Positronic Brains into Cyborgs.") - var/list/roboticist_roles = list( - "Research Director", - "Roboticist" - ) + var/list/roboticist_roles = list( + "Research Director", + "Roboticist" + ) - var/list/brains_to_enslave = list() - var/list/cyborgs_to_make = list() - var/list/ids_to_terminate = list() + var/list/brains_to_enslave = list() + var/list/cyborgs_to_make = list() + var/list/ids_to_terminate = list() - proc/get_ipcs() - var/list/machines[0] - for(var/mob/living/carbon/human/H in player_list) - if (H.species.name == "Machine") - machines.Add(H) - return machines + proc/get_ipcs() + var/list/machines[0] + for(var/mob/living/carbon/human/H in player_list) + if (H.species.name == "Machine") + machines.Add(H) + return machines - proc/get_roboticists() - var/list/roboticists[0] - for(var/mob/living/carbon/human/H in player_list) - if (roboticist_roles.Find(H.mind.assigned_role)) - roboticists.Add(H) - return roboticists + proc/get_roboticists() + var/list/roboticists[0] + for(var/mob/living/carbon/human/H in player_list) + if (roboticist_roles.Find(H.mind.assigned_role)) + roboticists.Add(H) + return roboticists datum/directive/ipc_virus/initialize() - for(var/mob/living/carbon/human/H in get_ipcs()) - brains_to_enslave.Add(H.mind) - cyborgs_to_make.Add(H.mind) - ids_to_terminate.Add(H.wear_id) + for(var/mob/living/carbon/human/H in get_ipcs()) + brains_to_enslave.Add(H.mind) + cyborgs_to_make.Add(H.mind) + ids_to_terminate.Add(H.wear_id) datum/directive/ipc_virus/get_description() - return {" -

    - IPC units have been found to be infected with a violent and undesired virus in Virgus Ferrorus system. - Risk to NSS Exodus IPC units has not been assessed. Further information is classified. -

    - "} + return {" +

    + IPC units have been found to be infected with a violent and undesired virus in Virgus Ferrorus system. + Risk to NSS Exodus IPC units has not been assessed. Further information is classified. +

    + "} datum/directive/ipc_virus/meets_prerequisites() - var/list/ipcs = get_ipcs() - var/list/roboticists = get_roboticists() - return ipcs.len > 2 && roboticists.len > 1 + var/list/ipcs = get_ipcs() + var/list/roboticists = get_roboticists() + return ipcs.len > 2 && roboticists.len > 1 datum/directive/ipc_virus/directives_complete() - return brains_to_enslave.len == 0 && cyborgs_to_make.len == 0 && ids_to_terminate.len == 0 + return brains_to_enslave.len == 0 && cyborgs_to_make.len == 0 && ids_to_terminate.len == 0 /hook/debrain/proc/debrain_directive(obj/item/brain/B) - var/datum/directive/ipc_virus/D = get_directive("ipc_virus") - if (!D) return 1 + var/datum/directive/ipc_virus/D = get_directive("ipc_virus") + if (!D) return 1 - if(D.brains_to_enslave.Find(B.brainmob.mind)) - D.brains_to_enslave.Remove(B.brainmob.mind) + if(D.brains_to_enslave.Find(B.brainmob.mind)) + D.brains_to_enslave.Remove(B.brainmob.mind) - return 1 + return 1 /hook/borgify/proc/borgify_directive(mob/living/silicon/robot/cyborg) - var/datum/directive/ipc_virus/D = get_directive("ipc_virus") - if (!D) return 1 + var/datum/directive/ipc_virus/D = get_directive("ipc_virus") + if (!D) return 1 - if(D.cyborgs_to_make.Find(cyborg.mind)) - D.cyborgs_to_make.Remove(cyborg.mind) + if(D.cyborgs_to_make.Find(cyborg.mind)) + D.cyborgs_to_make.Remove(cyborg.mind) - // In case something glitchy happened and the victim got - // borged without us tracking the brain removal, go ahead - // and update that list too. - if(D.brains_to_enslave.Find(cyborg.mind)) - D.brains_to_enslave.Remove(cyborg.mind) + // In case something glitchy happened and the victim got + // borged without us tracking the brain removal, go ahead + // and update that list too. + if(D.brains_to_enslave.Find(cyborg.mind)) + D.brains_to_enslave.Remove(cyborg.mind) - return 1 + return 1 /hook/terminate_employee/proc/ipc_termination(obj/item/weapon/card/id) - var/datum/directive/ipc_virus/D = get_directive("ipc_virus") - if (!D) return 1 + var/datum/directive/ipc_virus/D = get_directive("ipc_virus") + if (!D) return 1 - if(D.ids_to_terminate && D.ids_to_terminate.Find(id)) - D.ids_to_terminate.Remove(id) + if(D.ids_to_terminate && D.ids_to_terminate.Find(id)) + D.ids_to_terminate.Remove(id) - return 1 + return 1 diff --git a/code/game/gamemodes/mutiny/directives/research_to_ripleys_directive.dm b/code/game/gamemodes/mutiny/directives/research_to_ripleys_directive.dm index a6305a2a566..9e6364e2ab9 100644 --- a/code/game/gamemodes/mutiny/directives/research_to_ripleys_directive.dm +++ b/code/game/gamemodes/mutiny/directives/research_to_ripleys_directive.dm @@ -1,65 +1,65 @@ #define MATERIALS_REQUIRED 200 datum/directive/research_to_ripleys - var/list/ids_to_reassign = list() - var/materials_shipped = 0 + var/list/ids_to_reassign = list() + var/materials_shipped = 0 - proc/get_researchers() - var/list/researchers[0] - for(var/mob/living/carbon/human/H in player_list) - if (H.mind.assigned_role in science_positions - "Research Director") - researchers.Add(H) - return researchers + proc/get_researchers() + var/list/researchers[0] + for(var/mob/living/carbon/human/H in player_list) + if (H.mind.assigned_role in science_positions - "Research Director") + researchers.Add(H) + return researchers - proc/count_researchers_reassigned() - var/researchers_reassigned = 0 - for(var/obj/item/weapon/card/id in ids_to_reassign) - if (ids_to_reassign[id]) - researchers_reassigned++ + proc/count_researchers_reassigned() + var/researchers_reassigned = 0 + for(var/obj/item/weapon/card/id in ids_to_reassign) + if (ids_to_reassign[id]) + researchers_reassigned++ - return researchers_reassigned + return researchers_reassigned datum/directive/research_to_ripleys/get_description() - return {" -

    - The NanoTrasen Tau Ceti 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. -

    - "} + return {" +

    + The NanoTrasen Tau Ceti 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. +

    + "} datum/directive/research_to_ripleys/meets_prerequisites() - var/list/researchers = get_researchers() - return researchers.len > 3 + var/list/researchers = get_researchers() + return researchers.len > 3 datum/directive/research_to_ripleys/initialize() - for(var/mob/living/carbon/human/R in get_researchers()) - ids_to_reassign[R.wear_id] = 0 + for(var/mob/living/carbon/human/R in get_researchers()) + ids_to_reassign[R.wear_id] = 0 - special_orders = list( - "Reassign all research personnel, excluding the Research Director, to Shaft Miner.", - "Deliver [MATERIALS_REQUIRED] sheets of metal or minerals via the supply shuttle to CentCom.") + special_orders = list( + "Reassign all research personnel, excluding the Research Director, to Shaft Miner.", + "Deliver [MATERIALS_REQUIRED] sheets of metal or minerals via the supply shuttle to CentCom.") datum/directive/research_to_ripleys/directives_complete() - if (materials_shipped < MATERIALS_REQUIRED) return 0 - return count_researchers_reassigned() == ids_to_reassign.len + if (materials_shipped < MATERIALS_REQUIRED) return 0 + return count_researchers_reassigned() == ids_to_reassign.len /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 + var/datum/directive/research_to_ripleys/D = get_directive("research_to_ripleys") + if(!D) return 1 - if(D.ids_to_reassign && D.ids_to_reassign.Find(id_card)) - D.ids_to_reassign[id_card] = id_card.assignment == "Shaft Miner" ? 1 : 0 + if(D.ids_to_reassign && D.ids_to_reassign.Find(id_card)) + D.ids_to_reassign[id_card] = id_card.assignment == "Shaft Miner" ? 1 : 0 - return 1 + return 1 /hook/sell_crate/proc/deliver_materials(obj/structure/closet/crate/sold, area/shuttle) - var/datum/directive/research_to_ripleys/D = get_directive("research_to_ripleys") - if(!D) return 1 + var/datum/directive/research_to_ripleys/D = get_directive("research_to_ripleys") + if(!D) return 1 - for(var/atom/A in sold) - if(istype(A, /obj/item/stack/sheet/mineral) || istype(A, /obj/item/stack/sheet/metal)) - var/obj/item/stack/S = A - D.materials_shipped += S.amount + for(var/atom/A in sold) + if(istype(A, /obj/item/stack/sheet/mineral) || istype(A, /obj/item/stack/sheet/metal)) + var/obj/item/stack/S = A + D.materials_shipped += S.amount - return 1 + return 1 diff --git a/code/game/gamemodes/mutiny/directives/tau_ceti_needs_women_directive.dm b/code/game/gamemodes/mutiny/directives/tau_ceti_needs_women_directive.dm index c9b86ecdf11..6506ef23a0a 100644 --- a/code/game/gamemodes/mutiny/directives/tau_ceti_needs_women_directive.dm +++ b/code/game/gamemodes/mutiny/directives/tau_ceti_needs_women_directive.dm @@ -1,83 +1,83 @@ datum/directive/tau_ceti_needs_women - var/list/command_targets = list() - var/list/alien_targets = list() + var/list/command_targets = list() + var/list/alien_targets = list() - proc/get_target_gender() - if(!mode.head_loyalist) return FEMALE - return mode.head_loyalist.current.gender == FEMALE ? MALE : FEMALE + proc/get_target_gender() + if(!mode.head_loyalist) return FEMALE + return mode.head_loyalist.current.gender == FEMALE ? MALE : FEMALE - proc/get_crew_of_target_gender() - var/list/targets[0] - for(var/mob/living/carbon/human/H in player_list) - if(H.species.name != "Machine" && H.gender == get_target_gender()) - targets.Add(H) - return targets + proc/get_crew_of_target_gender() + var/list/targets[0] + for(var/mob/living/carbon/human/H in player_list) + if(H.species.name != "Machine" && H.gender == get_target_gender()) + targets.Add(H) + return targets - proc/get_target_heads() - var/list/heads[0] - for(var/mob/living/carbon/human/H in get_crew_of_target_gender()) - if(command_positions.Find(H.mind.assigned_role)) - heads.Add(H) - return heads + proc/get_target_heads() + var/list/heads[0] + for(var/mob/living/carbon/human/H in get_crew_of_target_gender()) + if(command_positions.Find(H.mind.assigned_role)) + heads.Add(H) + return heads - proc/get_target_aliens() - var/list/aliens[0] - for(var/mob/living/carbon/human/H in get_crew_of_target_gender()) - if (H.species.name == "Tajaran" || H.species.name == "Unathi" || H.species.name == "Skrell") - aliens.Add(H) - return aliens + proc/get_target_aliens() + var/list/aliens[0] + for(var/mob/living/carbon/human/H in get_crew_of_target_gender()) + if (H.species.name == "Tajaran" || H.species.name == "Unathi" || H.species.name == "Skrell") + aliens.Add(H) + return aliens - proc/count_heads_reassigned() - var/heads_reassigned = 0 - for(var/obj/item/weapon/card/id in command_targets) - if (command_targets[id]) - heads_reassigned++ + proc/count_heads_reassigned() + var/heads_reassigned = 0 + for(var/obj/item/weapon/card/id in command_targets) + if (command_targets[id]) + heads_reassigned++ - return heads_reassigned + return heads_reassigned datum/directive/tau_ceti_needs_women/get_description() - return {" -

    - Recent evidence suggests [get_target_gender()] aptitudes may be effected by radiation from Tau Ceti. - Effects were measured under laboratory and station conditions. Humans remain more trusted than Xeno. Further information is classified. -

    - "} + return {" +

    + Recent evidence suggests [get_target_gender()] aptitudes may be effected by radiation from Tau Ceti. + Effects were measured under laboratory and station conditions. Humans remain more trusted than Xeno. Further information is classified. +

    + "} datum/directive/tau_ceti_needs_women/initialize() - for(var/mob/living/carbon/human/H in get_target_heads()) - command_targets[H.wear_id] = 0 + for(var/mob/living/carbon/human/H in get_target_heads()) + command_targets[H.wear_id] = 0 - for(var/mob/living/carbon/human/H in get_target_aliens()) - alien_targets.Add(H.wear_id) + for(var/mob/living/carbon/human/H in get_target_aliens()) + alien_targets.Add(H.wear_id) - special_orders = list( - "Remove [get_target_gender()] personnel from Command positions.", - "Terminate employment of all [get_target_gender()] Skrell, Tajara, and Unathi.") + special_orders = list( + "Remove [get_target_gender()] personnel from Command positions.", + "Terminate employment of all [get_target_gender()] Skrell, Tajara, and Unathi.") datum/directive/tau_ceti_needs_women/meets_prerequisites() - var/list/targets = get_crew_of_target_gender() - return targets.len >= 3 + var/list/targets = get_crew_of_target_gender() + return targets.len >= 3 datum/directive/tau_ceti_needs_women/directives_complete() - return command_targets.len == count_heads_reassigned() && alien_targets.len == 0 + return command_targets.len == count_heads_reassigned() && alien_targets.len == 0 /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 + var/datum/directive/tau_ceti_needs_women/D = get_directive("tau_ceti_needs_women") + if(!D) return 1 - if(D.command_targets && D.command_targets.Find(id_card)) - D.command_targets[id_card] = command_positions.Find(id_card.assignment) ? 0 : 1 + if(D.command_targets && D.command_targets.Find(id_card)) + D.command_targets[id_card] = command_positions.Find(id_card.assignment) ? 0 : 1 - return 1 + return 1 /hook/terminate_employee/proc/gender_target_termination_directive(obj/item/weapon/card/id) - var/datum/directive/tau_ceti_needs_women/D = get_directive("tau_ceti_needs_women") - if (!D) return 1 + var/datum/directive/tau_ceti_needs_women/D = get_directive("tau_ceti_needs_women") + if (!D) return 1 - if(D.alien_targets && D.alien_targets.Find(id)) - D.alien_targets.Remove(id) + if(D.alien_targets && D.alien_targets.Find(id)) + D.alien_targets.Remove(id) - if(D.command_targets && D.command_targets.Find(id)) - D.command_targets[id] = 1 + if(D.command_targets && D.command_targets.Find(id)) + D.command_targets[id] = 1 - return 1 + return 1 diff --git a/code/game/gamemodes/mutiny/directives/terminations_directive.dm b/code/game/gamemodes/mutiny/directives/terminations_directive.dm index bc9f808d907..21f91c366a1 100644 --- a/code/game/gamemodes/mutiny/directives/terminations_directive.dm +++ b/code/game/gamemodes/mutiny/directives/terminations_directive.dm @@ -3,54 +3,54 @@ // flavor text and override get_crew_to_terminate in your child datum. // See alien_fraud_directive.dm for an example. datum/directive/terminations - var/list/accounts_to_revoke = list() - var/list/accounts_to_suspend = list() - var/list/ids_to_terminate = list() + var/list/accounts_to_revoke = list() + var/list/accounts_to_suspend = list() + var/list/ids_to_terminate = list() - proc/get_crew_to_terminate() - return list() + proc/get_crew_to_terminate() + return list() datum/directive/terminations/directives_complete() - for(var/account_number in accounts_to_suspend) - if (!accounts_to_suspend[account_number]) - return 0 + for(var/account_number in accounts_to_suspend) + if (!accounts_to_suspend[account_number]) + return 0 - for(var/account_number in accounts_to_revoke) - if (!accounts_to_revoke[account_number]) - return 0 + for(var/account_number in accounts_to_revoke) + if (!accounts_to_revoke[account_number]) + return 0 - return ids_to_terminate.len == 0 + return ids_to_terminate.len == 0 datum/directive/terminations/initialize() - for(var/mob/living/carbon/human/A in get_crew_to_terminate()) - var/datum/money_account/account = A.mind.initial_account - accounts_to_revoke["[account.account_number]"] = 0 - accounts_to_suspend["[account.account_number]"] = account.suspended - ids_to_terminate.Add(A.wear_id) + for(var/mob/living/carbon/human/A in get_crew_to_terminate()) + var/datum/money_account/account = A.mind.initial_account + accounts_to_revoke["[account.account_number]"] = 0 + accounts_to_suspend["[account.account_number]"] = account.suspended + ids_to_terminate.Add(A.wear_id) /hook/revoke_payroll/proc/payroll_directive(datum/money_account/account) - var/datum/directive/terminations/D = get_directive("terminations") - if (!D) return 1 + var/datum/directive/terminations/D = get_directive("terminations") + if (!D) return 1 - if(D.accounts_to_revoke && D.accounts_to_revoke.Find("[account.account_number]")) - D.accounts_to_revoke["[account.account_number]"] = 1 + if(D.accounts_to_revoke && D.accounts_to_revoke.Find("[account.account_number]")) + D.accounts_to_revoke["[account.account_number]"] = 1 - return 1 + return 1 /hook/change_account_status/proc/suspension_directive(datum/money_account/account) - var/datum/directive/terminations/D = get_directive("terminations") - if (!D) return 1 + var/datum/directive/terminations/D = get_directive("terminations") + if (!D) return 1 - if(D.accounts_to_suspend && D.accounts_to_suspend.Find("[account.account_number]")) - D.accounts_to_suspend["[account.account_number]"] = account.suspended + if(D.accounts_to_suspend && D.accounts_to_suspend.Find("[account.account_number]")) + D.accounts_to_suspend["[account.account_number]"] = account.suspended - return 1 + return 1 /hook/terminate_employee/proc/termination_directive(obj/item/weapon/card/id) - var/datum/directive/terminations/D = get_directive("terminations") - if (!D) return 1 + var/datum/directive/terminations/D = get_directive("terminations") + if (!D) return 1 - if(D.ids_to_terminate && D.ids_to_terminate.Find(id)) - D.ids_to_terminate.Remove(id) + if(D.ids_to_terminate && D.ids_to_terminate.Find(id)) + D.ids_to_terminate.Remove(id) - return 1 + return 1 diff --git a/code/game/gamemodes/mutiny/directives/test_directive.dm b/code/game/gamemodes/mutiny/directives/test_directive.dm index 74e990f41c4..8eeb5ec94bc 100644 --- a/code/game/gamemodes/mutiny/directives/test_directive.dm +++ b/code/game/gamemodes/mutiny/directives/test_directive.dm @@ -1,23 +1,23 @@ // For testing datum/directive/terminations/test - special_orders = list( - "Suspend financial accounts of all ugly personnel.", - "Transfer their payrolls to the station account.", - "Terminate their employment.") + special_orders = list( + "Suspend financial accounts of all ugly personnel.", + "Transfer their payrolls to the station account.", + "Terminate their employment.") datum/directive/terminations/test/get_crew_to_terminate() - var/list/uglies[0] - for(var/mob/living/carbon/human/H in player_list) - uglies.Add(H) - return uglies + var/list/uglies[0] + for(var/mob/living/carbon/human/H in player_list) + uglies.Add(H) + return uglies datum/directive/terminations/test/get_description() - return {" -

    - Wow. Much ugly. So painful. - Many terminations. Very classified. -

    - "} + return {" +

    + Wow. Much ugly. So painful. + Many terminations. Very classified. +

    + "} datum/directive/terminations/test/meets_prerequisites() - return 1 + return 1 diff --git a/code/game/gamemodes/mutiny/emergency_authentication_device.dm b/code/game/gamemodes/mutiny/emergency_authentication_device.dm index 8aee11e11f1..1df5698004e 100644 --- a/code/game/gamemodes/mutiny/emergency_authentication_device.dm +++ b/code/game/gamemodes/mutiny/emergency_authentication_device.dm @@ -1,105 +1,105 @@ /obj/machinery/emergency_authentication_device - var/datum/game_mode/mutiny/mode + var/datum/game_mode/mutiny/mode - name = "\improper Emergency Authentication Device" - icon = 'icons/obj/stationobjs.dmi' - icon_state = "blackbox" - density = 1 - anchored = 1 + name = "\improper Emergency Authentication Device" + icon = 'icons/obj/stationobjs.dmi' + icon_state = "blackbox" + density = 1 + anchored = 1 - var/captains_key - var/secondary_key - var/activated = 0 + var/captains_key + var/secondary_key + var/activated = 0 - flags = FPRINT - use_power = 0 + flags = FPRINT + use_power = 0 - New(loc, mode) - src.mode = mode - ..(loc) + New(loc, mode) + src.mode = mode + ..(loc) - proc/check_key_existence() - if(!mode.captains_key) - captains_key = 1 + proc/check_key_existence() + if(!mode.captains_key) + captains_key = 1 - if(!mode.secondary_key) - secondary_key = 1 + if(!mode.secondary_key) + secondary_key = 1 - proc/get_status() - if(activated) - return "Activated" - if(captains_key && secondary_key) - return "Both Keys Authenticated" - if(captains_key) - return "Captain's Key Authenticated" - if(secondary_key) - return "Secondary Key Authenticated" - else - return "Inactive" + proc/get_status() + if(activated) + return "Activated" + if(captains_key && secondary_key) + return "Both Keys Authenticated" + if(captains_key) + return "Captain's Key Authenticated" + if(secondary_key) + return "Secondary Key Authenticated" + else + return "Inactive" /obj/machinery/emergency_authentication_device/attack_hand(mob/user) - if(activated) - user << "\blue \The [src] is already active!" - return + if(activated) + user << "\blue \The [src] is already active!" + return - if(!mode.current_directive.directives_complete()) - state("Command aborted. Communication with CentComm is prohibited until Directive X has been completed.") - return + if(!mode.current_directive.directives_complete()) + state("Command aborted. Communication with CentComm is prohibited until Directive X has been completed.") + return - check_key_existence() - if(captains_key && secondary_key) - activated = 1 - user << "\blue You activate \the [src]!" - state("Command acknowledged. Initiating quantum entanglement relay to NanoTrasen High Command.") - return + check_key_existence() + if(captains_key && secondary_key) + activated = 1 + user << "\blue You activate \the [src]!" + state("Command acknowledged. Initiating quantum entanglement relay to NanoTrasen High Command.") + return - if(!captains_key && !secondary_key) - state("Command aborted. Please present the authentication keys before proceeding.") - return + if(!captains_key && !secondary_key) + state("Command aborted. Please present the authentication keys before proceeding.") + return - if(!captains_key) - state("Command aborted. Please present the Captain's Authentication Key.") - return + if(!captains_key) + state("Command aborted. Please present the Captain's Authentication Key.") + return - if(!secondary_key) - state("Command aborted. Please present the Emergency Secondary Authentication Key.") - return + if(!secondary_key) + state("Command aborted. Please present the Emergency Secondary Authentication Key.") + return - // Impossible! - state("Command aborted. This unit is defective.") + // Impossible! + state("Command aborted. This unit is defective.") /obj/machinery/emergency_authentication_device/attackby(obj/item/weapon/O, mob/user) - if(activated) - user << "\blue \The [src] is already active!" - return + if(activated) + user << "\blue \The [src] is already active!" + return - if(!mode.current_directive.directives_complete()) - state({"Command aborted. Communication with CentCom is prohibited until Directive X has been completed."}) - return + if(!mode.current_directive.directives_complete()) + state({"Command aborted. Communication with CentCom is prohibited until Directive X has been completed."}) + return - check_key_existence() - if(istype(O, /obj/item/weapon/mutiny/auth_key/captain) && !captains_key) - captains_key = O - user.drop_item() - O.loc = src + check_key_existence() + if(istype(O, /obj/item/weapon/mutiny/auth_key/captain) && !captains_key) + captains_key = O + user.drop_item() + O.loc = src - state("Key received. Thank you, Captain [mode.head_loyalist].") - spawn(5) - state(secondary_key ? "Your keys have been authenticated. Communication with CentCom is now authorized." : "Please insert the Emergency Secondary Authentication Key now.") - return + state("Key received. Thank you, Captain [mode.head_loyalist].") + spawn(5) + state(secondary_key ? "Your keys have been authenticated. Communication with CentCom is now authorized." : "Please insert the Emergency Secondary Authentication Key now.") + return - if(istype(O, /obj/item/weapon/mutiny/auth_key/secondary) && !secondary_key) - secondary_key = O - user.drop_item() - O.loc = src + if(istype(O, /obj/item/weapon/mutiny/auth_key/secondary) && !secondary_key) + secondary_key = O + user.drop_item() + O.loc = src - state("Key received. Thank you, Secondary Authenticator [mode.head_mutineer].") - spawn(5) - state(captains_key ? "Your keys have been authenticated. Communication with CentCom is now authorized." : "Please insert the Captain's Authentication Key now.") - return - ..() + state("Key received. Thank you, Secondary Authenticator [mode.head_mutineer].") + spawn(5) + state(captains_key ? "Your keys have been authenticated. Communication with CentCom is now authorized." : "Please insert the Captain's Authentication Key now.") + return + ..() /obj/machinery/emergency_authentication_device/examine() - usr << {" + usr << {" This is a specialized communications device that is able to instantly send a message to NanoTrasen High Command via quantum entanglement with a sister device at CentCom. The EAD's status is [get_status()]."} diff --git a/code/game/gamemodes/mutiny/key_pinpointer.dm b/code/game/gamemodes/mutiny/key_pinpointer.dm index d847f8b70bd..c481fd5bbc8 100644 --- a/code/game/gamemodes/mutiny/key_pinpointer.dm +++ b/code/game/gamemodes/mutiny/key_pinpointer.dm @@ -1,49 +1,49 @@ /obj/item/weapon/pinpointer/advpinpointer/auth_key - name = "\improper Authentication Key Pinpointer" - desc = "Tracks the positions of the emergency authentication keys." - var/datum/game_mode/mutiny/mutiny + name = "\improper Authentication Key Pinpointer" + desc = "Tracks the positions of the emergency authentication keys." + var/datum/game_mode/mutiny/mutiny - New() - mutiny = ticker.mode - ..() + New() + mutiny = ticker.mode + ..() /obj/item/weapon/pinpointer/advpinpointer/auth_key/attack_self() - switch(mode) - if (0) - mode = 1 - active = 1 - target = mutiny.captains_key - workobj() - usr << "\blue You calibrate \the [src] to locate the Captain's Authentication Key." - if (1) - mode = 2 - target = mutiny.secondary_key - usr << "\blue You calibrate \the [src] to locate the Emergency Secondary Authentication Key." - else - mode = 0 - active = 0 - icon_state = "pinoff" - usr << "\blue You switch \the [src] off." + switch(mode) + if (0) + mode = 1 + active = 1 + target = mutiny.captains_key + workobj() + usr << "\blue You calibrate \the [src] to locate the Captain's Authentication Key." + if (1) + mode = 2 + target = mutiny.secondary_key + usr << "\blue You calibrate \the [src] to locate the Emergency Secondary Authentication Key." + else + mode = 0 + active = 0 + icon_state = "pinoff" + usr << "\blue You switch \the [src] off." /obj/item/weapon/pinpointer/advpinpointer/auth_key/examine() - switch(mode) - if (0) - usr << "Is is calibrated for the Captain's Authentication Key." - if (1) - usr << "It is calibrated for the Emergency Secondary Authentication Key." - else - usr << "It is switched off." + switch(mode) + if (1) + usr << "Is is calibrated for the Captain's Authentication Key." + if (2) + usr << "It is calibrated for the Emergency Secondary Authentication Key." + else + usr << "It is switched off." /datum/supply_packs/key_pinpointer - name = "Authentication Key Pinpointer crate" - contains = list(/obj/item/weapon/pinpointer/advpinpointer/auth_key) - cost = 250 - containertype = /obj/structure/closet/crate - containername = "Authentication Key Pinpointer crate" - access = access_heads - group = "Operations" + name = "Authentication Key Pinpointer crate" + contains = list(/obj/item/weapon/pinpointer/advpinpointer/auth_key) + cost = 250 + containertype = /obj/structure/closet/crate + containername = "Authentication Key Pinpointer crate" + access = access_heads + group = "Operations" - New() - // This crate is only accessible during mutiny rounds - if (istype(ticker.mode,/datum/game_mode/mutiny)) - ..() + New() + // This crate is only accessible during mutiny rounds + if (istype(ticker.mode,/datum/game_mode/mutiny)) + ..() diff --git a/code/game/gamemodes/mutiny/mutiny.dm b/code/game/gamemodes/mutiny/mutiny.dm index acef3b1d088..c74ed414e13 100644 --- a/code/game/gamemodes/mutiny/mutiny.dm +++ b/code/game/gamemodes/mutiny/mutiny.dm @@ -1,350 +1,391 @@ +#define MUTINY_RECRUITMENT_COOLDOWN 5 + datum/game_mode/mutiny - var/datum/mutiny_fluff/fluff - var/datum/directive/current_directive - var/obj/item/weapon/mutiny/auth_key/captain/captains_key - var/obj/item/weapon/mutiny/auth_key/secondary/secondary_key - var/obj/machinery/emergency_authentication_device/ead - var/datum/mind/head_loyalist - var/datum/mind/head_mutineer - var/list/loyalists = list() - var/list/mutineers = list() - var/list/body_count = list() + var/datum/mutiny_fluff/fluff + var/datum/directive/current_directive + var/obj/item/weapon/mutiny/auth_key/captain/captains_key + var/obj/item/weapon/mutiny/auth_key/secondary/secondary_key + var/obj/machinery/emergency_authentication_device/ead + var/datum/mind/head_loyalist + var/datum/mind/head_mutineer + var/recruit_loyalist_cooldown = 0 + var/recruit_mutineer_cooldown = 0 + var/list/loyalists = list() + var/list/mutineers = list() + var/list/body_count = list() - name = "mutiny" - config_tag = "mutiny" - required_players = 7 - ert_disabled = 1 + name = "mutiny" + config_tag = "mutiny" + required_players = 7 + ert_disabled = 1 - uplink_welcome = "Mutineers Uplink Console:" - uplink_uses = 0 + uplink_welcome = "Mutineers Uplink Console:" + uplink_uses = 0 - New() - fluff = new(src) + New() + fluff = new(src) - proc/reveal_directives() - spawn(rand(1 MINUTE, 3 MINUTES)) - fluff.announce_incoming_fax() - spawn(rand(3 MINUTES, 5 MINUTES)) - send_pda_message() - spawn(rand(3 MINUTES, 5 MINUTES)) - fluff.announce_directives() - spawn(rand(2 MINUTES, 3 MINUTE)) - fluff.announce_ert_unavailable() + proc/reveal_directives() + spawn(rand(1 MINUTE, 3 MINUTES)) + fluff.announce_incoming_fax() + spawn(rand(3 MINUTES, 5 MINUTES)) + send_pda_message() + spawn(rand(3 MINUTES, 5 MINUTES)) + fluff.announce_directives() + spawn(rand(2 MINUTES, 3 MINUTE)) + fluff.announce_ert_unavailable() - // Returns an array in case we want to expand on this later. - proc/get_head_loyalist_candidates() - var/list/candidates[0] - for(var/mob/loyalist in player_list) - if(loyalist.mind.assigned_role == "Captain") - candidates.Add(loyalist.mind) - return candidates + // Returns an array in case we want to expand on this later. + proc/get_head_loyalist_candidates() + var/list/candidates[0] + for(var/mob/loyalist in player_list) + if(loyalist.mind && loyalist.mind.assigned_role == "Captain") + candidates.Add(loyalist.mind) + return candidates - proc/get_head_mutineer_candidates() - var/list/candidates[0] - for(var/mob/mutineer in player_list) - if(mutineer.client.prefs.be_special & BE_MUTINEER) - for(var/job in command_positions - "Captain") - if(mutineer.mind.assigned_role == job) - candidates.Add(mutineer.mind) - return candidates + proc/get_head_mutineer_candidates() + var/list/candidates[0] + for(var/mob/mutineer in player_list) + if(mutineer.client.prefs.be_special & BE_MUTINEER) + for(var/job in command_positions - "Captain") + if(mutineer.mind && mutineer.mind.assigned_role == job) + candidates.Add(mutineer.mind) + return candidates - proc/get_directive_candidates() - var/list/candidates[0] - for(var/T in typesof(/datum/directive) - /datum/directive) - var/datum/directive/D = new T(src) - if (D.meets_prerequisites()) - candidates.Add(D) - return candidates + proc/get_directive_candidates() + var/list/candidates[0] + for(var/T in typesof(/datum/directive) - /datum/directive) + var/datum/directive/D = new T(src) + if (D.meets_prerequisites()) + candidates.Add(D) + return candidates - proc/send_pda_message() - var/obj/item/device/pda/pda = null - for(var/obj/item/device/pda/P in head_mutineer.current) - pda = P - break + proc/send_pda_message() + var/obj/item/device/pda/pda = null + for(var/obj/item/device/pda/P in head_mutineer.current) + pda = P + break - if (!pda) - return 0 + if (!pda) + return 0 - if (!pda.silent) - playsound(pda.loc, 'sound/machines/twobeep.ogg', 50, 1) - for (var/mob/O in hearers(3, pda.loc)) - O.show_message(text("\icon[pda] *[pda.ttone]*")) + if (!pda.silent) + playsound(pda.loc, 'sound/machines/twobeep.ogg', 50, 1) + for (var/mob/O in hearers(3, pda.loc)) + O.show_message(text("\icon[pda] *[pda.ttone]*")) - head_mutineer.current << fluff.get_pda_body() - return 1 + head_mutineer.current << fluff.get_pda_body() + return 1 - proc/get_equipment_slots() - return list( - "left pocket" = slot_l_store, - "right pocket" = slot_r_store, - "backpack" = slot_in_backpack, - "left hand" = slot_l_hand, - "right hand" = slot_r_hand) + proc/get_equipment_slots() + return list( + "left pocket" = slot_l_store, + "right pocket" = slot_r_store, + "backpack" = slot_in_backpack, + "left hand" = slot_l_hand, + "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 + 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 - 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()) - H.update_icons() - H.verbs += /mob/living/carbon/human/proc/recruit_mutineer + 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()) + H.update_icons() + H.verbs += /mob/living/carbon/human/proc/recruit_mutineer - proc/add_loyalist(datum/mind/M) - loyalists.Add(M) - if (M in mutineers) - mutineers.Remove(M) + proc/add_loyalist(datum/mind/M) + add_faction(M, "loyalist", loyalists) - M.current << fluff.loyalist_tag("You have joined the loyalists!") - head_loyalist.current << fluff.loyalist_tag("[M] has joined the loyalists!") - update_icon(M) + proc/add_mutineer(datum/mind/M) + add_faction(M, "mutineer", mutineers) - proc/add_mutineer(datum/mind/M) - mutineers.Add(M) - if (M in loyalists) - loyalists.Remove(M) + proc/add_faction(datum/mind/M, faction, list/faction_list) + if(!can_be_recruited(M, faction)) + M.current << "\red Recruitment canceled; your role has already changed." + head_mutineer.current << "\red Could not recruit [M]. Their role has changed." + return - M.current << fluff.mutineer_tag("You have joined the mutineers!") - head_mutineer.current << fluff.mutineer_tag("[M] has joined the mutineers!") - update_icon(M) + if(M in loyalists) + loyalists.Remove(M) - proc/was_bloodbath() - var/list/remaining_loyalists = loyalists - body_count - if (!remaining_loyalists.len) - return 1 + if(M in mutineers) + mutineers.Remove(M) - var/list/remaining_mutineers = mutineers - body_count - if (!remaining_mutineers.len) - return 1 + M.special_role = faction + faction_list.Add(M) - return 0 + if(faction == "mutineer") + M.current << fluff.mutineer_tag("You have joined the mutineers!") + head_mutineer.current << fluff.mutineer_tag("[M] has joined the mutineers!") + else + M.current << fluff.loyalist_tag("You have joined the loyalists!") + head_loyalist.current << fluff.loyalist_tag("[M] has joined the loyalists!") - proc/replace_nuke_with_ead() - for(var/obj/machinery/nuclearbomb/N in world) - ead = new(N.loc, src) - del(N) + update_icon(M) - proc/unbolt_vault_door() - var/obj/machinery/door/airlock/vault = locate(/obj/machinery/door/airlock/vault) - vault.locked = 0 + proc/was_bloodbath() + var/list/remaining_loyalists = loyalists - body_count + if (!remaining_loyalists.len) + return 1 - proc/round_outcome() - world << "

    Breaking News



    " - if (was_bloodbath()) - world << fluff.no_victory() - return + var/list/remaining_mutineers = mutineers - body_count + if (!remaining_mutineers.len) + return 1 - var/directives_completed = current_directive.directives_complete() - var/ead_activated = ead.activated - if (directives_completed && ead_activated) - world << fluff.loyalist_major_victory() - else if (directives_completed && !ead_activated) - world << fluff.loyalist_minor_victory() - else if (!directives_completed && ead_activated) - world << fluff.mutineer_minor_victory() - else if (!directives_completed && !ead_activated) - world << fluff.mutineer_major_victory() + return 0 - world << sound('sound/machines/twobeep.ogg') + proc/replace_nuke_with_ead() + for(var/obj/machinery/nuclearbomb/N in world) + ead = new(N.loc, src) + del(N) - proc/update_all_icons() - spawn(0) - for(var/datum/mind/M in mutineers) - update_icon(M) + proc/unbolt_vault_door() + var/obj/machinery/door/airlock/vault = locate(/obj/machinery/door/airlock/vault) + vault.locked = 0 - for(var/datum/mind/M in loyalists) - update_icon(M) - return 1 + proc/can_be_recruited(datum/mind/M, role) + if(!M) return 0 + if(!M.special_role) return 1 + switch(role) + if("loyalist") + return M.special_role == "mutineer" + if("mutineer") + return M.special_role == "loyalist" - proc/update_icon(datum/mind/M) - if(!M.current || !M.current.client) - return 0 + proc/round_outcome() + world << "

    Breaking News



    " + if (was_bloodbath()) + world << fluff.no_victory() + return - for(var/image/I in M.current.client.images) - if (I.icon_state == "loyalist" || I.icon_state == "mutineer") - del(I) + var/directives_completed = current_directive.directives_complete() + var/ead_activated = ead.activated + if (directives_completed && ead_activated) + world << fluff.loyalist_major_victory() + else if (directives_completed && !ead_activated) + world << fluff.loyalist_minor_victory() + else if (!directives_completed && ead_activated) + world << fluff.mutineer_minor_victory() + else if (!directives_completed && !ead_activated) + world << fluff.mutineer_major_victory() - if(M in loyalists) - var/I = image('icons/mob/mob.dmi', loc=M.current, icon_state = "loyalist") - head_loyalist.current.client.images += I + world << sound('sound/machines/twobeep.ogg') - if(M in mutineers) - var/I = image('icons/mob/mob.dmi', loc=M.current, icon_state = "mutineer") - head_mutineer.current.client.images += I + proc/update_all_icons() + spawn(0) + for(var/datum/mind/M in mutineers) + update_icon(M) - return 1 + for(var/datum/mind/M in loyalists) + update_icon(M) + return 1 - proc/check_antagonists_ui(admins) - var/turf/captains_key_loc = captains_key ? captains_key.get_turf() : "Lost or Destroyed" - var/turf/secondary_key_loc = secondary_key ? secondary_key.get_turf() : "Lost or Destroyed" - var/txt = {" -
    Context:
    -

    - [current_directive.get_description()] -

    -
    Orders:
    -
      - [fluff.get_orders()] -
    -
    -
    Authentication:
    - Captain's Key: [captains_key_loc] - Activate
    - Secondary Key: [secondary_key_loc] - Activate
    - EAD: [ead ? ead.get_status() : "Lost or Destroyed"] - Activate
    -
    - "} + proc/update_icon(datum/mind/M) + if(!M.current || !M.current.client) + return 0 - if(head_loyalist) - txt += check_role_table("Head Loyalist", list(head_loyalist), admins, 0) + for(var/image/I in head_loyalist.current.client.images) + if(I.loc == M.current && (I.icon_state == "loyalist" || I.icon_state == "mutineer")) + del(I) - var/list/loyal_crew = loyalists - head_loyalist - if(loyal_crew.len) - txt += check_role_table("Loyalists", loyal_crew, admins, 0) + for(var/image/I in head_mutineer.current.client.images) + if(I.loc == M.current && (I.icon_state == "loyalist" || I.icon_state == "mutineer")) + del(I) - if(head_mutineer) - txt += check_role_table("Head Mutineer", list(head_mutineer), admins, 0) + if(M in loyalists) + var/I = image('icons/mob/mob.dmi', loc=M.current, icon_state = "loyalist") + head_loyalist.current.client.images += I - var/list/mutiny_crew = mutineers - head_mutineer - if(mutiny_crew.len) - txt += check_role_table("Mutineers", mutiny_crew, admins, 0) + if(M in mutineers) + var/I = image('icons/mob/mob.dmi', loc=M.current, icon_state = "mutineer") + head_mutineer.current.client.images += I - if(body_count.len) - txt += check_role_table("Casualties", body_count, admins, 0) + return 1 - return txt + 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 = {" +
    Context:
    +

    + [current_directive.get_description()] +

    +
    Orders:
    +
      + [fluff.get_orders()] +
    +
    +
    Authentication:
    + Captain's Key: [captains_key_loc] + Activate
    + Secondary Key: [secondary_key_loc] + Activate
    + EAD: [ead ? ead.get_status() : "Lost or Destroyed"] + Activate
    +
    + "} + + 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() + fluff.announce() /datum/game_mode/mutiny/pre_setup() - var/list/loyalist_candidates = get_head_loyalist_candidates() - if(!loyalist_candidates || loyalist_candidates.len == 0) - world << "Mutiny mode aborted: no valid candidates for head loyalist." - return 0 + var/list/loyalist_candidates = get_head_loyalist_candidates() + if(!loyalist_candidates || loyalist_candidates.len == 0) + world << "Mutiny mode aborted: no valid candidates for head loyalist." + return 0 - var/list/mutineer_candidates = get_head_mutineer_candidates() - if(!mutineer_candidates || mutineer_candidates.len == 0) - world << "Mutiny mode aborted: no valid candidates for head mutineer." - return 0 + var/list/mutineer_candidates = get_head_mutineer_candidates() + if(!mutineer_candidates || mutineer_candidates.len == 0) + world << "Mutiny mode aborted: no valid candidates for head mutineer." + return 0 - var/list/directive_candidates = get_directive_candidates() - if(!directive_candidates || directive_candidates.len == 0) - world << "Mutiny mode aborted: no valid candidates for Directive X." - return 0 + var/list/directive_candidates = get_directive_candidates() + if(!directive_candidates || directive_candidates.len == 0) + world << "Mutiny mode aborted: no valid candidates for Directive X." + return 0 - head_loyalist = pick(loyalist_candidates) - head_mutineer = pick(mutineer_candidates) - current_directive = pick(directive_candidates) + head_loyalist = pick(loyalist_candidates) + head_mutineer = pick(mutineer_candidates) + current_directive = pick(directive_candidates) - return 1 + 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_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() + head_mutineer.current << "You are the Head Mutineer!" + head_mutineer.special_role = "head_mutineer" + equip_head_mutineer() - loyalists.Add(head_loyalist) - mutineers.Add(head_mutineer) + loyalists.Add(head_loyalist) + mutineers.Add(head_mutineer) - replace_nuke_with_ead() - current_directive.initialize() - unbolt_vault_door() + replace_nuke_with_ead() + current_directive.initialize() + unbolt_vault_door() - update_all_icons() - spawn(0) - reveal_directives() - ..() + update_all_icons() + spawn(0) + 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 + 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" + set name = "Recruit Loyalist" + set category = "Mutiny" - var/datum/game_mode/mutiny/mode = get_mutiny_mode() - if (!mode || src != mode.head_loyalist.current) - return + var/datum/game_mode/mutiny/mode = get_mutiny_mode() + if (!mode || src != mode.head_loyalist.current) + return - var/list/candidates = list() - for (var/mob/living/carbon/human/P in oview(src)) - if(!stat && P.client && P.mind && !P.mind.special_role) - candidates += P + var/list/candidates = list() + for (var/mob/living/carbon/human/P in oview(src)) + if(!stat && P.client && mode.can_be_recruited(P.mind, "loyalist")) + candidates += P - if(!candidates.len) - src << "\red You aren't close enough to anybody that can be recruited." - return + if(!candidates.len) + src << "\red You aren't close enough to anybody that can be recruited." + return - var/mob/living/carbon/human/M = input("Select a person to recruit", "Loyalist recruitment", null) as mob in candidates + if(world.time < mode.recruit_loyalist_cooldown) + src << "\red Wait [MUTINY_RECRUITMENT_COOLDOWN] seconds before recruiting again." + return - if (M) - src << "Attempting to recruit [M]..." - log_admin("[src]([src.ckey]) attempted to recruit [M] as a loyalist.") - message_admins("\red [src]([src.ckey]) attempted to recruit [M] as a loyalist.") + mode.recruit_loyalist_cooldown = world.time + (MUTINY_RECRUITMENT_COOLDOWN SECONDS) - var/choice = alert(M, "Asked by [src]: Will you help me complete Directive X?", "Loyalist recruitment", "No", "Yes") - if(choice == "Yes") - mode.add_loyalist(M.mind) - else if(choice == "No") - M << "\red You declined to join the loyalists." - mode.head_loyalist.current << "\red [M] declined to support the loyalists." + var/mob/living/carbon/human/M = input("Select a person to recruit", "Loyalist recruitment", null) as mob in candidates + + if (M) + src << "Attempting to recruit [M]..." + log_admin("[src]([src.ckey]) attempted to recruit [M] as a loyalist.") + message_admins("\red [src]([src.ckey]) attempted to recruit [M] as a loyalist.") + + var/choice = alert(M, "Asked by [src]: Will you help me complete Directive X?", "Loyalist recruitment", "No", "Yes") + if(choice == "Yes") + mode.add_loyalist(M.mind) + else if(choice == "No") + M << "\red You declined to join the loyalists." + mode.head_loyalist.current << "\red [M] declined to support the loyalists." /mob/living/carbon/human/proc/recruit_mutineer() - set name = "Recruit Mutineer" - set category = "Mutiny" + set name = "Recruit Mutineer" + set category = "Mutiny" - var/datum/game_mode/mutiny/mode = get_mutiny_mode() - if (!mode || src != mode.head_mutineer.current) - return + var/datum/game_mode/mutiny/mode = get_mutiny_mode() + if (!mode || src != mode.head_mutineer.current) + return - var/list/candidates = list() - for (var/mob/living/carbon/human/P in oview(src)) - if(!stat && P.client && P.mind && !P.mind.special_role) - candidates += P + var/list/candidates = list() + for (var/mob/living/carbon/human/P in oview(src)) + if(!stat && P.client && mode.can_be_recruited(P.mind, "mutineer")) + candidates += P - if(!candidates.len) - src << "\red You aren't close enough to anybody that can be recruited." - return + if(!candidates.len) + src << "\red You aren't close enough to anybody that can be recruited." + return - var/mob/living/carbon/human/M = input("Select a person to recruit", "Mutineer recruitment", null) as mob in candidates + if(world.time < mode.recruit_mutineer_cooldown) + src << "\red Wait [MUTINY_RECRUITMENT_COOLDOWN] seconds before recruiting again." + return - if (M) - src << "Attempting to recruit [M]..." - log_admin("[src]([src.ckey]) attempted to recruit [M] as a mutineer.") - message_admins("\red [src]([src.ckey]) attempted to recruit [M] as a mutineer.") + mode.recruit_mutineer_cooldown = world.time + (MUTINY_RECRUITMENT_COOLDOWN SECONDS) - var/choice = alert(M, "Asked by [src]: Will you help me stop Directive X?", "Mutineer recruitment", "No", "Yes") - if(choice == "Yes") - mode.add_mutineer(M.mind) - else if(choice == "No") - M << "\red You declined to join the mutineers." - mode.head_mutineer.current << "\red [M] declined to support the mutineers." + var/mob/living/carbon/human/M = input("Select a person to recruit", "Mutineer recruitment", null) as mob in candidates + + if (M) + src << "Attempting to recruit [M]..." + log_admin("[src]([src.ckey]) attempted to recruit [M] as a mutineer.") + message_admins("\red [src]([src.ckey]) attempted to recruit [M] as a mutineer.") + + var/choice = alert(M, "Asked by [src]: Will you help me stop Directive X?", "Mutineer recruitment", "No", "Yes") + if(choice == "Yes") + mode.add_mutineer(M.mind) + else if(choice == "No") + M << "\red You declined to join the mutineers." + mode.head_mutineer.current << "\red [M] declined to support the mutineers." /proc/get_mutiny_mode() - if(!ticker || !istype(ticker.mode, /datum/game_mode/mutiny)) - return null + if(!ticker || !istype(ticker.mode, /datum/game_mode/mutiny)) + return null - return ticker.mode + return ticker.mode diff --git a/code/game/gamemodes/mutiny/mutiny_fluff.dm b/code/game/gamemodes/mutiny/mutiny_fluff.dm index dc13acda625..1b81cca1e22 100644 --- a/code/game/gamemodes/mutiny/mutiny_fluff.dm +++ b/code/game/gamemodes/mutiny/mutiny_fluff.dm @@ -1,132 +1,132 @@ /datum/mutiny_fluff - var/datum/game_mode/mutiny/mode + var/datum/game_mode/mutiny/mode - New(datum/game_mode/mutiny/M) - mode = M + New(datum/game_mode/mutiny/M) + mode = M - proc/centcom_announce(text) - world << {" + proc/centcom_announce(text) + world << {"
    :-:=:-: CENTRAL COMMAND ANNOUNCEMENT :-:=:-:

    [text] - "} - world << sound('sound/AI/commandreport.ogg') + "} + world << sound('sound/AI/commandreport.ogg') - proc/announce_incoming_fax() - centcom_announce({" + proc/announce_incoming_fax() + centcom_announce({" Incoming Emergency Directive: Captain's Office Fax Machine, [station_name()] - "}) + "}) - proc/announce_directives() - for (var/obj/machinery/faxmachine/fax in world) - if (fax.department == "Captain's Office") - var/obj/item/weapon/paper/directive_x = new(fax.loc) - directive_x.name = "emergency action message" - directive_x.info = get_fax_body() + proc/announce_directives() + for (var/obj/machinery/faxmachine/fax in world) + if (fax.department == "Captain's Office") + var/obj/item/weapon/paper/directive_x = new(fax.loc) + directive_x.name = "emergency action message" + directive_x.info = get_fax_body() - proc/get_fax_body() - return {" -
    NOT A DRILL . . . EMERGENCY DIRECTIVE . . . NOT A DRILL
    -

    - TO: Captain [mode.head_loyalist], Commanding Officer, [station_name()]
    - FROM: NanoTrasen Emergency Messaging Relay
    - DATE: [time2text(world.realtime, "MM/DD")]/[game_year]
    - SUBJECT: Directive X
    -

    + proc/get_fax_body() + return {" +
    NOT A DRILL . . . EMERGENCY DIRECTIVE . . . NOT A DRILL
    +

    + TO: Captain [mode.head_loyalist], Commanding Officer, [station_name()]
    + FROM: NanoTrasen Emergency Messaging Relay
    + DATE: [time2text(world.realtime, "MM/DD")]/[game_year]
    + SUBJECT: Directive X
    +

    - [mode.current_directive.get_description()] + [mode.current_directive.get_description()] -
    -
    Emergency Authentication Protocol
    -

    - A member of your Command Staff is this shift's designated Emergency Secondary Authenticator.
    - This Emergency Secondary Authenticator is uniquely aware of their role and possesses the Emergency Secondary Authentication Key.
    - As Captain, you possess the Captain's Authentication Key.
    - The Emergency Authentication Device is located in the vault of your station, and requires simultaneous activation of the Authentication Keys.
    - An Authentication Key Pinpointer can be delivered via Cargo Bay to assist recovery of the Authentication Keys should they be lost aboard the station.
    - A key's destruction or removal from the station's perimeter will automatically and irreversibly activate the Emergency Authentication Device. -

    -
    +
    +
    Emergency Authentication Protocol
    +

    + A member of your Command Staff is this shift's designated Emergency Secondary Authenticator.
    + This Emergency Secondary Authenticator is uniquely aware of their role and possesses the Emergency Secondary Authentication Key.
    + As Captain, you possess the Captain's Authentication Key.
    + The Emergency Authentication Device is located in the vault of your station, and requires simultaneous activation of the Authentication Keys.
    + An Authentication Key Pinpointer can be delivered via Cargo Bay to assist recovery of the Authentication Keys should they be lost aboard the station.
    + A key's destruction or removal from the station's perimeter will automatically and irreversibly activate the Emergency Authentication Device. +

    +
    -
    Orders
    -

    - Captain [mode.head_loyalist], you are to immediately initiate the following procedure; codenamed Directive X: -

    -
      - [get_orders()] -
    -
    +
    Orders
    +

    + Captain [mode.head_loyalist], you are to immediately initiate the following procedure; codenamed Directive X: +

    +
      + [get_orders()] +
    +
    -
    Authentication
    +
    Authentication
    - Encoded Authentication String: T0JCJUwoIVFDQA==
    - Emergency Action Code: O B B _ L _ _ Q C _
    - ERROR: DECODING INCOMPLETE (40% LOSS) -
    -
    -
    + Encoded Authentication String: T0JCJUwoIVFDQA==
    + Emergency Action Code: O B B _ L _ _ Q C _
    + ERROR: DECODING INCOMPLETE (40% LOSS) +
    +
    +
    -
    NOT A DRILL . . . EMERGENCY DIRECTIVE . . . NOT A DRILL
    - "} +
    NOT A DRILL . . . EMERGENCY DIRECTIVE . . . NOT A DRILL
    + "} - proc/get_orders() - var/text = "
  • Immediate external transmission and signals silence. Evacuation and Cargo services will remain available. All ERT teams are engaged elsewhere. Do not communicate with Central Command under any circumstances.
  • " - for(var/order in mode.current_directive.special_orders) - text += "
  • [order]
  • " + proc/get_orders() + var/text = "
  • Immediate external transmission and signals silence. Evacuation and Cargo services will remain available. All ERT teams are engaged elsewhere. Do not communicate with Central Command under any circumstances.
  • " + for(var/order in mode.current_directive.special_orders) + text += "
  • [order]
  • " - text += "
  • Upon completion of this Directive, Captain [mode.head_loyalist] and the Emergency Secondary Authenticator must utilise the Captain's Authentication Key and the Emergency Secondary Authentication Key to activate the Emergency Authentication Device.
  • " - return text + text += "
  • Upon completion of this Directive, Captain [mode.head_loyalist] and the Emergency Secondary Authenticator must utilise the Captain's Authentication Key and the Emergency Secondary Authentication Key to activate the Emergency Authentication Device.
  • " + return text - proc/get_pda_body() - return {"← From Anonymous Channel:

    \"You must read this! NanoTrasen Chain of Command COMPROMISED. Command Encryptions BROKEN. [station_name()] Captain [mode.head_loyalist] will receive orders that must NOT BE BROUGHT TO FRUITION! + proc/get_pda_body() + return {"← From Anonymous Channel:

    \"You must read this! NanoTrasen Chain of Command COMPROMISED. Command Encryptions BROKEN. [station_name()] Captain [mode.head_loyalist] will receive orders that must NOT BE BROUGHT TO FRUITION! They don't care about us they only care about WEALTH and POWER... Share this message with people you trust. Be safe, friend.\" (Unable to Reply)

    "} - proc/announce_ert_unavailable() - // I might have gotten a little carried away. - centcom_announce({" + proc/announce_ert_unavailable() + // I might have gotten a little carried away. + centcom_announce({"

    The presence of [pick( - "political instability", - "quantum fluctuations", - "hostile raiders", - "derelict station debris", - "REDACTED", - "ancient alien artillery", - "solar magnetic storms", - "sentient time-travelling killbots", - "gravitational anomalies", - "wormholes to another dimension", - "a telescience mishap", - "radiation flares", - "supermatter dust", - "leaks into a negative reality", - "antiparticle clouds", - "residual bluespace energy", - "suspected syndicate operatives", - "malfunctioning von Neumann probe swarms", - "shadowy interlopers", - "a stranded Vox arkship", - "haywire IPC constructs", - "rogue Unathi exiles", - "artifacts of eldritch horror", - "a brain slug infestation", - "killer bugs that lay eggs in the husks of the living", - "a deserted transport carrying xenomorph specimens", - "an emissary for the gestalt requesting a security detail", - "a Tajaran slave rebellion", - "radical Skrellian transevolutionaries", - "classified security operations", - "science-defying raw elemental chaos")] + "political instability", + "quantum fluctuations", + "hostile raiders", + "derelict station debris", + "REDACTED", + "ancient alien artillery", + "solar magnetic storms", + "sentient time-travelling killbots", + "gravitational anomalies", + "wormholes to another dimension", + "a telescience mishap", + "radiation flares", + "supermatter dust", + "leaks into a negative reality", + "antiparticle clouds", + "residual bluespace energy", + "suspected syndicate operatives", + "malfunctioning von Neumann probe swarms", + "shadowy interlopers", + "a stranded Vox arkship", + "haywire IPC constructs", + "rogue Unathi exiles", + "artifacts of eldritch horror", + "a brain slug infestation", + "killer bugs that lay eggs in the husks of the living", + "a deserted transport carrying xenomorph specimens", + "an emissary for the gestalt requesting a security detail", + "a Tajaran slave rebellion", + "radical Skrellian transevolutionaries", + "classified security operations", + "science-defying raw elemental chaos")] in the region is tying up all available local emergency resources; emergency response teams can not be called at this time.

    - "}) + "}) - proc/announce() - world << "The current game mode is - Mutiny!" - world << {" + proc/announce() + world << "The current game mode is - Mutiny!" + world << {"

    The crew will be divided by their sense of ethics when a morally turbulent emergency directive arrives with an incomplete command validation code.

    The [loyalist_tag("Head Loyalist")] is the Captain, who carries the [loyalist_tag("Captain's Authentication Key")] at all times.
    The [mutineer_tag("Head Mutineer")] is a random Head of Staff who carries the [mutineer_tag("Emergency Secondary Authentication Key")].

    @@ -136,24 +136,24 @@ Both keys are required to activate the Emergency Authentication Device (EAD)< Loyalists - Follow the Head Loyalist in carrying out [loyalist_tag("NanoTrasen's directives")] then activate the EAD.
    Mutineers - Prevent the completion of the [mutineer_tag("improperly validated directives")] and the activation of the EAD.

    - "} + "} - proc/loyalist_tag(text) - return "[text]" + proc/loyalist_tag(text) + return "[text]" - proc/mutineer_tag(text) - return "[text]" + proc/mutineer_tag(text) + return "[text]" - proc/their(datum/mind/head) - if (head.current.gender == MALE) - return "his" - else if (head.current.gender == FEMALE) - return "her" + proc/their(datum/mind/head) + if (head.current.gender == MALE) + return "his" + else if (head.current.gender == FEMALE) + return "her" - return "their" + return "their" - proc/loyalist_major_victory() - return {" + 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 [station_name()], a research station in Tau Ceti. 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. @@ -161,10 +161,10 @@ Despite the mutiny, the crew was successful in implementing the directive and ac NanoTrasen will be awarding [mode.loyalists.len] members of the crew with the [loyalist_tag("Star of Loyalty")], following their successful efforts, at a ceremony this coming Thursday. [mode.body_count.len] are believed to have died during the coup.

    NanoTrasen's image will forever be haunted by the fact that a mutiny took place on one of its own stations.

    - "} + "} - proc/loyalist_minor_victory() - return {" + 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 [station_name()], a research station in Tau Ceti. 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. @@ -172,10 +172,10 @@ Despite the mutiny, the crew was successful in implementing the directive. Unfor NanoTrasen will be awarding [mode.loyalists.len] members of the crew with the [loyalist_tag("Star of Loyalty")], following their mostly successful efforts, at a ceremony this coming Thursday. [mode.body_count.len] are believed to have died during the coup.

    NanoTrasen's image will forever be haunted by the fact that a mutiny took place on one of its own stations.

    - "} + "} - proc/no_victory() - return {" + proc/no_victory() + return {" NanoTrasen has been thrust into turmoil following an apparent mutiny by key personnel aboard the [station_name()], a research station in Tau Ceti. 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. @@ -183,10 +183,10 @@ NanoTrasen officials refuse to comment. Sources indicate that [mode.mutineers.len] members of the station's personnel are currently under investigation for mutiny, and [mode.loyalists.len] crew are currently providing evidence to investigators, believed to be the 'loyal' station personnel. [mode.body_count.len] are believed to have died during the coup.

    NanoTrasen's image will forever be haunted by the fact that a mutiny took place on one of its own stations.

    - "} + "} - proc/mutineer_minor_victory() - return {" + proc/mutineer_minor_victory() + return {" Reports have emerged that an impromptu mutiny has taken place, amid a local interstellar crisis, aboard the [station_name()], a research station in Tau Ceti. 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. @@ -194,10 +194,10 @@ Information at present indicates that the top-secret directive--which has since NanoTrasen has reprimanded [mode.loyalists.len] members of the crew for failing to follow command validation procedures. [mode.body_count.len] are believed to have died during the coup.

    Even though the directive was not successfully implemented, NanoTrasen's image will forever be haunted by the fact that its authentication protocol was breached with such magnitude and that a mutiny was the result.

    - "} + "} - proc/mutineer_major_victory() - return {" + 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--[station_name()]--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. @@ -206,4 +206,4 @@ Thanks to the efforts of the resistant members of the crew, the directive was no NanoTrasen has [mode.loyalists.len] members of the crew in holding, while it investigates the circumstances that led to the acceptance and initiation of an invalid directive. [mode.body_count.len] are believed to have died during the coup.

    Even though the directive was not successfully implemented, NanoTrasen's image will forever be haunted by the fact that its authentication protocol was breached with such magnitude and that a mutiny was the result.

    - "} + "} diff --git a/code/game/gamemodes/mutiny/mutiny_hooks.dm b/code/game/gamemodes/mutiny/mutiny_hooks.dm index 4edb763ac02..5bcddade430 100644 --- a/code/game/gamemodes/mutiny/mutiny_hooks.dm +++ b/code/game/gamemodes/mutiny/mutiny_hooks.dm @@ -1,27 +1,27 @@ /hook/death/proc/track_kills(mob/living/carbon/human/deceased, gibbed) - var/datum/game_mode/mutiny/mode = get_mutiny_mode() - if (!mode) return 1 + var/datum/game_mode/mutiny/mode = get_mutiny_mode() + if (!mode) return 1 - mode.body_count.Add(deceased.mind) - return 1 + mode.body_count.Add(deceased.mind) + return 1 /hook/clone/proc/update_icon(mob/living/carbon/human/H) - var/datum/game_mode/mutiny/mode = get_mutiny_mode() - if (!mode) return 1 + var/datum/game_mode/mutiny/mode = get_mutiny_mode() + if (!mode) return 1 - mode.update_icon(H.mind) - return 1 + mode.update_icon(H.mind) + return 1 /hook/harvest_podman/proc/update_icon(mob/living/carbon/monkey/diona/D) - var/datum/game_mode/mutiny/mode = get_mutiny_mode() - if (!mode) return 1 + var/datum/game_mode/mutiny/mode = get_mutiny_mode() + if (!mode) return 1 - mode.update_icon(D.mind) - return 1 + mode.update_icon(D.mind) + return 1 /hook/roundend/proc/report_mutiny_news() - var/datum/game_mode/mutiny/mode = get_mutiny_mode() - if (!mode) return 1 + var/datum/game_mode/mutiny/mode = get_mutiny_mode() + if (!mode) return 1 - mode.round_outcome() - return 1 + mode.round_outcome() + return 1 diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 624c3824d19..7faa5f57ad7 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -476,7 +476,7 @@ /obj/item/proc/IsShield() return 0 -/obj/item/proc/get_turf() +/obj/item/proc/get_loc_turf() var/atom/L = loc while(L && !istype(L, /turf/)) L = L.loc diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index c051a72eb1e..21c1b6344c7 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -1,506 +1,506 @@ /datum/admins/proc/player_panel_new()//The new one - if (!usr.client.holder) - return - var/dat = "Admin Player Panel" + if (!usr.client.holder) + return + var/dat = "Admin Player Panel" - //javascript, the part that does most of the work~ - dat += {" + //javascript, the part that does most of the work~ + dat += {" - - - - - - "} - - //body tag start + onload and onkeypress (onkeyup) javascript event calls - dat += "" - - //title + search bar - dat += {" - - - - - - - - -
    - Player panel
    - Hover over a line to see more information - Check antagonists -

    -

    - Search: -
    - - "} - - //player table header - dat += {" - - "} - - var/list/mobs = sortmobs() - var/i = 1 - for(var/mob/M in mobs) - if(M.ckey) - - var/color = "#e6e6e6" - if(i%2 == 0) - color = "#f2f2f2" - var/is_antagonist = is_special_character(M) - - var/M_job = "" - - if(isliving(M)) - - if(iscarbon(M)) //Carbon stuff - if(ishuman(M)) - M_job = M.job - else if(isslime(M)) - M_job = "slime" - else if(ismonkey(M)) - M_job = "Monkey" - else if(isalien(M)) //aliens - if(islarva(M)) - M_job = "Alien larva" - else - M_job = "Alien" - else - M_job = "Carbon-based" - - else if(issilicon(M)) //silicon - if(isAI(M)) - M_job = "AI" - else if(ispAI(M)) - M_job = "pAI" - else if(isrobot(M)) - M_job = "Cyborg" - else - M_job = "Silicon-based" - - else if(isanimal(M)) //simple animals - if(iscorgi(M)) - M_job = "Corgi" - else - M_job = "Animal" - - else - M_job = "Living" - - else if(istype(M,/mob/new_player)) - M_job = "New player" - - else if(isobserver(M)) - M_job = "Ghost" - - M_job = replacetext(M_job, "'", "") - M_job = replacetext(M_job, "\"", "") - M_job = replacetext(M_job, "\\", "") - - var/M_name = M.name - M_name = replacetext(M_name, "'", "") - M_name = replacetext(M_name, "\"", "") - M_name = replacetext(M_name, "\\", "") - var/M_rname = M.real_name - M_rname = replacetext(M_rname, "'", "") - M_rname = replacetext(M_rname, "\"", "") - M_rname = replacetext(M_rname, "\\", "") - - var/M_key = M.key - M_key = replacetext(M_key, "'", "") - M_key = replacetext(M_key, "\"", "") - M_key = replacetext(M_key, "\\", "") - - //output for each mob - dat += {" - - - - - - "} - - i++ - - - //player table ending - dat += {" -
    - - - [M_name] - [M_rname] - [M_key] ([M_job]) - -
    -
    -
    - - - - "} - - usr << browse(dat, "window=players;size=600x480") + var maintable_data = document.getElementById('maintable_data'); + var ltr = maintable_data.getElementsByTagName("tr"); + for ( var i = 0; i < ltr.length; ++i ) + { + try{ + var tr = ltr\[i\]; + if(tr.getAttribute("id").indexOf("data") != 0){ + continue; + } + var ltd = tr.getElementsByTagName("td"); + var td = ltd\[0\]; + var lsearch = td.getElementsByTagName("b"); + var search = lsearch\[0\]; + //var inner_span = li.getElementsByTagName("span")\[1\] //Should only ever contain one element. + //document.write("

    "+search.innerText+"
    "+filter+"
    "+search.innerText.indexOf(filter)) + if ( search.innerText.toLowerCase().indexOf(filter) == -1 ) + { + //document.write("a"); + //ltr.removeChild(tr); + td.innerHTML = ""; + i--; + } + }catch(err) { } + } + } + + var count = 0; + var index = -1; + var debug = document.getElementById("debug"); + + locked_tabs = new Array(); + + } + + function expand(id,job,name,real_name,image,key,ip,antagonist,ref){ + + clearAll(); + + var span = document.getElementById(id); + + body = "
    "; + + body += ""; + + body += ""+job+" "+name+"
    Real name "+real_name+"
    Played by "+key+" ("+ip+")
    " + + body += "
    "; + + body += "PP - " + body += "N - " + body += "VV - " + body += "TP - " + body += "PM - " + body += "SM - " + body += "JMP
    " + if(antagonist > 0) + body += "Antagonist"; + + body += "
    "; + + + span.innerHTML = body + } + + function clearAll(){ + var spans = document.getElementsByTagName('span'); + for(var i = 0; i < spans.length; i++){ + var span = spans\[i\]; + + var id = span.getAttribute("id"); + + if(!(id.indexOf("item")==0)) + continue; + + var pass = 1; + + for(var j = 0; j < locked_tabs.length; j++){ + if(locked_tabs\[j\]==id){ + pass = 0; + break; + } + } + + if(pass != 1) + continue; + + + + + span.innerHTML = ""; + } + } + + function addToLocked(id,link_id,notice_span_id){ + var link = document.getElementById(link_id); + var decision = link.getAttribute("name"); + if(decision == "1"){ + link.setAttribute("name","2"); + }else{ + link.setAttribute("name","1"); + removeFromLocked(id,link_id,notice_span_id); + return; + } + + var pass = 1; + for(var j = 0; j < locked_tabs.length; j++){ + if(locked_tabs\[j\]==id){ + pass = 0; + break; + } + } + if(!pass) + return; + locked_tabs.push(id); + var notice_span = document.getElementById(notice_span_id); + notice_span.innerHTML = "Locked "; + //link.setAttribute("onClick","attempt('"+id+"','"+link_id+"','"+notice_span_id+"');"); + //document.write("removeFromLocked('"+id+"','"+link_id+"','"+notice_span_id+"')"); + //document.write("aa - "+link.getAttribute("onClick")); + } + + function attempt(ab){ + return ab; + } + + function removeFromLocked(id,link_id,notice_span_id){ + //document.write("a"); + var index = 0; + var pass = 0; + for(var j = 0; j < locked_tabs.length; j++){ + if(locked_tabs\[j\]==id){ + pass = 1; + index = j; + break; + } + } + if(!pass) + return; + locked_tabs\[index\] = ""; + var notice_span = document.getElementById(notice_span_id); + notice_span.innerHTML = ""; + //var link = document.getElementById(link_id); + //link.setAttribute("onClick","addToLocked('"+id+"','"+link_id+"','"+notice_span_id+"')"); + } + + function selectTextField(){ + var filter_text = document.getElementById('filter'); + filter_text.focus(); + filter_text.select(); + } + + + + + + "} + + //body tag start + onload and onkeypress (onkeyup) javascript event calls + dat += "" + + //title + search bar + dat += {" + + + + + + + + +
    + Player panel
    + Hover over a line to see more information - Check antagonists +

    +

    + Search: +
    + + "} + + //player table header + dat += {" + + "} + + var/list/mobs = sortmobs() + var/i = 1 + for(var/mob/M in mobs) + if(M.ckey) + + var/color = "#e6e6e6" + if(i%2 == 0) + color = "#f2f2f2" + var/is_antagonist = is_special_character(M) + + var/M_job = "" + + if(isliving(M)) + + if(iscarbon(M)) //Carbon stuff + if(ishuman(M)) + M_job = M.job + else if(isslime(M)) + M_job = "slime" + else if(ismonkey(M)) + M_job = "Monkey" + else if(isalien(M)) //aliens + if(islarva(M)) + M_job = "Alien larva" + else + M_job = "Alien" + else + M_job = "Carbon-based" + + else if(issilicon(M)) //silicon + if(isAI(M)) + M_job = "AI" + else if(ispAI(M)) + M_job = "pAI" + else if(isrobot(M)) + M_job = "Cyborg" + else + M_job = "Silicon-based" + + else if(isanimal(M)) //simple animals + if(iscorgi(M)) + M_job = "Corgi" + else + M_job = "Animal" + + else + M_job = "Living" + + else if(istype(M,/mob/new_player)) + M_job = "New player" + + else if(isobserver(M)) + M_job = "Ghost" + + M_job = replacetext(M_job, "'", "") + M_job = replacetext(M_job, "\"", "") + M_job = replacetext(M_job, "\\", "") + + var/M_name = M.name + M_name = replacetext(M_name, "'", "") + M_name = replacetext(M_name, "\"", "") + M_name = replacetext(M_name, "\\", "") + var/M_rname = M.real_name + M_rname = replacetext(M_rname, "'", "") + M_rname = replacetext(M_rname, "\"", "") + M_rname = replacetext(M_rname, "\\", "") + + var/M_key = M.key + M_key = replacetext(M_key, "'", "") + M_key = replacetext(M_key, "\"", "") + M_key = replacetext(M_key, "\\", "") + + //output for each mob + dat += {" + + + + + + "} + + i++ + + + //player table ending + dat += {" +
    + + + [M_name] - [M_rname] - [M_key] ([M_job]) + +
    +
    +
    + + + + "} + + usr << browse(dat, "window=players;size=600x480") //The old one /datum/admins/proc/player_panel_old() - if (!usr.client.holder) - return - var/dat = "Player Menu" - dat += "" - //add to this if wanting to add back in IP checking - //add if you want to know their ip to the lists below - var/list/mobs = sortmobs() + if (!usr.client.holder) + return + var/dat = "Player Menu" + dat += "
    NameReal NameAssigned JobKeyOptionsPMTraitor?
    IP:(IP: [M.lastKnownIP])
    " + //add to this if wanting to add back in IP checking + //add if you want to know their ip to the lists below + var/list/mobs = sortmobs() - for(var/mob/M in mobs) - if(!M.ckey) continue + for(var/mob/M in mobs) + if(!M.ckey) continue - dat += "" - if(isAI(M)) - dat += "" - else if(isrobot(M)) - dat += "" - else if(ishuman(M)) - dat += "" - else if(istype(M, /mob/living/silicon/pai)) - dat += "" - else if(istype(M, /mob/new_player)) - dat += "" - else if(isobserver(M)) - dat += "" - else if(ismonkey(M)) - dat += "" - else if(isalien(M)) - dat += "" - else - dat += "" + dat += "" + if(isAI(M)) + dat += "" + else if(isrobot(M)) + dat += "" + else if(ishuman(M)) + dat += "" + else if(istype(M, /mob/living/silicon/pai)) + dat += "" + else if(istype(M, /mob/new_player)) + dat += "" + else if(isobserver(M)) + dat += "" + else if(ismonkey(M)) + dat += "" + else if(isalien(M)) + dat += "" + else + dat += "" - if(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(H.mind && H.mind.assigned_role) - dat += "" - else - dat += "" + if(istype(M,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + if(H.mind && H.mind.assigned_role) + dat += "" + else + dat += "" - dat += {" - - - "} - switch(is_special_character(M)) - if(0) - dat += {""} - if(1) - dat += {""} - if(2) - dat += {""} + dat += {" + + + "} + switch(is_special_character(M)) + if(0) + dat += {""} + if(1) + dat += {""} + if(2) + dat += {""} - dat += "
    NameReal NameAssigned JobKeyOptionsPMTraitor?
    IP:(IP: [M.lastKnownIP])
    [M.name]AICyborg[M.real_name]pAINew PlayerGhostMonkeyAlienUnknown
    [M.name]AICyborg[M.real_name]pAINew PlayerGhostMonkeyAlienUnknown[H.mind.assigned_role]NA[H.mind.assigned_role]NA[(M.client ? "[M.client]" : "No client")]XPMTraitor?Traitor?Traitor?[(M.client ? "[M.client]" : "No client")]XPMTraitor?Traitor?Traitor?
    " + dat += "" - usr << browse(dat, "window=players;size=640x480") + usr << browse(dat, "window=players;size=640x480") /datum/admins/proc/check_antagonists() - if (ticker && ticker.current_state >= GAME_STATE_PLAYING) - var/dat = "Round Status

    Round Status

    " - dat += "Current Game Mode: [ticker.mode.name]
    " - dat += "Round Duration: [round(world.time / 36000)]:[add_zero(world.time / 600 % 60, 2)]:[world.time / 100 % 6][world.time / 100 % 10]
    " - dat += "Emergency shuttle
    " - if (!emergency_shuttle.online) - dat += "Call Shuttle
    " - else - var/timeleft = emergency_shuttle.timeleft() - switch(emergency_shuttle.location) - if(0) - dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
    " - dat += "Send Back
    " - if(1) - dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
    " - dat += "[ticker.delay_end ? "End Round Normally" : "Delay Round End"]
    " - if(ticker.mode.syndicates.len) - dat += "
    " - for(var/datum/mind/N in ticker.mode.syndicates) - var/mob/M = N.current - if(M) - dat += "" - dat += "" - else - dat += "" - dat += "
    Syndicates
    [M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM
    Nuclear Operative not found!

    " - for(var/obj/item/weapon/disk/nuclear/N in world) - dat += "" - dat += "
    Nuclear Disk(s)
    [N.name], " - var/atom/disk_loc = N.loc - while(!istype(disk_loc, /turf)) - if(istype(disk_loc, /mob)) - var/mob/M = disk_loc - dat += "carried by [M.real_name] " - if(istype(disk_loc, /obj)) - var/obj/O = disk_loc - dat += "in \a [O.name] " - disk_loc = disk_loc.loc - dat += "in [disk_loc.loc] at ([disk_loc.x], [disk_loc.y], [disk_loc.z])
    " + if (ticker && ticker.current_state >= GAME_STATE_PLAYING) + var/dat = "Round Status

    Round Status

    " + dat += "Current Game Mode: [ticker.mode.name]
    " + dat += "Round Duration: [round(world.time / 36000)]:[add_zero(world.time / 600 % 60, 2)]:[world.time / 100 % 6][world.time / 100 % 10]
    " + dat += "Emergency shuttle
    " + if (!emergency_shuttle.online) + dat += "Call Shuttle
    " + else + var/timeleft = emergency_shuttle.timeleft() + switch(emergency_shuttle.location) + if(0) + dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
    " + dat += "Send Back
    " + if(1) + dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
    " + dat += "[ticker.delay_end ? "End Round Normally" : "Delay Round End"]
    " + if(ticker.mode.syndicates.len) + dat += "
    " + for(var/datum/mind/N in ticker.mode.syndicates) + var/mob/M = N.current + if(M) + dat += "" + dat += "" + else + dat += "" + dat += "
    Syndicates
    [M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM
    Nuclear Operative not found!

    " + for(var/obj/item/weapon/disk/nuclear/N in world) + dat += "" + dat += "
    Nuclear Disk(s)
    [N.name], " + var/atom/disk_loc = N.loc + while(!istype(disk_loc, /turf)) + if(istype(disk_loc, /mob)) + var/mob/M = disk_loc + dat += "carried by [M.real_name] " + if(istype(disk_loc, /obj)) + var/obj/O = disk_loc + dat += "in \a [O.name] " + disk_loc = disk_loc.loc + dat += "in [disk_loc.loc] at ([disk_loc.x], [disk_loc.y], [disk_loc.z])
    " - if(ticker.mode.head_revolutionaries.len || ticker.mode.revolutionaries.len) - dat += "
    " - for(var/datum/mind/N in ticker.mode.head_revolutionaries) - var/mob/M = N.current - if(!M) - dat += "" - else - dat += "" - dat += "" - for(var/datum/mind/N in ticker.mode.revolutionaries) - var/mob/M = N.current - if(M) - dat += "" - dat += "" - dat += "
    Revolutionaries
    Head Revolutionary not found!
    [M.real_name] (Leader)[M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM
    [M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM
    " - for(var/datum/mind/N in ticker.mode.get_living_heads()) - var/mob/M = N.current - if(M) - dat += "" - dat += "" - var/turf/mob_loc = get_turf_loc(M) - dat += "" - else - dat += "" - dat += "
    Target(s)Location
    [M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM[mob_loc.loc]
    Head not found!
    " + if(ticker.mode.head_revolutionaries.len || ticker.mode.revolutionaries.len) + dat += "
    " + for(var/datum/mind/N in ticker.mode.head_revolutionaries) + var/mob/M = N.current + if(!M) + dat += "" + else + dat += "" + dat += "" + for(var/datum/mind/N in ticker.mode.revolutionaries) + var/mob/M = N.current + if(M) + dat += "" + dat += "" + dat += "
    Revolutionaries
    Head Revolutionary not found!
    [M.real_name] (Leader)[M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM
    [M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM
    " + for(var/datum/mind/N in ticker.mode.get_living_heads()) + var/mob/M = N.current + if(M) + dat += "" + dat += "" + var/turf/mob_loc = get_turf_loc(M) + dat += "" + else + dat += "" + dat += "
    Target(s)Location
    [M.real_name][M.client ? "" : " (logged out)"][M.stat == 2 ? " (DEAD)" : ""]PM[mob_loc.loc]
    Head not found!
    " - if(ticker.mode.changelings.len) - dat += check_role_table("Changelings", ticker.mode.changelings, src) + if(ticker.mode.changelings.len) + dat += check_role_table("Changelings", ticker.mode.changelings, src) - if(ticker.mode.wizards.len) - dat += check_role_table("Wizards", ticker.mode.wizards, src) + if(ticker.mode.wizards.len) + dat += check_role_table("Wizards", ticker.mode.wizards, src) - if(ticker.mode.raiders.len) - dat += check_role_table("Raiders", ticker.mode.raiders, src) + if(ticker.mode.raiders.len) + dat += check_role_table("Raiders", ticker.mode.raiders, src) - if(ticker.mode.ninjas.len) - dat += check_role_table("Ninjas", ticker.mode.ninjas, src) + if(ticker.mode.ninjas.len) + dat += check_role_table("Ninjas", ticker.mode.ninjas, src) - if(ticker.mode.cult.len) - dat += check_role_table("Cultists", ticker.mode.cult, src, 0) + if(ticker.mode.cult.len) + dat += check_role_table("Cultists", ticker.mode.cult, src, 0) - if(ticker.mode.traitors.len) - dat += check_role_table("Traitors", ticker.mode.traitors, src) + if(ticker.mode.traitors.len) + dat += check_role_table("Traitors", ticker.mode.traitors, src) - var/datum/game_mode/mutiny/mutiny = get_mutiny_mode() - if(mutiny) - dat += mutiny.check_antagonists_ui(src) + var/datum/game_mode/mutiny/mutiny = get_mutiny_mode() + if(mutiny) + dat += mutiny.check_antagonists_ui(src) - dat += "" - usr << browse(dat, "window=roundstatus;size=400x500") - else - alert("The game hasn't started yet!") + dat += "" + usr << browse(dat, "window=roundstatus;size=400x500") + else + alert("The game hasn't started yet!") /proc/check_role_table(name, list/members, admins, show_objectives=1) - var/txt = "
    " - for(var/datum/mind/M in members) - txt += check_role_table_row(M.current, admins, show_objectives) - txt += "
    [name]
    " - return txt + var/txt = "
    " + for(var/datum/mind/M in members) + txt += check_role_table_row(M.current, admins, show_objectives) + txt += "
    [name]
    " + return txt /proc/check_role_table_row(mob/M, admins=src, show_objectives) - if (!istype(M)) - return "Not found!" + if (!istype(M)) + return "Not found!" - var/txt = {" - - - [M.real_name] - [M.client ? "" : " (logged out)"] - [M.is_dead() ? " (DEAD)" : ""] - - - PM - - "} + var/txt = {" + + + [M.real_name] + [M.client ? "" : " (logged out)"] + [M.is_dead() ? " (DEAD)" : ""] + + + PM + + "} - if (show_objectives) - txt += {" - - Show Objective - - "} + if (show_objectives) + txt += {" + + Show Objective + + "} - txt += "" - return txt + txt += "" + return txt From c607872b806d81bdf622dc0327324d01497fefbf Mon Sep 17 00:00:00 2001 From: Jeremy Liberman Date: Sun, 25 May 2014 14:20:37 -0500 Subject: [PATCH 4/5] Mutiny fix prereqs for directives --- code/controllers/shuttle_controller.dm | 2 +- .../directives/alien_fraud_directive.dm | 17 ++++++--- .../bluespace_contagion_directive.dm | 15 ++++++-- .../directives/financial_crisis_directive.dm | 6 +-- .../mutiny/directives/ipc_virus_directive.dm | 14 +++---- .../research_to_ripleys_directive.dm | 9 +++-- .../tau_ceti_needs_women_directive.dm | 38 +++++++++++++------ .../directives/terminations_directive.dm | 6 +-- .../mutiny/directives/test_directive.dm | 4 +- .../mutiny/emergency_authentication_device.dm | 2 +- code/game/gamemodes/mutiny/mutiny.dm | 6 +-- code/modules/mob/mob.dm | 11 ++++++ code/modules/mob/new_player/new_player.dm | 30 ++++++++++++++- 13 files changed, 113 insertions(+), 47 deletions(-) diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index ac804dc4f2e..f889a37e17e 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -59,7 +59,7 @@ datum/shuttle_controller/proc/recall() if(direction == 1) var/timeleft = timeleft() if(alert == 0) - if(timeleft >= 600) + if(timeleft >= get_shuttle_arrive_time()) return captain_announce("The emergency shuttle has been recalled.") world << sound('sound/AI/shuttlerecalled.ogg') diff --git a/code/game/gamemodes/mutiny/directives/alien_fraud_directive.dm b/code/game/gamemodes/mutiny/directives/alien_fraud_directive.dm index 109d6164770..16dcd1de009 100644 --- a/code/game/gamemodes/mutiny/directives/alien_fraud_directive.dm +++ b/code/game/gamemodes/mutiny/directives/alien_fraud_directive.dm @@ -4,11 +4,15 @@ datum/directive/terminations/alien_fraud "Transfer their payrolls to the station account.", "Terminate their employment.") + proc/is_alien(mob/M) + var/species = M.get_species() + return species == "Tajaran" || species == "Unathi" + datum/directive/terminations/alien_fraud/get_crew_to_terminate() var/list/aliens[0] - for(var/mob/living/carbon/human/H in player_list) - if (H.species.name == "Tajaran" || H.species.name == "Unathi") - aliens.Add(H) + for(var/mob/M in player_list) + if (is_alien(M) && M.is_ready()) + aliens.Add(M) return aliens datum/directive/terminations/alien_fraud/get_description() @@ -24,10 +28,11 @@ datum/directive/terminations/alien_fraud/meets_prerequisites() // of the Tajarans and Unathi combined can't be more than 1/3rd of the crew. var/tajarans = 0 var/unathi = 0 - for(var/mob/living/carbon/human/H in player_list) - if (H.species.name == "Tajaran") + for(var/mob/M in player_list) + var/species = M.get_species() + if(species == "Tajaran") tajarans++ - if (H.species.name == "Unathi") + if(species == "Unathi") unathi++ if (!tajarans || !unathi) diff --git a/code/game/gamemodes/mutiny/directives/bluespace_contagion_directive.dm b/code/game/gamemodes/mutiny/directives/bluespace_contagion_directive.dm index 2757677e89c..9209ee09db1 100644 --- a/code/game/gamemodes/mutiny/directives/bluespace_contagion_directive.dm +++ b/code/game/gamemodes/mutiny/directives/bluespace_contagion_directive.dm @@ -1,9 +1,15 @@ #define INFECTION_COUNT 5 datum/directive/bluespace_contagion - var/infection_count = 5 var/list/infected = list() + proc/get_infection_candidates() + var/list/candidates[0] + for(var/mob/M in player_list) + if (!M.is_mechanical() && M.is_ready()) + candidates.Add(M) + return candidates + datum/directive/bluespace_contagion/get_description() return {"

    @@ -14,13 +20,13 @@ datum/directive/bluespace_contagion/get_description() "} datum/directive/bluespace_contagion/initialize() - var/list/candidates = player_list.Copy() + var/list/candidates = get_infection_candidates() var/list/infected_names = list() for(var/i=0, i < INFECTION_COUNT, i++) if(!candidates.len) break - var/mob/living/carbon/human/candidate = pick(candidates) + var/mob/candidate = pick(candidates) candidates.Remove(candidate) infected.Add(candidate) infected_names.Add("[candidate.mind.assigned_role] [candidate.mind.name]") @@ -31,7 +37,8 @@ datum/directive/bluespace_contagion/initialize() "If no cure arrives after that time, execute the infected.") datum/directive/bluespace_contagion/meets_prerequisites() - return player_list.len >= 7 + var/list/candidates = get_infection_candidates() + return candidates.len >= 7 datum/directive/bluespace_contagion/directives_complete() return infected.len == 0 diff --git a/code/game/gamemodes/mutiny/directives/financial_crisis_directive.dm b/code/game/gamemodes/mutiny/directives/financial_crisis_directive.dm index 3ba5f47345f..ddcca165e82 100644 --- a/code/game/gamemodes/mutiny/directives/financial_crisis_directive.dm +++ b/code/game/gamemodes/mutiny/directives/financial_crisis_directive.dm @@ -7,9 +7,9 @@ datum/directive/terminations/financial_crisis datum/directive/terminations/financial_crisis/get_crew_to_terminate() var/list/civilians[0] var/list/candidates = civilian_positions - "Head of Personnel" - for(var/mob/living/carbon/human/H in player_list) - if (candidates.Find(H.mind.assigned_role)) - civilians.Add(H) + for(var/mob/M in player_list) + if (candidates.Find(M.mind.assigned_role) && M.is_ready()) + civilians.Add(M) return civilians datum/directive/terminations/financial_crisis/get_description() diff --git a/code/game/gamemodes/mutiny/directives/ipc_virus_directive.dm b/code/game/gamemodes/mutiny/directives/ipc_virus_directive.dm index 755b83d4d16..7ff288f4549 100644 --- a/code/game/gamemodes/mutiny/directives/ipc_virus_directive.dm +++ b/code/game/gamemodes/mutiny/directives/ipc_virus_directive.dm @@ -15,16 +15,16 @@ datum/directive/ipc_virus proc/get_ipcs() var/list/machines[0] - for(var/mob/living/carbon/human/H in player_list) - if (H.species.name == "Machine") - machines.Add(H) + for(var/mob/M in player_list) + if (M.get_species() == "Machine" && M.is_ready()) + machines.Add(M) return machines proc/get_roboticists() var/list/roboticists[0] - for(var/mob/living/carbon/human/H in player_list) - if (roboticist_roles.Find(H.mind.assigned_role)) - roboticists.Add(H) + for(var/mob/M in player_list) + if (roboticist_roles.Find(M.mind.assigned_role) && M.is_ready()) + roboticists.Add(M) return roboticists datum/directive/ipc_virus/initialize() @@ -37,7 +37,7 @@ datum/directive/ipc_virus/get_description() return {"

    IPC units have been found to be infected with a violent and undesired virus in Virgus Ferrorus system. - Risk to NSS Exodus IPC units has not been assessed. Further information is classified. + Risk to [station_name()] IPC units has not been assessed. Further information is classified.

    "} diff --git a/code/game/gamemodes/mutiny/directives/research_to_ripleys_directive.dm b/code/game/gamemodes/mutiny/directives/research_to_ripleys_directive.dm index 9e6364e2ab9..f8da35524ee 100644 --- a/code/game/gamemodes/mutiny/directives/research_to_ripleys_directive.dm +++ b/code/game/gamemodes/mutiny/directives/research_to_ripleys_directive.dm @@ -4,11 +4,14 @@ datum/directive/research_to_ripleys var/list/ids_to_reassign = list() var/materials_shipped = 0 + proc/is_researcher(mob/M) + return M.mind.assigned_role in science_positions - "Research Director" + proc/get_researchers() var/list/researchers[0] - for(var/mob/living/carbon/human/H in player_list) - if (H.mind.assigned_role in science_positions - "Research Director") - researchers.Add(H) + for(var/mob/M in player_list) + if (is_researcher(M) && M.is_ready()) + researchers.Add(M) return researchers proc/count_researchers_reassigned() diff --git a/code/game/gamemodes/mutiny/directives/tau_ceti_needs_women_directive.dm b/code/game/gamemodes/mutiny/directives/tau_ceti_needs_women_directive.dm index 6506ef23a0a..7cf112cdc1f 100644 --- a/code/game/gamemodes/mutiny/directives/tau_ceti_needs_women_directive.dm +++ b/code/game/gamemodes/mutiny/directives/tau_ceti_needs_women_directive.dm @@ -4,27 +4,32 @@ datum/directive/tau_ceti_needs_women proc/get_target_gender() if(!mode.head_loyalist) return FEMALE - return mode.head_loyalist.current.gender == FEMALE ? MALE : FEMALE + return mode.head_loyalist.current.get_gender() == FEMALE ? MALE : FEMALE + + proc/is_target_gender(mob/M) + var/species = M.get_species() + return species != "Diona" && M.get_gender() == get_target_gender() proc/get_crew_of_target_gender() var/list/targets[0] - for(var/mob/living/carbon/human/H in player_list) - if(H.species.name != "Machine" && H.gender == get_target_gender()) - targets.Add(H) + for(var/mob/M in player_list) + if(is_target_gender(M) && !M.is_mechanical() && M.is_ready()) + targets.Add(M) return targets proc/get_target_heads() var/list/heads[0] - for(var/mob/living/carbon/human/H in get_crew_of_target_gender()) - if(command_positions.Find(H.mind.assigned_role)) - heads.Add(H) + for(var/mob/M in get_crew_of_target_gender()) + if(command_positions.Find(M.mind.assigned_role)) + heads.Add(M) return heads proc/get_target_aliens() var/list/aliens[0] - for(var/mob/living/carbon/human/H in get_crew_of_target_gender()) - if (H.species.name == "Tajaran" || H.species.name == "Unathi" || H.species.name == "Skrell") - aliens.Add(H) + for(var/mob/M in get_crew_of_target_gender()) + var/species = M.get_species() + if(species == "Tajaran" || species == "Unathi" || species == "Skrell") + aliens.Add(M) return aliens proc/count_heads_reassigned() @@ -55,8 +60,17 @@ datum/directive/tau_ceti_needs_women/initialize() "Terminate employment of all [get_target_gender()] Skrell, Tajara, and Unathi.") datum/directive/tau_ceti_needs_women/meets_prerequisites() - var/list/targets = get_crew_of_target_gender() - return targets.len >= 3 + var/females = 0 + var/males = 0 + for(var/mob/M in player_list) + if(!M.is_mechanical() && M.get_species() != "Diona" && M.is_ready()) + var/gender = M.get_gender() + if(gender == MALE) + males++ + else if(gender == FEMALE) + females++ + + return males >= 2 && females >= 2 datum/directive/tau_ceti_needs_women/directives_complete() return command_targets.len == count_heads_reassigned() && alien_targets.len == 0 diff --git a/code/game/gamemodes/mutiny/directives/terminations_directive.dm b/code/game/gamemodes/mutiny/directives/terminations_directive.dm index 21f91c366a1..610e994e533 100644 --- a/code/game/gamemodes/mutiny/directives/terminations_directive.dm +++ b/code/game/gamemodes/mutiny/directives/terminations_directive.dm @@ -22,11 +22,11 @@ datum/directive/terminations/directives_complete() return ids_to_terminate.len == 0 datum/directive/terminations/initialize() - for(var/mob/living/carbon/human/A in get_crew_to_terminate()) - var/datum/money_account/account = A.mind.initial_account + for(var/mob/living/carbon/human/H in get_crew_to_terminate()) + var/datum/money_account/account = H.mind.initial_account accounts_to_revoke["[account.account_number]"] = 0 accounts_to_suspend["[account.account_number]"] = account.suspended - ids_to_terminate.Add(A.wear_id) + ids_to_terminate.Add(H.wear_id) /hook/revoke_payroll/proc/payroll_directive(datum/money_account/account) var/datum/directive/terminations/D = get_directive("terminations") diff --git a/code/game/gamemodes/mutiny/directives/test_directive.dm b/code/game/gamemodes/mutiny/directives/test_directive.dm index 8eeb5ec94bc..e19521cd1f0 100644 --- a/code/game/gamemodes/mutiny/directives/test_directive.dm +++ b/code/game/gamemodes/mutiny/directives/test_directive.dm @@ -7,8 +7,8 @@ datum/directive/terminations/test datum/directive/terminations/test/get_crew_to_terminate() var/list/uglies[0] - for(var/mob/living/carbon/human/H in player_list) - uglies.Add(H) + for(var/mob/M in player_list) + uglies.Add(M) return uglies datum/directive/terminations/test/get_description() diff --git a/code/game/gamemodes/mutiny/emergency_authentication_device.dm b/code/game/gamemodes/mutiny/emergency_authentication_device.dm index 1df5698004e..5bdcf27576e 100644 --- a/code/game/gamemodes/mutiny/emergency_authentication_device.dm +++ b/code/game/gamemodes/mutiny/emergency_authentication_device.dm @@ -43,7 +43,7 @@ return if(!mode.current_directive.directives_complete()) - state("Command aborted. Communication with CentComm is prohibited until Directive X has been completed.") + state("Command aborted. Communication with CentCom is prohibited until Directive X has been completed.") return check_key_existence() diff --git a/code/game/gamemodes/mutiny/mutiny.dm b/code/game/gamemodes/mutiny/mutiny.dm index c74ed414e13..2e41aa45cda 100644 --- a/code/game/gamemodes/mutiny/mutiny.dm +++ b/code/game/gamemodes/mutiny/mutiny.dm @@ -256,17 +256,17 @@ datum/game_mode/mutiny /datum/game_mode/mutiny/pre_setup() var/list/loyalist_candidates = get_head_loyalist_candidates() if(!loyalist_candidates || loyalist_candidates.len == 0) - world << "Mutiny mode aborted: no valid candidates for head loyalist." + world << "\red Mutiny mode aborted: no valid candidates for head loyalist." return 0 var/list/mutineer_candidates = get_head_mutineer_candidates() if(!mutineer_candidates || mutineer_candidates.len == 0) - world << "Mutiny mode aborted: no valid candidates for head mutineer." + world << "\red Mutiny mode aborted: no valid candidates for head mutineer." return 0 var/list/directive_candidates = get_directive_candidates() if(!directive_candidates || directive_candidates.len == 0) - world << "Mutiny mode aborted: no valid candidates for Directive X." + world << "\red Mutiny mode aborted: no valid candidates for Directive X." return 0 head_loyalist = pick(loyalist_candidates) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index e20633e627d..60335b8df2c 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -604,6 +604,17 @@ var/list/slot_equipment_priority = list( \ /mob/proc/is_dead() return stat == DEAD +/mob/proc/is_mechanical() + if(mind && (mind.assigned_role == "Cyborg" || mind.assigned_role == "AI")) + return 1 + return istype(src, /mob/living/silicon) || get_species() == "Machine" + +/mob/proc/is_ready() + return !!client + +/mob/proc/get_gender() + return gender + /mob/proc/see(message) if(!is_active()) return 0 diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 39384970e28..2200a3c95f0 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -355,7 +355,8 @@ if(client.prefs.species) chosen_species = all_species[client.prefs.species] if(chosen_species) - if(is_alien_whitelisted(src, client.prefs.species) || !config.usealienwhitelist || !(chosen_species.flags & IS_WHITELISTED) || (client.holder.rights & R_ADMIN) )// Have to recheck admin due to no usr at roundstart. Latejoins are fine though. + // Have to recheck admin due to no usr at roundstart. Latejoins are fine though. + if(is_species_whitelisted(chosen_species) || has_admin_rights()) new_character = new(loc, client.prefs.species) if(!new_character) @@ -413,11 +414,36 @@ Move() return 0 - proc/close_spawn_windows() src << browse(null, "window=latechoices") //closes late choices window src << browse(null, "window=playersetup") //closes the player setup window + proc/has_admin_rights() + return client.holder.rights & R_ADMIN + + proc/is_species_whitelisted(datum/species/S) + if(!S) return 1 + return is_alien_whitelisted(src, S.name) || !config.usealienwhitelist || !(S.flags & IS_WHITELISTED) + +/mob/new_player/get_species() + var/datum/species/chosen_species + if(client.prefs.species) + chosen_species = all_species[client.prefs.species] + + if(!chosen_species) + return "Human" + + if(is_species_whitelisted(chosen_species) || has_admin_rights()) + return chosen_species.name + + return "Human" + +/mob/new_player/get_gender() + if(!client || !client.prefs) ..() + return client.prefs.gender + +/mob/new_player/is_ready() + return ready && !!client /mob/new_player/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null) return From aefb1cbc053154e48ae3636ddf26f8a635d831a5 Mon Sep 17 00:00:00 2001 From: Jeremy Liberman Date: Mon, 26 May 2014 01:00:33 -0500 Subject: [PATCH 5/5] Secret Mutiny Mode backstory easter egg --- code/game/gamemodes/mutiny/mutiny.dm | 9 +++++ code/game/gamemodes/mutiny/mutiny_fluff.dm | 42 ++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/code/game/gamemodes/mutiny/mutiny.dm b/code/game/gamemodes/mutiny/mutiny.dm index 2e41aa45cda..7f7ebe80fc5 100644 --- a/code/game/gamemodes/mutiny/mutiny.dm +++ b/code/game/gamemodes/mutiny/mutiny.dm @@ -149,6 +149,14 @@ datum/game_mode/mutiny var/obj/machinery/door/airlock/vault = locate(/obj/machinery/door/airlock/vault) vault.locked = 0 + proc/make_secret_transcript() + var/obj/machinery/computer/telecomms/server/S = locate(/obj/machinery/computer/telecomms/server) + if(!S) return + + var/obj/item/weapon/paper/crumpled/bloody/transcript = new(S.loc) + transcript.name = "secret transcript" + transcript.info = fluff.secret_transcript() + proc/can_be_recruited(datum/mind/M, role) if(!M) return 0 if(!M.special_role) return 1 @@ -290,6 +298,7 @@ datum/game_mode/mutiny replace_nuke_with_ead() current_directive.initialize() unbolt_vault_door() + make_secret_transcript() update_all_icons() spawn(0) diff --git a/code/game/gamemodes/mutiny/mutiny_fluff.dm b/code/game/gamemodes/mutiny/mutiny_fluff.dm index 1b81cca1e22..185e2ef8721 100644 --- a/code/game/gamemodes/mutiny/mutiny_fluff.dm +++ b/code/game/gamemodes/mutiny/mutiny_fluff.dm @@ -207,3 +207,45 @@ NanoTrasen has [mode.loyalists.len] members of the crew in holding, while it inv [mode.body_count.len] are believed to have died during the coup.

    Even though the directive was not successfully implemented, NanoTrasen's image will forever be haunted by the fact that its authentication protocol was breached with such magnitude and that a mutiny was the result.

    "} + + proc/secret_transcript() + return {" +

    Corporate Rival Threat Assessment

    +
    Gilthari Exports Incident Transcript
    +
    CONFIDENTIAL: PROPERTY OF NANOTRASEN
    +Location: Operator's Desk, D Deck, Polumetis Installation
    +Time: 16:11, May 24, 2558 (Sol Reckoning)
    +
    +
    + +
    \[Start of transcript\]
    +
    \[Sound of an internal airlock door opening\]
    +TM: Thank you for coming to see me, Director. I'm afraid this is urgent.
    +D: Mr. Mitchell, first you send cryptic messages to my office and then you request to have me come personally to this barely lit closet you call a workstation; all of this to talk about a computer glitch?
    +
    \[Sound of the internal airlock door shutting\]
    +TM: Do you remember Mallory?
    +D: Who?
    +TM: It's not who, it's what. The computer program we planted in the Tau Ceti communications satellite.
    +D: What is so important about this computer program?
    +TM: We call her an eavesdropper. Captures network traffic, records it, and forwards the stream to the receiver autonomously.
    +D: Speak English goddamnit.
    +TM: Standard intelligence acquisition package, sir; we bug their satellite and listen. It's like we have their playbook and we know what their moves are going to be on the market before they make them.
    +D: So Mallory doesn't work?
    +TM: She worked, sir. We've had an ear on NanoTrasen's regional communications for weeks.
    +D: Any news about their Phoron refinement process?
    +TM: No sir. Our analysts believe they are using a separate channel for their most sensitive data.
    +D: So what's the problem?
    +TM: The intelligence hasn't been doing us any good. Anything that appears actionable, I send it to the analysts and they make a plan. Thing is, NanoTrasen always sees us coming.
    +D: Tim...
    +TM: I think they discovered the hack, sir. Case in point, Energine Consolidated Solutions. That subsidiary of ours that was awarded a lease on NanoTrasen's mining platform in Nyx? NanoTrasen acquired them a week before we made the announcement.
    +D: They know about they have a bug. They left her on and fed her the information for us to hear, those sneaks. How did they find it?
    +TM: Top secret communique came through. I'm not sure what happened. Either Mallory couldn't replicate the encryption scheme and garbled it going out or the transmission was already corrupted to begin with.
    +D: Either way the transmission caused NanoTrasen to look at the satellite. They found out about Mallory.
    +TM: Precisely sir. There's only so much I can do to cover our tracks from here.
    +D: I'm pulling the plug. We have assets in the sector that are capable of a job like this. Thank you for bringing this to my attention.
    +
    \[Computer device chirps\]
    +D: One last thing, did you happen to read anything from those secure transmissions?
    +TM: Just the subject, 'Directive X'.
    +D: Directive X... Now what do you suppose that means?
    +
    \[End of transcript\]
    + "}