From f97f264fb7bd934c7b679c67186c4a8a8ade2420 Mon Sep 17 00:00:00 2001 From: Artur Date: Thu, 23 Apr 2020 20:09:42 +0300 Subject: [PATCH] Fixing more stuff Mint machine compile fixes and the syndicate contractor program. --- code/__DEFINES/DNA.dm | 4 +- code/__DEFINES/misc.dm | 2 + code/__HELPERS/_string_lists.dm | 1 + .../antagonists/traitor/syndicate_contract.dm | 105 ++++++++++++++---- code/modules/mining/machine_processing.dm | 1 + code/modules/mining/mint.dm | 67 +++++------ code/modules/mob/living/carbon/alien/alien.dm | 2 +- .../file_system/programs/arcade.dm | 13 +-- .../file_system/programs/card.dm | 4 +- .../file_system/programs/sm_monitor.dm | 6 +- code/modules/power/port_gen.dm | 3 - code/modules/power/power.dm | 2 +- code/modules/shuttle/computer.dm | 2 +- code/modules/shuttle/navigation_computer.dm | 2 +- strings/wanted_message.json | 74 ++++++++++++ tgstation.dme | 1 + 16 files changed, 203 insertions(+), 86 deletions(-) create mode 100644 strings/wanted_message.json diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index c9e03389f1..2af331b777 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -108,6 +108,8 @@ #define TR_KEEPSE (1<<5) // changelings shouldn't edit the DNA's SE when turning into a monkey #define TR_DEFAULTMSG (1<<6) #define TR_KEEPORGANS (1<<8) +#define TR_KEEPREAGENTS (1<<10) +#define TR_KEEPSTUNS (1<<9) #define CLONER_FRESH_CLONE "fresh" @@ -184,4 +186,4 @@ #define G_MALE 1 #define G_FEMALE 2 #define G_PLURAL 3 -#define G_NEUTER 4 \ No newline at end of file +#define G_NEUTER 4 diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 3fb149d071..843ce2ab8a 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -523,3 +523,5 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S #define NIGHTSHIFT_AREA_NONE 4 //default/highest. #define UNTIL(X) while(!(X)) stoplag() + +#define WANTED_FILE "wanted_message.json" diff --git a/code/__HELPERS/_string_lists.dm b/code/__HELPERS/_string_lists.dm index 7d694c1844..43d45594e0 100644 --- a/code/__HELPERS/_string_lists.dm +++ b/code/__HELPERS/_string_lists.dm @@ -1,4 +1,5 @@ #define pick_list(FILE, KEY) (pick(strings(FILE, KEY))) +#define pick_list_weighted(FILE, KEY) (pickweight(strings(FILE, KEY))) #define pick_list_replacements(FILE, KEY) (strings_replacement(FILE, KEY)) #define json_load(FILE) (json_decode(file2text(FILE))) diff --git a/code/modules/antagonists/traitor/syndicate_contract.dm b/code/modules/antagonists/traitor/syndicate_contract.dm index 57a300be78..45dedb94d9 100644 --- a/code/modules/antagonists/traitor/syndicate_contract.dm +++ b/code/modules/antagonists/traitor/syndicate_contract.dm @@ -4,94 +4,144 @@ var/datum/objective/contract/contract = new() var/target_rank var/ransom = 0 - var/payout_type = null + var/payout_type + var/wanted_message + var/list/victim_belongings = list() /datum/syndicate_contract/New(contract_owner, blacklist, type=CONTRACT_PAYOUT_SMALL) contract.owner = contract_owner payout_type = type + generate(blacklist) /datum/syndicate_contract/proc/generate(blacklist) contract.find_target(null, blacklist) + var/datum/data/record/record - if(contract.target) + if (contract.target) record = find_record("name", contract.target.name, GLOB.data_core.general) - if(record) + + if (record) target_rank = record.fields["rank"] else target_rank = "Unknown" - if(payout_type == CONTRACT_PAYOUT_LARGE) + + if (payout_type == CONTRACT_PAYOUT_LARGE) contract.payout_bonus = rand(9,13) - else if(payout_type == CONTRACT_PAYOUT_MEDIUM) + else if (payout_type == CONTRACT_PAYOUT_MEDIUM) contract.payout_bonus = rand(6,8) else contract.payout_bonus = rand(2,4) + contract.payout = rand(0, 2) contract.generate_dropoff() + ransom = 100 * rand(18, 45) + var/base = pick_list(WANTED_FILE, "basemessage") + var/verb_string = pick_list(WANTED_FILE, "verb") + var/noun = pick_list_weighted(WANTED_FILE, "noun") + var/location = pick_list_weighted(WANTED_FILE, "location") + wanted_message = "[base] [verb_string] [noun] [location]." + /datum/syndicate_contract/proc/handle_extraction(var/mob/living/user) if (contract.target && contract.dropoff_check(user, contract.target.current)) + var/turf/free_location = find_obstruction_free_location(3, user, contract.dropoff) - if(free_location) // We've got a valid location, launch. + + if (free_location) + // We've got a valid location, launch. launch_extraction_pod(free_location) return TRUE + return FALSE // Launch the pod to collect our victim. /datum/syndicate_contract/proc/launch_extraction_pod(turf/empty_pod_turf) var/obj/structure/closet/supplypod/extractionpod/empty_pod = new() + RegisterSignal(empty_pod, COMSIG_ATOM_ENTERED, .proc/enter_check) + empty_pod.stay_after_drop = TRUE empty_pod.reversing = TRUE empty_pod.explosionSize = list(0,0,0,1) empty_pod.leavingSound = 'sound/effects/podwoosh.ogg' - new /obj/effect/abstract/DPtarget(empty_pod_turf, empty_pod) + + new /obj/effect/DPtarget(empty_pod_turf, empty_pod) /datum/syndicate_contract/proc/enter_check(datum/source, sent_mob) if(istype(source, /obj/structure/closet/supplypod/extractionpod)) if(isliving(sent_mob)) var/mob/living/M = sent_mob var/datum/antagonist/traitor/traitor_data = contract.owner.has_antag_datum(/datum/antagonist/traitor) + if(M == contract.target.current) traitor_data.contractor_hub.contract_TC_to_redeem += contract.payout + traitor_data.contractor_hub.contracts_completed += 1 + if(M.stat != DEAD) traitor_data.contractor_hub.contract_TC_to_redeem += contract.payout_bonus + status = CONTRACT_STATUS_COMPLETE + if(traitor_data.contractor_hub.current_contract == src) traitor_data.contractor_hub.current_contract = null + traitor_data.contractor_hub.contract_rep += 2 else status = CONTRACT_STATUS_ABORTED // Sending a target that wasn't even yours is as good as just aborting it + if(traitor_data.contractor_hub.current_contract == src) traitor_data.contractor_hub.current_contract = null + if(iscarbon(M)) for(var/obj/item/W in M) if(ishuman(M)) var/mob/living/carbon/human/H = M - if(W == H.w_uniform || W == H.shoes) - continue //So all they're left with are shoes and uniform. + if(W == H.w_uniform) + continue //So all they're left with are shoes and uniform. + if(W == H.shoes) + continue + + M.transferItemToLoc(W) victim_belongings.Add(W) + var/obj/structure/closet/supplypod/extractionpod/pod = source - pod.send_up(pod) // Handle the pod returning + + // Handle the pod returning + pod.send_up(pod) + if(ishuman(M)) - var/mob/living/carbon/human/target = M // After we remove items, at least give them what they need to live. + var/mob/living/carbon/human/target = M + + // After we remove items, at least give them what they need to live. target.dna.species.give_important_for_life(target) - handleVictimExperience(M) // After pod is sent we start the victim narrative/heal. - var/points_to_check = SSshuttle.points // This is slightly delayed because of the sleep calls above to handle the narrative. We don't want to tell the station instantly. + + // After pod is sent we start the victim narrative/heal. + handleVictimExperience(M) + + // This is slightly delayed because of the sleep calls above to handle the narrative. + // We don't want to tell the station instantly. + var/points_to_check if(points_to_check >= ransom) SSshuttle.points -= ransom else SSshuttle.points -= points_to_check - priority_announce("One of your crew was captured by a rival organisation - we've needed to pay their ransom to bring them back. \ - As is policy we've taken a portion of the station's funds to offset the overall cost.", null, "attention", null, "Nanotrasen Asset Protection") -/datum/syndicate_contract/proc/handleVictimExperience(var/mob/living/M) // They're off to holding - handle the return timer and give some text about what's going on. - addtimer(CALLBACK(src, .proc/returnVictim, M), 4 MINUTES) // Ship 'em back - dead or alive... 4 minutes wait. - if(M.stat != DEAD) //Even if they weren't the target, we're still treating them the same. - M.reagents.add_reagent(/datum/reagent/medicine/regen_jelly, 20) // Heal them up - gets them out of crit/soft crit. -- now 100% toxinlover friendly!! + priority_announce("One of your crew was captured by a rival organisation - we've needed to pay their ransom to bring them back. \ + As is policy we've taken a portion of the station's funds to offset the overall cost.", null, 'sound/ai/attention.ogg', null, "Nanotrasen Asset Protection") + +// They're off to holding - handle the return timer and give some text about what's going on. +/datum/syndicate_contract/proc/handleVictimExperience(var/mob/living/M) + // Ship 'em back - dead or alive, 4 minutes wait. + // Even if they weren't the target, we're still treating them the same. + addtimer(CALLBACK(src, .proc/returnVictim, M), (60 * 10) * 4) + + if (M.stat != DEAD) + M.reagents.add_reagent(/datum/reagent/medicine/regen_jelly, 20) + M.flash_act() M.confused += 10 M.blur_eyes(5) @@ -116,13 +166,18 @@ M.Dizzy(15) M.confused += 20 -/datum/syndicate_contract/proc/returnVictim(var/mob/living/M) // We're returning the victim +// We're returning the victim +/datum/syndicate_contract/proc/returnVictim(var/mob/living/M) var/list/possible_drop_loc = list() + for(var/turf/possible_drop in contract.dropoff.contents) - if(!is_blocked_turf(possible_drop)) - possible_drop_loc.Add(possible_drop) + if(!isspaceturf(possible_drop) && !isclosedturf(possible_drop)) + if(!is_blocked_turf(possible_drop)) + possible_drop_loc.Add(possible_drop) + if(possible_drop_loc.len > 0) var/pod_rand_loc = rand(1, possible_drop_loc.len) + var/obj/structure/closet/supplypod/return_pod = new() return_pod.bluespace = TRUE return_pod.explosionSize = list(0,0,0,0) @@ -132,8 +187,10 @@ for(var/obj/item/W in M) if(ishuman(M)) var/mob/living/carbon/human/H = M - if(W == H.w_uniform || W == H.shoes) + if(W == H.w_uniform) continue //So all they're left with are shoes and uniform. + if(W == H.shoes) + continue M.dropItemToGround(W) for(var/obj/item/W in victim_belongings) W.forceMove(return_pod) @@ -142,7 +199,7 @@ M.blur_eyes(30) M.Dizzy(35) M.confused += 20 - new /obj/effect/abstract/DPtarget(possible_drop_loc[pod_rand_loc], return_pod) + new /obj/effect/DPtarget(possible_drop_loc[pod_rand_loc], return_pod) else to_chat(M, "A million voices echo in your head... \"Seems where you got sent here from won't \ be able to handle our pod... You will die here instead.\"") diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 512fa8f3e4..3e6fef25db 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -5,6 +5,7 @@ /obj/machinery/mineral var/input_dir = NORTH var/output_dir = SOUTH + var/needs_item_input /obj/machinery/mineral/proc/unload_mineral(atom/movable/S) S.forceMove(drop_location()) diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index 81a9f873e4..714b02cf3e 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -9,7 +9,6 @@ input_dir = EAST ui_x = 300 ui_y = 250 - needs_item_input = TRUE var/produced_coins = 0 // how many coins the machine has made in it's last cycle var/processing = FALSE @@ -35,19 +34,16 @@ chosen = SSmaterials.GetMaterialRef(chosen) -/obj/machinery/mineral/mint/pickup_item(datum/source, atom/movable/target, atom/oldLoc) - if(!istype(target, /obj/item/stack)) - return - - var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - var/obj/item/stack/S = target - - if(materials.insert_item(S)) - qdel(S) - /obj/machinery/mineral/mint/process() + var/turf/T = get_step(src, input_dir) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) + + for(var/obj/item/stack/O in T) + var/inserted = materials.insert_item(O) + if(inserted) + qdel(O) + if(processing) - var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/datum/material/M = chosen if(!M) @@ -63,7 +59,7 @@ for(var/coin_to_make in 1 to 5) create_coins() produced_coins++ - else + else var/found_new = FALSE for(var/datum/material/inserted_material in materials.materials) var/amount = materials.get_material_amount(inserted_material) @@ -71,34 +67,34 @@ if(amount) chosen = inserted_material found_new = TRUE - + if(!found_new) processing = FALSE else - end_processing() icon_state = "coinpress0" /obj/machinery/mineral/mint/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) - ui = new(user, src, ui_key, "Mint", name, ui_x, ui_y, master_ui, state) + ui = new(user, src, ui_key, "mint", name, ui_x, ui_y, master_ui, state) ui.open() /obj/machinery/mineral/mint/ui_data() var/list/data = list() - data["inserted_materials"] = list() - data["chosen_material"] = null - var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) + for(var/datum/material/inserted_material in materials.materials) var/amount = materials.get_material_amount(inserted_material) + if(!amount) continue + data["inserted_materials"] += list(list( "material" = inserted_material.name, - "amount" = amount, + "amount" = amount )) + if(chosen == inserted_material) data["chosen_material"] = inserted_material.name @@ -108,25 +104,18 @@ return data; /obj/machinery/mineral/mint/ui_act(action, params, datum/tgui/ui) - . = ..() - if(.) - return - if(action == "startpress") - if (!processing) - produced_coins = 0 - processing = TRUE - begin_processing() - return TRUE - if (action == "stoppress") - processing = FALSE - end_processing() - return TRUE - if (action == "changematerial") - var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - for(var/datum/material/mat in materials.materials) - if (params["material_name"] == mat.name) - chosen = mat - return TRUE + switch(action) + if ("startpress") + if (!processing) + produced_coins = 0 + processing = TRUE + if ("stoppress") + processing = FALSE + if ("changematerial") + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) + for(var/datum/material/mat in materials.materials) + if (params["material_name"] == mat.name) + chosen = mat /obj/machinery/mineral/mint/proc/create_coins() var/turf/T = get_step(src,output_dir) diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index bd24a4b4c4..bbe9a89a37 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -18,7 +18,7 @@ status_flags = CANUNCONSCIOUS|CANPUSH - var/heat_protection = 0.5 + heat_protection = 0.5 var/leaping = 0 gib_type = /obj/effect/decal/cleanable/blood/gibs/xeno unique_name = 1 diff --git a/code/modules/modular_computers/file_system/programs/arcade.dm b/code/modules/modular_computers/file_system/programs/arcade.dm index efd82a9d88..87debafd6b 100644 --- a/code/modules/modular_computers/file_system/programs/arcade.dm +++ b/code/modules/modular_computers/file_system/programs/arcade.dm @@ -27,7 +27,6 @@ /datum/computer_file/program/arcade/proc/game_check(mob/user) sleep(5) - user?.mind?.adjust_experience(/datum/skill/gaming, 1) if(boss_hp <= 0) heads_up = "You have crushed [boss_name]! Rejoice!" playsound(computer.loc, 'sound/arcade/win.ogg', 50, TRUE, extrarange = -3, falloff = 10) @@ -36,7 +35,6 @@ if(istype(computer)) computer.update_icon() ticket_count += 1 - user?.mind?.adjust_experience(/datum/skill/gaming, 50) sleep(10) else if(player_hp <= 0 || player_mp <= 0) heads_up = "You have been defeated... how will the station survive?" @@ -45,7 +43,6 @@ program_icon_state = "arcade_off" if(istype(computer)) computer.update_icon() - user?.mind?.adjust_experience(/datum/skill/gaming, 10) sleep(10) /datum/computer_file/program/arcade/proc/enemy_check(mob/user) @@ -101,13 +98,11 @@ if(computer) printer = computer.all_components[MC_PRINT] - var/gamerSkillLevel = usr.mind?.get_skill_level(/datum/skill/gaming) - var/gamerSkill = usr.mind?.get_skill_modifier(/datum/skill/gaming, SKILL_RANDS_MODIFIER) switch(action) if("Attack") var/attackamt = 0 //Spam prevention. if(pause_state == FALSE) - attackamt = rand(2,6) + rand(0, gamerSkill) + attackamt = rand(2,6) pause_state = TRUE heads_up = "You attack for [attackamt] damage." playsound(computer.loc, 'sound/arcade/hit.ogg', 50, TRUE, extrarange = -3, falloff = 10) @@ -120,10 +115,8 @@ var/healamt = 0 //More Spam Prevention. var/healcost = 0 if(pause_state == FALSE) - healamt = rand(6,8) + rand(0, gamerSkill) + healamt = rand(6,8) var/maxPointCost = 3 - if(gamerSkillLevel >= SKILL_LEVEL_JOURNEYMAN) - maxPointCost = 2 healcost = rand(1, maxPointCost) pause_state = TRUE heads_up = "You heal for [healamt] damage." @@ -137,7 +130,7 @@ if("Recharge_Power") var/rechargeamt = 0 //As above. if(pause_state == FALSE) - rechargeamt = rand(4,7) + rand(0, gamerSkill) + rechargeamt = rand(4, 7) pause_state = TRUE heads_up = "You regain [rechargeamt] magic power." playsound(computer.loc, 'sound/arcade/mana.ogg', 50, TRUE, extrarange = -3, falloff = 10) diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm index eb7b60b070..07d39438d8 100644 --- a/code/modules/modular_computers/file_system/programs/card.dm +++ b/code/modules/modular_computers/file_system/programs/card.dm @@ -275,13 +275,13 @@ departments = list("CentCom" = get_all_centcom_jobs()) else if(isnull(departments)) departments = list( - CARDCON_DEPARTMENT_COMMAND = list("Captain"),//lol + CARDCON_DEPARTMENT_COMMAND = list("Captain"), CARDCON_DEPARTMENT_ENGINEERING = GLOB.engineering_positions, CARDCON_DEPARTMENT_MEDICAL = GLOB.medical_positions, CARDCON_DEPARTMENT_SCIENCE = GLOB.science_positions, CARDCON_DEPARTMENT_SECURITY = GLOB.security_positions, CARDCON_DEPARTMENT_SUPPLY = GLOB.supply_positions, - CARDCON_DEPARTMENT_SERVICE = GLOB.service_positions + CARDCON_DEPARTMENT_SERVICE = GLOB.civilian_positions ) data["jobs"] = list() for(var/department in departments) diff --git a/code/modules/modular_computers/file_system/programs/sm_monitor.dm b/code/modules/modular_computers/file_system/programs/sm_monitor.dm index d78ed9239e..0c30319c2a 100644 --- a/code/modules/modular_computers/file_system/programs/sm_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/sm_monitor.dm @@ -81,13 +81,13 @@ if(air.total_moles()) for(var/gasid in air.gases) gasdata.Add(list(list( - "name"= air.gases[gasid][GAS_META][META_GAS_NAME], - "amount" = round(100*air.gases[gasid][MOLES]/air.total_moles(),0.01)))) + "name"= GLOB.meta_gas_names[gasid], + "amount" = round(100*air.gases[gasid]/air.total_moles(),0.01)))) else for(var/gasid in air.gases) gasdata.Add(list(list( - "name"= air.gases[gasid][GAS_META][META_GAS_NAME], + "name"= GLOB.meta_gas_names[gasid], "amount" = 0))) data["gases"] = gasdata diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index e2ec3378c2..d4e0df8359 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -27,9 +27,6 @@ QDEL_NULL(soundloop) return ..() -/obj/machinery/power/port_gen/should_have_node() - return anchored - /obj/machinery/power/port_gen/connect_to_network() if(!anchored) return FALSE diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index fba526edbd..39977b7d06 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -385,4 +385,4 @@ var/target = base_area ? base_area : src for(var/obj/machinery/power/apc/APC in GLOB.apcs_list) if(APC.area == target) - return APC \ No newline at end of file + return APC diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/computer.dm index f914406d10..682a7fa14b 100644 --- a/code/modules/shuttle/computer.dm +++ b/code/modules/shuttle/computer.dm @@ -72,6 +72,6 @@ to_chat(user, "You fried the consoles ID checking system.") return TRUE -/obj/machinery/computer/shuttle/proc/connect_to_shuttle(obj/docking_port/mobile/port, obj/docking_port/stationary/dock, idnum, override=FALSE) +/obj/machinery/computer/shuttle/connect_to_shuttle(obj/docking_port/mobile/port, obj/docking_port/stationary/dock, idnum, override=FALSE) if(port && (shuttleId == initial(shuttleId) || override)) shuttleId = port.id diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm index e8971154f0..fd3279954c 100644 --- a/code/modules/shuttle/navigation_computer.dm +++ b/code/modules/shuttle/navigation_computer.dm @@ -246,7 +246,7 @@ current_user.client.images -= remove_images current_user.client.images += add_images -/obj/machinery/computer/camera_advanced/shuttle_docker/proc/connect_to_shuttle(obj/docking_port/mobile/port, obj/docking_port/stationary/dock, idnum, override=FALSE) +/obj/machinery/computer/camera_advanced/shuttle_docker/connect_to_shuttle(obj/docking_port/mobile/port, obj/docking_port/stationary/dock, idnum, override=FALSE) if(port && (shuttleId == initial(shuttleId) || override)) shuttleId = port.id shuttlePortId = "[port.id]_custom" diff --git a/strings/wanted_message.json b/strings/wanted_message.json new file mode 100644 index 0000000000..18965b7026 --- /dev/null +++ b/strings/wanted_message.json @@ -0,0 +1,74 @@ +{ + "basemessage": [ + "Fugitive from the law due to", + "Needs to be interrogated for information about", + "Wanted by The Syndicate for", + "Ransomable to Nanotrasen for", + "Has exploitable information about" + ], + "verb": [ + "murdering", + "killing", + "accidentally destroying", + "destroying", + "knowing information about", + "stealing", + "slipping", + "sabotaging", + "robusting", + "collaborating with", + "being close friends with", + "cloning", + "befriending", + "bombing", + "kidnapping", + "pretending to be", + "seducing", + "ignoring", + "assassinating" + ], + "noun": { + "secret plans": 50, + "the hand teleporter": 50, + "an NT CentCom uniform": 50, + "a supermatter shard": 50, + "internal Syndicate documents": 50, + "experimental Nanotrasen technology": 50, + "bluespace crystals": 50, + "a cult": 50, + "shapeshifting creatures": 50, + "a toolbox": 10, + "a bar of soap": 10, + "lizardmen": 10, + "two million credits": 10, + "a gondola": 10, + "one billion credits": 5, + "research on floor clowns": 5, + "Officer Beepsky": 5, + "clown tears": 5, + "John F Kennedy 2": 5, + "Nanotrasen's swimsuit calendar": 5, + "a suspicious bus": 5, + "administrators": 5, + "a solid gold gondola": 5, + "the anime archive": 5, + "YALPER": 1, + "absolutely nothing": 1, + "Cuban Pete": 1, + "your mother": 1, + "WGW": 1 + }, + "location": { + "on Space Station 13": 50, + "somewhere in deep space": 50, + "on a remote syndicate base": 50, + "in a secure NT facility": 50, + "while on an escape shuttle": 10, + "while infiltrating CentCom headquarters": 10, + "deep in the necropolis": 10, + "during a drunken bar fight": 5, + "while stuck in a bathroom": 5, + "in a back alley on Mars": 5, + "on Virgo Orbital": 1 + } +} diff --git a/tgstation.dme b/tgstation.dme index 76cdb4ce34..e5d8aa29e7 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2576,6 +2576,7 @@ #include "code\modules\modular_computers\file_system\program_events.dm" #include "code\modules\modular_computers\file_system\programs\airestorer.dm" #include "code\modules\modular_computers\file_system\programs\alarm.dm" +#include "code\modules\modular_computers\file_system\programs\arcade.dm" #include "code\modules\modular_computers\file_system\programs\card.dm" #include "code\modules\modular_computers\file_system\programs\configurator.dm" #include "code\modules\modular_computers\file_system\programs\file_browser.dm"