From b7e99a74486f3ded1e50213b40b3ab60d8f75a6b Mon Sep 17 00:00:00 2001 From: Jordie Date: Fri, 17 Nov 2017 18:43:12 +1100 Subject: [PATCH 001/328] JSON feedback --- SQL/database_changelog.txt | 25 +- SQL/feedback_conversion_2017-11-12.py | 532 ++++++++++++++++++ SQL/tgstation_schema.sql | 13 +- SQL/tgstation_schema_prefixed.sql | 13 +- code/_compile_options.dm | 4 +- code/controllers/admin.dm | 4 +- code/controllers/subsystem/blackbox.dm | 328 ++++++----- code/controllers/subsystem/job.dm | 37 +- code/controllers/subsystem/radiation.dm | 2 +- code/controllers/subsystem/shuttle.dm | 4 +- code/controllers/subsystem/time_track.dm | 2 +- code/datums/antagonists/changeling.dm | 4 +- code/datums/components/archaeology.dm | 2 +- .../helper_datums/construction_datum.dm | 1 + code/datums/helper_datums/getrev.dm | 2 +- code/game/gamemodes/brother/traitor_bro.dm | 15 +- code/game/gamemodes/changeling/changeling.dm | 14 +- .../gamemodes/changeling/changeling_power.dm | 4 +- .../gamemodes/changeling/powers/absorb.dm | 4 +- .../gamemodes/changeling/powers/linglink.dm | 2 +- .../gamemodes/clock_cult/clock_scripture.dm | 2 +- code/game/gamemodes/cult/cult.dm | 20 +- code/game/gamemodes/cult/ritual.dm | 2 +- code/game/gamemodes/game_mode.dm | 25 +- .../gamemodes/nuclear/nuclear_challenge.dm | 3 +- code/game/gamemodes/traitor/traitor.dm | 12 +- code/game/gamemodes/wizard/spellbook.dm | 14 +- code/game/gamemodes/wizard/wizard.dm | 14 +- code/game/machinery/computer/arcade.dm | 12 +- .../game/machinery/computer/communications.dm | 12 +- code/game/machinery/newscaster.dm | 6 +- code/game/machinery/telecomms/broadcasting.dm | 4 +- code/game/machinery/vending.dm | 2 +- code/game/mecha/mecha_construction_paths.dm | 35 -- code/game/objects/items/charter.dm | 6 +- code/game/objects/items/handcuffs.dm | 6 +- code/game/objects/items/holy_weapons.dm | 2 +- code/game/objects/items/robot/robot_parts.dm | 7 +- code/game/objects/items/storage/book.dm | 2 +- code/game/objects/structures/ai_core.dm | 2 +- code/game/turfs/simulated/minerals.dm | 4 +- code/modules/admin/NewBan.dm | 2 - code/modules/admin/admin.dm | 37 +- code/modules/admin/admin_verbs.dm | 38 +- code/modules/admin/adminmenu.dm | 2 +- code/modules/admin/secrets.dm | 58 +- code/modules/admin/topic.dm | 20 +- code/modules/admin/verbs/adminhelp.dm | 16 +- code/modules/admin/verbs/adminjump.dm | 160 ++++++ code/modules/admin/verbs/adminpm.dm | 4 +- code/modules/admin/verbs/adminsay.dm | 2 +- code/modules/admin/verbs/atmosdebug.dm | 4 +- code/modules/admin/verbs/deadsay.dm | 2 +- code/modules/admin/verbs/debug.dm | 34 +- code/modules/admin/verbs/diagnostics.dm | 8 +- code/modules/admin/verbs/fps.dm | 2 +- code/modules/admin/verbs/getlogs.dm | 4 +- code/modules/admin/verbs/machine_upgrade.dm | 2 +- code/modules/admin/verbs/mapping.dm | 19 +- code/modules/admin/verbs/massmodvar.dm | 2 +- code/modules/admin/verbs/panicbunker.dm | 2 +- code/modules/admin/verbs/playsound.dm | 15 +- code/modules/admin/verbs/possess.dm | 6 +- code/modules/admin/verbs/pray.dm | 8 + code/modules/admin/verbs/randomverbs.dm | 64 +-- .../admin/verbs/reestablish_db_connection.dm | 4 +- code/modules/assembly/holder.dm | 2 +- code/modules/cargo/exports.dm | 3 +- code/modules/client/preferences_toggles.dm | 51 +- code/modules/client/verbs/ooc.dm | 2 +- code/modules/clothing/under/accessories.dm | 4 +- code/modules/crafting/craft.dm | 2 +- code/modules/events/_event.dm | 4 +- code/modules/food_and_drinks/food/snacks.dm | 4 +- .../kitchen_machinery/processor.dm | 2 +- code/modules/hydroponics/seeds.dm | 2 +- .../jobs/job_types/civilian_chaplain.dm | 4 +- .../mining/equipment/lazarus_injector.dm | 2 +- .../mining/equipment/regenerative_core.dm | 10 +- .../mining/equipment/wormhole_jaunter.dm | 6 +- .../mining/lavaland/necropolis_chests.dm | 10 +- code/modules/mining/machine_vending.dm | 9 +- code/modules/mob/living/brain/MMI.dm | 2 +- .../mob/living/carbon/human/human_defense.dm | 4 +- .../mob/living/silicon/robot/robot_modules.dm | 12 +- .../hostile/megafauna/megafauna.dm | 2 +- .../hostile/mining_mobs/mining_mobs.dm | 2 +- .../mob/living/simple_animal/slime/powers.dm | 2 +- code/modules/power/cell.dm | 354 ++++++++++++ code/modules/power/singularity/generator.dm | 2 +- code/modules/projectiles/gun.dm | 2 +- code/modules/projectiles/guns/medbeam.dm | 2 +- code/modules/reagents/chemistry/holder.dm | 2 +- .../chemistry/recipes/slime_extracts.dm | 3 +- code/modules/recycling/disposal/bin.dm | 1 - code/modules/research/rdconsole.dm | 9 +- code/modules/research/research.dm | 1 + .../security_levels/keycard_authentication.dm | 6 +- .../security_levels/security_levels.dm | 1 + code/modules/shuttle/arrivals.dm | 2 +- code/modules/shuttle/manipulator.dm | 4 +- code/modules/shuttle/on_move.dm | 7 +- code/modules/shuttle/supply.dm | 3 +- code/modules/surgery/organs/vocal_cords.dm | 2 +- code/modules/surgery/surgery.dm | 2 +- code/modules/uplink/uplink_item.dm | 10 +- 106 files changed, 1654 insertions(+), 619 deletions(-) create mode 100644 SQL/feedback_conversion_2017-11-12.py diff --git a/SQL/database_changelog.txt b/SQL/database_changelog.txt index 7063273378..e2a172e107 100644 --- a/SQL/database_changelog.txt +++ b/SQL/database_changelog.txt @@ -1,15 +1,34 @@ Any time you make a change to the schema files, remember to increment the database schema version. Generally increment the minor number, major should be reserved for significant changes to the schema. Both values go up to 255. -The latest database version is 3.4; The query to update the schema revision table is: +The latest database version is 4.0; The query to update the schema revision table is: -INSERT INTO `schema_revision` (`major`, `minor`) VALUES (3, 4); +INSERT INTO `schema_revision` (`major`, `minor`) VALUES (4, 0); or -INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (3, 4); +INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (4, 0); In any query remember to add a prefix to the table names if you use one. ---------------------------------------------------- +12 November 2017, by Jordie0608 +Modified feedback table to use json, a python script is used to migrate data to this new format. + +See the file 'feedback_conversion_2017-11-12.py' for instructions on how to use the script. + +A new json feedback table can be created with: +CREATE TABLE `feedback` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `datetime` datetime NOT NULL, + `round_id` int(11) unsigned NOT NULL, + `key_name` varchar(32) NOT NULL, + `key_type` enum('text', 'amount', 'tally', 'nested tally', 'associative') NOT NULL, + `version` tinyint(3) unsigned NOT NULL, + `json` json NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM + +---------------------------------------------------- + 28 August 2017, by MrStonedOne Modified table 'messages', adding a deleted column and editing all indexes to include it diff --git a/SQL/feedback_conversion_2017-11-12.py b/SQL/feedback_conversion_2017-11-12.py new file mode 100644 index 0000000000..b8577460b3 --- /dev/null +++ b/SQL/feedback_conversion_2017-11-12.py @@ -0,0 +1,532 @@ +#Python 3+ Script for jsonifying feedback table data as of 2017-11-12 made by Jordie0608 +#Apologies for the boilerplated and squirrely code in parts, this has been my first foray into python +# +#Before starting ensure you have installed the mysqlclient package https://github.com/PyMySQL/mysqlclient-python +#It can be downloaded from command line with pip: +#pip install mysqlclient +# +#You will also have to create a new feedback table for inserting converted data to per the schema: +#CREATE TABLE `feedback_new` ( +# `id` int(11) unsigned NOT NULL AUTO_INCREMENT, +# `datetime` datetime NOT NULL, +# `round_id` int(11) unsigned NOT NULL, +# `key_name` varchar(32) NOT NULL, +# `key_type` enum('text', 'amount', 'tally', 'nested tally', 'associative') NOT NULL, +# `version` tinyint(3) unsigned NOT NULL, +# `json` json NOT NULL, +# PRIMARY KEY (`id`) +#) ENGINE=MyISAM +#This is to prevent the destruction of legacy data and allow rollbacks to be performed in the event of an error during conversion +#Once conversion is complete remember to rename the old and new feedback tables; it's up to you if you want to keep the old table +# +#To view the parameters for this script, execute it with the argument --help +#All the positional arguments are required, remember to include prefixes in your table names if you use them +#An example of the command used to execute this script from powershell: +#python feedback_conversion_2017-11-12.py "localhost" "root" "password" "feedback" "SS13_feedback" "SS13_feedback_new" +#I found that this script would complete conversion of 10000 rows approximately every 2-3 seconds +#Depending on the size of your feedback table and the computer used it may take several minutes for the script to finish +# +#The script has been tested to complete with tgstation's feedback table as of 2017-10-23 01:34:06 +#Due to the complexity of data that has potentially changed formats multiple times and suffered errors when recording I cannot guarantee it'll always execute successfully +#In the event of an error the new feedback table is automatically truncated +#The source table is never modified so you don't have to worry about losing any data due to errors +#Note that some feedback keys are renamed or coalesced into one, additionnaly some have been entirely removed +# +#While this script can be run with your game server(s) active, it may interfere with other database operations and any feedback created after the script has started won't be converted + +import MySQLdb +import argparse +import json +import re +import sys +from datetime import datetime + +def parse_text(details): + if not details: + return + if details.startswith('"') and details.endswith('"'): + details = details[1:-1] #the first and last " aren't removed by splitting the dictionary + details = details.split('" | "') + else: + if "_" in details: + details = details.split(' ') + return details + +def parse_tally(details): + if not details: + return + overflowed = None + if len(details) >= 65535: #a string this long means the data hit the 64KB character limit of TEXT columns + overflowed = True + if details.startswith('"') and details.endswith('"'): + details = details[details.find('"')+1:details.rfind('"')] #unlike others some of the tally data has extra characters to remove + split_details = details.split('" | "') + else: + split_details = details.split(' ') + if overflowed: + split_details = split_details[:-1] #since the string overflowed the last element will be incomplete and needs to be ignored + details = {} + for i in split_details: + increment = 1 + if '|' in i and i[i.find('|')+1:]: + increment = float(i[i.find('|')+1:]) + i = i[:i.find('|')] + if i in details: + details[i] += increment + else: + details[i] = increment + for i in details: + details[i] = '{0:g}'.format(details[i]) #remove .0 from floats that have it to conform with DM + return details + +def parse_nested(var_name, details): + if not details: + return + #group by data before pipe + if var_name in ("admin_toggle", "preferences_verb", "changeling_objective", "cult_objective", "traitor_objective", "wizard_objective", "mining_equipment_bought", "vending_machine_usage", "changeling_powers", "wizard_spell_improved", "testmerged_prs"): + if details.startswith('"') and details.endswith('"'): + details = details[1:-1] + split_details = details.split('" | "') + else: + split_details = details.split(' ') + details = {} + for i in split_details: + if "|" in i and i[:i.find('|')] not in details: + details[i[:i.find('|')]] = {} + elif "|" not in i and i[i.find('|')+1:] not in details: + details[i[i.find('|')+1:]] = 0 + for i in split_details: + if "|" in i: + if details[i[:i.find('|')]] is not dict: + continue + if i[i.find('|')+1:] in details[i[:i.find('|')]]: + details[i[:i.find('|')]][i[i.find('|')+1:]] += 1 + else: + details[i[:i.find('|')]][i[i.find('|')+1:]] = 1 + else: + if i in details and type(details[i]) is not dict: #sometimes keys that should have a value after a pipe just don't and would otherwise error here + details[i] += 1 + return details + #group by data after pipe + elif var_name in ("cargo_imports", "traitor_uplink_items_bought", "export_sold_cost", "item_used_for_combat", "played_url"): + if details.startswith('"') and details.endswith('"'): + details = details[1:-1] + split_details = details.split('" | "') + else: + split_details = details.split(' ') + details = {} + for i in split_details: + if i == i[i.rfind('|')+1:]: #there's no pipe and data to group by, so we fill it in + i = "{0}|missing data".format(i) + details[i[i.rfind('|')+1:]] = {} + for i in split_details: + if i == i[i.rfind('|')+1:]: + i = "{0}|missing data".format(i) + if i[:i.find('|')] in details[i[i.rfind('|')+1:]]: + details[i[i.rfind('|')+1:]][i[:i.find('|')]] += 1 + else: + details[i[i.rfind('|')+1:]][i[:i.find('|')]] = 1 + return details + elif var_name == "hivelord_core": + if details.startswith('"') and details.endswith('"'): + details = details[1:-1] + split_details = details.split('" | "') + else: + split_details = details.split(' ') + details = {} + for i in split_details: + if i[:i.find('|')] not in details: + details[i[:i.find('|')]] = {} + if "used" in i: + if "used" not in details: + details[i[:i.find('|')]]["used"] = {} + for i in split_details: + if "used" in i: + if "used" not in details[i[:i.find('|')]]: + details[i[:i.find('|')]]["used"] = {} + details[i[:i.find('|')]]["used"][i[i.rfind('|')+1:]] = 1 + else: + if i[i.rfind('|')+1:] in details[i[:i.find('|')]]["used"]: + details[i[:i.find('|')]]["used"][i[i.rfind('|')+1:]] += 1 + else: + details[i[:i.find('|')]]["used"][i[i.rfind('|')+1:]] = 1 + elif "|" in i: + if i[i.find('|')+1:] in details[i[:i.find('|')]]: + details[i[:i.find('|')]][i[i.find('|')+1:]] += 1 + else: + details[i[:i.find('|')]][i[i.find('|')+1:]] = 1 + return details + elif var_name == "job_preferences": + if details.startswith('"') and details.endswith('"'): + details = details[1:-1] + split_details = details.split('|-" | "|') + else: + split_details = details.split('|- |') + details = {} + for i in split_details: + if i.startswith('|'): + i = i[1:] + if i[:i.find('|')] not in details: + details[i[:i.find('|')]] = {} + for i in split_details: + if i.startswith('|'): + i = i[1:] + if i.endswith('-'): + i = i[:-2] + sub_split = i.split('|') + job = sub_split[0] + sub_split = sub_split[1:] + for o in sub_split: + details[job][o[:o.find('=')].lower()] = o[o.find('=')+1:] + return details + +def parse_associative(var_name, details): + if not details: + return + if var_name == "colonies_dropped": + if details.startswith('"') and details.endswith('"'): + details = details[1:-1] + split_details = details.split('|') + details = {} + details["1"] = {"x" : split_details[0], "y" : split_details[1], "z" : split_details[2]} + return details + elif var_name == "commendation": + if details.startswith('"') and details.endswith('"'): + details = details[1:-1] + if '}" | "{' in details: + split_details = details.split('}" | "{') + else: + split_details = details.split('} {') + details = {} + for i in split_details: + params = [] + sub_split = i.split(',') + for o in sub_split: + o = re.sub('[^A-Za-z0-9 ]', '', o[o.find(':')+1:]) #remove all the formatting and escaped characters from being pre-encoded as json + params.append(o) + details[len(details)+1] = {"commender" : params[0], "commendee" : params[1], "medal" : params[2], "reason" : params[3]} + return details + elif var_name == "high_research_level": + if details.startswith('"') and details.endswith('"'): + details = details[1:-1] + split_details = details.split('" | "') + else: + split_details = details.split(' ') + details = {} + levels = {} + for i in split_details: + x = {i[:-1] : i[-1:]} + levels.update(x) + details["1"] = levels + return details + +def parse_special(var_name, var_value, details): + #old data is essentially a tally in text form + if var_name == "immortality_talisman": + if details.startswith('"') and details.endswith('"'): + split_details = details.split('" | "') + else: + split_details = details.split(' ') + return len(split_details) + #now records channel names, so we have to fill in whats missing + elif var_name == "newscaster_channels": + details = ["missing data"] + details *= var_value + return details + #all the channels got renamed, plus we ignore any with an amount of zero + elif var_name == "radio_usage": + if details.startswith('"') and details.endswith('"'): + details = details[details.find('C'):-1] + split_details = details.split('" | "') + else: + split_details = details.split(' ') + details = {} + new_keys = {"COM":"common", "SCI":"science", "HEA":"command", "MED":"medical", "ENG":"engineering", "SEC":"security", "DTH":"centcom", "SYN":"syndicate", "SRV":"service", "CAR":"supply", "OTH":"other", "PDA":"PDA", "RC":"request console"} + for i in split_details: + if i.endswith('0'): + continue + if i[:i.find('-')] not in new_keys: + continue + details[new_keys[i[:i.find('-')]]] = i[i.find('-')+1:] + return details + #all of the data tracked by this is invalid due to recording the incorrect type + elif var_name == "shuttle_gib": + return {"missing data":1} + #all records have a prefix of 'slimebirth_' that needs to be removed + elif var_name == "slime_babies_born": + if details.startswith('"') and details.endswith('"'): + details = details[1:-1] + split_details = details.split('" | "') + else: + split_details = details.split(' ') + details = {} + for i in split_details: + if i[i.find('_')+1:].replace('_', ' ') in details: + details[i[i.find('_')+1:].replace('_', ' ')] += 1 + else: + details[i[i.find('_')+1:].replace('_', ' ')] = 1 + return details + #spaces were replaced by underscores, we need to undo this + elif var_name == "slime_core_harvested": + if details.startswith('"') and details.endswith('"'): + details = details[1:-1] + split_details = details.split('" | "') + else: + split_details = details.split(' ') + details = {} + for i in split_details: + if i.replace('_', ' ') in details: + details[i.replace('_', ' ')] += 1 + else: + details[i.replace('_', ' ')] = 1 + return details + +def parse_multirow(var_name, var_value, details, multirows_completed): + if var_name in ("ahelp_close", "ahelp_icissue", "ahelp_reject", "ahelp_reopen", "ahelp_resolve", "ahelp_unresolved"): + ahelp_vars = {"ahelp_close":"closed", "ahelp_icissue":"IC", "ahelp_reject":"rejected", "ahelp_reopen":"reopened", "ahelp_resolve":"resolved", "ahelp_unresolved":"unresolved"} + details = {ahelp_vars[var_name]:var_value} + del ahelp_vars[var_name] + query_where = "round_id = {0} AND (".format(query_row[2]) + for c, i in enumerate(ahelp_vars): + if c: + query_where += " OR " + query_where += "var_name = \"{0}\"".format(i) + query_where += ")" + cursor.execute("SELECT var_name, var_value FROM {0} WHERE {1}".format(current_table, query_where)) + rows = cursor.fetchall() + if rows: + for r in rows: + details[ahelp_vars[r[0]]] = r[1] + keys = list(ahelp_vars.keys()) + keys.append(var_name) + multirows_completed += keys + return details + elif var_name in ("alert_comms_blue", "alert_comms_green"): + level_vars = {"alert_comms_blue":"1", "alert_comms_green":"0"} + details = {level_vars[var_name]:var_value} + del level_vars[var_name] + i = list(level_vars)[0] + cursor.execute("SELECT var_value FROM {0} WHERE round_id = {1} AND var_name = \"{2}\"".format(current_table, query_row[2], i)) + row = cursor.fetchone() + if row: + details[level_vars[i]] = row[0] + keys = list(level_vars.keys()) + keys.append(var_name) + multirows_completed += keys + return details + elif var_name in ("alert_keycard_auth_bsa", "alert_keycard_auth_maint"): + auth_vars = {"alert_keycard_auth_maint":("emergency maintenance access", "enabled"), "alert_keycard_auth_bsa":("bluespace artillery", "unlocked")} + i = list(auth_vars[var_name]) + details = {i[0]:{i[1]:var_value}} + del auth_vars[var_name] + i = list(auth_vars)[0] + cursor.execute("SELECT var_value FROM {0} WHERE round_id = {1} AND var_name = \"{2}\"".format(current_table, query_row[2], i)) + row = cursor.fetchone() + if row: + o = list(auth_vars[i]) + details[o[0]] = {o[1]:row[0]} + keys = list(auth_vars.keys()) + keys.append(var_name) + multirows_completed += keys + return details + elif var_name in ("arcade_loss_hp_emagged", "arcade_loss_hp_normal", "arcade_loss_mana_emagged", "arcade_loss_mana_normal", "arcade_win_emagged", "arcade_win_normal"): + result_vars = {"arcade_loss_hp_emagged":("loss", "hp", "emagged"), "arcade_loss_hp_normal":("loss", "hp", "normal"), "arcade_loss_mana_emagged":("loss", "mana", "emagged"), "arcade_loss_mana_normal":("loss", "mana", "normal"), "arcade_win_emagged":("win", "emagged"), "arcade_win_normal":("win", "normal")} + i = list(result_vars[var_name]) + del result_vars[var_name] + if i[0] == "loss": + details = {i[0]:{i[1]:{i[2]:var_value}}} + else: + details = {i[0]:{i[1]:var_value}} + query_where = "round_id = {0} AND (".format(query_row[2]) + for c, i in enumerate(result_vars): + if c: + query_where += " OR " + query_where += "var_name = \"{0}\"".format(i) + query_where += ")" + cursor.execute("SELECT var_name, var_value FROM {0} WHERE {1}".format(current_table, query_where)) + rows = cursor.fetchall() + if rows: + for r in rows: + i = list(result_vars[r[0]]) + if i[0] not in details: + details[i[0]] = {} + if i[0] == "loss": + if i[1] not in details[i[0]]: + details[i[0]][i[1]] = {} + details[i[0]][i[1]][i[2]] = r[1] + else: + details[i[0]][i[1]] = r[1] + keys = list(result_vars.keys()) + keys.append(var_name) + multirows_completed += keys + return details + elif var_name in ("cyborg_engineering", "cyborg_janitor", "cyborg_medical", "cyborg_miner", "cyborg_peacekeeper", "cyborg_security", "cyborg_service", "cyborg_standard"): + module_vars = {"cyborg_engineering":"Engineering", "cyborg_janitor":"Janitor", "cyborg_medical":"Medical", "cyborg_miner":"Miner", "cyborg_peacekeeper":"Peacekeeper", "cyborg_security":"Security", "cyborg_service":"Service", "cyborg_standard":"Standard"} + details = {module_vars[var_name]:var_value} + del module_vars[var_name] + query_where = "round_id = {0} AND (".format(query_row[2]) + for c, i in enumerate(module_vars): + if c: + query_where += " OR " + query_where += "var_name = \"{0}\"".format(i) + query_where += ")" + cursor.execute("SELECT var_name, var_value FROM {0} WHERE {1}".format(current_table, query_where)) + rows = cursor.fetchall() + if rows: + for r in rows: + details[module_vars[r[0]]] = r[1] + keys = list(module_vars.keys()) + keys.append(var_name) + multirows_completed += keys + return details + elif var_name in ("escaped_human", "escaped_total", "round_end_clients", "round_end_ghosts", "survived_human", "survived_total"): + round_vars = {"escaped_human":("escapees", "human"), "escaped_total":("escapees", "total"), "round_end_clients":("clients"), "round_end_ghosts":("ghosts"), "survived_human":("survivors", "human"), "survived_total":("survivors", "total")} + if var_name in ("round_end_clients", "round_end_ghosts"): + i = round_vars[var_name] + details = {i:var_value} + else: + i = list(round_vars[var_name]) + details = {i[0]:{i[1]:var_value}} + del round_vars[var_name] + query_where = "round_id = {0} AND (".format(query_row[2]) + for c, i in enumerate(round_vars): + if c: + query_where += " OR " + query_where += "var_name = \"{0}\"".format(i) + query_where += ")" + cursor.execute("SELECT var_name, var_value FROM {0} WHERE {1}".format(current_table, query_where)) + rows = cursor.fetchall() + if rows: + for r in rows: + if r[0] in ("round_end_clients", "round_end_ghosts"): + i = round_vars[r[0]] + details[i] = r[1] + else: + i = list(round_vars[r[0]]) + if i[0] not in details: + details[i[0]] = {} + details[i[0]][i[1]] = r[1] + keys = list(round_vars.keys()) + keys.append(var_name) + multirows_completed += keys + return details + elif var_name in ("mecha_durand_created", "mecha_firefighter_created", "mecha_gygax_created", "mecha_honker_created", "mecha_odysseus_created", "mecha_phazon_created", "mecha_ripley_created"): + mecha_vars ={"mecha_durand_created":"Durand", "mecha_firefighter_created":"APLU \"Firefighter\"", "mecha_gygax_created":"Gygax", "mecha_honker_created":"H.O.N.K", "mecha_odysseus_created":"Odysseus", "mecha_phazon_created":"Phazon", "mecha_ripley_created":"APLU \"Ripley\""} + details = {mecha_vars[var_name]:var_value} + del mecha_vars[var_name] + query_where = "round_id = {0} AND (".format(query_row[2]) + for c, i in enumerate(mecha_vars): + if c: + query_where += " OR " + query_where += "var_name = \"{0}\"".format(i) + query_where += ")" + cursor.execute("SELECT var_name, var_value FROM {0} WHERE {1}".format(current_table, query_where)) + rows = cursor.fetchall() + if rows: + for r in rows: + details[mecha_vars[r[0]]] = r[1] + keys = list(mecha_vars.keys()) + keys.append(var_name) + multirows_completed += keys + return details + +def pick_parsing(var_name, var_value, details, multirows_completed): + if var_name in text_keys: + return parse_text(details) + elif var_name in amount_keys: + return var_value + elif var_name in simple_tallies: + return parse_tally(details) + elif var_name in nested_tallies: + return parse_nested(var_name, details) + elif var_name in associatives: + return parse_associative(var_name, details) + elif var_name in special_cases: + return parse_special(var_name, var_value, details) + elif var_name in multirow: + return parse_multirow(var_name, var_value, details, multirows_completed) + else: + return False + +if sys.version_info[0] < 3: + raise Exception("Python must be at least version 3 for this script.") +text_keys = ["religion_book", "religion_deity", "religion_name", "shuttle_fasttravel", "shuttle_manipulator", "shuttle_purchase", "shuttle_reason", "station_renames"] +amount_keys = ["admin_cookies_spawned", "cyborg_ais_created", "cyborg_frames_built", "cyborg_mmis_filled", "newscaster_newspapers_printed", "newscaster_stories", "nuclear_challenge_mode"] +simple_tallies = ["admin_secrets_fun_used", "admin_verb", "assembly_made", "brother_success", "cell_used", "changeling_power_purchase", "changeling_success", "chaplain_weapon", "chemical_reaction", "circuit_printed", "clockcult_scripture_recited", "contamination", "cult_runes_scribed", "engine_started", "event_admin_cancelled", "event_ran", "food_harvested", "food_made", "gun_fired", "handcuffs", "item_deconstructed", "item_printed", "jaunter", "lazarus_injector", "megafauna_kills", "mining_voucher_redeemed", "mobs_killed_mining", "object_crafted", "ore_mined", "pick_used_mining", "slime_cores_used", "surgeries_completed", "time_dilation_current", "traitor_random_uplink_items_gotten", "traitor_success", "voice_of_god", "warp_cube", "wisp_lantern", "wizard_spell_learned", "wizard_success", "zone_targeted"] +nested_tallies = ["admin_toggle", "cargo_imports", "changeling_objective", "changeling_powers", "cult_objective", "export_sold_cost", "hivelord_core", "item_used_for_combat", "job_preferences", "mining_equipment_bought", "played_url", "preferences_verb", "testmerged_prs", "traitor_objective", "traitor_uplink_items_bought", "vending_machine_usage", "wizard_objective", "wizard_spell_improved"] +associatives = ["colonies_dropped", "commendation", "high_research_level"] +special_cases = ["immortality_talisman", "newscaster_channels", "radio_usage", "shuttle_gib", "slime_babies_born", "slime_core_harvested"] +multirow = ["ahelp_close", "ahelp_icissue", "ahelp_reject", "ahelp_reopen", "ahelp_resolve", "ahelp_unresolved", "alert_comms_blue", "alert_comms_green", "alert_keycard_auth_bsa", "alert_keycard_auth_maint", "arcade_loss_hp_emagged", "arcade_loss_hp_normal", "arcade_loss_mana_emagged", "arcade_loss_mana_normal", "arcade_win_emagged", "arcade_win_normal", "cyborg_engineering", "cyborg_janitor", "cyborg_medical", "cyborg_miner", "cyborg_peacekeeper", "cyborg_security", "cyborg_service", "cyborg_standard", "escaped_human", "escaped_total", "mecha_durand_created", "mecha_firefighter_created", "mecha_gygax_created", "mecha_honker_created", "mecha_odysseus_created", "mecha_phazon_created", "mecha_ripley_created", "round_end_clients", "round_end_ghosts", "survived_human", "survived_total"] +renames = {"ahelp_stats":["ahelp_close", "ahelp_icissue", "ahelp_reject", "ahelp_reopen", "ahelp_resolve", "ahelp_unresolved"], "ais_created":["cyborg_ais_created"], "arcade_results":["arcade_loss_hp_emagged", "arcade_loss_hp_normal", "arcade_loss_mana_emagged", "arcade_loss_mana_normal", "arcade_win_emagged", "arcade_win_normal"], "cyborg_modules":["cyborg_engineering", "cyborg_janitor", "cyborg_medical", "cyborg_miner", "cyborg_peacekeeper", "cyborg_security", "cyborg_service", "cyborg_standard"], "immortality_talisman_uses":["immortality_talisman"], "keycard_auths":["alert_keycard_auth_bsa", "alert_keycard_auth_maint"], "mechas_created":["mecha_durand_created", "mecha_firefighter_created", "mecha_gygax_created", "mecha_honker_created", "mecha_odysseus_created", "mecha_phazon_created", "mecha_ripley_created"], "mmis_filled":["cyborg_mmis_filled"], "newspapers_printed":["newscaster_newspapers_printed"], "round_end_stats":["escaped_human", "escaped_total", "round_end_clients", "round_end_ghosts", "survived_human", "survived_total"], "security_level_changes":["alert_comms_blue", "alert_comms_green"]} +key_types = {"amount":["ais_created", "immortality_talisman_uses", "mmis_filled", "newspapers_printed", "admin_cookies_spawned", "cyborg_frames_built", "newscaster_stories", "nuclear_challenge_mode"], +"associative":["colonies_dropped", "commendation", "high_research_level"], +"nested tally":["admin_toggle", "arcade_results", "cargo_imports", "changeling_objective", "changeling_powers", "cult_objective", "export_sold_cost", "hivelord_core", "item_used_for_combat", "job_preferences", "keycard_auths", "mining_equipment_bought", "played_url", "preferences_verb", "round_end_stats", "testmerged_prs", "traitor_objective", "traitor_uplink_items_bought", "vending_machine_usage", "wizard_objective", "wizard_spell_improved"], +"tally":[ "admin_secrets_fun_used", "admin_verb", "ahelp_stats", "assembly_made", "brother_success", "cell_used", "changeling_power_purchase", "changeling_success", "chaplain_weapon", "chemical_reaction", "circuit_printed", "clockcult_scripture_recited", "contamination", "cult_runes_scribed", "cyborg_modules", "engine_started", "event_admin_cancelled", "event_ran", "food_harvested", "food_made", "gun_fired", "handcuffs", "item_deconstructed", "item_printed", "jaunter", "lazarus_injector", "mechas_created", "megafauna_kills", "mining_voucher_redeemed", "mobs_killed_mining", "object_crafted", "ore_mined", "pick_used_mining", "radio_usage", "security_level_changes", "shuttle_gib", "slime_babies_born", "slime_cores_used", "slime_core_harvested", "surgeries_completed", "time_dilation_current", "traitor_random_uplink_items_gotten", "traitor_success", "voice_of_god", "warp_cube", "wisp_lantern", "wizard_spell_learned", "wizard_success", "zone_targeted"], +"text":["shuttle_fasttravel", "shuttle_manipulator", "shuttle_purchase", "shuttle_reason", "newscaster_channels", "religion_book", "religion_deity", "religion_name", "station_renames"]} +multirows_completed = [] +query_values = "" +current_round = 0 +parser = argparse.ArgumentParser() +parser.add_argument("address", help="MySQL server address (use localhost for the current computer)") +parser.add_argument("username", help="MySQL login username") +parser.add_argument("password", help="MySQL login username") +parser.add_argument("database", help="Database name") +parser.add_argument("curtable", help="Name of the current feedback table (remember prefixes if you use them)") +parser.add_argument("newtable", help="Name of the new table to insert to, can't be same as the source table (remember prefixes)") +args = parser.parse_args() +db=MySQLdb.connect(host=args.address, user=args.username, passwd=args.password, db=args.database) +cursor=db.cursor() +current_table = args.curtable +new_table = args.newtable +cursor.execute("SELECT max(id) FROM {0}".format(current_table)) +query_id = cursor.fetchone() +max_id = query_id[0] +start_time = datetime.now() +print("Beginning conversion at {0}".format(start_time.strftime("%Y-%m-%d %H:%M:%S"))) +try: + for current_id in range(max_id): + if current_id % 10000 == 0: + cur_time = datetime.now() + print("Reached row ID {0} Duration: {1}".format(current_id, cur_time - start_time)) + cursor.execute("SELECT * FROM {0} WHERE id = {1}".format(current_table, current_id)) + query_row = cursor.fetchone() + if not query_row: + continue + else: + if current_round != query_row[2]: + multirows_completed.clear() + if query_values: + query_values = query_values[:-1] + query_values += ';' + cursor.execute("INSERT INTO {0} (datetime, round_id, key_name, key_type, version, json) VALUES {1}".format(new_table, query_values)) + query_values = "" + current_round = query_row[2] + if query_row[3] in multirows_completed: + continue + parsed_data = pick_parsing(query_row[3], query_row[4], query_row[5], multirows_completed) + if not parsed_data: + continue + json_data = {} + json_data["data"] = parsed_data + new_key = query_row[3] + for r in renames: + if new_key in renames[r]: + new_key = r + break + new_key_type = None + for t in key_types: + if new_key in key_types[t]: + new_key_type = t + break + dequoted_json = re.sub("\'", "\\'", json.dumps(json_data)) + query_values += "('{0}',{1},'{2}','{3}',{4},'{5}'),".format(query_row[1], query_row[2], new_key, new_key_type, 1, dequoted_json) + end_time = datetime.now() + print("Conversion completed at {0}".format(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))) + print("Script duration: {0}".format(end_time - start_time)) +except Exception as e: + end_time = datetime.now() + print("Error encountered on row ID {0} at {1}".format(current_id, datetime.now().strftime("%Y-%m-%d %H:%M:%S"))) + print("Script duration: {0}".format(end_time - start_time)) + cursor.execute("TRUNCATE {0} ".format(new_table)) + raise e +cursor.close() diff --git a/SQL/tgstation_schema.sql b/SQL/tgstation_schema.sql index 1edd5ad12b..2d914161d3 100644 --- a/SQL/tgstation_schema.sql +++ b/SQL/tgstation_schema.sql @@ -163,12 +163,13 @@ DROP TABLE IF EXISTS `feedback`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `feedback` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `time` datetime NOT NULL, - `round_id` int(8) NOT NULL, - `var_name` varchar(32) NOT NULL, - `var_value` int(16) DEFAULT NULL, - `details` text, + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `datetime` datetime NOT NULL, + `round_id` int(11) unsigned NOT NULL, + `key_name` varchar(32) NOT NULL, + `key_type` enum('text', 'amount', 'tally', 'nested tally', 'associative') NOT NULL, + `version` tinyint(3) unsigned NOT NULL, + `json` json NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/SQL/tgstation_schema_prefixed.sql b/SQL/tgstation_schema_prefixed.sql index 72045e50fb..2d44c8eac0 100644 --- a/SQL/tgstation_schema_prefixed.sql +++ b/SQL/tgstation_schema_prefixed.sql @@ -163,12 +163,13 @@ DROP TABLE IF EXISTS `SS13_feedback`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `SS13_feedback` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `time` datetime NOT NULL, - `round_id` int(8) NOT NULL, - `var_name` varchar(32) NOT NULL, - `var_value` int(16) DEFAULT NULL, - `details` text, + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `datetime` datetime NOT NULL, + `round_id` int(11) unsigned NOT NULL, + `key_name` varchar(32) NOT NULL, + `version` tinyint(3) unsigned NOT NULL, + `key_type` enum('text', 'amount', 'tally', 'nested tally', 'associative') NOT NULL, + `json` json NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/code/_compile_options.dm b/code/_compile_options.dm index 1f20614c17..a0b13211f6 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -79,5 +79,5 @@ //Update this whenever the db schema changes //make sure you add an update to the schema_version stable in the db changelog -#define DB_MAJOR_VERSION 3 -#define DB_MINOR_VERSION 4 +#define DB_MAJOR_VERSION 4 +#define DB_MINOR_VERSION 0 diff --git a/code/controllers/admin.dm b/code/controllers/admin.dm index fa10d398dd..19fef28597 100644 --- a/code/controllers/admin.dm +++ b/code/controllers/admin.dm @@ -45,9 +45,9 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick) switch(controller) if("Master") Recreate_MC() - SSblackbox.add_details("admin_verb","Restart Master Controller") + SSblackbox.record_feedback("tally", "admin_verb", 1, "Restart Master Controller") if("Failsafe") new /datum/controller/failsafe() - SSblackbox.add_details("admin_verb","Restart Failsafe Controller") + SSblackbox.record_feedback("tally", "admin_verb", 1, "Restart Failsafe Controller") message_admins("Admin [key_name_admin(usr)] has restarted the [controller] controller.") diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm index fe7cf33070..f7abc72cbd 100644 --- a/code/controllers/subsystem/blackbox.dm +++ b/code/controllers/subsystem/blackbox.dm @@ -5,21 +5,11 @@ SUBSYSTEM_DEF(blackbox) runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME init_order = INIT_ORDER_BLACKBOX - var/list/msg_common = list() - var/list/msg_science = list() - var/list/msg_command = list() - var/list/msg_medical = list() - var/list/msg_engineering = list() - var/list/msg_security = list() - var/list/msg_deathsquad = list() - var/list/msg_syndicate = list() - var/list/msg_service = list() - var/list/msg_cargo = list() - var/list/msg_other = list() - var/list/feedback = list() //list of datum/feedback_variable var/triggertime = 0 var/sealed = FALSE //time to stop tracking stats? + var/list/research_levels = list() //list of highest tech levels attained that isn't lost lost by destruction of RD computers + var/list/versions = list() //associative list of any feedback variables that have had their format changed since creation and their current version, remember to update this /datum/controller/subsystem/blackbox/Initialize() @@ -44,20 +34,7 @@ SUBSYSTEM_DEF(blackbox) /datum/controller/subsystem/blackbox/Recover() - msg_common = SSblackbox.msg_common - msg_science = SSblackbox.msg_science - msg_command = SSblackbox.msg_command - msg_medical = SSblackbox.msg_medical - msg_engineering = SSblackbox.msg_engineering - msg_security = SSblackbox.msg_security - msg_deathsquad = SSblackbox.msg_deathsquad - msg_syndicate = SSblackbox.msg_syndicate - msg_service = SSblackbox.msg_service - msg_cargo = SSblackbox.msg_cargo - msg_other = SSblackbox.msg_other - feedback = SSblackbox.feedback - sealed = SSblackbox.sealed //no touchie @@ -71,32 +48,14 @@ SUBSYSTEM_DEF(blackbox) /datum/controller/subsystem/blackbox/Shutdown() sealed = FALSE - set_val("ahelp_unresolved", GLOB.ahelp_tickets.active_tickets.len) - - var/pda_msg_amt = 0 - var/rc_msg_amt = 0 - + record_feedback("tally", "ahelp_stats", GLOB.ahelp_tickets.active_tickets.len, "unresolved") for (var/obj/machinery/message_server/MS in GLOB.message_servers) - if (MS.pda_msgs.len > pda_msg_amt) - pda_msg_amt = MS.pda_msgs.len - if (MS.rc_msgs.len > rc_msg_amt) - rc_msg_amt = MS.rc_msgs.len - - set_details("radio_usage","") - - add_details("radio_usage","COM-[msg_common.len]") - add_details("radio_usage","SCI-[msg_science.len]") - add_details("radio_usage","HEA-[msg_command.len]") - add_details("radio_usage","MED-[msg_medical.len]") - add_details("radio_usage","ENG-[msg_engineering.len]") - add_details("radio_usage","SEC-[msg_security.len]") - add_details("radio_usage","DTH-[msg_deathsquad.len]") - add_details("radio_usage","SYN-[msg_syndicate.len]") - add_details("radio_usage","SRV-[msg_service.len]") - add_details("radio_usage","CAR-[msg_cargo.len]") - add_details("radio_usage","OTH-[msg_other.len]") - add_details("radio_usage","PDA-[pda_msg_amt]") - add_details("radio_usage","RC-[rc_msg_amt]") + if (MS.pda_msgs.len) + record_feedback("tally", "radio_usage", MS.pda_msgs.len, "PDA") + if (MS.rc_msgs.len) + record_feedback("tally", "radio_usage", MS.rc_msgs.len, "request console") + if(research_levels.len) + SSblackbox.record_feedback("associative", "high_research_level", 1, research_levels) if (!SSdbcore.Connect()) return @@ -104,79 +63,182 @@ SUBSYSTEM_DEF(blackbox) var/list/sqlrowlist = list() for (var/datum/feedback_variable/FV in feedback) - sqlrowlist += list(list("time" = "Now()", "round_id" = GLOB.round_id, "var_name" = "'[sanitizeSQL(FV.get_variable())]'", "var_value" = FV.get_value(), "details" = "'[sanitizeSQL(FV.get_details())]'")) + var/sqlversion = 1 + if(FV.key in versions) + sqlversion = versions[FV.key] + sqlrowlist += list(list("datetime" = "Now()", "round_id" = GLOB.round_id, "key_name" = "'[sanitizeSQL(FV.key)]'", "key_type" = "'[FV.key_type]'", "version" = "[sqlversion]", "json" = "'[sanitizeSQL(json_encode(FV.json))]'")) if (!length(sqlrowlist)) return SSdbcore.MassInsert(format_table_name("feedback"), sqlrowlist, ignore_errors = TRUE, delayed = TRUE) +/datum/controller/subsystem/blackbox/proc/Seal() + if(sealed) + return + if(IsAdminAdvancedProcCall()) + message_admins("[key_name_admin(usr)] sealed the blackbox!") + log_game("Blackbox sealed[IsAdminAdvancedProcCall() ? " by [key_name(usr)]" : ""].") + sealed = TRUE -/datum/controller/subsystem/blackbox/proc/LogBroadcast(blackbox_msg, freq) +/datum/controller/subsystem/blackbox/proc/log_research(tech, level) + if(!(tech in research_levels) || research_levels[tech] < level) + research_levels[tech] = level + +/datum/controller/subsystem/blackbox/proc/LogBroadcast(freq) if(sealed) return switch(freq) if(1459) - msg_common += blackbox_msg - if(1351) - msg_science += blackbox_msg - if(1353) - msg_command += blackbox_msg - if(1355) - msg_medical += blackbox_msg - if(1357) - msg_engineering += blackbox_msg - if(1359) - msg_security += blackbox_msg - if(1441) - msg_deathsquad += blackbox_msg - if(1213) - msg_syndicate += blackbox_msg - if(1349) - msg_service += blackbox_msg - if(1347) - msg_cargo += blackbox_msg + record_feedback("tally", "radio_usage", 1, "common") + if(GLOB.SCI_FREQ) + record_feedback("tally", "radio_usage", 1, "science") + if(GLOB.COMM_FREQ) + record_feedback("tally", "radio_usage", 1, "command") + if(GLOB.MED_FREQ) + record_feedback("tally", "radio_usage", 1, "medical") + if(GLOB.ENG_FREQ) + record_feedback("tally", "radio_usage", 1, "engineering") + if(GLOB.SEC_FREQ) + record_feedback("tally", "radio_usage", 1, "security") + if(GLOB.SYND_FREQ) + record_feedback("tally", "radio_usage", 1, "syndicate") + if(GLOB.SERV_FREQ) + record_feedback("tally", "radio_usage", 1, "service") + if(GLOB.SUPP_FREQ) + record_feedback("tally", "radio_usage", 1, "supply") + if(GLOB.CENTCOM_FREQ) + record_feedback("tally", "radio_usage", 1, "centcom") + if(GLOB.AIPRIV_FREQ) + record_feedback("tally", "radio_usage", 1, "ai private") + if(GLOB.REDTEAM_FREQ) + record_feedback("tally", "radio_usage", 1, "CTF red team") + if(GLOB.BLUETEAM_FREQ) + record_feedback("tally", "radio_usage", 1, "CTF blue team") else - msg_other += blackbox_msg + record_feedback("tally", "radio_usage", 1, "other") -/datum/controller/subsystem/blackbox/proc/find_feedback_datum(variable) +/datum/controller/subsystem/blackbox/proc/find_feedback_datum(key, key_type) for(var/datum/feedback_variable/FV in feedback) - if(FV.get_variable() == variable) + if(FV.key == key) return FV - var/datum/feedback_variable/FV = new(variable) + var/datum/feedback_variable/FV = new(key, key_type) feedback += FV return FV +/* +feedback data can be recorded in 5 formats: +"text" + used for simple single-string records i.e. the current map + further calls to the same key will append saved data unless the overwrite argument is true or it already exists + when encoded calls made with overwrite will lack square brackets + calls: SSblackbox.record_feedback("text", "example", 1, "sample text") + SSblackbox.record_feedback("text", "example", 1, "other text") + json: {"data":["sample text","other text"]} +"amount" + used to record simple counts of data i.e. the number of ahelps recieved + further calls to the same key will add or subtract (if increment argument is a negative) from the saved amount + calls: SSblackbox.record_feedback("amount", "example", 8) + SSblackbox.record_feedback("amount", "example", 2) + json: {"data":10} +"tally" + used to track the number of occurances of multiple related values i.e. how many times each type of gun is fired + further calls to the same key will: + add or subtract from the saved value of the data key if it already exists + append the key and it's value if it doesn't exist + calls: SSblackbox.record_feedback("tally", "example", 1, "sample data") + SSblackbox.record_feedback("tally", "example", 4, "sample data") + SSblackbox.record_feedback("tally", "example", 2, "other data") + json: {"data":{"sample data":5,"other data":2}} +"nested tally" + used to track the number of occurances of structured semi-relational values i.e. the results of arcade machines + similar to running total, but related values are nested in a multi-dimensional array built + the final element in the data list is used as the tracking key, all prior elements are used for nesting + further calls to the same key will: + add or subtract from the saved value of the data key if it already exists in the same multi-dimensional position + append the key and it's value if it doesn't exist + calls: SSblackbox.record_feedback("nested tally", "example", 1, list("fruit", "orange", "apricot")) + SSblackbox.record_feedback("nested tally", "example", 2, list("fruit", "orange", "orange")) + SSblackbox.record_feedback("nested tally", "example", 3, list("fruit", "orange", "apricot")) + SSblackbox.record_feedback("nested tally", "example", 10, list("fruit", "red", "apple")) + SSblackbox.record_feedback("nested tally", "example", 1, list("vegetable", "orange", "carrot")) + json: {"data":{"fruit":{"orange":{"apricot":4,"orange":2},"red":{"apple":10}},"vegetable":{"orange":{"carrot":1}}}} + tracking values associated with a number can't merge with a nesting value, trying to do so will append the list + call: SSblackbox.record_feedback("nested tally", "example", 3, list("fruit", "orange")) + json: {"data":{"fruit":{"orange":{"apricot":4,"orange":2},"red":{"apple":10},"orange":3},"vegetable":{"orange":{"carrot":1}}}} +"associative" + used to record text that's associated with a value i.e. coordinates + further calls to the same key will append a new list to existing data + calls: SSblackbox.record_feedback("associative", "example", 1, list("text" = "example", "path" = /obj/item, "number" = 4)) + SSblackbox.record_feedback("associative", "example", 1, list("number" = 7, "text" = "example", "other text" = "sample")) + json: {"data":{"1":{"text":"example","path":"/obj/item","number":"4"},"2":{"number":"7","text":"example","other text":"sample"}}} -/datum/controller/subsystem/blackbox/proc/set_val(variable, value) - if(sealed) +Versioning + If the format of a feedback variable is ever changed, i.e. how many levels of nesting are used or a new type of data is added to it, add it to the versions list + When feedback is being saved if a key is in the versions list the value specified there will be used, otherwise all keys are assumed to be version = 1 + versions is an associative list, remember to use the same string in it as defined on a feedback variable, example: + list/versions = list("round_end_stats" = 4, + "admin_toggle" = 2, + "gun_fired" = 2) +*/ +/datum/controller/subsystem/blackbox/proc/record_feedback(key_type, key, increment, data, overwrite) + if(sealed || !key_type || !istext(key) || !isnum(increment || !data)) return - var/datum/feedback_variable/FV = find_feedback_datum(variable) - FV.set_value(value) + var/datum/feedback_variable/FV = find_feedback_datum(key, key_type) + switch(key_type) + if("text") + if(!istext(data)) + return + if(!islist(FV.json["data"])) + FV.json["data"] = list() + if(overwrite) + FV.json["data"] = data + else + FV.json["data"] |= data + if("amount") + FV.json["data"] += increment + if("tally") + if(!islist(FV.json["data"])) + FV.json["data"] = list() + FV.json["data"]["[data]"] += increment + if("nested tally") + if(!islist(data)) + return + if(!islist(FV.json["data"])) + FV.json["data"] = list() + FV.json["data"] = record_feedback_recurse_list(FV.json["data"], data, increment) + if("associative") + if(!islist(data)) + return + if(!islist(FV.json["data"])) + FV.json["data"] = list() + var/pos = length(FV.json["data"]) + 1 + FV.json["data"]["[pos]"] = list() //in 512 "pos" can be replaced with "[FV.json["data"].len+1]" + for(var/i in data) + FV.json["data"]["[pos]"]["[i]"] = "[data[i]]" //and here with "[FV.json["data"].len]" -/datum/controller/subsystem/blackbox/proc/inc(variable, value) - if(sealed) - return - var/datum/feedback_variable/FV = find_feedback_datum(variable) - FV.inc(value) +/datum/controller/subsystem/blackbox/proc/record_feedback_recurse_list(list/L, list/key_list, increment, depth = 1) + if(depth == key_list.len) + if(L.Find(key_list[depth])) + L["[key_list[depth]]"] += increment + else + var/list/LFI = list(key_list[depth] = increment) + L += LFI + else + if(!L.Find(key_list[depth])) + var/list/LGD = list(key_list[depth] = list()) + L += LGD + L["[key_list[depth-1]]"] = .(L["[key_list[depth]]"], key_list, increment, ++depth) + return L -/datum/controller/subsystem/blackbox/proc/dec(variable,value) - if(sealed) - return - var/datum/feedback_variable/FV = find_feedback_datum(variable) - FV.dec(value) +/datum/feedback_variable + var/key + var/key_type + var/list/json = list() -/datum/controller/subsystem/blackbox/proc/set_details(variable,details) - if(sealed) - return - var/datum/feedback_variable/FV = find_feedback_datum(variable) - FV.set_details(details) - -/datum/controller/subsystem/blackbox/proc/add_details(variable,details) - if(sealed) - return - var/datum/feedback_variable/FV = find_feedback_datum(variable) - FV.add_details(details) +/datum/feedback_variable/New(new_key, new_key_type) + key = new_key + key_type = new_key_type /datum/controller/subsystem/blackbox/proc/ReportDeath(mob/living/L) if(sealed) @@ -208,69 +270,3 @@ SUBSYSTEM_DEF(blackbox) var/map = sanitizeSQL(SSmapping.config.map_name) var/datum/DBQuery/query_report_death = SSdbcore.NewQuery("INSERT INTO [format_table_name("death")] (pod, x_coord, y_coord, z_coord, mapname, server_ip, server_port, round_id, tod, job, special, name, byondkey, laname, lakey, bruteloss, fireloss, brainloss, oxyloss, toxloss, cloneloss, staminaloss, last_words, suicide) VALUES ('[sqlpod]', '[x_coord]', '[y_coord]', '[z_coord]', '[map]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]', [GLOB.round_id], '[SQLtime()]', '[sqljob]', '[sqlspecial]', '[sqlname]', '[sqlkey]', '[laname]', '[lakey]', [sqlbrute], [sqlfire], [sqlbrain], [sqloxy], [sqltox], [sqlclone], [sqlstamina], '[last_words]', [suicide])") query_report_death.Execute() - -/datum/controller/subsystem/blackbox/proc/Seal() - if(sealed) - return - if(IsAdminAdvancedProcCall()) - var/msg = "[key_name_admin(usr)] sealed the blackbox!" - message_admins(msg) - log_game("Blackbox sealed[IsAdminAdvancedProcCall() ? " by [key_name(usr)]" : ""].") - sealed = TRUE - -//feedback variable datum, for storing all kinds of data -/datum/feedback_variable - var/variable - var/value - var/list/details - -/datum/feedback_variable/New(param_variable, param_value = 0) - variable = param_variable - value = param_value - -/datum/feedback_variable/proc/inc(num = 1) - if (isnum(value)) - value += num - else - value = text2num(value) - if (isnum(value)) - value += num - else - value = num - -/datum/feedback_variable/proc/dec(num = 1) - if (isnum(value)) - value -= num - else - value = text2num(value) - if (isnum(value)) - value -= num - else - value = -num - -/datum/feedback_variable/proc/set_value(num) - if (isnum(num)) - value = num - -/datum/feedback_variable/proc/get_value() - if (!isnum(value)) - return 0 - return value - -/datum/feedback_variable/proc/get_variable() - return variable - -/datum/feedback_variable/proc/set_details(deets) - details = list("\"[deets]\"") - -/datum/feedback_variable/proc/add_details(deets) - if (!details) - set_details(deets) - else - details += "\"[deets]\"" - -/datum/feedback_variable/proc/get_details() - return details ? details.Join(" | ") : null - -/datum/feedback_variable/proc/get_parsed() - return list(variable,value,details.Join(" | ")) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 5645f0527f..f87b672ae0 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -462,36 +462,37 @@ SUBSYSTEM_DEF(job) /datum/controller/subsystem/job/proc/HandleFeedbackGathering() for(var/datum/job/job in occupations) - var/tmp_str = "|[job.title]|" - - var/level1 = 0 //high - var/level2 = 0 //medium - var/level3 = 0 //low - var/level4 = 0 //never - var/level5 = 0 //banned - var/level6 = 0 //account too young + var/high = 0 //high + var/medium = 0 //medium + var/low = 0 //low + var/never = 0 //never + var/banned = 0 //banned + var/young = 0 //account too young for(var/mob/dead/new_player/player in GLOB.player_list) if(!(player.ready == PLAYER_READY_TO_PLAY && player.mind && !player.mind.assigned_role)) continue //This player is not ready if(jobban_isbanned(player, job.title)) - level5++ + banned++ continue if(!job.player_old_enough(player.client)) - level6++ + young++ continue if(job.required_playtime_remaining(player.client)) - level6++ + young++ continue if(player.client.prefs.GetJobDepartment(job, 1) & job.flag) - level1++ + high++ else if(player.client.prefs.GetJobDepartment(job, 2) & job.flag) - level2++ + medium++ else if(player.client.prefs.GetJobDepartment(job, 3) & job.flag) - level3++ - else level4++ //not selected - - tmp_str += "HIGH=[level1]|MEDIUM=[level2]|LOW=[level3]|NEVER=[level4]|BANNED=[level5]|YOUNG=[level6]|-" - SSblackbox.add_details("job_preferences",tmp_str) + low++ + else never++ //not selected + SSblackbox.record_feedback("nested tally", "job_preferences", high, list("[job.title]", "high")) + SSblackbox.record_feedback("nested tally", "job_preferences", medium, list("[job.title]", "medium")) + SSblackbox.record_feedback("nested tally", "job_preferences", low, list("[job.title]", "low")) + SSblackbox.record_feedback("nested tally", "job_preferences", never, list("[job.title]", "never")) + SSblackbox.record_feedback("nested tally", "job_preferences", banned, list("[job.title]", "banned")) + SSblackbox.record_feedback("nested tally", "job_preferences", young, list("[job.title]", "young")) /datum/controller/subsystem/job/proc/PopcapReached() var/hpc = CONFIG_GET(number/hard_popcap) diff --git a/code/controllers/subsystem/radiation.dm b/code/controllers/subsystem/radiation.dm index 7883bf1d68..0b69e003fc 100644 --- a/code/controllers/subsystem/radiation.dm +++ b/code/controllers/subsystem/radiation.dm @@ -13,6 +13,6 @@ PROCESSING_SUBSYSTEM_DEF(radiation) return warned_atoms[ref] = TRUE var/atom/master = contamination.parent - SSblackbox.add_details("contaminated", "[master.type]") + SSblackbox.record_feedback("tally", "contaminated", 1, master.type) var/msg = "has become contamintaed with enough radiation to contaminate other objects. || Source: [contamination.source] || Strength: [contamination.strength]" master.investigate_log(msg, INVESTIGATE_RADIATION) \ No newline at end of file diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 5fa770179e..352492f835 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -167,7 +167,7 @@ SUBSYSTEM_DEF(shuttle) var/mob/M = I if(M.stat != DEAD) ++alive - + var/total = GLOB.joined_player_list.len if(alive / total <= threshold) @@ -247,7 +247,7 @@ SUBSYSTEM_DEF(shuttle) log_game("[key_name(user)] has called the shuttle.") if(call_reason) - SSblackbox.add_details("shuttle_reason", call_reason) + SSblackbox.record_feedback("text", "shuttle_reason", 1, "[call_reason]") log_game("Shuttle call reason: [call_reason]") message_admins("[key_name_admin(user)] has called the shuttle. (TRIGGER CENTCOM RECALL)") diff --git a/code/controllers/subsystem/time_track.dm b/code/controllers/subsystem/time_track.dm index fecba4769c..5ccfb8af19 100644 --- a/code/controllers/subsystem/time_track.dm +++ b/code/controllers/subsystem/time_track.dm @@ -35,4 +35,4 @@ SUBSYSTEM_DEF(time_track) last_tick_realtime = current_realtime last_tick_byond_time = current_byondtime last_tick_tickcount = current_tickcount - SSblackbox.add_details("time_dilation_current", time_dilation_current) \ No newline at end of file + SSblackbox.record_feedback("tally", "time_dilation_current", 1, time_dilation_current) diff --git a/code/datums/antagonists/changeling.dm b/code/datums/antagonists/changeling.dm index d72cb64b81..5ba398af5e 100644 --- a/code/datums/antagonists/changeling.dm +++ b/code/datums/antagonists/changeling.dm @@ -179,7 +179,7 @@ to_chat(owner.current, "We have removed our evolutions from this form, and are now ready to readapt.") reset_powers() canrespec = 0 - SSblackbox.add_details("changeling_power_purchase","Readapt") + SSblackbox.record_feedback("tally", "changeling_power_purchase", 1, "Readapt") return 1 else to_chat(owner.current, "You lack the power to readapt your evolutions!") @@ -279,7 +279,7 @@ if(stored_profiles.len > dna_max) if(!push_out_profile()) return - + if(!first_prof) first_prof = prof diff --git a/code/datums/components/archaeology.dm b/code/datums/components/archaeology.dm index 7c61613c41..d079950345 100644 --- a/code/datums/components/archaeology.dm +++ b/code/datums/components/archaeology.dm @@ -38,7 +38,7 @@ to_chat(user, "You dig a hole.") gets_dug() dug = TRUE - SSblackbox.add_details("pick_used_mining",W.type) + SSblackbox.record_feedback("tally", "pick_used_mining", 1, W.type) return TRUE return FALSE diff --git a/code/datums/helper_datums/construction_datum.dm b/code/datums/helper_datums/construction_datum.dm index 7768a929da..313a93943c 100644 --- a/code/datums/helper_datums/construction_datum.dm +++ b/code/datums/helper_datums/construction_datum.dm @@ -68,6 +68,7 @@ var/obj/item/oldcell = locate (/obj/item/stock_parts/cell) in m QDEL_NULL(oldcell) m.CheckParts(holder.contents) + SSblackbox.record_feedback("tally", "mechas_created", 1, m.name) QDEL_NULL(holder) /datum/construction/proc/set_desc(index as num) diff --git a/code/datums/helper_datums/getrev.dm b/code/datums/helper_datums/getrev.dm index df22be910a..ec39bcec67 100644 --- a/code/datums/helper_datums/getrev.dm +++ b/code/datums/helper_datums/getrev.dm @@ -23,7 +23,7 @@ if(line) var/tmcommit = testmerge[line]["commit"] log_world("Test merge active of PR #[line] commit [tmcommit]") - SSblackbox.add_details("testmerged_prs","[line]|[tmcommit]") + SSblackbox.record_feedback("nested tally", "testmerged_prs", 1, list("[line]", "[tmcommit]")) log_world("Based off origin/master commit [originmastercommit]") else log_world(originmastercommit) diff --git a/code/game/gamemodes/brother/traitor_bro.dm b/code/game/gamemodes/brother/traitor_bro.dm index ff83a3764c..be662ed35e 100644 --- a/code/game/gamemodes/brother/traitor_bro.dm +++ b/code/game/gamemodes/brother/traitor_bro.dm @@ -1,6 +1,6 @@ /datum/objective_team/brother_team - name = "brotherhood" - member_name = "blood brother" + name = "brotherhood" + member_name = "blood brother" var/list/objectives = list() var/meeting_area @@ -71,7 +71,7 @@ num_teams = max(1, round(num_players() / bsc)) for(var/j = 1 to num_teams) - if(possible_brothers.len < min_team_size || antag_candidates.len <= required_enemies) + if(possible_brothers.len < min_team_size || antag_candidates.len <= required_enemies) break var/datum/objective_team/brother_team/team = new var/team_size = prob(10) ? min(3, possible_brothers.len) : 2 @@ -114,18 +114,19 @@ for(var/datum/objective/objective in team.objectives) if(objective.check_completion()) text += "
Objective #[objective_count]: [objective.explanation_text] Success!" - SSblackbox.add_details("traitor_objective","[objective.type]|SUCCESS") + SSblackbox.record_feedback("nested tally", "traitor_objective", 1, list("[objective.type]", "SUCCESS")) else text += "
Objective #[objective_count]: [objective.explanation_text] Fail." - SSblackbox.add_details("traitor_objective","[objective.type]|FAIL") + SSblackbox.record_feedback("nested tally", "traitor_objective", 1, list("[objective.type]", "FAIL")) win = FALSE objective_count++ if(win) text += "
The blood brothers were successful!" - SSblackbox.add_details("brother_success","SUCCESS") + SSblackbox.record_feedback("tally", "brother_success", 1, "SUCCESS") else text += "
The blood brothers have failed!" - SSblackbox.add_details("brother_success","FAIL") + SSblackbox.record_feedback("tally", "brother_success", 1, "FAIL") + text += "
" to_chat(world, text) diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index e84477b2cb..914937e9e3 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -113,6 +113,7 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th if(changeling.objectives.len) var/count = 1 for(var/datum/objective/objective in changeling.objectives) +<<<<<<< HEAD if(istype(objective, /datum/objective/crew)) if(objective.check_completion()) text += "
Objective #[count]: [objective.explanation_text] Success! (Optional)" @@ -128,14 +129,23 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th text += "
Objective #[count]: [objective.explanation_text] Fail." SSblackbox.add_details("changeling_objective","[objective.type]|FAIL") changelingwin = 0 +======= + if(objective.check_completion()) + text += "
Objective #[count]: [objective.explanation_text] Success!" + SSblackbox.record_feedback("nested tally", "changeling_objective", 1, list("[objective.type]", "SUCCESS")) + else + text += "
Objective #[count]: [objective.explanation_text] Fail." + SSblackbox.record_feedback("nested tally", "changeling_objective", 1, list("[objective.type]", "FAIL")) + changelingwin = 0 +>>>>>>> 8b19b49... JSON feedback (#32188) count++ if(changelingwin) text += "
The changeling was successful!" - SSblackbox.add_details("changeling_success","SUCCESS") + SSblackbox.record_feedback("tally", "changeling_success", 1, "SUCCESS") else text += "
The changeling has failed." - SSblackbox.add_details("changeling_success","FAIL") + SSblackbox.record_feedback("tally", "changeling_success", 1, "FAIL") text += "
" to_chat(world, text) diff --git a/code/game/gamemodes/changeling/changeling_power.dm b/code/game/gamemodes/changeling/changeling_power.dm index ee6a0bee8c..5b07e0e369 100644 --- a/code/game/gamemodes/changeling/changeling_power.dm +++ b/code/game/gamemodes/changeling/changeling_power.dm @@ -19,7 +19,7 @@ /obj/effect/proc_holder/changeling/proc/on_purchase(mob/user, is_respec) if(!is_respec) - SSblackbox.add_details("changeling_power_purchase",name) + SSblackbox.record_feedback("tally", "changeling_power_purchase", 1, name) /obj/effect/proc_holder/changeling/proc/on_refund(mob/user) return @@ -35,7 +35,7 @@ return var/datum/antagonist/changeling/c = user.mind.has_antag_datum(/datum/antagonist/changeling) if(sting_action(user, target)) - SSblackbox.add_details("changeling_powers",name) + SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]")) sting_feedback(user, target) c.chem_charges -= chemical_cost diff --git a/code/game/gamemodes/changeling/powers/absorb.dm b/code/game/gamemodes/changeling/powers/absorb.dm index d7ef971406..4584dc5a67 100644 --- a/code/game/gamemodes/changeling/powers/absorb.dm +++ b/code/game/gamemodes/changeling/powers/absorb.dm @@ -41,13 +41,13 @@ to_chat(target, "You feel a sharp stabbing pain!") target.take_overall_damage(40) - SSblackbox.add_details("changeling_powers","Absorb DNA|[i]") + SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("Absorb DNA", "[i]")) if(!do_mob(user, target, 150)) to_chat(user, "Our absorption of [target] has been interrupted!") changeling.isabsorbing = 0 return - SSblackbox.add_details("changeling_powers","Absorb DNA|4") + SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("Absorb DNA", "4")) user.visible_message("[user] sucks the fluids from [target]!", "We have absorbed [target].") to_chat(target, "You are absorbed by the changeling!") diff --git a/code/game/gamemodes/changeling/powers/linglink.dm b/code/game/gamemodes/changeling/powers/linglink.dm index 7a93306785..f5143f1d04 100644 --- a/code/game/gamemodes/changeling/powers/linglink.dm +++ b/code/game/gamemodes/changeling/powers/linglink.dm @@ -56,7 +56,7 @@ to_chat(target, "You can now communicate in the changeling hivemind, say \":g message\" to communicate!") target.reagents.add_reagent("salbutamol", 40) // So they don't choke to death while you interrogate them sleep(1800) - SSblackbox.add_details("changeling_powers","Hivemind Link|[i]") + SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]", "[i]")) if(!do_mob(user, target, 20)) to_chat(user, "Our link with [target] has ended!") changeling.islinking = 0 diff --git a/code/game/gamemodes/clock_cult/clock_scripture.dm b/code/game/gamemodes/clock_cult/clock_scripture.dm index 8a019ed74b..94983923f9 100644 --- a/code/game/gamemodes/clock_cult/clock_scripture.dm +++ b/code/game/gamemodes/clock_cult/clock_scripture.dm @@ -66,7 +66,7 @@ Applications: 8 servants, 3 caches, and 100 CV else successful = TRUE if(slab && !slab.no_cost && !GLOB.ratvar_awakens) //if the slab exists and isn't debug and ratvar isn't up, log the scripture as being used - SSblackbox.add_details("clockcult_scripture_recited", name) + SSblackbox.record_feedback("tally", "clockcult_scripture_recited", 1, name) if(slab) slab.busy = null post_recital() diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 1391f1dbb5..f20dd25802 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -237,27 +237,27 @@ if("survive") if(!check_survive()) explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. ([acolytes_survived] escaped) Success!" - SSblackbox.add_details("cult_objective","cult_survive|SUCCESS|[acolytes_needed]") + SSblackbox.record_feedback("nested tally", "cult_objective", 1, list("cult_survive", "SUCCESS")) SSticker.news_report = CULT_ESCAPE else explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. ([acolytes_survived] escaped) Fail." - SSblackbox.add_details("cult_objective","cult_survive|FAIL|[acolytes_needed]") + SSblackbox.record_feedback("nested tally", "cult_objective", 1, list("cult_survive", "FAIL")) SSticker.news_report = CULT_FAILURE if("sacrifice") if(GLOB.sac_complete) explanation = "Sacrifice [GLOB.sac_mind], the [GLOB.sac_mind.assigned_role]. Success!" - SSblackbox.add_details("cult_objective","cult_sacrifice|SUCCESS") + SSblackbox.record_feedback("nested tally", "cult_objective", 1, list("cult_sacrifice", "SUCCESS")) else explanation = "Sacrifice [GLOB.sac_mind], the [GLOB.sac_mind.assigned_role]. Fail." - SSblackbox.add_details("cult_objective","cult_sacrifice|FAIL") + SSblackbox.record_feedback("nested tally", "cult_objective", 1, list("cult_sacrifice", "FAIL")) if("eldergod") if(!eldergod) explanation = "Summon Nar-Sie. The summoning can only be accomplished in [english_list(GLOB.summon_spots)].Success!" - SSblackbox.add_details("cult_objective","cult_narsie|SUCCESS") + SSblackbox.record_feedback("nested tally", "cult_objective", 1, list("cult_narsie", "SUCCESS")) SSticker.news_report = CULT_SUMMON else explanation = "Summon Nar-Sie. The summoning can only be accomplished in [english_list(GLOB.summon_spots)]Fail." - SSblackbox.add_details("cult_objective","cult_narsie|FAIL") + SSblackbox.record_feedback("nested tally", "cult_objective", 1, list("cult_narsie", "FAIL")) SSticker.news_report = CULT_FAILURE text += "
Objective #[obj_count]: [explanation]" @@ -297,18 +297,18 @@ if(GLOB.sac_mind) if(GLOB.sac_complete) explanation = "Sacrifice [GLOB.sac_mind], the [GLOB.sac_mind.assigned_role]. Success!" - SSblackbox.add_details("cult_objective","cult_sacrifice|SUCCESS") + SSblackbox.record_feedback("nested tally", "cult_objective", 1, list("cult_sacrifice", "SUCCESS")) else explanation = "Sacrifice [GLOB.sac_mind], the [GLOB.sac_mind.assigned_role]. Fail." - SSblackbox.add_details("cult_objective","cult_sacrifice|FAIL") + SSblackbox.record_feedback("nested tally", "cult_objective", 1, list("cult_sacrifice", "FAIL")) if("eldergod") if(!eldergod) explanation = "Summon Nar-Sie. Success!" - SSblackbox.add_details("cult_objective","cult_narsie|SUCCESS") + SSblackbox.record_feedback("nested tally", "cult_objective", 1, list("cult_narsie", "SUCCESS")) SSticker.news_report = CULT_SUMMON else explanation = "Summon Nar-Sie. Fail." - SSblackbox.add_details("cult_objective","cult_narsie|FAIL") + SSblackbox.record_feedback("nested tally", "cult_objective", 1, list("cult_narsie", "FAIL")) SSticker.news_report = CULT_FAILURE text += "
Objective #[obj_count]: [explanation]" to_chat(world, text) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 4dd5f70731..2adaa57a2f 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -246,7 +246,7 @@ This file contains the arcane tome files. var/obj/effect/rune/R = new rune_to_scribe(Turf, chosen_keyword) R.add_mob_blood(user) to_chat(user, "The [lowertext(R.cultist_name)] rune [R.cultist_desc]") - SSblackbox.add_details("cult_runes_scribed", R.cultist_name) + SSblackbox.record_feedback("tally", "cult_runes_scribed", 1, R.cultist_name) /obj/item/tome/proc/check_rune_turf(turf/T, mob/user) if(isspaceturf(T)) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 7909b0677f..50bde92f9e 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -266,18 +266,19 @@ if(isobserver(M)) ghosts++ - if(clients > 0) - SSblackbox.set_val("round_end_clients",clients) - if(ghosts > 0) - SSblackbox.set_val("round_end_ghosts",ghosts) - if(surviving_humans > 0) - SSblackbox.set_val("survived_human",surviving_humans) - if(surviving_total > 0) - SSblackbox.set_val("survived_total",surviving_total) - if(escaped_humans > 0) - SSblackbox.set_val("escaped_human",escaped_humans) - if(escaped_total > 0) - SSblackbox.set_val("escaped_total",escaped_total) + if(clients) + SSblackbox.record_feedback("nested tally", "round_end_stats", clients, list("clients")) + if(ghosts) + SSblackbox.record_feedback("nested tally", "round_end_stats", ghosts, list("ghosts")) + if(surviving_humans) + SSblackbox.record_feedback("nested tally", "round_end_stats", surviving_humans, list("survivors", "human")) + if(surviving_total) + SSblackbox.record_feedback("nested tally", "round_end_stats", surviving_total, list("survivors", "total")) + if(escaped_humans) + SSblackbox.record_feedback("nested tally", "round_end_stats", escaped_humans, list("escapees", "human")) + if(escaped_total) + SSblackbox.record_feedback("nested tally", "round_end_stats", escaped_total, list("escapees", "total")) + send2irc("Server", "Round just ended.") if(cult.len && !istype(SSticker.mode, /datum/game_mode/cult)) datum_cult_completion() diff --git a/code/game/gamemodes/nuclear/nuclear_challenge.dm b/code/game/gamemodes/nuclear/nuclear_challenge.dm index 6e7a567324..c9314ece1a 100644 --- a/code/game/gamemodes/nuclear/nuclear_challenge.dm +++ b/code/game/gamemodes/nuclear/nuclear_challenge.dm @@ -59,7 +59,8 @@ U.hidden_uplink.telecrystals = CHALLENGE_TELECRYSTALS U.hidden_uplink.set_gamemode(/datum/game_mode/nuclear) CONFIG_SET(number/shuttle_refuel_delay, max(CONFIG_GET(number/shuttle_refuel_delay), CHALLENGE_SHUTTLE_DELAY)) - SSblackbox.set_val("nuclear_challenge_mode",1) + SSblackbox.record_feedback("amount", "nuclear_challenge_mode", 1) + qdel(src) /obj/item/device/nuclear_challenge/proc/check_allowed(mob/living/user) diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index a97e5a924b..9bb2013947 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -113,6 +113,7 @@ if(traitor.objectives.len)//If the traitor had no objectives, don't need to process this. var/count = 1 for(var/datum/objective/objective in traitor.objectives) +<<<<<<< HEAD if(istype(objective, /datum/objective/crew)) if(objective.check_completion()) objectives += "
Objective #[count]: [objective.explanation_text] Success! (Optional)" @@ -120,9 +121,14 @@ else objectives += "
Objective #[count]: [objective.explanation_text] Fail. (Optional)" SSblackbox.add_details("traitor_objective","[objective.type]|FAIL") +======= + if(objective.check_completion()) + objectives += "
Objective #[count]: [objective.explanation_text] Success!" + SSblackbox.record_feedback("nested tally", "traitor_objective", 1, list("[objective.type]", "SUCCESS")) +>>>>>>> 8b19b49... JSON feedback (#32188) else objectives += "
Objective #[count]: [objective.explanation_text] Fail." - SSblackbox.add_details("traitor_objective","[objective.type]|FAIL") + SSblackbox.record_feedback("nested tally", "traitor_objective", 1, list("[objective.type]", "FAIL")) traitorwin = FALSE count++ @@ -143,10 +149,10 @@ if(traitorwin) text += "
The [special_role_text] was successful!" - SSblackbox.add_details("traitor_success","SUCCESS") + SSblackbox.record_feedback("tally", "traitor_success", 1, "SUCCESS") else text += "
The [special_role_text] has failed!" - SSblackbox.add_details("traitor_success","FAIL") + SSblackbox.record_feedback("tally", "traitor_success", 1, "FAIL") SEND_SOUND(traitor.current, 'sound/ambience/ambifailure.ogg') text += "
" diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 5b87255d37..4a407a4ef6 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -57,10 +57,10 @@ aspell.name = "Instant [aspell.name]" if(aspell.spell_level >= aspell.level_max) to_chat(user, "This spell cannot be strengthened any further.") - SSblackbox.add_details("wizard_spell_improved", "[name]|[aspell.level]") + SSblackbox.record_feedback("nested tally", "wizard_spell_improved", 1, list("[name]", "[aspell.level]")) return 1 //No same spell found - just learn it - SSblackbox.add_details("wizard_spell_learned", name) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) user.mind.AddSpell(S) to_chat(user, "You have learned [S.name].") return 1 @@ -265,7 +265,7 @@ /datum/spellbook_entry/item/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) new item_path(get_turf(user)) - SSblackbox.add_details("wizard_spell_learned", name) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) return 1 /datum/spellbook_entry/item/GetInfo() @@ -464,7 +464,7 @@ return TRUE /datum/spellbook_entry/summon/ghosts/Buy(mob/living/carbon/human/user, obj/item/spellbook/book) - SSblackbox.add_details("wizard_spell_learned", name) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) new /datum/round_event/wizard/ghost() active = TRUE to_chat(user, "You have cast summon ghosts!") @@ -481,7 +481,7 @@ return !CONFIG_GET(flag/no_summon_guns) /datum/spellbook_entry/summon/guns/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - SSblackbox.add_details("wizard_spell_learned", name) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) rightandwrong(0, user, 25) active = 1 playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, 1) @@ -498,7 +498,7 @@ return !CONFIG_GET(flag/no_summon_magic) /datum/spellbook_entry/summon/magic/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - SSblackbox.add_details("wizard_spell_learned", name) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) rightandwrong(1, user, 25) active = 1 playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, 1) @@ -516,7 +516,7 @@ return !CONFIG_GET(flag/no_summon_events) /datum/spellbook_entry/summon/events/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - SSblackbox.add_details("wizard_spell_learned", name) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) summonevents() times++ playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, 1) diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index 304f80b470..dc392946da 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -89,6 +89,7 @@ var/count = 1 var/wizardwin = 1 for(var/datum/objective/objective in wizard.objectives) +<<<<<<< HEAD if(istype(objective, /datum/objective/crew)) if(objective.check_completion()) text += "
Objective #[count]: [objective.explanation_text] Success! (Optional)" @@ -104,14 +105,23 @@ text += "
Objective #[count]: [objective.explanation_text] Fail." SSblackbox.add_details("wizard_objective","[objective.type]|FAIL") wizardwin = 0 +======= + if(objective.check_completion()) + text += "
Objective #[count]: [objective.explanation_text] Success!" + SSblackbox.record_feedback("nested tally", "wizard_objective", 1, list("[objective.type]", "SUCCESS")) + else + text += "
Objective #[count]: [objective.explanation_text] Fail." + SSblackbox.record_feedback("nested tally", "wizard_objective", 1, list("[objective.type]", "FAIL")) + wizardwin = 0 +>>>>>>> 8b19b49... JSON feedback (#32188) count++ if(wizard.current && wizard.current.stat!=2 && wizardwin) text += "
The wizard was successful!" - SSblackbox.add_details("wizard_success","SUCCESS") + SSblackbox.record_feedback("tally", "wizard_success", 1, "SUCCESS") else text += "
The wizard has failed!" - SSblackbox.add_details("wizard_success","FAIL") + SSblackbox.record_feedback("tally", "wizard_success", 1, "FAIL") if(wizard.spell_list.len>0) text += "
[wizard.name] used the following spells: " var/i = 1 diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 4203971522..89a4e8b130 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -229,7 +229,6 @@ playsound(loc, 'sound/arcade/win.ogg', 50, 1, extrarange = -3, falloff = 10) if(emagged) - SSblackbox.inc("arcade_win_emagged") new /obj/effect/spawner/newbomb/timer/syndicate(loc) new /obj/item/clothing/head/collectable/petehat(loc) message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") @@ -237,8 +236,9 @@ Reset() emagged = FALSE else - SSblackbox.inc("arcade_win_normal") prizevend() + SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("win", (emagged ? "emagged":"normal"))) + else if (emagged && (turtle >= 4)) var/boomamt = rand(5,10) @@ -259,10 +259,8 @@ temp = "You have been drained! GAME OVER" playsound(loc, 'sound/arcade/lose.ogg', 50, 1, extrarange = -3, falloff = 10) if(emagged) - SSblackbox.inc("arcade_loss_mana_emagged") usr.gib() - else - SSblackbox.inc("arcade_loss_mana_normal") + SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "mana", (emagged ? "emagged":"normal"))) else if ((enemy_hp <= 10) && (enemy_mp > 4)) temp = "[enemy_name] heals for 4 health!" @@ -281,10 +279,8 @@ temp = "You have been crushed! GAME OVER" playsound(loc, 'sound/arcade/lose.ogg', 50, 1, extrarange = -3, falloff = 10) if(emagged) - SSblackbox.inc("arcade_loss_hp_emagged") usr.gib() - else - SSblackbox.inc("arcade_loss_hp_normal") + SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "hp", (emagged ? "emagged":"normal"))) blocked = FALSE return diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index ed8a2f3aec..6223011736 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -115,11 +115,6 @@ //Only notify the admins if an actual change happened log_game("[key_name(usr)] has changed the security level to [get_security_level()].") message_admins("[key_name_admin(usr)] has changed the security level to [get_security_level()].") - switch(GLOB.security_level) - if(SEC_LEVEL_GREEN) - SSblackbox.inc("alert_comms_green",1) - if(SEC_LEVEL_BLUE) - SSblackbox.inc("alert_comms_blue",1) tmp_alertlevel = 0 else to_chat(usr, "You are not authorized to do this!") @@ -178,7 +173,7 @@ SSshuttle.points -= S.credit_cost minor_announce("[usr.name] has purchased [S.name] for [S.credit_cost] credits." , "Shuttle Purchase") message_admins("[key_name_admin(usr)] purchased [S.name].") - SSblackbox.add_details("shuttle_purchase", S.name) + SSblackbox.record_feedback("text", "shuttle_purchase", 1, "[S.name]") else to_chat(usr, "Something went wrong! The shuttle exchange system seems to be down.") else @@ -387,11 +382,6 @@ //Only notify the admins if an actual change happened log_game("[key_name(usr)] has changed the security level to [get_security_level()].") message_admins("[key_name_admin(usr)] has changed the security level to [get_security_level()].") - switch(GLOB.security_level) - if(SEC_LEVEL_GREEN) - SSblackbox.inc("alert_comms_green",1) - if(SEC_LEVEL_BLUE) - SSblackbox.inc("alert_comms_blue",1) tmp_alertlevel = 0 aistate = STATE_DEFAULT if("ai-changeseclevel") diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 577e7d23eb..18acd9ece7 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -533,7 +533,7 @@ GLOBAL_LIST_EMPTY(allCasters) if(choice=="Confirm") scan_user(usr) GLOB.news_network.CreateFeedChannel(channel_name, scanned_user, c_locked) - SSblackbox.inc("newscaster_channels",1) + SSblackbox.record_feedback("text", "newscaster_channels", 1, "[channel_name]") screen=5 updateUsrDialog() else if(href_list["set_channel_receiving"]) @@ -556,7 +556,7 @@ GLOBAL_LIST_EMPTY(allCasters) screen=6 else GLOB.news_network.SubmitArticle("[parsemarkdown(msg, usr)]", scanned_user, channel_name, photo, 0, allow_comments) - SSblackbox.inc("newscaster_stories",1) + SSblackbox.record_feedback("amount", "newscaster_stories", 1) screen=4 msg = "" updateUsrDialog() @@ -846,7 +846,7 @@ GLOBAL_LIST_EMPTY(allCasters) return /obj/machinery/newscaster/proc/print_paper() - SSblackbox.inc("newscaster_newspapers_printed",1) + SSblackbox.record_feedback("amount", "newspapers_printed", 1) var/obj/item/newspaper/NEWSPAPER = new /obj/item/newspaper for(var/datum/newscaster/feed_channel/FC in GLOB.news_network.network_channels) NEWSPAPER.news_content += FC diff --git a/code/game/machinery/telecomms/broadcasting.dm b/code/game/machinery/telecomms/broadcasting.dm index 8ede0a7852..aebccdddd2 100644 --- a/code/game/machinery/telecomms/broadcasting.dm +++ b/code/game/machinery/telecomms/broadcasting.dm @@ -142,9 +142,7 @@ if(length(receive)) // --- This following recording is intended for research and feedback in the use of department radio channels --- - - var/blackbox_msg = "[AM] [AM.say_quote(message, spans)]" - SSblackbox.LogBroadcast(blackbox_msg, freq) + SSblackbox.LogBroadcast(freq) sleep(50) if(!QDELETED(virt)) //It could happen to YOU diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 89fc1260f8..45bf5ab1c8 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -510,7 +510,7 @@ if(icon_vend) //Show the vending animation if needed flick(icon_vend,src) new R.product_path(get_turf(src)) - SSblackbox.add_details("vending_machine_usage","[type]|[R.product_path]") + SSblackbox.record_feedback("nested tally", "vending_machine_usage", 1, list("[type]", "[R.product_path]")) vend_ready = 1 return diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index d8f435190f..c8de01badc 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -304,13 +304,6 @@ holder.icon_state = "ripley14" return TRUE -/datum/construction/reversible/mecha/ripley/spawn_mecha_result() - ..() - SSblackbox.inc("mecha_ripley_created",1) - return - - - /datum/construction/mecha/gygax_chassis steps = list(list("key"=/obj/item/mecha_parts/part/gygax_torso), //1 list("key"=/obj/item/mecha_parts/part/gygax_left_arm), //2 @@ -617,11 +610,6 @@ holder.icon_state = "gygax20" return TRUE -/datum/construction/reversible/mecha/gygax/spawn_mecha_result() - ..() - SSblackbox.inc("mecha_gygax_created",1) - return - /datum/construction/mecha/firefighter_chassis steps = list(list("key"=/obj/item/mecha_parts/part/ripley_torso), //1 list("key"=/obj/item/mecha_parts/part/ripley_left_arm), //2 @@ -866,13 +854,6 @@ holder.icon_state = "fireripley15" return TRUE -/datum/construction/reversible/mecha/firefighter/spawn_mecha_result() - ..() - SSblackbox.inc("mecha_firefighter_created",1) - return - - - /datum/construction/mecha/honker_chassis steps = list(list("key"=/obj/item/mecha_parts/part/honker_torso), //1 list("key"=/obj/item/mecha_parts/part/honker_left_arm), //2 @@ -953,10 +934,6 @@ qdel(used_atom) return TRUE -/datum/construction/mecha/honker/spawn_mecha_result() - ..() - SSblackbox.inc("mecha_honker_created",1) - /datum/construction/mecha/durand_chassis steps = list(list("key"=/obj/item/mecha_parts/part/durand_torso), //1 list("key"=/obj/item/mecha_parts/part/durand_left_arm), //2 @@ -1264,10 +1241,6 @@ holder.icon_state = "durand20" return TRUE -/datum/construction/reversible/mecha/durand/spawn_mecha_result() - ..() - SSblackbox.inc("mecha_durand_created",1) - //PHAZON /datum/construction/mecha/phazon_chassis @@ -1620,10 +1593,6 @@ spawn_mecha_result() return TRUE -/datum/construction/reversible/mecha/phazon/spawn_mecha_result() - ..() - SSblackbox.inc("mecha_phazon_created",1) - //ODYSSEUS /datum/construction/mecha/odysseus_chassis @@ -1857,7 +1826,3 @@ user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.") holder.icon_state = "odysseus14" return TRUE - -/datum/construction/reversible/mecha/odysseus/spawn_mecha_result() - ..() - SSblackbox.inc("mecha_odysseus_created",1) diff --git a/code/game/objects/items/charter.dm b/code/game/objects/items/charter.dm index 2527b573d3..c550a0c872 100644 --- a/code/game/objects/items/charter.dm +++ b/code/game/objects/items/charter.dm @@ -45,7 +45,7 @@ if(response_timer_id) to_chat(user, "You're still waiting for approval from your employers about your proposed name change, it'd be best to wait for now.") return - + if(!new_name) return log_game("[key_name(user)] has proposed to name the station as \ @@ -85,7 +85,7 @@ name = "station charter for [station_name()]" desc = "An official document entrusting the governance of \ [station_name()] and surrounding space to Captain [uname]." - SSblackbox.set_details("station_renames","[station_name()]") + SSblackbox.record_feedback("text", "station_renames", 1, "[station_name()]") if(!unlimited_uses) used = TRUE @@ -112,7 +112,7 @@ log_game("[ukey] has renamed the planet as [station_name()].") name = "banner of [station_name()]" desc = "The banner bears the official coat of arms of Nanotrasen, signifying that [station_name()] has been claimed by Captain [uname] in the name of the company." - SSblackbox.set_details("station_renames","[station_name()]") + SSblackbox.record_feedback("text", "station_renames", 1, "[station_name()]") if(!unlimited_uses) used = TRUE diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 8ebb7b6061..3085019b51 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -47,7 +47,7 @@ if(do_mob(user, C, 30) && (C.get_num_arms() >= 2 || C.get_arm_ignore())) apply_cuffs(C,user) to_chat(user, "You handcuff [C].") - SSblackbox.add_details("handcuffs","[type]") + SSblackbox.record_feedback("tally", "handcuffs", 1, type) add_logs(user, C, "handcuffed") else @@ -298,7 +298,7 @@ C.legcuffed = src src.loc = C C.update_inv_legcuffed() - SSblackbox.add_details("handcuffs","[type]") + SSblackbox.record_feedback("tally", "handcuffs", 1, type) else if(isanimal(L)) var/mob/living/simple_animal/SA = L if(SA.mob_size > MOB_SIZE_TINY) @@ -359,7 +359,7 @@ C.legcuffed = src src.loc = C C.update_inv_legcuffed() - SSblackbox.add_details("handcuffs","[type]") + SSblackbox.record_feedback("tally", "handcuffs", 1, type) to_chat(C, "\The [src] ensnares you!") C.Knockdown(knockdown) diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index a59f655b46..cde3f127ed 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -42,7 +42,7 @@ SSreligion.holy_weapon_type = holy_weapon.type - SSblackbox.set_details("chaplain_weapon","[choice]") + SSblackbox.record_feedback("tally", "chaplain_weapon", 1, "[choice]") if(holy_weapon) holy_weapon.reskinned = TRUE diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 9c0199e70f..09e3ccdeb0 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -58,7 +58,7 @@ if(src.l_arm && src.r_arm) if(src.l_leg && src.r_leg) if(src.chest && src.head) - SSblackbox.inc("cyborg_frames_built",1) + SSblackbox.record_feedback("amount", "cyborg_frames_built", 1) return 1 return 0 @@ -234,9 +234,7 @@ qdel(O.mmi) O.mmi = W //and give the real mmi to the borg. O.updatename() - - SSblackbox.inc("cyborg_birth",1) - + SSblackbox.record_feedback("amount", "cyborg_birth", 1) forceMove(O) O.robot_suit = src @@ -335,4 +333,3 @@ add_fingerprint(usr) Interact(usr) - diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index 0712fec228..a00e97b8fe 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -65,7 +65,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", SSreligion.bible_icon_state = B.icon_state SSreligion.bible_item_state = B.item_state - SSblackbox.set_details("religion_book","[biblename]") + SSblackbox.record_feedback("text", "religion_book", 1, "[biblename]") usr << browse(null, "window=editicon") /obj/item/storage/book/bible/proc/bless(mob/living/carbon/human/H, mob/living/user) diff --git a/code/game/objects/structures/ai_core.dm b/code/game/objects/structures/ai_core.dm index d01cd5a191..4a529571a4 100644 --- a/code/game/objects/structures/ai_core.dm +++ b/code/game/objects/structures/ai_core.dm @@ -185,7 +185,7 @@ if(brain.force_replace_ai_name) A.fully_replace_character_name(A.name, brain.replacement_ai_name()) - SSblackbox.inc("cyborg_ais_created",1) + SSblackbox.record_feedback("amount", "ais_created", 1) qdel(src) else state = AI_READY_CORE diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm index 1a5d0b78ec..cbd5b23bf3 100644 --- a/code/game/turfs/simulated/minerals.dm +++ b/code/game/turfs/simulated/minerals.dm @@ -66,7 +66,7 @@ if(ismineralturf(src)) to_chat(user, "You finish cutting into the rock.") gets_drilled(user) - SSblackbox.add_details("pick_used_mining","[P.type]") + SSblackbox.record_feedback("tally", "pick_used_mining", 1, P.type) else return attack_hand(user) @@ -75,7 +75,7 @@ var/i for(i in 1 to mineralAmt) new mineralType(src) - SSblackbox.add_details("ore_mined",mineralType) + SSblackbox.record_feedback("tally", "ore_mined", 1, mineralType) for(var/obj/effect/temp_visual/mining_overlay/M in src) qdel(M) ChangeTurf(turf_type, FALSE, defer_change) diff --git a/code/modules/admin/NewBan.dm b/code/modules/admin/NewBan.dm index bd32533a7f..ef222f683d 100644 --- a/code/modules/admin/NewBan.dm +++ b/code/modules/admin/NewBan.dm @@ -146,7 +146,6 @@ GLOBAL_PROTECT(Banlist) ban_unban_log_save("[key_name(usr)] unbanned [key]") log_admin_private("[key_name(usr)] unbanned [key]") message_admins("[key_name_admin(usr)] unbanned: [key]") - SSblackbox.inc("ban_unban",1) usr.client.holder.DB_ban_unban( ckey(key), BANTYPE_ANY_FULLBAN) for (var/A in GLOB.Banlist.dir) GLOB.Banlist.cd = "/base/[A]" @@ -235,4 +234,3 @@ GLOBAL_PROTECT(Banlist) GLOB.Banlist.cd = "/base" for (var/A in GLOB.Banlist.dir) RemoveBan(A) - diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 3edd7e810c..3ee99900de 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -173,7 +173,7 @@ body += "" usr << browse(body, "window=adminplayeropts-[REF(M)];size=550x515") - SSblackbox.add_details("admin_verb","Player Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Player Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/access_news_network() //MARKER @@ -433,7 +433,7 @@ if(rebootconfirm) var/result = input(usr, "Select reboot method", "World Reboot", options[1]) as null|anything in options if(result) - SSblackbox.add_details("admin_verb","Reboot World") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Reboot World") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! var/init_by = "Initiated by [usr.client.holder.fakekey ? "Admin" : usr.key]." switch(result) if("Regular Restart") @@ -460,7 +460,7 @@ return if(confirm == "Yes") SSticker.force_ending = 1 - SSblackbox.add_details("admin_verb","End Round") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "End Round") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/announce() @@ -476,7 +476,7 @@ message = adminscrub(message,500) to_chat(world, "[usr.client.holder.fakekey ? "Administrator" : usr.key] Announces:\n \t [message]") log_admin("Announce: [key_name(usr)] : [message]") - SSblackbox.add_details("admin_verb","Announce") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Announce") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/set_admin_notice() set category = "Special Verbs" @@ -497,7 +497,7 @@ message_admins("[key_name(usr)] set the admin notice.") log_admin("[key_name(usr)] set the admin notice:\n[new_admin_notice]") to_chat(world, "Admin Notice:\n \t [new_admin_notice]") - SSblackbox.add_details("admin_verb","Set Admin Notice") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Set Admin Notice") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! GLOB.admin_notice = new_admin_notice return @@ -508,7 +508,8 @@ toggle_ooc() log_admin("[key_name(usr)] toggled OOC.") message_admins("[key_name_admin(usr)] toggled OOC.") - SSblackbox.add_details("admin_toggle","Toggle OOC|[GLOB.ooc_allowed]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle OOC", "[GLOB.ooc_allowed]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle OOC", "[GLOB.ooc_allowed]")) /datum/admins/proc/toggleoocdead() set category = "Server" @@ -518,7 +519,7 @@ log_admin("[key_name(usr)] toggled OOC.") message_admins("[key_name_admin(usr)] toggled Dead OOC.") - SSblackbox.add_details("admin_toggle","Toggle Dead OOC|[GLOB.dooc_allowed]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Dead OOC", "[GLOB.dooc_allowed]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/startnow() set category = "Server" @@ -533,7 +534,7 @@ started as soon as possible.)" message_admins("\ [usr.key] has started the game.[msg]") - SSblackbox.add_details("admin_verb","Start Now") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Start Now") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return 1 else to_chat(usr, "Error: Start Now: Game has already started.") @@ -552,7 +553,7 @@ log_admin("[key_name(usr)] toggled new player game entering.") message_admins("[key_name_admin(usr)] toggled new player game entering.") world.update_status() - SSblackbox.add_details("admin_toggle","Toggle Entering|[GLOB.enter_allowed]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Entering", "[GLOB.enter_allowed]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/toggleAI() set category = "Server" @@ -566,7 +567,7 @@ to_chat(world, "The AI job is chooseable now.") log_admin("[key_name(usr)] toggled AI allowed.") world.update_status() - SSblackbox.add_details("admin_toggle","Toggle AI|[!alai]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle AI", "[!alai]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/toggleaban() set category = "Server" @@ -581,7 +582,7 @@ message_admins("[key_name_admin(usr)] toggled respawn to [!new_nores ? "On" : "Off"].") log_admin("[key_name(usr)] toggled respawn to [!new_nores ? "On" : "Off"].") world.update_status() - SSblackbox.add_details("admin_toggle","Toggle Respawn|[!new_nores]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Respawn", "[!new_nores]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/delay() set category = "Server" @@ -600,7 +601,7 @@ to_chat(world, "The game will start in [newtime] seconds.") SEND_SOUND(world, sound('sound/ai/attention.ogg')) log_admin("[key_name(usr)] set the pre-game delay to [newtime] seconds.") - SSblackbox.add_details("admin_verb","Delay Game Start") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Delay Game Start") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/unprison(mob/M in GLOB.mob_list) set category = "Admin" @@ -611,7 +612,7 @@ log_admin("[key_name(usr)] has unprisoned [key_name(M)]") else alert("[M.name] is not prisoned.") - SSblackbox.add_details("admin_verb","Unprison") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Unprison") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! ////////////////////////////////////////////////////////////////////////////////////////////////ADMIN HELPER PROCS @@ -652,7 +653,7 @@ A.admin_spawned = TRUE log_admin("[key_name(usr)] spawned [chosen] at ([usr.x],[usr.y],[usr.z])") - SSblackbox.add_details("admin_verb","Spawn Atom") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Spawn Atom") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/show_traitor_panel(mob/M in GLOB.mob_list) @@ -668,7 +669,7 @@ return M.mind.edit_memory() - SSblackbox.add_details("admin_verb","Traitor Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Traitor Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/toggletintedweldhelmets() @@ -682,7 +683,7 @@ to_chat(world, "The tinted_weldhelh has been disabled!") log_admin("[key_name(usr)] toggled tinted_weldhelh.") message_admins("[key_name_admin(usr)] toggled tinted_weldhelh.") - SSblackbox.add_details("admin_toggle","Toggle Tinted Welding Helmets|[GLOB.tinted_weldhelh]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Tinted Welding Helmets", "[GLOB.tinted_weldhelh]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/toggleguests() set category = "Server" @@ -696,7 +697,7 @@ to_chat(world, "Guests may now enter the game.") log_admin("[key_name(usr)] toggled guests game entering [!new_guest_ban ? "" : "dis"]allowed.") message_admins("[key_name_admin(usr)] toggled guests game entering [!new_guest_ban ? "" : "dis"]allowed.") - SSblackbox.add_details("admin_toggle","Toggle Guests|[!new_guest_ban]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Guests", "[!new_guest_ban]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/output_ai_laws() var/ai_number = 0 @@ -829,7 +830,7 @@ message_admins("[key_name_admin(usr)] has put [frommob.ckey] in control of [tomob.name].") log_admin("[key_name(usr)] stuffed [frommob.ckey] into [tomob.name].") - SSblackbox.add_details("admin_verb","Ghost Drag Control") + SSblackbox.record_feedback("tally", "admin_verb", 1, "Ghost Drag Control") tomob.ckey = frommob.ckey qdel(frommob) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 594e6ba7fb..c0bc15eacc 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -319,7 +319,7 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( verbs += /client/proc/show_verbs to_chat(src, "Most of your adminverbs have been hidden.") - SSblackbox.add_details("admin_verb","Hide Most Adminverbs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Hide Most Adminverbs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return /client/proc/hide_verbs() @@ -330,7 +330,7 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( verbs += /client/proc/show_verbs to_chat(src, "Almost all of your adminverbs have been hidden.") - SSblackbox.add_details("admin_verb","Hide All Adminverbs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Hide All Adminverbs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return /client/proc/show_verbs() @@ -341,7 +341,7 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( add_admin_verbs() to_chat(src, "All of your adminverbs are now visible.") - SSblackbox.add_details("admin_verb","Show Adminverbs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Adminverbs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -361,7 +361,7 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( message_admins("[key_name_admin(usr)] re-entered corpse") ghost.can_reenter_corpse = 1 //force re-entering even when otherwise not possible ghost.reenter_corpse() - SSblackbox.add_details("admin_verb","Admin Reenter") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Admin Reenter") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! else if(isnewplayer(mob)) to_chat(src, "Error: Aghost: Can't admin-ghost whilst in the lobby. Join or Observe first.") else @@ -372,7 +372,7 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( body.ghostize(1) if(body && !body.key) body.key = "@[key]" //Haaaaaaaack. But the people have spoken. If it breaks; blame adminbus - SSblackbox.add_details("admin_verb","Admin Ghost") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Admin Ghost") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/invisimin() @@ -395,7 +395,7 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( log_admin("[key_name(usr)] checked antagonists.") //for tsar~ if(!isobserver(usr) && SSticker.HasRoundStarted()) message_admins("[key_name_admin(usr)] checked antagonists.") - SSblackbox.add_details("admin_verb","Check Antagonists") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Check Antagonists") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/unban_panel() set name = "Unban Panel" @@ -405,21 +405,21 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( holder.unbanpanel() else holder.DB_ban_panel() - SSblackbox.add_details("admin_verb","Unban Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Unban Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/game_panel() set name = "Game Panel" set category = "Admin" if(holder) holder.Game() - SSblackbox.add_details("admin_verb","Game Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Game Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/secrets() set name = "Secrets" set category = "Admin" if (holder) holder.Secrets() - SSblackbox.add_details("admin_verb","Secrets Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Secrets Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/findStealthKey(txt) @@ -467,7 +467,7 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( mob.mouse_opacity = MOUSE_OPACITY_TRANSPARENT log_admin("[key_name(usr)] has turned stealth mode [holder.fakekey ? "ON" : "OFF"]") message_admins("[key_name_admin(usr)] has turned stealth mode [holder.fakekey ? "ON" : "OFF"]") - SSblackbox.add_details("admin_verb","Stealth Mode") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Stealth Mode") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/drop_bomb() set category = "Special Verbs" @@ -509,7 +509,7 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( explosion(epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, TRUE, TRUE) message_admins("[ADMIN_LOOKUPFLW(usr)] creating an admin explosion at [epicenter.loc].") log_admin("[key_name(usr)] created an admin explosion at [epicenter.loc].") - SSblackbox.add_details("admin_verb","Drop Bomb") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Drop Bomb") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/drop_dynex_bomb() set category = "Special Verbs" @@ -522,7 +522,7 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( dyn_explosion(epicenter, ex_power) message_admins("[ADMIN_LOOKUPFLW(usr)] creating an admin explosion at [epicenter.loc].") log_admin("[key_name(usr)] created an admin explosion at [epicenter.loc].") - SSblackbox.add_details("admin_verb","Drop Dynamic Bomb") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Drop Dynamic Bomb") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/get_dynex_range() set category = "Debug" @@ -567,7 +567,7 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( if(!S) return - SSblackbox.add_details("admin_verb","Give Spell") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Give Spell") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] gave [key_name(T)] the spell [S].") message_admins("[key_name_admin(usr)] gave [key_name(T)] the spell [S].") @@ -589,7 +589,7 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( T.mind.RemoveSpell(S) log_admin("[key_name(usr)] removed the spell [S] from [key_name(T)].") message_admins("[key_name_admin(usr)] removed the spell [S] from [key_name(T)].") - SSblackbox.add_details("admin_verb","Remove Spell") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Remove Spell") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/give_disease(mob/T in GLOB.mob_list) set category = "Fun" @@ -599,7 +599,7 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( if(!D) return T.ForceContractDisease(new D) - SSblackbox.add_details("admin_verb","Give Disease") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Give Disease") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] gave [key_name(T)] the disease [D].") message_admins("[key_name_admin(usr)] gave [key_name(T)] the disease [D].") @@ -613,13 +613,13 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( O.say(message) log_admin("[key_name(usr)] made [O] at [O.x], [O.y], [O.z] say \"[message]\"") message_admins("[key_name_admin(usr)] made [O] at [O.x], [O.y], [O.z]. say \"[message]\"") - SSblackbox.add_details("admin_verb","Object Say") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Object Say") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/togglebuildmodeself() set name = "Toggle Build Mode Self" set category = "Special Verbs" if(src.mob) togglebuildmode(src.mob) - SSblackbox.add_details("admin_verb","Toggle Build Mode") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Toggle Build Mode") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/check_ai_laws() set name = "Check AI Laws" @@ -648,7 +648,7 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( to_chat(src, "You are now a normal player.") log_admin("[src] deadmined themself.") message_admins("[src] deadmined themself.") - SSblackbox.add_details("admin_verb","Deadmin") + SSblackbox.record_feedback("tally", "admin_verb", 1, "Deadmin") /client/proc/readmin() set name = "Readmin" @@ -666,7 +666,7 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( to_chat(src, "You are now an admin.") message_admins("[src] re-adminned themselves.") log_admin("[src] re-adminned themselves.") - SSblackbox.add_details("admin_verb","Readmin") + SSblackbox.record_feedback("tally", "admin_verb", 1, "Readmin") /client/proc/populate_world(amount = 50 as num) set name = "Populate World" diff --git a/code/modules/admin/adminmenu.dm b/code/modules/admin/adminmenu.dm index aa654ab252..64ce5987cf 100644 --- a/code/modules/admin/adminmenu.dm +++ b/code/modules/admin/adminmenu.dm @@ -8,4 +8,4 @@ set category = "Admin" if(usr.client.holder) usr.client.holder.player_panel_new() - SSblackbox.add_details("admin_verb","Player Panel New") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Player Panel New") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index 4e759eb06c..b19c80d362 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -194,7 +194,7 @@ if("moveminingshuttle") if(!check_rights(R_ADMIN)) return - SSblackbox.add_details("admin_secrets_fun_used","Send Mining Shuttle") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Send Mining Shuttle") if(!SSshuttle.toggleShuttle("mining","mining_home","mining_away")) message_admins("[key_name_admin(usr)] moved mining shuttle") log_admin("[key_name(usr)] moved the mining shuttle") @@ -202,7 +202,7 @@ if("movelaborshuttle") if(!check_rights(R_ADMIN)) return - SSblackbox.add_details("admin_secrets_fun_used","Send Labor Shuttle") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Send Labor Shuttle") if(!SSshuttle.toggleShuttle("laborcamp","laborcamp_home","laborcamp_away")) message_admins("[key_name_admin(usr)] moved labor shuttle") log_admin("[key_name(usr)] moved the labor shuttle") @@ -210,7 +210,7 @@ if("moveferry") if(!check_rights(R_ADMIN)) return - SSblackbox.add_details("admin_secrets_fun_used","Send CentCom Ferry") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Send CentCom Ferry") if(!SSshuttle.toggleShuttle("ferry","ferry_home","ferry_away")) message_admins("[key_name_admin(usr)] moved the CentCom ferry") log_admin("[key_name(usr)] moved the CentCom ferry") @@ -222,7 +222,7 @@ if(A) var/new_perma = !A.perma_docked A.perma_docked = new_perma - SSblackbox.add_details("admin_toggle","Permadock Arrivals Shuttle|[new_perma]") + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Permadock Arrivals Shuttle", "[new_perma]")) message_admins("[key_name_admin(usr)] [new_perma ? "stopped" : "started"] the arrivals shuttle") log_admin("[key_name(usr)] [new_perma ? "stopped" : "started"] the arrivals shuttle") else @@ -272,8 +272,13 @@ if("monkey") if(!check_rights(R_FUN)) return +<<<<<<< HEAD SSblackbox.add_details("admin_secrets_fun_used","Monkeyize All Humans") for(var/mob/living/carbon/human/H in GLOB.mob_list) +======= + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Monkeyize All Humans") + for(var/mob/living/carbon/human/H in GLOB.carbon_list) +>>>>>>> 8b19b49... JSON feedback (#32188) spawn(0) H.monkeyize() ok = 1 @@ -283,7 +288,7 @@ return var/result = input(usr, "Please choose a new species","Species") as null|anything in GLOB.species_list if(result) - SSblackbox.add_details("admin_secrets_fun_used","Mass Species Change([result])") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Mass Species Change([result])") log_admin("[key_name(usr)] turned all humans into [result]", 1) message_admins("\blue [key_name_admin(usr)] turned all humans into [result]") var/newtype = GLOB.species_list[result] @@ -294,12 +299,12 @@ if(!check_rights(R_FUN)) return usr.client.triple_ai() - SSblackbox.add_details("admin_secrets_fun_used","Triple AI") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Triple AI") if("power") if(!check_rights(R_FUN)) return - SSblackbox.add_details("admin_secrets_fun_used","Power All APCs") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Power All APCs") log_admin("[key_name(usr)] made all areas powered", 1) message_admins("[key_name_admin(usr)] made all areas powered") power_restore() @@ -307,7 +312,7 @@ if("unpower") if(!check_rights(R_FUN)) return - SSblackbox.add_details("admin_secrets_fun_used","Depower All APCs") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Depower All APCs") log_admin("[key_name(usr)] made all areas unpowered", 1) message_admins("[key_name_admin(usr)] made all areas unpowered") power_failure() @@ -315,7 +320,7 @@ if("quickpower") if(!check_rights(R_FUN)) return - SSblackbox.add_details("admin_secrets_fun_used","Power All SMESs") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Power All SMESs") log_admin("[key_name(usr)] made all SMESs powered", 1) message_admins("[key_name_admin(usr)] made all SMESs powered") power_restore_quick() @@ -329,7 +334,7 @@ var/objective = copytext(sanitize(input("Enter an objective")),1,MAX_MESSAGE_LEN) if(!objective) return - SSblackbox.add_details("admin_secrets_fun_used","Traitor All ([objective])") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Traitor All ([objective])") for(var/mob/living/H in GLOB.player_list) if(!(ishuman(H)||istype(H, /mob/living/silicon/))) continue @@ -350,7 +355,7 @@ if("changebombcap") if(!check_rights(R_FUN)) return - SSblackbox.add_details("admin_secrets_fun_used","Bomb Cap") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Bomb Cap") var/newBombCap = input(usr,"What would you like the new bomb cap to be. (entered as the light damage range (the 3rd number in common (1,2,3) notation)) Must be above 4)", "New Bomb Cap", GLOB.MAX_EX_LIGHT_RANGE) as num|null if (!CONFIG_SET(number/bombcap, newBombCap)) @@ -362,7 +367,7 @@ if("blackout") if(!check_rights(R_FUN)) return - SSblackbox.add_details("admin_secrets_fun_used","Break All Lights") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Break All Lights") message_admins("[key_name_admin(usr)] broke all lights") for(var/obj/machinery/light/L in GLOB.machines) L.break_light_tube() @@ -378,7 +383,7 @@ if(animetype == "Cancel" || droptype == "Cancel") return - SSblackbox.add_details("admin_secrets_fun_used","Chinese Cartoons") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Chinese Cartoons") message_admins("[key_name_admin(usr)] made everything kawaii.") for(var/mob/living/carbon/human/H in GLOB.mob_list) SEND_SOUND(H, sound('sound/ai/animes.ogg')) @@ -408,7 +413,7 @@ if("whiteout") if(!check_rights(R_FUN)) return - SSblackbox.add_details("admin_secrets_fun_used","Fix All Lights") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Fix All Lights") message_admins("[key_name_admin(usr)] fixed all lights") for(var/obj/machinery/light/L in GLOB.machines) L.fix() @@ -419,7 +424,7 @@ if("virus") if(!check_rights(R_FUN)) return - SSblackbox.add_details("admin_secrets_fun_used","Virus Outbreak") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Virus Outbreak") switch(alert("Do you want this to be a random disease or do you have something in mind?",,"Make Your Own","Random","Choose")) if("Make Your Own") AdminCreateVirus(usr.client) @@ -434,7 +439,7 @@ if("retardify") if(!check_rights(R_FUN)) return - SSblackbox.add_details("admin_secrets_fun_used","Mass Braindamage") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Mass Braindamage") for(var/mob/living/carbon/human/H in GLOB.player_list) to_chat(H, "You suddenly feel stupid.") H.setBrainLoss(60) @@ -443,7 +448,7 @@ if("eagles")//SCRAW if(!check_rights(R_FUN)) return - SSblackbox.add_details("admin_secrets_fun_used","Egalitarian Station") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Egalitarian Station") for(var/obj/machinery/door/airlock/W in GLOB.machines) if((W.z in GLOB.station_z_levels) && !istype(get_area(W), /area/bridge) && !istype(get_area(W), /area/crew_quarters) && !istype(get_area(W), /area/security/prison)) W.req_access = list() @@ -460,7 +465,7 @@ if("guns") if(!check_rights(R_FUN)) return - SSblackbox.add_details("admin_secrets_fun_used","Summon Guns") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Summon Guns") var/survivor_probability = 0 switch(alert("Do you want this to create survivors antagonists?",,"No Antags","Some Antags","All Antags!")) if("Some Antags") @@ -473,7 +478,7 @@ if("magic") if(!check_rights(R_FUN)) return - SSblackbox.add_details("admin_secrets_fun_used","Summon Magic") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Summon Magic") var/survivor_probability = 0 switch(alert("Do you want this to create survivors antagonists?",,"No Antags","Some Antags","All Antags!")) if("Some Antags") @@ -489,23 +494,28 @@ if(!SSevents.wizardmode) if(alert("Do you want to toggle summon events on?",,"Yes","No") == "Yes") summonevents() - SSblackbox.add_details("admin_secrets_fun_used","Activate Summon Events") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Activate Summon Events") else switch(alert("What would you like to do?",,"Intensify Summon Events","Turn Off Summon Events","Nothing")) if("Intensify Summon Events") summonevents() - SSblackbox.add_details("admin_secrets_fun_used","Intensify Summon Events") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Intensify Summon Events") if("Turn Off Summon Events") SSevents.toggleWizardmode() SSevents.resetFrequency() - SSblackbox.add_details("admin_secrets_fun_used","Disable Summon Events") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Disable Summon Events") if("dorf") if(!check_rights(R_FUN)) return +<<<<<<< HEAD SSblackbox.add_details("admin_secrets_fun_used","Dwarf Beards") for(var/mob/living/carbon/human/B in GLOB.mob_list) +======= + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Dwarf Beards") + for(var/mob/living/carbon/human/B in GLOB.carbon_list) +>>>>>>> 8b19b49... JSON feedback (#32188) B.facial_hair_style = "Dward Beard" B.update_hair() message_admins("[key_name_admin(usr)] activated dorf mode") @@ -513,14 +523,14 @@ if("onlyone") if(!check_rights(R_FUN)) return - SSblackbox.add_details("admin_secrets_fun_used","There Can Be Only One") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "There Can Be Only One") usr.client.only_one() sound_to_playing_players('sound/misc/highlander.ogg') if("delayed_onlyone") if(!check_rights(R_FUN)) return - SSblackbox.add_details("admin_secrets_fun_used","There Can Be Only One") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "There Can Be Only One") usr.client.only_one_delayed() sound_to_playing_players('sound/misc/highlander_delayed.ogg') diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 5139f0bb47..e1ea166cb5 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -18,7 +18,7 @@ message_admins("[usr.key] has attempted to override the admin panel!") log_admin("[key_name(usr)] tried to use the admin panel without authorization.") return - + if(!CheckAdminHref(href, href_list)) return @@ -542,7 +542,6 @@ WRITE_FILE(GLOB.Banlist["minutes"], minutes) WRITE_FILE(GLOB.Banlist["bannedby"], usr.ckey) GLOB.Banlist.cd = "/base" - SSblackbox.inc("ban_edit",1) unbanpanel() /////////////////////////////////////new ban stuff @@ -564,7 +563,6 @@ if("Yes") ban_unban_log_save("[key_name(usr)] removed [key_name(M)]'s appearance ban.") log_admin_private("[key_name(usr)] removed [key_name(M)]'s appearance ban.") - SSblackbox.inc("ban_appearance_unban", 1) DB_ban_unban(M.ckey, BANTYPE_ANY_JOB, "appearance") if(M.client) jobban_buildcache(M.client) @@ -583,7 +581,6 @@ jobban_buildcache(M.client) ban_unban_log_save("[key_name(usr)] appearance banned [key_name(M)]. reason: [reason]") log_admin_private("[key_name(usr)] appearance banned [key_name(M)]. \nReason: [reason]") - SSblackbox.inc("ban_appearance",1) create_message("note", M.ckey, null, "Appearance banned - [reason]", null, null, 0, 0) message_admins("[key_name_admin(usr)] appearance banned [key_name_admin(M)].") to_chat(M, "You have been appearance banned by [usr.client.ckey].") @@ -962,8 +959,6 @@ jobban_buildcache(M.client) ban_unban_log_save("[key_name(usr)] temp-jobbanned [key_name(M)] from [job] for [mins] minutes. reason: [reason]") log_admin_private("[key_name(usr)] temp-jobbanned [key_name(M)] from [job] for [mins] minutes.") - SSblackbox.inc("ban_job_tmp",1) - SSblackbox.add_details("ban_job_tmp","- [job]") if(!msg) msg = job else @@ -987,8 +982,6 @@ jobban_buildcache(M.client) ban_unban_log_save("[key_name(usr)] perma-jobbanned [key_name(M)] from [job]. reason: [reason]") log_admin_private("[key_name(usr)] perma-banned [key_name(M)] from [job]") - SSblackbox.inc("ban_job",1) - SSblackbox.add_details("ban_job","- [job]") if(!msg) msg = job else @@ -1018,8 +1011,6 @@ DB_ban_unban(M.ckey, BANTYPE_ANY_JOB, job) if(M.client) jobban_buildcache(M.client) - SSblackbox.inc("ban_job_unban",1) - SSblackbox.add_details("ban_job_unban","- [job]") if(!msg) msg = job else @@ -1158,8 +1149,6 @@ ban_unban_log_save("[key_name(usr)] has banned [key_name(M)]. - Reason: [reason] - This will be removed in [mins] minutes.") to_chat(M, "You have been banned by [usr.client.ckey].\nReason: [reason]") to_chat(M, "This is a temporary ban, it will be removed in [mins] minutes.") - SSblackbox.inc("ban_tmp",1) - SSblackbox.inc("ban_tmp_mins",mins) var/bran = CONFIG_GET(string/banappeals) if(bran) to_chat(M, "To try to resolve this matter head to [bran]") @@ -1200,7 +1189,6 @@ var/datum/admin_help/AH = M.client ? M.client.current_ticket : null if(AH) AH.Resolve() - SSblackbox.inc("ban_perma",1) qdel(M.client) if("Cancel") return @@ -1703,7 +1691,7 @@ log_admin("[key_name(H)] got their cookie, spawned by [key_name(src.owner)].") message_admins("[key_name(H)] got their cookie, spawned by [key_name(src.owner)].") - SSblackbox.inc("admin_cookies_spawned",1) + SSblackbox.record_feedback("amount", "admin_cookies_spawned", 1) to_chat(H, "Your prayers have been answered!! You received the best cookie!") SEND_SOUND(H, sound('sound/effects/pray_chaplain.ogg')) @@ -2003,7 +1991,7 @@ var/choice = alert("Please confirm Feed channel creation.","Network Channel Handler","Confirm","Cancel") if(choice=="Confirm") GLOB.news_network.CreateFeedChannel(src.admincaster_feed_channel.channel_name, src.admin_signature, src.admincaster_feed_channel.locked, 1) - SSblackbox.inc("newscaster_channels",1) + SSblackbox.record_feedback("tally", "newscaster_channels", 1, src.admincaster_feed_channel.channel_name) log_admin("[key_name(usr)] created command feed channel: [src.admincaster_feed_channel.channel_name]!") src.admincaster_screen=5 src.access_news_network() @@ -2026,7 +2014,7 @@ src.admincaster_screen = 6 else GLOB.news_network.SubmitArticle(src.admincaster_feed_message.returnBody(-1), src.admin_signature, src.admincaster_feed_channel.channel_name, null, 1) - SSblackbox.inc("newscaster_stories",1) + SSblackbox.record_feedback("amount", "newscaster_stories", 1) src.admincaster_screen=4 for(var/obj/machinery/newscaster/NEWSCASTER in GLOB.allCasters) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index f178eb08bd..460e162d0b 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -286,9 +286,9 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) GLOB.ahelp_tickets.resolved_tickets -= src switch(state) if(AHELP_CLOSED) - SSblackbox.dec("ahelp_close") + SSblackbox.record_feedback("tally", "ahelp_stats", -1, "closed") if(AHELP_RESOLVED) - SSblackbox.dec("ahelp_resolve") + SSblackbox.record_feedback("tally", "ahelp_stats", -1, "resolved") state = AHELP_ACTIVE closed_at = null if(initiator) @@ -298,7 +298,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) var/msg = "Ticket [TicketHref("#[id]")] reopened by [key_name_admin(usr)]." message_admins(msg) log_admin_private(msg) - SSblackbox.inc("ahelp_reopen") + SSblackbox.record_feedback("tally", "ahelp_stats", 1, "reopened") TicketPanel() //can only be done from here, so refresh it //private @@ -320,7 +320,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) GLOB.ahelp_tickets.ListInsert(src) AddInteraction("Closed by [key_name].") if(!silent) - SSblackbox.inc("ahelp_close") + SSblackbox.record_feedback("tally", "ahelp_stats", 1, "closed") var/msg = "Ticket [TicketHref("#[id]")] closed by [key_name]." message_admins(msg) log_admin_private(msg) @@ -338,7 +338,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) AddInteraction("Resolved by [key_name].") to_chat(initiator, "Your ticket has been resolved by an admin. The Adminhelp verb will be returned to you shortly.") if(!silent) - SSblackbox.inc("ahelp_resolve") + SSblackbox.record_feedback("tally", "ahelp_stats", 1, "resolved") var/msg = "Ticket [TicketHref("#[id]")] resolved by [key_name]" message_admins(msg) log_admin_private(msg) @@ -357,7 +357,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) to_chat(initiator, "Your admin help was rejected. The adminhelp verb has been returned to you so that you may try again.") to_chat(initiator, "Please try to be calm, clear, and descriptive in admin helps, do not assume the admin has seen any related events, and clearly state the names of anybody you are reporting.") - SSblackbox.inc("ahelp_reject") + SSblackbox.record_feedback("tally", "ahelp_stats", 1, "rejected") var/msg = "Ticket [TicketHref("#[id]")] rejected by [key_name]" message_admins(msg) log_admin_private(msg) @@ -376,7 +376,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(initiator) to_chat(initiator, msg) - SSblackbox.inc("ahelp_icissue") + SSblackbox.record_feedback("tally", "ahelp_stats", 1, "IC") msg = "Ticket [TicketHref("#[id]")] marked as IC by [key_name]" message_admins(msg) log_admin_private(msg) @@ -514,7 +514,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(!msg) return - SSblackbox.add_details("admin_verb","Adminhelp") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Adminhelp") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! if(current_ticket) if(alert(usr, "You already have a ticket open. Is this for the same issue?",,"Yes","No") != "No") if(current_ticket) diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm index ec1091bb3c..26fb42fe04 100644 --- a/code/modules/admin/verbs/adminjump.dm +++ b/code/modules/admin/verbs/adminjump.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /client/proc/jumptoarea(area/A in GLOB.sortedAreas) set name = "Jump to Area" set desc = "Area to jump to" @@ -84,11 +85,100 @@ var/list/keys = list() for(var/mob/M in GLOB.player_list) keys += M.client +======= +/client/proc/jumptoarea(area/A in GLOB.sortedAreas) + set name = "Jump to Area" + set desc = "Area to jump to" + set category = "Admin" + if(!src.holder) + to_chat(src, "Only administrators may use this command.") + return + + if(!A) + return + + var/list/turfs = list() + for(var/area/Ar in A.related) + for(var/turf/T in Ar) + if(T.density) + continue + turfs.Add(T) + + var/turf/T = safepick(turfs) + if(!T) + to_chat(src, "Nowhere to jump to!") + return + usr.forceMove(T) + log_admin("[key_name(usr)] jumped to [A]") + message_admins("[key_name_admin(usr)] jumped to [A]") + SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Area") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +/client/proc/jumptoturf(turf/T in world) + set name = "Jump to Turf" + set category = "Admin" + if(!src.holder) + to_chat(src, "Only administrators may use this command.") + return + + log_admin("[key_name(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]") + message_admins("[key_name_admin(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]") + usr.loc = T + SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Turf") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + return + +/client/proc/jumptomob(mob/M in GLOB.mob_list) + set category = "Admin" + set name = "Jump to Mob" + + if(!src.holder) + to_chat(src, "Only administrators may use this command.") + return + + log_admin("[key_name(usr)] jumped to [key_name(M)]") + message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]") + if(src.mob) + var/mob/A = src.mob + var/turf/T = get_turf(M) + if(T && isturf(T)) + SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Mob") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + A.forceMove(M.loc) + else + to_chat(A, "This mob is not located in the game world.") + +/client/proc/jumptocoord(tx as num, ty as num, tz as num) + set category = "Admin" + set name = "Jump to Coordinate" + + if (!holder) + to_chat(src, "Only administrators may use this command.") + return + + if(src.mob) + var/mob/A = src.mob + A.x = tx + A.y = ty + A.z = tz + SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Coordiate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + message_admins("[key_name_admin(usr)] jumped to coordinates [tx], [ty], [tz]") + +/client/proc/jumptokey() + set category = "Admin" + set name = "Jump to Key" + + if(!src.holder) + to_chat(src, "Only administrators may use this command.") + return + + var/list/keys = list() + for(var/mob/M in GLOB.player_list) + keys += M.client +>>>>>>> 8b19b49... JSON feedback (#32188) var/client/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in sortKey(keys) if(!selection) to_chat(src, "No keys found.") return var/mob/M = selection.mob +<<<<<<< HEAD log_admin("[key_name(usr)] jumped to [key_name(M)]") message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]") @@ -157,3 +247,73 @@ else to_chat(src, "Failed to move mob to a valid location.") SSblackbox.add_details("admin_verb","Send Mob") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +======= + log_admin("[key_name(usr)] jumped to [key_name(M)]") + message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]") + + usr.forceMove(M.loc) + + SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Key") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +/client/proc/Getmob(mob/M in GLOB.mob_list) + set category = "Admin" + set name = "Get Mob" + set desc = "Mob to teleport" + if(!src.holder) + to_chat(src, "Only administrators may use this command.") + return + + var/atom/loc = get_turf(usr) + log_admin("[key_name(usr)] teleported [key_name(M)] to [COORD(loc)]") + var/msg = "[key_name_admin(usr)] teleported [key_name_admin(M)] to [ADMIN_COORDJMP(loc)]" + message_admins(msg) + admin_ticket_log(M, msg) + M.forceMove(loc) + SSblackbox.record_feedback("tally", "admin_verb", 1, "Get Mob") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +/client/proc/Getkey() + set category = "Admin" + set name = "Get Key" + set desc = "Key to teleport" + + if(!src.holder) + to_chat(src, "Only administrators may use this command.") + return + + var/list/keys = list() + for(var/mob/M in GLOB.player_list) + keys += M.client + var/client/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in sortKey(keys) + if(!selection) + return + var/mob/M = selection.mob + + if(!M) + return + log_admin("[key_name(usr)] teleported [key_name(M)]") + var/msg = "[key_name_admin(usr)] teleported [key_name_admin(M)]" + message_admins(msg) + admin_ticket_log(M, msg) + if(M) + M.forceMove(get_turf(usr)) + usr.loc = M.loc + SSblackbox.record_feedback("tally", "admin_verb", 1, "Get Key") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +/client/proc/sendmob(mob/M in sortmobs()) + set category = "Admin" + set name = "Send Mob" + if(!src.holder) + to_chat(src, "Only administrators may use this command.") + return + var/area/A = input(usr, "Pick an area.", "Pick an area") in GLOB.sortedAreas|null + if(A && istype(A)) + if(M.forceMove(safepick(get_area_turfs(A)))) + + log_admin("[key_name(usr)] teleported [key_name(M)] to [A]") + var/msg = "[key_name_admin(usr)] teleported [key_name_admin(M)] to [A]" + message_admins(msg) + admin_ticket_log(M, msg) + else + to_chat(src, "Failed to move mob to a valid location.") + SSblackbox.record_feedback("tally", "admin_verb", 1, "Send Mob") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +>>>>>>> 8b19b49... JSON feedback (#32188) diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 706c6e03bb..01ae5d4dc3 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -11,7 +11,7 @@ if( !ismob(M) || !M.client ) return cmd_admin_pm(M.client,null) - SSblackbox.add_details("admin_verb","Admin PM Mob") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Admin PM Mob") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! //shows a list of clients we could send PMs to, then forwards our choice to cmd_admin_pm /client/proc/cmd_admin_pm_panel() @@ -33,7 +33,7 @@ targets["(No Mob) - [T]"] = T var/target = input(src,"To whom shall we send a message?","Admin PM",null) as null|anything in sortList(targets) cmd_admin_pm(targets[target],null) - SSblackbox.add_details("admin_verb","Admin PM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Admin PM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_ahelp_reply(whom) if(prefs.muted & MUTE_ADMINHELP) diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm index 8e543c8a73..a24d4165a4 100644 --- a/code/modules/admin/verbs/adminsay.dm +++ b/code/modules/admin/verbs/adminsay.dm @@ -18,5 +18,5 @@ msg = "ADMIN: [key_name(usr, 1)]: [msg]" to_chat(GLOB.admins, msg) - SSblackbox.add_details("admin_verb","Asay") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Asay") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/verbs/atmosdebug.dm b/code/modules/admin/verbs/atmosdebug.dm index 730cd68987..05c839d3fd 100644 --- a/code/modules/admin/verbs/atmosdebug.dm +++ b/code/modules/admin/verbs/atmosdebug.dm @@ -4,7 +4,7 @@ if(!src.holder) to_chat(src, "Only administrators may use this command.") return - SSblackbox.add_details("admin_verb","Check Plumbing") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Check Plumbing") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! //all plumbing - yes, some things might get stated twice, doesn't matter. for (var/obj/machinery/atmospherics/plumbing in GLOB.machines) @@ -27,7 +27,7 @@ if(!src.holder) to_chat(src, "Only administrators may use this command.") return - SSblackbox.add_details("admin_verb","Check Power") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Check Power") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! for (var/datum/powernet/PN in GLOB.powernets) if (!PN.nodes || !PN.nodes.len) diff --git a/code/modules/admin/verbs/deadsay.dm b/code/modules/admin/verbs/deadsay.dm index ea57fcc790..491d058fea 100644 --- a/code/modules/admin/verbs/deadsay.dm +++ b/code/modules/admin/verbs/deadsay.dm @@ -29,4 +29,4 @@ if (M.stat == DEAD || (M.client && M.client.holder && (M.client.prefs.chat_toggles & CHAT_DEAD))) //admins can toggle deadchat on and off. This is a proc in admin.dm and is only give to Administrators and above M.show_message(rendered, 2) - SSblackbox.add_details("admin_verb","Dsay") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Dsay") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 73965d52ad..9abefefc3f 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -13,7 +13,7 @@ message_admins("[key_name(src)] toggled debugging on.") log_admin("[key_name(src)] toggled debugging on.") - SSblackbox.add_details("admin_verb","Toggle Debug Two") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Toggle Debug Two") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -95,7 +95,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that . = get_callproc_returnval(returnval, procname) if(.) to_chat(usr, .) - SSblackbox.add_details("admin_verb","Advanced ProcCall") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Advanced ProcCall") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! GLOBAL_VAR(AdminProcCaller) GLOBAL_PROTECT(AdminProcCaller) @@ -165,7 +165,7 @@ GLOBAL_PROTECT(LastAdminCalledProc) var/msg = "[key_name(src)] called [A]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"]." message_admins(msg) admin_ticket_log(A, msg) - SSblackbox.add_details("admin_verb","Atom ProcCall") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Atom ProcCall") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! var/returnval = WrapAdminProcCall(A, procname, lst) // Pass the lst as an argument list to the proc . = get_callproc_returnval(returnval,procname) @@ -236,7 +236,7 @@ GLOBAL_PROTECT(LastAdminCalledProc) t+= "[env_gases[id][GAS_META][META_GAS_NAME]] : [env_gases[id][MOLES]]\n" to_chat(usr, t) - SSblackbox.add_details("admin_verb","Air Status In Location") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Air Status In Location") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_robotize(mob/M in GLOB.mob_list) set category = "Fun" @@ -315,7 +315,7 @@ GLOBAL_PROTECT(LastAdminCalledProc) for(var/datum/paiCandidate/candidate in SSpai.candidates) if(candidate.key == choice.key) SSpai.candidates.Remove(candidate) - SSblackbox.add_details("admin_verb","Make pAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Make pAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_alienize(mob/M in GLOB.mob_list) set category = "Fun" @@ -326,7 +326,7 @@ GLOBAL_PROTECT(LastAdminCalledProc) return if(ishuman(M)) INVOKE_ASYNC(M, /mob/living/carbon/human/proc/Alienize) - SSblackbox.add_details("admin_verb","Make Alien") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Alien") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] made [key_name(M)] into an alien.") message_admins("[key_name_admin(usr)] made [key_name(M)] into an alien.") else @@ -341,7 +341,7 @@ GLOBAL_PROTECT(LastAdminCalledProc) return if(ishuman(M)) INVOKE_ASYNC(M, /mob/living/carbon/human/proc/slimeize) - SSblackbox.add_details("admin_verb","Make Slime") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Slime") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] made [key_name(M)] into a slime.") message_admins("[key_name_admin(usr)] made [key_name(M)] into a slime.") else @@ -429,7 +429,7 @@ GLOBAL_PROTECT(LastAdminCalledProc) CHECK_TICK log_admin("[key_name(src)] has deleted all ([counter]) instances of [hsbitem].") message_admins("[key_name_admin(src)] has deleted all ([counter]) instances of [hsbitem].", 0) - SSblackbox.add_details("admin_verb","Delete All") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Delete All") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_debug_make_powernets() @@ -438,7 +438,7 @@ GLOBAL_PROTECT(LastAdminCalledProc) SSmachines.makepowernets() log_admin("[key_name(src)] has remade the powernet. makepowernets() called.") message_admins("[key_name_admin(src)] has remade the powernets. makepowernets() called.", 0) - SSblackbox.add_details("admin_verb","Make Powernets") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Powernets") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_grantfullaccess(mob/M in GLOB.mob_list) set category = "Admin" @@ -478,7 +478,7 @@ GLOBAL_PROTECT(LastAdminCalledProc) else alert("Invalid mob") - SSblackbox.add_details("admin_verb","Grant Full Access") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Grant Full Access") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(src)] has granted [M.key] full access.") message_admins("[key_name_admin(usr)] has granted [M.key] full access.") @@ -499,7 +499,7 @@ GLOBAL_PROTECT(LastAdminCalledProc) M.ckey = src.ckey if( isobserver(adminmob) ) qdel(adminmob) - SSblackbox.add_details("admin_verb","Assume Direct Control") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Assume Direct Control") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_areatest(on_station) set category = "Mapping" @@ -652,7 +652,7 @@ GLOBAL_PROTECT(LastAdminCalledProc) if(isnull(custom)) return - SSblackbox.add_details("admin_verb","Select Equipment") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Select Equipment") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! for (var/obj/item/I in M.get_equipped_items()) qdel(I) switch(dresscode) @@ -841,7 +841,7 @@ GLOBAL_PROTECT(LastAdminCalledProc) return SSshuttle.clear_transit = TRUE message_admins("[key_name_admin(src)] cleared dynamic transit space.") - SSblackbox.add_details("admin_verb","Clear Dynamic Transit") // If... + SSblackbox.record_feedback("tally", "admin_verb", 1, "Clear Dynamic Transit") // If... log_admin("[key_name(src)] cleared dynamic transit space.") @@ -855,7 +855,7 @@ GLOBAL_PROTECT(LastAdminCalledProc) GLOB.medals_enabled = !GLOB.medals_enabled message_admins("[key_name_admin(src)] [GLOB.medals_enabled ? "disabled" : "enabled"] the medal hub lockout.") - SSblackbox.add_details("admin_verb","Toggle Medal Disable") // If... + SSblackbox.record_feedback("tally", "admin_verb", 1, "Toggle Medal Disable") // If... log_admin("[key_name(src)] [GLOB.medals_enabled ? "disabled" : "enabled"] the medal hub lockout.") /client/proc/view_runtimes() @@ -878,7 +878,7 @@ GLOBAL_PROTECT(LastAdminCalledProc) SSevents.scheduled = world.time message_admins("[key_name_admin(src)] pumped a random event.") - SSblackbox.add_details("admin_verb","Pump Random Event") + SSblackbox.record_feedback("tally", "admin_verb", 1, "Pump Random Event") log_admin("[key_name(src)] pumped a random event.") /client/proc/start_line_profiling() @@ -889,7 +889,7 @@ GLOBAL_PROTECT(LastAdminCalledProc) PROFILE_START message_admins("[key_name_admin(src)] started line by line profiling.") - SSblackbox.add_details("admin_verb","Start Line Profiling") + SSblackbox.record_feedback("tally", "admin_verb", 1, "Start Line Profiling") log_admin("[key_name(src)] started line by line profiling.") /client/proc/stop_line_profiling() @@ -900,7 +900,7 @@ GLOBAL_PROTECT(LastAdminCalledProc) PROFILE_STOP message_admins("[key_name_admin(src)] stopped line by line profiling.") - SSblackbox.add_details("admin_verb","stop Line Profiling") + SSblackbox.record_feedback("tally", "admin_verb", 1, "Stop Line Profiling") log_admin("[key_name(src)] stopped line by line profiling.") /client/proc/show_line_profiling() diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm index 68df8a6666..bcf58b1a4c 100644 --- a/code/modules/admin/verbs/diagnostics.dm +++ b/code/modules/admin/verbs/diagnostics.dm @@ -16,7 +16,7 @@ to_chat(usr, "@[target.x],[target.y]: [GM.temperature] Kelvin, [GM.return_pressure()] kPa [(burning)?("\red BURNING"):(null)]") for(var/id in GM_gases) to_chat(usr, "[GM_gases[id][GAS_META][META_GAS_NAME]]: [GM_gases[id][MOLES]]") - SSblackbox.add_details("admin_verb","Show Air Status") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Air Status") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/fix_next_move() set category = "Debug" @@ -46,7 +46,7 @@ message_admins("[key_name_admin(largest_move_mob)] had the largest move delay with [largest_move_time] frames / [DisplayTimeText(largest_move_time)]!") message_admins("[key_name_admin(largest_click_mob)] had the largest click delay with [largest_click_time] frames / [DisplayTimeText(largest_click_time)]!") message_admins("world.time = [world.time]") - SSblackbox.add_details("admin_verb","Unfreeze Everyone") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Unfreeze Everyone") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return /client/proc/radio_report() @@ -85,7 +85,7 @@ output += "    [device]
" usr << browse(output,"window=radioreport") - SSblackbox.add_details("admin_verb","Show Radio Report") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Radio Report") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/reload_admins() set name = "Reload Admins" @@ -99,5 +99,5 @@ return load_admins() - SSblackbox.add_details("admin_verb","Reload All Admins") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Reload All Admins") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! message_admins("[key_name_admin(usr)] manually reloaded admins") diff --git a/code/modules/admin/verbs/fps.dm b/code/modules/admin/verbs/fps.dm index f893c43e08..ce72889a20 100644 --- a/code/modules/admin/verbs/fps.dm +++ b/code/modules/admin/verbs/fps.dm @@ -20,7 +20,7 @@ var/msg = "[key_name(src)] has modified world.fps to [new_fps]" log_admin(msg, 0) message_admins(msg, 0) - SSblackbox.add_details("admin_toggle","Set Server FPS|[new_fps]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Set Server FPS", "[new_fps]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! CONFIG_SET(number/fps, new_fps) world.fps = new_fps diff --git a/code/modules/admin/verbs/getlogs.dm b/code/modules/admin/verbs/getlogs.dm index 9f08eb5e0e..95f6d1166b 100644 --- a/code/modules/admin/verbs/getlogs.dm +++ b/code/modules/admin/verbs/getlogs.dm @@ -49,7 +49,7 @@ else to_chat(src, "Server log not found, try using .getserverlog.") return - SSblackbox.add_details("admin_verb","Show Server Log") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Server Log") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return //Shows today's attack log @@ -71,5 +71,5 @@ else to_chat(src, "Server attack log not found, try using .getserverlog.") return - SSblackbox.add_details("admin_verb","Show Server Attack log") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Server Attack log") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return diff --git a/code/modules/admin/verbs/machine_upgrade.dm b/code/modules/admin/verbs/machine_upgrade.dm index e3c7b1519d..463ee70ac8 100644 --- a/code/modules/admin/verbs/machine_upgrade.dm +++ b/code/modules/admin/verbs/machine_upgrade.dm @@ -7,4 +7,4 @@ P.rating = new_rating M.RefreshParts() - SSblackbox.add_details("admin_toggle","Machine Upgrade|[new_rating]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Machine Upgrade", "[new_rating]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index d560099563..059a8c43b9 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -78,7 +78,8 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( seen[T]++ for(var/turf/T in seen) T.maptext = "[seen[T]]" - SSblackbox.add_details("admin_verb","Show Camera Range") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Camera Range") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Camera Range") @@ -120,7 +121,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( output += "" usr << browse(output,"window=airreport;size=1000x500") - SSblackbox.add_details("admin_verb","Show Camera Report") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Camera Report") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/intercom_view() set category = "Mapping" @@ -138,7 +139,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( var/obj/effect/debugging/marker/F = new/obj/effect/debugging/marker(T) if (!(F in view(7,I.loc))) qdel(F) - SSblackbox.add_details("admin_verb","Show Intercom Range") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Intercom Range") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_show_at_list() set category = "Mapping" @@ -155,7 +156,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( usr << browse(dat, "window=at_list") - SSblackbox.add_details("admin_verb","Show Roundstart Active Turfs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Roundstart Active Turfs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_show_at_markers() set category = "Mapping" @@ -175,7 +176,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( count++ to_chat(usr, "[count] AT markers placed.") - SSblackbox.add_details("admin_verb","Show Roundstart Active Turf Markers") + SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Roundstart Active Turf Markers") /client/proc/enable_debug_verbs() set category = "Debug" @@ -184,14 +185,14 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( return verbs -= /client/proc/enable_debug_verbs verbs.Add(/client/proc/disable_debug_verbs, GLOB.admin_verbs_debug_mapping) - SSblackbox.add_details("admin_verb","Enable Debug Verbs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Enable Debug Verbs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/disable_debug_verbs() set category = "Debug" set name = "Debug verbs - Disable" verbs.Remove(/client/proc/disable_debug_verbs, GLOB.admin_verbs_debug_mapping) verbs += /client/proc/enable_debug_verbs - SSblackbox.add_details("admin_verb", "Disable Debug Verbs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Disable Debug Verbs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/count_objects_on_z_level() set category = "Mapping" @@ -239,7 +240,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( to_chat(world, line)*/ to_chat(world, "There are [count] objects of type [type_path] on z-level [num_level]") - SSblackbox.add_details("admin_verb","Count Objects Zlevel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Count Objects Zlevel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/count_objects_all() set category = "Mapping" @@ -268,7 +269,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( to_chat(world, line)*/ to_chat(world, "There are [count] objects of type [type_path] in the game world") - SSblackbox.add_details("admin_verb","Count Objects All") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Count Objects All") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! //This proc is intended to detect lag problems relating to communication procs diff --git a/code/modules/admin/verbs/massmodvar.dm b/code/modules/admin/verbs/massmodvar.dm index e17cbbbf86..6043d23d62 100644 --- a/code/modules/admin/verbs/massmodvar.dm +++ b/code/modules/admin/verbs/massmodvar.dm @@ -12,7 +12,7 @@ method = vv_subtype_prompt(A.type) src.massmodify_variables(A, var_name, method) - SSblackbox.add_details("admin_verb","Mass Edit Variables") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Mass Edit Variables") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/massmodify_variables(datum/O, var_name = "", method = 0) if(!check_rights(R_VAREDIT)) diff --git a/code/modules/admin/verbs/panicbunker.dm b/code/modules/admin/verbs/panicbunker.dm index b159445963..f7d1d60aab 100644 --- a/code/modules/admin/verbs/panicbunker.dm +++ b/code/modules/admin/verbs/panicbunker.dm @@ -12,5 +12,5 @@ message_admins("[key_name_admin(usr)] has toggled the Panic Bunker, it is now [new_pb ? "enabled" : "disabled"].") if (new_pb && !SSdbcore.Connect()) message_admins("The Database is not connected! Panic bunker will not work until the connection is reestablished.") - SSblackbox.add_details("admin_toggle","Toggle Panic Bunker|[new_pb]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Panic Bunker", "[new_pb]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm index 0cc1f72256..9fad82f87d 100644 --- a/code/modules/admin/verbs/playsound.dm +++ b/code/modules/admin/verbs/playsound.dm @@ -42,7 +42,7 @@ SEND_SOUND(M, admin_sound) admin_sound.volume = vol - SSblackbox.add_details("admin_verb","Play Global Sound") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Play Global Sound") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/play_local_sound(S as sound) @@ -54,7 +54,7 @@ log_admin("[key_name(src)] played a local sound [S]") message_admins("[key_name_admin(src)] played a local sound [S]") playsound(get_turf(src.mob), S, 50, 0, 0) - SSblackbox.add_details("admin_verb","Play Local Sound") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Play Local Sound") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/play_web_sound() set category = "Fun" @@ -92,7 +92,12 @@ if(SSevents.holidays && SSevents.holidays[APRIL_FOOLS]) pitch = pick(0.5, 0.7, 0.8, 0.85, 0.9, 0.95, 1.1, 1.2, 1.4, 1.6, 2.0, 2.5) to_chat(src, "You feel the Honkmother messing with your song...") +<<<<<<< HEAD SSblackbox.add_details("played_url", "[web_sound_input]|[ckey]") +======= + + SSblackbox.record_feedback("nested tally", "played_url", 1, list("[ckey]", "[web_sound_input]")) +>>>>>>> 8b19b49... JSON feedback (#32188) log_admin("[key_name(src)] played web sound: [web_sound_input]") message_admins("[key_name(src)] played web sound: [web_sound_input]") else @@ -111,7 +116,7 @@ if((C.prefs.toggles & SOUND_MIDI) && C.chatOutput && !C.chatOutput.broken && C.chatOutput.loaded) C.chatOutput.sendMusic(web_sound_url, pitch) - SSblackbox.add_details("admin_verb","Play Internet Sound") + SSblackbox.record_feedback("tally", "admin_verb", 1, "Play Internet Sound") /client/proc/set_round_end_sound(S as sound) set category = "Fun" @@ -123,7 +128,7 @@ log_admin("[key_name(src)] set the round end sound to [S]") message_admins("[key_name_admin(src)] set the round end sound to [S]") - SSblackbox.add_details("admin_verb","Set Round End Sound") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Set Round End Sound") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/stop_sounds() set category = "Debug" @@ -139,4 +144,4 @@ var/client/C = M.client if(C && C.chatOutput && !C.chatOutput.broken && C.chatOutput.loaded) C.chatOutput.sendMusic(" ") - SSblackbox.add_details("admin_verb","Stop All Playing Sounds") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Stop All Playing Sounds") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/verbs/possess.dm b/code/modules/admin/verbs/possess.dm index 483c9470a2..fc81ca3a02 100644 --- a/code/modules/admin/verbs/possess.dm +++ b/code/modules/admin/verbs/possess.dm @@ -23,7 +23,7 @@ usr.name = O.name usr.client.eye = O usr.control_object = O - SSblackbox.add_details("admin_verb","Possess Object") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Possess Object") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /proc/release(obj/O in world) set name = "Release Obj" @@ -41,7 +41,7 @@ usr.loc = O.loc usr.client.eye = usr usr.control_object = null - SSblackbox.add_details("admin_verb","Release Object") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Release Object") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /proc/givetestverbs(mob/M in GLOB.mob_list) set desc = "Give this guy possess/release verbs" @@ -49,4 +49,4 @@ set name = "Give Possessing Verbs" M.verbs += /proc/possess M.verbs += /proc/release - SSblackbox.add_details("admin_verb","Give Possessing Verbs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Give Possessing Verbs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index bbe1c48b6a..58dd8f2952 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -41,11 +41,19 @@ if(C.prefs.toggles & SOUND_PRAYERS) if(usr.job == "Chaplain") SEND_SOUND(C, sound('sound/effects/pray.ogg')) +<<<<<<< HEAD to_chat(usr, "Your prayers have been received by the gods.") SSblackbox.add_details("admin_verb","Prayer") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! //log_admin("HELP: [key_name(src)]: [msg]") +======= + to_chat(usr, "Your prayers have been received by the gods.") + + SSblackbox.record_feedback("tally", "admin_verb", 1, "Prayer") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + //log_admin("HELP: [key_name(src)]: [msg]") + +>>>>>>> 8b19b49... JSON feedback (#32188) /proc/CentCom_announce(text , mob/Sender) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) msg = "CENTCOM:[ADMIN_FULLMONTY(Sender)] [ADMIN_CENTCOM_REPLY(Sender)]: [msg]" diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 16484cce52..96f49ab8c6 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -18,7 +18,7 @@ var/msg = "[key_name_admin(usr)] made [key_name_admin(M)] drop everything!" message_admins(msg) admin_ticket_log(M, msg) - SSblackbox.add_details("admin_verb","Drop Everything") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Drop Everything") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_subtle_message(mob/M in GLOB.mob_list) set category = "Special Verbs" @@ -45,7 +45,7 @@ msg = " SubtleMessage: [key_name_admin(usr)] -> [key_name_admin(M)] : [msg]" message_admins(msg) admin_ticket_log(M, msg) - SSblackbox.add_details("admin_verb","Subtle Message") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Subtle Message") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_world_narrate() set category = "Special Verbs" @@ -62,7 +62,7 @@ to_chat(world, "[msg]") log_admin("GlobalNarrate: [key_name(usr)] : [msg]") message_admins("[key_name_admin(usr)] Sent a global narrate") - SSblackbox.add_details("admin_verb","Global Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Global Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_direct_narrate(mob/M) set category = "Special Verbs" @@ -88,7 +88,7 @@ msg = " DirectNarrate: [key_name(usr)] to ([M.name]/[M.key]): [msg]
" message_admins(msg) admin_ticket_log(M, msg) - SSblackbox.add_details("admin_verb","Direct Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Direct Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_local_narrate(atom/A) set category = "Special Verbs" @@ -110,7 +110,7 @@ log_admin("LocalNarrate: [key_name(usr)] at [get_area(A)][COORD(A)]: [msg]") message_admins(" LocalNarrate: [key_name_admin(usr)] at [get_area(A)][ADMIN_JMP(A)]: [msg]
") - SSblackbox.add_details("admin_verb","Local Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Local Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_godmode(mob/M in GLOB.mob_list) set category = "Special Verbs" @@ -125,7 +125,7 @@ var/msg = "[key_name_admin(usr)] has toggled [key_name_admin(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]" message_admins(msg) admin_ticket_log(M, msg) - SSblackbox.add_details("admin_toggle","Godmode|[M.status_flags & GODMODE]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Godmode", "[M.status_flags & GODMODE]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /proc/cmd_admin_mute(whom, mute_type, automute = 0) @@ -187,7 +187,7 @@ message_admins("SPAM AUTOMUTE: [muteunmute] [key_name_admin(whom)] from [mute_string].") if(C) to_chat(C, "You have been [muteunmute] from [mute_string] by the SPAM AUTOMUTE system. Contact an admin.") - SSblackbox.add_details("admin_toggle","Auto Mute [feedback_string]|1") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Auto Mute [feedback_string]", "1")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return if(P.muted & mute_type) @@ -201,7 +201,7 @@ message_admins("[key_name_admin(usr)] has [muteunmute] [key_name_admin(whom)] from [mute_string].") if(C) to_chat(C, "You have been [muteunmute] from [mute_string] by [key_name(usr, include_name = FALSE)].") - SSblackbox.add_details("admin_toggle","Mute [feedback_string]|[P.muted & mute_type]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Mute [feedback_string]", "[P.muted & mute_type]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! //I use this proc for respawn character too. /N @@ -421,7 +421,7 @@ Traitors and the like can also be revived with the previous role mostly intact. to_chat(new_character, "You have been fully respawned. Enjoy the game.") - SSblackbox.add_details("admin_verb","Respawn Character") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Respawn Character") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return new_character /client/proc/cmd_admin_add_freeform_ai_law() @@ -444,7 +444,7 @@ Traitors and the like can also be revived with the previous role mostly intact. ion.announceEvent = announce_ion_laws ion.ionMessage = input - SSblackbox.add_details("admin_verb","Add Custom AI Law") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Add Custom AI Law") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_rejuvenate(mob/living/M in GLOB.mob_list) set category = "Special Verbs" @@ -463,7 +463,7 @@ Traitors and the like can also be revived with the previous role mostly intact. var/msg = "Admin [key_name_admin(usr)] healed / revived [key_name_admin(M)]!" message_admins(msg) admin_ticket_log(M, msg) - SSblackbox.add_details("admin_verb","Rejuvinate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Rejuvinate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_create_centcom_report() set category = "Special Verbs" @@ -488,7 +488,7 @@ Traitors and the like can also be revived with the previous role mostly intact. log_admin("[key_name(src)] has created a command report: [input]") message_admins("[key_name_admin(src)] has created a command report") - SSblackbox.add_details("admin_verb","Create Command Report") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Create Command Report") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_change_command_name() set category = "Special Verbs" @@ -519,7 +519,7 @@ Traitors and the like can also be revived with the previous role mostly intact. if (alert(src, "Are you sure you want to delete:\n[D]\nat[coords]?", "Confirmation", "Yes", "No") == "Yes") log_admin("[key_name(usr)] deleted [D][coords]") message_admins("[key_name_admin(usr)] deleted [D][coords]") - SSblackbox.add_details("admin_verb","Delete") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Delete") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! if(isturf(D)) var/turf/T = D T.ChangeTurf(T.baseturf) @@ -534,7 +534,7 @@ Traitors and the like can also be revived with the previous role mostly intact. to_chat(src, "Only administrators may use this command.") return holder.manage_free_slots() - SSblackbox.add_details("admin_verb","Manage Job Slots") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Manage Job Slots") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_explosion(atom/O as obj|mob|turf in world) set category = "Special Verbs" @@ -568,7 +568,7 @@ Traitors and the like can also be revived with the previous role mostly intact. explosion(O, devastation, heavy, light, flash, null, null,flames) log_admin("[key_name(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at ([O.x],[O.y],[O.z])") message_admins("[key_name_admin(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at ([O.x],[O.y],[O.z])") - SSblackbox.add_details("admin_verb","Explosion") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Explosion") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return else return @@ -593,7 +593,7 @@ Traitors and the like can also be revived with the previous role mostly intact. empulse(O, heavy, light) log_admin("[key_name(usr)] created an EM Pulse ([heavy],[light]) at ([O.x],[O.y],[O.z])") message_admins("[key_name_admin(usr)] created an EM Pulse ([heavy],[light]) at ([O.x],[O.y],[O.z])") - SSblackbox.add_details("admin_verb","EM Pulse") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "EM Pulse") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return else @@ -624,7 +624,7 @@ Traitors and the like can also be revived with the previous role mostly intact. M.gib() else M.gib(1) - SSblackbox.add_details("admin_verb","Gib") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Gib") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_gib_self() set name = "Gibself" @@ -634,7 +634,7 @@ Traitors and the like can also be revived with the previous role mostly intact. if(confirm == "Yes") log_admin("[key_name(usr)] used gibself.") message_admins("[key_name_admin(usr)] used gibself.") - SSblackbox.add_details("admin_verb","Gib Self") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Gib Self") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! mob.gib(1, 1, 1) /client/proc/cmd_admin_check_contents(mob/living/M in GLOB.mob_list) @@ -644,7 +644,7 @@ Traitors and the like can also be revived with the previous role mostly intact. var/list/L = M.get_contents() for(var/t in L) to_chat(usr, "[t]") - SSblackbox.add_details("admin_verb","Check Contents") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Check Contents") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/toggle_view_range() set category = "Special Verbs" @@ -659,7 +659,7 @@ Traitors and the like can also be revived with the previous role mostly intact. log_admin("[key_name(usr)] changed their view range to [view].") //message_admins("\blue [key_name_admin(usr)] changed their view range to [view].") //why? removed by order of XSI - SSblackbox.add_details("admin_toggle","Change View Range|[view]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Change View Range", "[view]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/admin_call_shuttle() @@ -678,7 +678,7 @@ Traitors and the like can also be revived with the previous role mostly intact. return SSshuttle.emergency.request() - SSblackbox.add_details("admin_verb","Call Shuttle") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Call Shuttle") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] admin-called the emergency shuttle.") message_admins("[key_name_admin(usr)] admin-called the emergency shuttle.") return @@ -695,7 +695,7 @@ Traitors and the like can also be revived with the previous role mostly intact. return SSshuttle.emergency.cancel() - SSblackbox.add_details("admin_verb","Cancel Shuttle") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Cancel Shuttle") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] admin-recalled the emergency shuttle.") message_admins("[key_name_admin(usr)] admin-recalled the emergency shuttle.") @@ -731,7 +731,7 @@ Traitors and the like can also be revived with the previous role mostly intact. to_chat(usr, "Remember: you can always disable the randomness by using the verb again, assuming the round hasn't started yet.") CONFIG_SET(flag/force_random_names, TRUE) - SSblackbox.add_details("admin_verb","Make Everyone Random") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Everyone Random") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/toggle_random_events() @@ -746,7 +746,7 @@ Traitors and the like can also be revived with the previous role mostly intact. else to_chat(usr, "Random events disabled") message_admins("Admin [key_name_admin(usr)] has disabled random events.") - SSblackbox.add_details("admin_toggle","Toggle Random Events|[new_are]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Random Events", "[new_are]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/admin_change_sec_level() @@ -764,7 +764,7 @@ Traitors and the like can also be revived with the previous role mostly intact. log_admin("[key_name(usr)] changed the security level to [level]") message_admins("[key_name_admin(usr)] changed the security level to [level]") - SSblackbox.add_details("admin_verb","Set Security Level [capitalize(level)]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Set Security Level [capitalize(level)]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/toggle_nuke(obj/machinery/nuclearbomb/N in GLOB.nuke_list) set name = "Toggle Nuke" @@ -783,7 +783,7 @@ Traitors and the like can also be revived with the previous role mostly intact. log_admin("[key_name(usr)] [N.timing ? "activated" : "deactivated"] a nuke at ([N.x],[N.y],[N.z]).") message_admins("[ADMIN_LOOKUPFLW(usr)] [N.timing ? "activated" : "deactivated"] a nuke at [ADMIN_COORDJMP(N)].") - SSblackbox.add_details("admin_toggle","Toggle Nuke|[N.timing]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Nuke", "[N.timing]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits @@ -979,7 +979,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits to_chat(usr, "You toggled your admin antag HUD [adding_hud ? "ON" : "OFF"].") message_admins("[key_name_admin(usr)] toggled their admin antag HUD [adding_hud ? "ON" : "OFF"].") log_admin("[key_name(usr)] toggled their admin antag HUD [adding_hud ? "ON" : "OFF"].") - SSblackbox.add_details("admin_toggle","Toggle Antag HUD|[adding_hud]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Antag HUD", "[adding_hud]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/has_antag_hud() var/datum/atom_hud/A = GLOB.huds[ANTAG_HUD_TRAITOR] @@ -1011,7 +1011,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits message_admins("[key_name_admin(usr)] added a latent zombie infection to all humans.") log_admin("[key_name(usr)] added a latent zombie infection to all humans.") - SSblackbox.add_details("admin_verb","Mass Zombie Infection") + SSblackbox.record_feedback("tally", "admin_verb", 1, "Mass Zombie Infection") /client/proc/mass_zombie_cure() set category = "Fun" @@ -1029,7 +1029,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits message_admins("[key_name_admin(usr)] cured all zombies.") log_admin("[key_name(usr)] cured all zombies.") - SSblackbox.add_details("admin_verb","Mass Zombie Cure") + SSblackbox.record_feedback("tally", "admin_verb", 1, "Mass Zombie Cure") /client/proc/polymorph_all() set category = "Fun" @@ -1048,7 +1048,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits message_admins("[key_name_admin(usr)] started polymorphed all living mobs.") log_admin("[key_name(usr)] polymorphed all living mobs.") - SSblackbox.add_details("admin_verb","Polymorph All") + SSblackbox.record_feedback("tally", "admin_verb", 1, "Polymorph All") for(var/mob/living/M in mobs) CHECK_TICK @@ -1089,7 +1089,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits message_admins("[key_name_admin(usr)] sent a tip of the round.") log_admin("[key_name(usr)] sent \"[input]\" as the Tip of the Round.") - SSblackbox.add_details("admin_verb","Show Tip") + SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Tip") #define ON_PURRBATION(H) (!(H.dna.features["tail_human"] == "None" && H.dna.features["ears"] == "None")) @@ -1166,7 +1166,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits if (GLOB.hub_visibility && !world.reachable) message_admins("WARNING: The server will not show up on the hub because byond is detecting that a filewall is blocking incoming connections.") - SSblackbox.add_details("admin_toggle","Toggled Hub Visibility|[GLOB.hub_visibility]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggled Hub Visibility", "[GLOB.hub_visibility]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/smite(mob/living/carbon/human/target as mob) set name = "Smite" diff --git a/code/modules/admin/verbs/reestablish_db_connection.dm b/code/modules/admin/verbs/reestablish_db_connection.dm index 5c5edf6d17..b00f0e2ccb 100644 --- a/code/modules/admin/verbs/reestablish_db_connection.dm +++ b/code/modules/admin/verbs/reestablish_db_connection.dm @@ -17,11 +17,11 @@ SSdbcore.Disconnect() log_admin("[key_name(usr)] has forced the database to disconnect") message_admins("[key_name_admin(usr)] has forced the database to disconnect!") - SSblackbox.add_details("admin_verb","Force Reestablished Database Connection") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Force Reestablished Database Connection") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] is attempting to re-established the DB Connection") message_admins("[key_name_admin(usr)] is attempting to re-established the DB Connection") - SSblackbox.add_details("admin_verb","Reestablished Database Connection") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Reestablished Database Connection") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! SSdbcore.failed_connections = 0 if(!SSdbcore.Connect()) diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index 34c25dcea6..b929e83ada 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -23,7 +23,7 @@ attach(A2,user) name = "[A.name]-[A2.name] assembly" update_icon() - SSblackbox.add_details("assembly_made","[initial(A.name)]-[initial(A2.name)]") + SSblackbox.record_feedback("tally", "assembly_made", 1, "[initial(A.name)]-[initial(A2.name)]") /obj/item/device/assembly_holder/proc/attach(obj/item/device/assembly/A, mob/user) if(!A.remove_item_from_storage(src)) diff --git a/code/modules/cargo/exports.dm b/code/modules/cargo/exports.dm index 27552e1582..92b953e7b2 100644 --- a/code/modules/cargo/exports.dm +++ b/code/modules/cargo/exports.dm @@ -132,8 +132,7 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they total_amount += amount cost *= GLOB.E**(-1*k_elasticity*amount) //marginal cost modifier - SSblackbox.add_details("export_sold_amount","[O.type]|[amount]") - SSblackbox.add_details("export_sold_cost","[O.type]|[the_cost]") + SSblackbox.record_feedback("nested tally", "export_sold_cost", 1, list("[O.type]", "[the_cost]")) // Total printout for the cargo console. // Called before the end of current export cycle. diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 96cadfa392..fba2c486ab 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -30,7 +30,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox, toggle_ghost_ears)( usr.client.prefs.chat_toggles ^= CHAT_GHOSTEARS to_chat(usr, "As a ghost, you will now [(usr.client.prefs.chat_toggles & CHAT_GHOSTEARS) ? "see all speech in the world" : "only see speech from nearby mobs"].") usr.client.prefs.save_preferences() - SSblackbox.add_details("preferences_verb","Toggle Ghost Ears|[usr.client.prefs.chat_toggles & CHAT_GHOSTEARS]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Ears", "[usr.client.prefs.chat_toggles & CHAT_GHOSTEARS]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Ghost/chatterbox/toggle_ghost_ears/Get_checked(client/C) return C.prefs.chat_toggles & CHAT_GHOSTEARS @@ -41,7 +41,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox, toggle_ghost_sight) usr.client.prefs.chat_toggles ^= CHAT_GHOSTSIGHT to_chat(usr, "As a ghost, you will now [(usr.client.prefs.chat_toggles & CHAT_GHOSTSIGHT) ? "see all emotes in the world" : "only see emotes from nearby mobs"].") usr.client.prefs.save_preferences() - SSblackbox.add_details("preferences_verb","Toggle Ghost Sight|[usr.client.prefs.chat_toggles & CHAT_GHOSTSIGHT]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Sight", "[usr.client.prefs.chat_toggles & CHAT_GHOSTSIGHT]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Ghost/chatterbox/toggle_ghost_sight/Get_checked(client/C) return C.prefs.chat_toggles & CHAT_GHOSTSIGHT @@ -52,7 +52,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox, toggle_ghost_whispe usr.client.prefs.chat_toggles ^= CHAT_GHOSTWHISPER to_chat(usr, "As a ghost, you will now [(usr.client.prefs.chat_toggles & CHAT_GHOSTWHISPER) ? "see all whispers in the world" : "only see whispers from nearby mobs"].") usr.client.prefs.save_preferences() - SSblackbox.add_details("preferences_verb","Toggle Ghost Whispers|[usr.client.prefs.chat_toggles & CHAT_GHOSTWHISPER]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Whispers", "[usr.client.prefs.chat_toggles & CHAT_GHOSTWHISPER]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Ghost/chatterbox/toggle_ghost_whispers/Get_checked(client/C) return C.prefs.chat_toggles & CHAT_GHOSTWHISPER @@ -63,7 +63,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox, toggle_ghost_radio) usr.client.prefs.chat_toggles ^= CHAT_GHOSTRADIO to_chat(usr, "As a ghost, you will now [(usr.client.prefs.chat_toggles & CHAT_GHOSTRADIO) ? "see radio chatter" : "not see radio chatter"].") usr.client.prefs.save_preferences() - SSblackbox.add_details("preferences_verb","Toggle Ghost Radio|[usr.client.prefs.chat_toggles & CHAT_GHOSTRADIO]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! //social experiment, increase the generation whenever you copypaste this shamelessly GENERATION 1 + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Radio", "[usr.client.prefs.chat_toggles & CHAT_GHOSTRADIO]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! //social experiment, increase the generation whenever you copypaste this shamelessly GENERATION 1 /datum/verbs/menu/Settings/Ghost/chatterbox/toggle_ghost_radio/Get_checked(client/C) return C.prefs.chat_toggles & CHAT_GHOSTRADIO @@ -74,7 +74,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox, toggle_ghost_pda)() usr.client.prefs.chat_toggles ^= CHAT_GHOSTPDA to_chat(usr, "As a ghost, you will now [(usr.client.prefs.chat_toggles & CHAT_GHOSTPDA) ? "see all pda messages in the world" : "only see pda messages from nearby mobs"].") usr.client.prefs.save_preferences() - SSblackbox.add_details("preferences_verb","Toggle Ghost PDA|[usr.client.prefs.chat_toggles & CHAT_GHOSTPDA]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost PDA", "[usr.client.prefs.chat_toggles & CHAT_GHOSTPDA]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Ghost/chatterbox/toggle_ghost_pda/Get_checked(client/C) return C.prefs.chat_toggles & CHAT_GHOSTPDA @@ -89,7 +89,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox/Events, toggle_death usr.client.prefs.toggles ^= DISABLE_DEATHRATTLE usr.client.prefs.save_preferences() to_chat(usr, "You will [(usr.client.prefs.toggles & DISABLE_DEATHRATTLE) ? "no longer" : "now"] get messages when a sentient mob dies.") - SSblackbox.add_details("preferences_verb", "Toggle Deathrattle|[!(usr.client.prefs.toggles & DISABLE_DEATHRATTLE)]") //If you are copy-pasting this, maybe you should spend some time reading the comments. + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Deathrattle", "[!(usr.client.prefs.toggles & DISABLE_DEATHRATTLE)]")) //If you are copy-pasting this, maybe you should spend some time reading the comments. /datum/verbs/menu/Settings/Ghost/chatterbox/Events/toggle_deathrattle/Get_checked(client/C) return !(C.prefs.toggles & DISABLE_DEATHRATTLE) @@ -100,7 +100,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox/Events, toggle_arriv usr.client.prefs.toggles ^= DISABLE_ARRIVALRATTLE to_chat(usr, "You will [(usr.client.prefs.toggles & DISABLE_ARRIVALRATTLE) ? "no longer" : "now"] get messages when someone joins the station.") usr.client.prefs.save_preferences() - SSblackbox.add_details("preferences_verb", "Toggle Arrivalrattle|[!(usr.client.prefs.toggles & DISABLE_ARRIVALRATTLE)]") //If you are copy-pasting this, maybe you should rethink where your life went so wrong. + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Arrivalrattle", "[!(usr.client.prefs.toggles & DISABLE_ARRIVALRATTLE)]")) //If you are copy-pasting this, maybe you should rethink where your life went so wrong. /datum/verbs/menu/Settings/Ghost/chatterbox/Events/toggle_arrivalrattle/Get_checked(client/C) return !(C.prefs.toggles & DISABLE_ARRIVALRATTLE) @@ -111,7 +111,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost, togglemidroundantag)() usr.client.prefs.toggles ^= MIDROUND_ANTAG usr.client.prefs.save_preferences() to_chat(usr, "You will [(usr.client.prefs.toggles & MIDROUND_ANTAG) ? "now" : "no longer"] be considered for midround antagonist positions.") - SSblackbox.add_details("preferences_verb","Toggle Midround Antag|[usr.client.prefs.toggles & MIDROUND_ANTAG]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Midround Antag", "[usr.client.prefs.toggles & MIDROUND_ANTAG]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Ghost/togglemidroundantag/Get_checked(client/C) return C.prefs.toggles & MIDROUND_ANTAG @@ -128,7 +128,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggletitlemusic)() else to_chat(usr, "You will no longer hear music in the game lobby.") usr.stop_sound_channel(CHANNEL_LOBBYMUSIC) - SSblackbox.add_details("preferences_verb","Toggle Lobby Music|[usr.client.prefs.toggles & SOUND_LOBBY]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Lobby Music", "[usr.client.prefs.toggles & SOUND_LOBBY]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Sound/toggletitlemusic/Get_checked(client/C) return C.prefs.toggles & SOUND_LOBBY @@ -147,7 +147,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, togglemidis)() var/client/C = usr.client if(C && C.chatOutput && !C.chatOutput.broken && C.chatOutput.loaded) C.chatOutput.sendMusic(" ") - SSblackbox.add_details("preferences_verb","Toggle Hearing Midis|[usr.client.prefs.toggles & SOUND_MIDI]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Hearing Midis", "[usr.client.prefs.toggles & SOUND_MIDI]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Sound/togglemidis/Get_checked(client/C) return C.prefs.toggles & SOUND_MIDI @@ -162,7 +162,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggle_instruments)() to_chat(usr, "You will now hear people playing musical instruments.") else to_chat(usr, "You will no longer hear musical instruments.") - SSblackbox.add_details("preferences_verb","Toggle Instruments|[usr.client.prefs.toggles & SOUND_INSTRUMENTS]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Instruments", "[usr.client.prefs.toggles & SOUND_INSTRUMENTS]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Sound/toggle_instruments/Get_checked(client/C) return C.prefs.toggles & SOUND_INSTRUMENTS @@ -179,7 +179,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, Toggle_Soundscape)() to_chat(usr, "You will no longer hear ambient sounds.") usr.stop_sound_channel(CHANNEL_AMBIENCE) usr.stop_sound_channel(CHANNEL_BUZZ) - SSblackbox.add_details("preferences_verb","Toggle Ambience|[usr.client.prefs.toggles & SOUND_AMBIENCE]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ambience", "[usr.client.prefs.toggles & SOUND_AMBIENCE]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Sound/Toggle_Soundscape/Get_checked(client/C) return C.prefs.toggles & SOUND_AMBIENCE @@ -196,7 +196,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggle_ship_ambience)() to_chat(usr, "You will no longer hear ship ambience.") usr.stop_sound_channel(CHANNEL_BUZZ) usr.client.ambience_playing = 0 - SSblackbox.add_details("preferences_verb", "Toggle Ship Ambience|[usr.client.prefs.toggles & SOUND_SHIP_AMBIENCE]") //If you are copy-pasting this, I bet you read this comment expecting to see the same thing :^) + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ship Ambience", "[usr.client.prefs.toggles & SOUND_SHIP_AMBIENCE]")) //If you are copy-pasting this, I bet you read this comment expecting to see the same thing :^) /datum/verbs/menu/Settings/Sound/toggle_ship_ambience/Get_checked(client/C) return C.prefs.toggles & SOUND_SHIP_AMBIENCE @@ -208,7 +208,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggle_announcement_sound)() usr.client.prefs.toggles ^= SOUND_ANNOUNCEMENTS to_chat(usr, "You will now [(usr.client.prefs.toggles & SOUND_ANNOUNCEMENTS) ? "hear announcement sounds" : "no longer hear announcements"].") usr.client.prefs.save_preferences() - SSblackbox.add_details("preferences_verb","Toggle Announcement Sound|[usr.client.prefs.toggles & SOUND_ANNOUNCEMENTS]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Announcement Sound", "[usr.client.prefs.toggles & SOUND_ANNOUNCEMENTS]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Sound/toggle_announcement_sound/Get_checked(client/C) return C.prefs.toggles & SOUND_ANNOUNCEMENTS @@ -223,7 +223,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggleprayersounds)() to_chat(usr, "You will now hear prayer sounds.") else to_chat(usr, "You will no longer prayer sounds.") - SSblackbox.add_details("admin_toggle", "Toggle Prayer Sounds|[usr.client.prefs.toggles & SOUND_PRAYERS]") + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Prayer Sounds", "[usr.client.prefs.toggles & SOUND_PRAYERS]")) /datum/verbs/menu/Settings/Sound/toggleprayersounds/Get_checked(client/C) return C.prefs.toggles & SOUND_PRAYERS @@ -236,7 +236,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggleprayersounds)() var/client/C = usr.client if(C && C.chatOutput && !C.chatOutput.broken && C.chatOutput.loaded) C.chatOutput.sendMusic(" ") - SSblackbox.add_details("preferences_verb","Stop Self Sounds") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Stop Self Sounds")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! TOGGLE_CHECKBOX(/datum/verbs/menu/Settings, listen_ooc)() @@ -246,7 +246,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings, listen_ooc)() usr.client.prefs.chat_toggles ^= CHAT_OOC usr.client.prefs.save_preferences() to_chat(usr, "You will [(usr.client.prefs.chat_toggles & CHAT_OOC) ? "now" : "no longer"] see messages on the OOC channel.") - SSblackbox.add_details("preferences_verb","Toggle Seeing OOC|[usr.client.prefs.chat_toggles & CHAT_OOC]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Seeing OOC", "[usr.client.prefs.chat_toggles & CHAT_OOC]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/listen_ooc/Get_checked(client/C) return C.prefs.chat_toggles & CHAT_OOC @@ -337,7 +337,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS prefs.toggles ^= INTENT_STYLE to_chat(src, "[(prefs.toggles & INTENT_STYLE) ? "Clicking directly on intents selects them." : "Clicking on intents rotates selection clockwise."]") prefs.save_preferences() - SSblackbox.add_details("preferences_verb","Toggle Intent Selection|[prefs.toggles & INTENT_STYLE]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Intent Selection", "[prefs.toggles & INTENT_STYLE]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/verb/toggle_ghost_hud_pref() set name = "Toggle Ghost HUD" @@ -349,7 +349,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS prefs.save_preferences() if(isobserver(mob)) mob.hud_used.show_hud() - SSblackbox.add_details("preferences_verb","Toggle Ghost HUD|[prefs.ghost_hud]") + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost HUD", "[prefs.ghost_hud]")) /client/verb/toggle_inquisition() // warning: unexpected inquisition set name = "Toggle Inquisitiveness" @@ -362,7 +362,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS to_chat(src, "You will now examine everything you click on.") else to_chat(src, "You will no longer examine things you click on.") - SSblackbox.add_details("preferences_verb","Toggle Ghost Inquisitiveness|[prefs.inquisitive_ghost]") + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Inquisitiveness", "[prefs.inquisitive_ghost]")) //Admin Preferences /client/proc/toggleadminhelpsound() @@ -374,7 +374,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS prefs.toggles ^= SOUND_ADMINHELP prefs.save_preferences() to_chat(usr, "You will [(prefs.toggles & SOUND_ADMINHELP) ? "now" : "no longer"] hear a sound when adminhelps arrive.") - SSblackbox.add_details("admin_toggle","Toggle Adminhelp Sound|[prefs.toggles & SOUND_ADMINHELP]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Adminhelp Sound", "[prefs.toggles & SOUND_ADMINHELP]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/toggleannouncelogin() set name = "Do/Don't Announce Login" @@ -385,7 +385,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS prefs.toggles ^= ANNOUNCE_LOGIN prefs.save_preferences() to_chat(usr, "You will [(prefs.toggles & ANNOUNCE_LOGIN) ? "now" : "no longer"] have an announcement to other admins when you login.") - SSblackbox.add_details("admin_toggle","Toggle Login Announcement|[prefs.toggles & ANNOUNCE_LOGIN]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Login Announcement", "[prefs.toggles & ANNOUNCE_LOGIN]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/toggle_hear_radio() set name = "Show/Hide Radio Chatter" @@ -396,7 +396,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS prefs.chat_toggles ^= CHAT_RADIO prefs.save_preferences() to_chat(usr, "You will [(prefs.chat_toggles & CHAT_RADIO) ? "now" : "no longer"] see radio chatter from nearby radios or speakers") - SSblackbox.add_details("admin_toggle","Toggle Radio Chatter|[prefs.chat_toggles & CHAT_RADIO]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Radio Chatter", "[prefs.chat_toggles & CHAT_RADIO]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/deadchat() set name = "Show/Hide Deadchat" @@ -405,7 +405,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS prefs.chat_toggles ^= CHAT_DEAD prefs.save_preferences() to_chat(src, "You will [(prefs.chat_toggles & CHAT_DEAD) ? "now" : "no longer"] see deadchat.") - SSblackbox.add_details("admin_toggle","Toggle Deadchat Visibility|[prefs.chat_toggles & CHAT_DEAD]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Deadchat Visibility", "[prefs.chat_toggles & CHAT_DEAD]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/toggleprayers() set name = "Show/Hide Prayers" @@ -414,5 +414,4 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS prefs.chat_toggles ^= CHAT_PRAYER prefs.save_preferences() to_chat(src, "You will [(prefs.chat_toggles & CHAT_PRAYER) ? "now" : "no longer"] see prayerchat.") - SSblackbox.add_details("admin_toggle","Toggle Prayer Visibility|[prefs.chat_toggles & CHAT_PRAYER]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Prayer Visibility", "[prefs.chat_toggles & CHAT_PRAYER]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/client/verbs/ooc.dm b/code/modules/client/verbs/ooc.dm index a0c1e2135a..3287e27f6d 100644 --- a/code/modules/client/verbs/ooc.dm +++ b/code/modules/client/verbs/ooc.dm @@ -115,7 +115,7 @@ GLOBAL_VAR_INIT(normal_ooc_colour, OOC_COLOR) if(new_ooccolor) prefs.ooccolor = sanitize_ooccolor(new_ooccolor) prefs.save_preferences() - SSblackbox.add_details("admin_verb","Set OOC Color") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "Set OOC Color") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return /client/verb/resetcolorooc() diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm index 13aed37142..f983ca2563 100644 --- a/code/modules/clothing/under/accessories.dm +++ b/code/modules/clothing/under/accessories.dm @@ -134,7 +134,7 @@ user.visible_message("[user] pins \the [src] on [M]'s chest.", \ "You pin \the [src] on [M]'s chest.") if(input) - SSblackbox.add_details("commendation", json_encode(list("commender" = "[user.real_name]", "commendee" = "[M.real_name]", "medal" = "[src]", "reason" = input))) + SSblackbox.record_feedback("associative", "commendation", 1, list("commender" = "[user.real_name]", "commendee" = "[M.real_name]", "medal" = "[src]", "reason" = input)) GLOB.commendations += "[user.real_name] awarded [M.real_name] the [name]! \n- [input]" commended = TRUE log_game("[key_name(M)] was given the following commendation by [key_name(user)]: [input]") @@ -323,4 +323,4 @@ icon_state = "skull" item_color = "skull" above_suit = TRUE - armor = list(melee = 5, bullet = 5, laser = 5, energy = 5, bomb = 20, bio = 20, rad = 5, fire = 0, acid = 25) \ No newline at end of file + armor = list(melee = 5, bullet = 5, laser = 5, energy = 5, bomb = 20, bio = 20, rad = 5, fire = 0, acid = 25) diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm index 7ff0bf78be..3e4e93ca4c 100644 --- a/code/modules/crafting/craft.dm +++ b/code/modules/crafting/craft.dm @@ -137,7 +137,7 @@ var/atom/movable/I = new R.result (get_turf(user.loc)) I.CheckParts(parts, R) if(send_feedback) - SSblackbox.add_details("object_crafted","[I.type]") + SSblackbox.record_feedback("tally", "object_crafted", 1, I.type) return 0 return "." return ", missing tool." diff --git a/code/modules/events/_event.dm b/code/modules/events/_event.dm index a7957ede48..266c2d4720 100644 --- a/code/modules/events/_event.dm +++ b/code/modules/events/_event.dm @@ -82,13 +82,13 @@ triggering = FALSE message_admins("[key_name_admin(usr)] cancelled event [name].") log_admin_private("[key_name(usr)] cancelled event [name].") - SSblackbox.add_details("event_admin_cancelled","[typepath]") + SSblackbox.record_feedback("tally", "event_admin_cancelled", 1, typepath) /datum/round_event_control/proc/runEvent(random) var/datum/round_event/E = new typepath() E.current_players = get_active_player_count(alive_check = 1, afk_check = 1, human_check = 1) E.control = src - SSblackbox.add_details("event_ran","[E]") + SSblackbox.record_feedback("tally", "event_ran", 1, "E") occurrences++ testing("[time2text(world.time, "hh:mm:ss")] [E.type]") diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index 8d8c261f59..a8ea51a99c 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -172,7 +172,7 @@ if(istype(A, B)) continue contents_loop qdel(A) - SSblackbox.add_details("food_made","[type]") + SSblackbox.record_feedback("tally", "food_made", 1, type) if(bonus_reagents && bonus_reagents.len) for(var/r_id in bonus_reagents) @@ -266,7 +266,7 @@ initialize_cooked_food(S, M.efficiency) else initialize_cooked_food(S, 1) - SSblackbox.add_details("food_made","[type]") + SSblackbox.record_feedback("tally", "food_made", 1, type) else new /obj/item/reagent_containers/food/snacks/badrecipe(src) if(M && M.dirty < 100) diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm index 7c2bacb6bf..8b10bdf2a6 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm @@ -65,7 +65,7 @@ for(var/i in 1 to (C+rating_amount-1)) var/atom/movable/item = new S.coretype(drop_location()) adjust_item_drop_location(item) - SSblackbox.add_details("slime_core_harvested","[replacetext(S.colour," ","_")]") + SSblackbox.record_feedback("tally", "slime_core_harvested", 1, S.colour) ..() diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 621bfdf05e..aa35b4ae07 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -150,7 +150,7 @@ t_amount++ product_name = t_prod.name if(getYield() >= 1) - SSblackbox.add_details("food_harvested","[product_name]|[getYield()]") + SSblackbox.record_feedback("tally", "food_harvested", getYield(), product_name) parent.update_tray() return result diff --git a/code/modules/jobs/job_types/civilian_chaplain.dm b/code/modules/jobs/job_types/civilian_chaplain.dm index a1a2193026..aefb6f48ae 100644 --- a/code/modules/jobs/job_types/civilian_chaplain.dm +++ b/code/modules/jobs/job_types/civilian_chaplain.dm @@ -80,8 +80,8 @@ Chaplain H.equip_to_slot_or_del(B, slot_in_backpack) - SSblackbox.set_details("religion_name","[new_religion]") - SSblackbox.set_details("religion_deity","[new_deity]") + SSblackbox.record_feedback("text", "religion_name", 1, "[new_religion]", 1) + SSblackbox.record_feedback("text", "religion_deity", 1, "[new_deity]", 1) /datum/outfit/job/chaplain name = "Chaplain" diff --git a/code/modules/mining/equipment/lazarus_injector.dm b/code/modules/mining/equipment/lazarus_injector.dm index e56e8060bf..c7aa2a1859 100644 --- a/code/modules/mining/equipment/lazarus_injector.dm +++ b/code/modules/mining/equipment/lazarus_injector.dm @@ -40,7 +40,7 @@ H.attack_same = 0 loaded = 0 user.visible_message("[user] injects [M] with [src], reviving it.") - SSblackbox.add_details("lazarus_injector", "[M.type]") + SSblackbox.record_feedback("tally", "lazarus_injector", 1, M.type) playsound(src,'sound/effects/refill.ogg',50,1) icon_state = "lazarus_empty" return diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm index 7bb7132bc1..d72dda9657 100644 --- a/code/modules/mining/equipment/regenerative_core.dm +++ b/code/modules/mining/equipment/regenerative_core.dm @@ -43,15 +43,15 @@ update_icon() desc = "All that remains of a hivelord. It is preserved, allowing you to use it to heal completely without danger of decay." if(implanted) - SSblackbox.add_details("hivelord_core", "[type]|implanted") + SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "implanted")) else - SSblackbox.add_details("hivelord_core", "[type]|stabilizer") + SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "stabilizer")) /obj/item/organ/regenerative_core/proc/go_inert() inert = TRUE name = "decayed regenerative core" desc = "All that remains of a hivelord. It has decayed, and is completely useless." - SSblackbox.add_details("hivelord_core", "[type]|inert") + SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "inert")) update_icon() /obj/item/organ/regenerative_core/ui_action_click() @@ -78,10 +78,10 @@ return if(H != user) H.visible_message("[user] forces [H] to apply [src]... [H.p_they()] quickly regenerate all injuries!") - SSblackbox.add_details("hivelord_core","[src.type]|used|other") + SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "other")) else to_chat(user, "You start to smear [src] on yourself. It feels and smells disgusting, but you feel amazingly refreshed in mere moments.") - SSblackbox.add_details("hivelord_core","[src.type]|used|self") + SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "self")) H.revive(full_heal = 1) qdel(src) ..() diff --git a/code/modules/mining/equipment/wormhole_jaunter.dm b/code/modules/mining/equipment/wormhole_jaunter.dm index b9e7cf544f..2e6459e6c4 100644 --- a/code/modules/mining/equipment/wormhole_jaunter.dm +++ b/code/modules/mining/equipment/wormhole_jaunter.dm @@ -16,7 +16,7 @@ /obj/item/device/wormhole_jaunter/attack_self(mob/user) user.visible_message("[user.name] activates the [src.name]!") - SSblackbox.add_details("jaunter", "User") // user activated + SSblackbox.record_feedback("tally", "jaunter", 1, "User") // user activated activate(user, TRUE) /obj/item/device/wormhole_jaunter/proc/turf_check(mob/user) @@ -72,13 +72,13 @@ if(triggered) usr.visible_message("[src] overloads and activates!") - SSblackbox.add_details("jaunter","EMP") // EMP accidental activation + SSblackbox.record_feedback("tally", "jaunter", 1, "EMP") // EMP accidental activation activate(usr) /obj/item/device/wormhole_jaunter/proc/chasm_react(mob/user) if(user.get_item_by_slot(slot_belt) == src) to_chat(user, "Your [src] activates, saving you from the chasm!") - SSblackbox.add_details("jaunter","Chasm") // chasm automatic activation + SSblackbox.record_feedback("tally", "jaunter", 1, "Chasm") // chasm automatic activation activate(user, FALSE) else to_chat(user, "[src] is not attached to your belt, preventing it from saving you from the chasm. RIP.") diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index afdcc1339c..70de30dc5e 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -160,7 +160,7 @@ user.sight |= SEE_MOBS icon_state = "lantern" wisp.orbit(user, 20) - SSblackbox.add_details("wisp_lantern","Freed") + SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Freed") else to_chat(user, "You return the wisp to the lantern.") @@ -175,7 +175,7 @@ wisp.stop_orbit() wisp.loc = src icon_state = "lantern-blue" - SSblackbox.add_details("wisp_lantern","Returned") + SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Returned") /obj/item/device/wisp_lantern/Initialize() . = ..() @@ -217,7 +217,7 @@ linked.teleporting = TRUE var/turf/T = get_turf(src) new /obj/effect/temp_visual/warp_cube(T, user, teleport_color, TRUE) - SSblackbox.add_details("warp_cube","[src.type]") + SSblackbox.record_feedback("tally", "warp_cube", 1, type) new /obj/effect/temp_visual/warp_cube(get_turf(linked), user, linked.teleport_color, FALSE) var/obj/effect/warp_cube/link_holder = new /obj/effect/warp_cube(T) user.forceMove(link_holder) //mess around with loc so the user can't wander around @@ -334,7 +334,7 @@ /obj/item/device/immortality_talisman/attack_self(mob/user) if(cooldown < world.time) - SSblackbox.add_details("immortality_talisman","Activated") // usage + SSblackbox.record_feedback("amount", "immortality_talisman_uses", 1) cooldown = world.time + 600 user.visible_message("[user] vanishes from reality, leaving a hole in [user.p_their()] place!") var/obj/effect/immortality_talisman/Z = new(get_turf(src.loc)) @@ -1287,5 +1287,3 @@ for(var/t in RANGE_TURFS(1, T)) var/obj/effect/temp_visual/hierophant/blast/B = new(t, user, friendly_fire_check) B.damage = 15 //keeps monster damage boost due to lower damage - - diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index cbf7dfd826..339a6efb33 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -120,7 +120,7 @@ return inserted_id = I to_chat(usr, "You insert the ID into [src]'s card slot.") - else + else to_chat(usr, "Error: No valid ID!") flick(icon_deny, src) if(href_list["purchase"]) @@ -137,10 +137,7 @@ inserted_id.mining_points -= prize.cost to_chat(usr, "[src] clanks to life briefly before vending [prize.equipment_name]!") new prize.equipment_path(src.loc) - SSblackbox.add_details("mining_equipment_bought", - "[src.type]|[prize.equipment_path]") - // Add src.type to keep track of free golem purchases - // separately. + SSblackbox.record_feedback("nested tally", "mining_equipment_bought", 1, list("[type]", "[prize.equipment_path]")) else to_chat(usr, "Error: Please insert a valid ID!") flick(icon_deny, src) @@ -194,7 +191,7 @@ if("Mining Conscription Kit") new /obj/item/storage/backpack/duffelbag/mining_conscript(loc) - SSblackbox.add_details("mining_voucher_redeemed", selection) + SSblackbox.record_feedback("tally", "mining_voucher_redeemed", 1, selection) qdel(voucher) /obj/machinery/mineral/equipment_vendor/ex_act(severity, target) diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm index 83dd63cc74..5be7b507f1 100644 --- a/code/modules/mob/living/brain/MMI.dm +++ b/code/modules/mob/living/brain/MMI.dm @@ -71,7 +71,7 @@ name = "Man-Machine Interface: [brainmob.real_name]" update_icon() - SSblackbox.inc("cyborg_mmis_filled",1) + SSblackbox.record_feedback("amount", "mmis_filled", 1) else if(brainmob) O.attack(brainmob, user) //Oh noooeeeee diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index b37ebabb45..e339ac1ea1 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -162,8 +162,8 @@ affecting = get_bodypart(ran_zone(user.zone_selected)) var/target_area = parse_zone(check_zone(user.zone_selected)) //our intended target - SSblackbox.add_details("item_used_for_combat","[I.type]|[I.force]") - SSblackbox.add_details("zone_targeted","[target_area]") + SSblackbox.record_feedback("nested tally", "item_used_for_combat", 1, list(I.force, I.type)) + SSblackbox.record_feedback("tally", "zone_targeted", 1, target_area) // the attacked_by code varies among species return dna.species.spec_attacked_by(I, user, affecting, a_intent, src) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 293f4892e4..831f83e3bc 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -25,7 +25,6 @@ var/clean_on_move = FALSE var/did_feedback = FALSE - var/feedback_key var/hat_offset = -3 @@ -227,8 +226,7 @@ R.notify_ai(NEW_MODULE) if(R.hud_used) R.hud_used.update_robot_modules_display() - if(feedback_key && !did_feedback) - SSblackbox.inc(feedback_key, 1) + SSblackbox.record_feedback("tally", "cyborg_modules", 1, R.module) /obj/item/robot_module/standard name = "Standard" @@ -254,7 +252,6 @@ /obj/item/clockwork/weapon/ratvarian_spear, /obj/item/clockwork/replica_fabricator/cyborg) moduleselect_icon = "standard" - feedback_key = "cyborg_standard" hat_offset = -3 /obj/item/robot_module/medical @@ -285,7 +282,6 @@ /obj/item/clockwork/weapon/ratvarian_spear) cyborg_base_icon = "medical" moduleselect_icon = "medical" - feedback_key = "cyborg_medical" can_be_pushed = FALSE hat_offset = 3 @@ -321,7 +317,6 @@ /obj/item/clockwork/replica_fabricator/cyborg) cyborg_base_icon = "engineer" moduleselect_icon = "engineer" - feedback_key = "cyborg_engineering" magpulsing = TRUE hat_offset = INFINITY // No hats @@ -338,7 +333,6 @@ /obj/item/clockwork/weapon/ratvarian_spear) cyborg_base_icon = "sec" moduleselect_icon = "security" - feedback_key = "cyborg_security" can_be_pushed = FALSE hat_offset = 3 @@ -467,7 +461,6 @@ /obj/item/clockwork/weapon/ratvarian_spear) cyborg_base_icon = "peace" moduleselect_icon = "standard" - feedback_key = "cyborg_peacekeeper" can_be_pushed = FALSE hat_offset = -2 @@ -496,7 +489,6 @@ /obj/item/clockwork/replica_fabricator/cyborg) cyborg_base_icon = "janitor" moduleselect_icon = "janitor" - feedback_key = "cyborg_janitor" hat_offset = -5 clean_on_move = TRUE @@ -548,7 +540,6 @@ /obj/item/borg/sight/xray/truesight_lens) moduleselect_icon = "service" special_light_key = "service" - feedback_key = "cyborg_service" hat_offset = 0 /obj/item/robot_module/butler/respawn_consumable(mob/living/silicon/robot/R, coeff = 1) @@ -601,7 +592,6 @@ /obj/item/borg/sight/xray/truesight_lens) cyborg_base_icon = "miner" moduleselect_icon = "miner" - feedback_key = "cyborg_miner" hat_offset = 0 /obj/item/robot_module/syndicate diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index 3d2f7cf28e..5c95c2ec26 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -63,7 +63,7 @@ if(C.total_damage >= maxHealth * 0.6) //if you do at least 60% of its health with the crusher, you'll get the item spawn_crusher_loot() if(!admin_spawned) - SSblackbox.set_details("megafauna_kills","[initial(name)]") + SSblackbox.record_feedback("tally", "megafauna_kills", 1, "[initial(name)]") if(!elimination) //used so the achievment only occurs for the last legion to die. grant_achievement(medal_type,score_type) ..() diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm index 0ea88aedcf..05dec578bd 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm @@ -56,7 +56,7 @@ ..() /mob/living/simple_animal/hostile/asteroid/death(gibbed) - SSblackbox.add_details("mobs_killed_mining","[src.type]") + SSblackbox.record_feedback("tally", "mobs_killed_mining", 1, type) var/datum/status_effect/crusher_damage/C = has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) if(C && crusher_loot && prob((C.total_damage/maxHealth) * crusher_drop_mod)) //on average, you'll need to kill 20 creatures before getting the item spawn_crusher_loot() diff --git a/code/modules/mob/living/simple_animal/slime/powers.dm b/code/modules/mob/living/simple_animal/slime/powers.dm index 2b817a7f96..e7e71bf091 100644 --- a/code/modules/mob/living/simple_animal/slime/powers.dm +++ b/code/modules/mob/living/simple_animal/slime/powers.dm @@ -167,7 +167,7 @@ M.Friends = Friends.Copy() babies += M M.mutation_chance = Clamp(mutation_chance+(rand(5,-5)),0,100) - SSblackbox.add_details("slime_babies_born","slimebirth_[replacetext(M.colour," ","_")]") + SSblackbox.record_feedback("tally", "slime_babies_born", 1, M.colour) var/mob/living/simple_animal/slime/new_slime = pick(babies) new_slime.a_intent = INTENT_HARM diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 5d1e2fa6d9..a94bd9fcdb 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /obj/item/stock_parts/cell name = "power cell" desc = "A rechargeable electrochemical power cell." @@ -349,3 +350,356 @@ /obj/item/stock_parts/cell/beam_rifle/emp_act(severity) charge = Clamp((charge-(10000/severity)),0,maxcharge) +======= +/obj/item/stock_parts/cell + name = "power cell" + desc = "A rechargeable electrochemical power cell." + icon = 'icons/obj/power.dmi' + icon_state = "cell" + item_state = "cell" + lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + origin_tech = "powerstorage=1" + force = 5 + throwforce = 5 + throw_speed = 2 + throw_range = 5 + w_class = WEIGHT_CLASS_SMALL + var/charge = 0 // note %age conveted to actual charge in New + var/maxcharge = 1000 + materials = list(MAT_METAL=700, MAT_GLASS=50) + var/rigged = 0 // true if rigged to explode + var/chargerate = 100 //how much power is given every tick in a recharger + var/self_recharge = 0 //does it self recharge, over time, or not? + var/ratingdesc = TRUE + var/grown_battery = FALSE // If it's a grown that acts as a battery, add a wire overlay to it. + +/obj/item/stock_parts/cell/get_cell() + return src + +/obj/item/stock_parts/cell/Initialize() + . = ..() + START_PROCESSING(SSobj, src) + charge = maxcharge + if(ratingdesc) + desc += " This one has a power rating of [maxcharge], and you should not swallow it." + update_icon() + +/obj/item/stock_parts/cell/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/item/stock_parts/cell/vv_edit_var(var_name, var_value) + switch(var_name) + if("self_recharge") + if(var_value) + START_PROCESSING(SSobj, src) + else + STOP_PROCESSING(SSobj, src) + . = ..() + +/obj/item/stock_parts/cell/process() + if(self_recharge) + give(chargerate * 0.25) + else + return PROCESS_KILL + +/obj/item/stock_parts/cell/update_icon() + cut_overlays() + if(grown_battery) + add_overlay("grown_wires") + if(charge < 0.01) + return + else if(charge/maxcharge >=0.995) + add_overlay("cell-o2") + else + add_overlay("cell-o1") + +/obj/item/stock_parts/cell/proc/percent() // return % charge of cell + return 100*charge/maxcharge + +// use power from a cell +/obj/item/stock_parts/cell/proc/use(amount) + if(rigged && amount > 0) + explode() + return 0 + if(charge < amount) + return 0 + charge = (charge - amount) + if(!istype(loc, /obj/machinery/power/apc)) + SSblackbox.record_feedback("tally", "cell_used", 1, type) + return 1 + +// recharge the cell +/obj/item/stock_parts/cell/proc/give(amount) + if(rigged && amount > 0) + explode() + return 0 + if(maxcharge < amount) + amount = maxcharge + var/power_used = min(maxcharge-charge,amount) + charge += power_used + return power_used + +/obj/item/stock_parts/cell/examine(mob/user) + ..() + if(rigged) + to_chat(user, "This power cell seems to be faulty!") + else + to_chat(user, "The charge meter reads [round(src.percent() )]%.") + +/obj/item/stock_parts/cell/suicide_act(mob/user) + user.visible_message("[user] is licking the electrodes of [src]! It looks like [user.p_theyre()] trying to commit suicide!") + return (FIRELOSS) + +/obj/item/stock_parts/cell/attackby(obj/item/W, mob/user, params) + ..() + if(istype(W, /obj/item/reagent_containers/syringe)) + var/obj/item/reagent_containers/syringe/S = W + to_chat(user, "You inject the solution into the power cell.") + if(S.reagents.has_reagent("plasma", 5)) + rigged = 1 + S.reagents.clear_reagents() + + +/obj/item/stock_parts/cell/proc/explode() + var/turf/T = get_turf(src.loc) +/* + * 1000-cell explosion(T, -1, 0, 1, 1) + * 2500-cell explosion(T, -1, 0, 1, 1) + * 10000-cell explosion(T, -1, 1, 3, 3) + * 15000-cell explosion(T, -1, 2, 4, 4) + * */ + if (charge==0) + return + var/devastation_range = -1 //round(charge/11000) + var/heavy_impact_range = round(sqrt(charge)/60) + var/light_impact_range = round(sqrt(charge)/30) + var/flash_range = light_impact_range + if (light_impact_range==0) + rigged = 0 + corrupt() + return + //explosion(T, 0, 1, 2, 2) + explosion(T, devastation_range, heavy_impact_range, light_impact_range, flash_range) + qdel(src) + +/obj/item/stock_parts/cell/proc/corrupt() + charge /= 2 + maxcharge = max(maxcharge/2, chargerate) + if (prob(10)) + rigged = 1 //broken batterys are dangerous + +/obj/item/stock_parts/cell/emp_act(severity) + charge -= 1000 / severity + if (charge < 0) + charge = 0 + ..() + +/obj/item/stock_parts/cell/ex_act(severity, target) + ..() + if(!QDELETED(src)) + switch(severity) + if(2) + if(prob(50)) + corrupt() + if(3) + if(prob(25)) + corrupt() + + +/obj/item/stock_parts/cell/blob_act(obj/structure/blob/B) + ex_act(EXPLODE_DEVASTATE) + +/obj/item/stock_parts/cell/proc/get_electrocute_damage() + if(charge >= 1000) + return Clamp(round(charge/10000), 10, 90) + rand(-5,5) + else + return 0 + +/* Cell variants*/ +/obj/item/stock_parts/cell/crap + name = "\improper Nanotrasen brand rechargeable AA battery" + desc = "You can't top the plasma top." //TOTALLY TRADEMARK INFRINGEMENT + maxcharge = 500 + materials = list(MAT_GLASS=40) + rating = 2 + +/obj/item/stock_parts/cell/crap/empty/Initialize() + . = ..() + charge = 0 + +/obj/item/stock_parts/cell/upgraded + name = "high-capacity power cell" + desc = "A power cell with a slightly higher capacity than normal!" + maxcharge = 2500 + materials = list(MAT_GLASS=50) + rating = 2 + chargerate = 1000 + +/obj/item/stock_parts/cell/upgraded/plus + name = "upgraded power cell+" + desc = "A power cell with an even higher capacity than the base model!" + maxcharge = 5000 + +/obj/item/stock_parts/cell/secborg + name = "security borg rechargeable D battery" + origin_tech = null + maxcharge = 600 //600 max charge / 100 charge per shot = six shots + materials = list(MAT_GLASS=40) + rating = 2.5 + +/obj/item/stock_parts/cell/secborg/empty/Initialize() + . = ..() + charge = 0 + +/obj/item/stock_parts/cell/pulse //200 pulse shots + name = "pulse rifle power cell" + maxcharge = 40000 + rating = 3 + chargerate = 1500 + +/obj/item/stock_parts/cell/pulse/carbine //25 pulse shots + name = "pulse carbine power cell" + maxcharge = 5000 + +/obj/item/stock_parts/cell/pulse/pistol //10 pulse shots + name = "pulse pistol power cell" + maxcharge = 2000 + +/obj/item/stock_parts/cell/high + name = "high-capacity power cell" + origin_tech = "powerstorage=2" + icon_state = "hcell" + maxcharge = 10000 + materials = list(MAT_GLASS=60) + rating = 3 + chargerate = 1500 + +/obj/item/stock_parts/cell/high/plus + name = "high-capacity power cell+" + desc = "Where did these come from?" + icon_state = "h+cell" + maxcharge = 15000 + chargerate = 2250 + +/obj/item/stock_parts/cell/high/empty/Initialize() + . = ..() + charge = 0 + +/obj/item/stock_parts/cell/super + name = "super-capacity power cell" + origin_tech = "powerstorage=3;materials=3" + icon_state = "scell" + maxcharge = 20000 + materials = list(MAT_GLASS=300) + rating = 4 + chargerate = 2000 + +/obj/item/stock_parts/cell/super/empty/Initialize() + . = ..() + charge = 0 + +/obj/item/stock_parts/cell/hyper + name = "hyper-capacity power cell" + origin_tech = "powerstorage=4;engineering=4;materials=4" + icon_state = "hpcell" + maxcharge = 30000 + materials = list(MAT_GLASS=400) + rating = 5 + chargerate = 3000 + +/obj/item/stock_parts/cell/hyper/empty/Initialize() + . = ..() + charge = 0 + +/obj/item/stock_parts/cell/bluespace + name = "bluespace power cell" + desc = "A rechargeable transdimensional power cell." + origin_tech = "powerstorage=5;bluespace=4;materials=4;engineering=4" + icon_state = "bscell" + maxcharge = 40000 + materials = list(MAT_GLASS=600) + rating = 6 + chargerate = 4000 + +/obj/item/stock_parts/cell/bluespace/empty/Initialize() + . = ..() + charge = 0 + +/obj/item/stock_parts/cell/infinite + name = "infinite-capacity power cell!" + icon_state = "icell" + origin_tech = "powerstorage=7" + maxcharge = 30000 + materials = list(MAT_GLASS=1000) + rating = 6 + chargerate = 30000 + +/obj/item/stock_parts/cell/infinite/use() + return 1 + +/obj/item/stock_parts/cell/infinite/abductor + name = "void core" + desc = "An alien power cell that produces energy seemingly out of nowhere." + icon = 'icons/obj/abductor.dmi' + icon_state = "cell" + origin_tech = "abductor=5;powerstorage=8;engineering=6" + maxcharge = 50000 + rating = 12 + ratingdesc = FALSE + +/obj/item/stock_parts/cell/infinite/abductor/update_icon() + return + + +/obj/item/stock_parts/cell/potato + name = "potato battery" + desc = "A rechargeable starch based power cell." + icon = 'icons/obj/hydroponics/harvest.dmi' + icon_state = "potato" + origin_tech = "powerstorage=1;biotech=1" + charge = 100 + maxcharge = 300 + materials = list() + rating = 1 + grown_battery = TRUE //it has the overlays for wires + +/obj/item/stock_parts/cell/high/slime + name = "charged slime core" + desc = "A yellow slime core infused with plasma, it crackles with power." + origin_tech = "powerstorage=5;biotech=4" + icon = 'icons/mob/slimes.dmi' + icon_state = "yellow slime extract" + materials = list() + self_recharge = 1 // Infused slime cores self-recharge, over time + +/obj/item/stock_parts/cell/emproof + name = "\improper EMP-proof cell" + desc = "An EMP-proof cell." + maxcharge = 500 + rating = 2 + +/obj/item/stock_parts/cell/emproof/empty/Initialize() + . = ..() + charge = 0 + +/obj/item/stock_parts/cell/emproof/emp_act(severity) + return + +/obj/item/stock_parts/cell/emproof/corrupt() + return + +/obj/item/stock_parts/cell/beam_rifle + name = "beam rifle capacitor" + desc = "A high powered capacitor that can provide huge amounts of energy in an instant." + maxcharge = 50000 + chargerate = 5000 //Extremely energy intensive + rating = 4 + +/obj/item/stock_parts/cell/beam_rifle/corrupt() + return + +/obj/item/stock_parts/cell/beam_rifle/emp_act(severity) + charge = Clamp((charge-(10000/severity)),0,maxcharge) +>>>>>>> 8b19b49... JSON feedback (#32188) diff --git a/code/modules/power/singularity/generator.dm b/code/modules/power/singularity/generator.dm index fdda2e607a..4b4ec71eb6 100644 --- a/code/modules/power/singularity/generator.dm +++ b/code/modules/power/singularity/generator.dm @@ -32,7 +32,7 @@ if(energy > 0) if(energy >= 200) var/turf/T = get_turf(src) - SSblackbox.add_details("engine_started","[src.type]") + SSblackbox.record_feedback("tally", "engine_started", 1, type) var/obj/singularity/S = new creation_type(T, 50) transfer_fingerprints_to(S) qdel(src) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index e694eea11f..085c618c42 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -278,7 +278,7 @@ if(user) user.update_inv_hands() - SSblackbox.add_details("gun_fired","[src.type]") + SSblackbox.record_feedback("tally", "gun_fired", 1, type) return TRUE /obj/item/gun/proc/reset_semicd() diff --git a/code/modules/projectiles/guns/medbeam.dm b/code/modules/projectiles/guns/medbeam.dm index c94deefd08..d2d7437577 100644 --- a/code/modules/projectiles/guns/medbeam.dm +++ b/code/modules/projectiles/guns/medbeam.dm @@ -55,7 +55,7 @@ current_beam = new(user,current_target,time=6000,beam_icon_state="medbeam",btype=/obj/effect/ebeam/medical) INVOKE_ASYNC(current_beam, /datum/beam.proc/Start) - SSblackbox.add_details("gun_fired","[src.type]") + SSblackbox.record_feedback("tally", "gun_fired", 1, type) /obj/item/gun/medbeam/process() diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index b16d0bc2e7..5997d1d1c3 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -377,8 +377,8 @@ remove_reagent(B, (multiplier * cached_required_reagents[B]), safety = 1) for(var/P in C.results) - SSblackbox.add_details("chemical_reaction", "[P]|[cached_results[P]*multiplier]") multiplier = max(multiplier, 1) //this shouldnt happen ... + SSblackbox.record_feedback("tally", "chemical_reaction", cached_results[P]*multiplier, P) add_reagent(P, cached_results[P]*multiplier, null, chem_temp) var/list/seen = viewers(4, get_turf(my_atom)) diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 27bf596df0..f3143e1193 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -3,7 +3,7 @@ var/deletes_extract = TRUE /datum/chemical_reaction/slime/on_reaction(datum/reagents/holder) - SSblackbox.add_details("slime_cores_used","[type]") + SSblackbox.record_feedback("tally", "slime_cores_used", 1, "type") if(deletes_extract) delete_extract(holder) @@ -641,4 +641,3 @@ /datum/chemical_reaction/slime/flight_potion/on_reaction(datum/reagents/holder) new /obj/item/reagent_containers/glass/bottle/potion/flight(get_turf(holder.my_atom)) ..() - diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index 67aada1c2a..817b8b9c10 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -374,7 +374,6 @@ /obj/machinery/disposal/bin/proc/do_flush() set waitfor = FALSE - SSblackbox.inc("disposal_auto_flush") flush() //timed process diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index d67e899cdd..b98a75e6fd 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -316,15 +316,12 @@ won't update every console in existence) but it's more of a hassle to do. Also, return for(var/T in temp_tech) - var/datum/tech/KT = files.known_tech[T] //For stat logging of high levels - if(files.IsTechHigher(T, temp_tech[T]) && KT.level >= 5) //For stat logging of high levels - SSblackbox.add_details("high_research_level","[KT][KT.level + 1]") //+1 to show the level which we're about to get files.UpdateTech(T, temp_tech[T]) if(linked_lathe) //Also sends salvaged materials to a linked protolathe, if any. for(var/material in linked_destroy.loaded_item.materials) linked_materials.insert_amount(min((linked_materials.max_amount - linked_materials.total_amount), (min(linked_destroy.loaded_item.materials[material]*(linked_destroy.decon_mod/10), linked_destroy.loaded_item.materials[material]))), material) - SSblackbox.add_details("item_deconstructed","[linked_destroy.loaded_item.type]") + SSblackbox.record_feedback("tally", "item_deconstructed", 1, linked_destroy.loaded_item.type) linked_destroy.loaded_item = null for(var/obj/I in linked_destroy.contents) for(var/mob/M in I.contents) @@ -461,7 +458,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, new_item.materials = efficient_mats.Copy() new_item.loc = linked_lathe.loc if(!already_logged) - SSblackbox.add_details("item_printed","[new_item.type]|[amount]") + SSblackbox.record_feedback("tally", "item_printed", amount, new_item.type) already_logged = 1 screen = old_screen linked_lathe.busy = FALSE @@ -528,7 +525,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/obj/item/new_item = new P(src) new_item.loc = linked_imprinter.loc new_item.materials = efficient_mats.Copy() - SSblackbox.add_details("circuit_printed","[new_item.type]") + SSblackbox.record_feedback("tally", "circuit_printed", 1, new_item.type) screen = old_screen linked_imprinter.busy = FALSE else diff --git a/code/modules/research/research.dm b/code/modules/research/research.dm index 12024c4265..284e9d42e7 100644 --- a/code/modules/research/research.dm +++ b/code/modules/research/research.dm @@ -120,6 +120,7 @@ research holder datum. var/datum/tech/KT = known_tech[ID] if(KT && KT.level <= level) KT.level = max(KT.level + 1, level) + SSblackbox.log_research(KT.name, level) //Checks if the origin level can raise current tech levels //Input: Tech's ID and Level; Output: TRUE for yes, FALSE for no diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm index 8563c36ea4..a00becab2e 100644 --- a/code/modules/security_levels/keycard_authentication.dm +++ b/code/modules/security_levels/keycard_authentication.dm @@ -100,13 +100,10 @@ GLOBAL_DATUM_INIT(keycard_events, /datum/events, new) switch(event) if("Red Alert") set_security_level(SEC_LEVEL_RED) - SSblackbox.inc("alert_keycard_auth_red",) if("Emergency Maintenance Access") make_maint_all_access() - SSblackbox.inc("alert_keycard_auth_maint") if("Bluespace Artillery Unlock") toggle_bluespace_artillery() - SSblackbox.inc("alert_keycard_auth_bsa") GLOBAL_VAR_INIT(emergency_access, FALSE) /proc/make_maint_all_access() @@ -116,6 +113,7 @@ GLOBAL_VAR_INIT(emergency_access, FALSE) D.update_icon(0) minor_announce("Access restrictions on maintenance and external airlocks have been lifted.", "Attention! Station-wide emergency declared!",1) GLOB.emergency_access = TRUE + SSblackbox.record_feedback("nested tally", "keycard_auths", 1, list("emergency maintenance access", "enabled")) /proc/revoke_maint_all_access() for(var/area/maintenance/A in world) @@ -124,7 +122,9 @@ GLOBAL_VAR_INIT(emergency_access, FALSE) D.update_icon(0) minor_announce("Access restrictions in maintenance areas have been restored.", "Attention! Station-wide emergency rescinded:") GLOB.emergency_access = FALSE + SSblackbox.record_feedback("nested tally", "keycard_auths", 1, list("emergency maintenance access", "disabled")) /proc/toggle_bluespace_artillery() GLOB.bsa_unlock = !GLOB.bsa_unlock minor_announce("Bluespace Artillery firing protocols have been [GLOB.bsa_unlock? "unlocked" : "locked"]", "Weapons Systems Update:") + SSblackbox.record_feedback("nested tally", "keycard_auths", 1, list("bluespace artillery", GLOB.bsa_unlock? "unlocked" : "locked")) diff --git a/code/modules/security_levels/security_levels.dm b/code/modules/security_levels/security_levels.dm index a145028ad3..177d9a3bb4 100644 --- a/code/modules/security_levels/security_levels.dm +++ b/code/modules/security_levels/security_levels.dm @@ -81,6 +81,7 @@ GLOBAL_VAR_INIT(security_level, 0) FA.update_icon() for(var/obj/machinery/computer/shuttle/pod/pod in GLOB.machines) pod.admin_controlled = 0 + SSblackbox.record_feedback("tally", "security_level_changes", 1, level) else return diff --git a/code/modules/shuttle/arrivals.dm b/code/modules/shuttle/arrivals.dm index b42ee4e0e4..e88f6b204d 100644 --- a/code/modules/shuttle/arrivals.dm +++ b/code/modules/shuttle/arrivals.dm @@ -200,5 +200,5 @@ /obj/docking_port/mobile/arrivals/vv_edit_var(var_name, var_value) switch(var_name) if("perma_docked") - SSblackbox.add_details("admin_secrets_fun_used","ShA[var_value ? "s" : "g"]") + SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "ShA[var_value ? "s" : "g"]") return ..() diff --git a/code/modules/shuttle/manipulator.dm b/code/modules/shuttle/manipulator.dm index 3da4bcc03e..5cbd8de9c7 100644 --- a/code/modules/shuttle/manipulator.dm +++ b/code/modules/shuttle/manipulator.dm @@ -151,7 +151,7 @@ message_admins("[key_name_admin(usr)] fast travelled \ [M]") log_admin("[key_name(usr)] fast travelled [M]") - SSblackbox.add_details("shuttle_fasttravel", M.name) + SSblackbox.record_feedback("text", "shuttle_manipulator", 1, "[M.name]") break if("preview") @@ -178,7 +178,7 @@ with the shuttle manipulator.") log_admin("[key_name(usr)] loaded [mdp] with the \ shuttle manipulator.") - SSblackbox.add_details("shuttle_manipulator", mdp.name) + SSblackbox.record_feedback("text", "shuttle_manipulator", 1, "[mdp.name]") update_icon() diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index a67434ea5f..2fc795568b 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -26,11 +26,16 @@ All ShuttleMove procs go here if(M.pulledby) M.pulledby.stop_pulling() M.stop_pulling() +<<<<<<< HEAD M.visible_message("[src] slams into [M]!") if(M.key || M.get_ghost(TRUE)) SSblackbox.add_details("shuttle_gib", "[type]") else SSblackbox.add_details("shuttle_gib_unintelligent", "[type]") +======= + M.visible_message("[shuttle] slams into [M]!") + SSblackbox.record_feedback("tally", "shuttle_gib", 1, M.type) +>>>>>>> 8b19b49... JSON feedback (#32188) M.gib() else //non-living mobs shouldn't be affected by shuttles, which is why this is an else @@ -183,7 +188,7 @@ All ShuttleMove procs go here /obj/machinery/computer/auxillary_base/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) . = ..() if(z == ZLEVEL_MINING) //Avoids double logging and landing on other Z-levels due to badminnery - SSblackbox.add_details("colonies_dropped", "[x]|[y]|[z]") //Number of times a base has been dropped! + SSblackbox.record_feedback("associative", "colonies_dropped", 1, list("x" = x, "y" = y, "z" = z)) /obj/machinery/gravity_generator/main/beforeShuttleMove(turf/newT, rotation, move_mode) . = ..() diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 7e1dee155d..b73cfb05e2 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -99,8 +99,7 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( SSshuttle.orderhistory += SO SO.generate(pick_n_take(empty_turfs)) - SSblackbox.add_details("cargo_imports", - "[SO.pack.type]|[SO.pack.name]|[SO.pack.cost]") + SSblackbox.record_feedback("nested tally", "cargo_imports", 1, list("[SO.pack.cost]", "[SO.pack.name]")) investigate_log("Order #[SO.id] ([SO.pack.name], placed by [key_name(SO.orderer_ckey)]) has shipped.", INVESTIGATE_CARGO) if(SO.pack.dangerous) message_admins("\A [SO.pack.name] ordered by [key_name_admin(SO.orderer_ckey)] has shipped.") diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 85dc2ae1c3..755d35435d 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -567,7 +567,7 @@ message_admins("[key_name_admin(user)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].") log_game("[key_name(user)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].") - SSblackbox.add_details("voice_of_god", log_message) + SSblackbox.record_feedback("tally", "voice_of_god", 1, log_message) return cooldown diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index e5c046fac1..b10f6acdd0 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -61,7 +61,7 @@ return null /datum/surgery/proc/complete() - SSblackbox.add_details("surgeries_completed", "[type]") + SSblackbox.record_feedback("tally", "surgeries_completed", 1, type) qdel(src) diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm index 6aad347e2a..6d40ab9219 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -91,7 +91,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. /datum/uplink_item/proc/spawn_item(turf/loc, obj/item/device/uplink/U) if(item) - SSblackbox.add_details("traitor_uplink_items_bought", "[name]|[cost]") + SSblackbox.record_feedback("nested tally", "traitor_uplink_items_bought", 1, list("[initial(name)]", "[cost]")) return new item(loc) /datum/uplink_item/proc/buy(mob/user, obj/item/device/uplink/U) @@ -1201,7 +1201,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. /datum/uplink_item/cyber_implants/spawn_item(turf/loc, obj/item/device/uplink/U) if(item) if(istype(item, /obj/item/organ)) - SSblackbox.add_details("traitor_uplink_items_bought", "[item]|[cost]") + SSblackbox.record_feedback("nested tally", "traitor_uplink_items_bought", 1, list("[initial(name)]", "[cost]")) return new /obj/item/storage/box/cyber_implants(loc, item) else return ..() @@ -1399,7 +1399,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. var/obj/goods = new I.item(C) U.purchase_log += "[icon2base64html(goods)]" - SSblackbox.add_details("traitor_uplink_items_bought", "[name]|[cost]") + SSblackbox.record_feedback("nested tally", "traitor_uplink_items_bought", 1, list("[initial(name)]", "[cost]")) return C /datum/uplink_item/badass/random @@ -1425,6 +1425,6 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. var/datum/uplink_item/I = pick(possible_items) U.telecrystals -= I.cost U.spent_telecrystals += I.cost - SSblackbox.add_details("traitor_uplink_items_bought","[name]|[I.cost]") - SSblackbox.add_details("traitor_random_uplink_items_gotten","[I.name]") + SSblackbox.record_feedback("nested tally", "traitor_uplink_items_bought", 1, list("[initial(I.name)]", "[cost]")) + SSblackbox.record_feedback("tally", "traitor_random_uplink_items_gotten", 1, initial(I.name)) return new I.item(loc) From 7b244b40fb16e832fee7e8bd3c3093f47d65d676 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 17 Nov 2017 23:25:20 -0500 Subject: [PATCH 002/328] Update changeling.dm --- code/game/gamemodes/changeling/changeling.dm | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 914937e9e3..57c871b8ae 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -113,31 +113,21 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th if(changeling.objectives.len) var/count = 1 for(var/datum/objective/objective in changeling.objectives) -<<<<<<< HEAD if(istype(objective, /datum/objective/crew)) if(objective.check_completion()) text += "
Objective #[count]: [objective.explanation_text] Success! (Optional)" - SSblackbox.add_details("changeling_objective","[objective.type]|SUCCESS") + SSblackbox.record_feedback("nested tally", "changeling_objective", 1, list("[objective.type]", "SUCCESS")) else text += "
Objective #[count]: [objective.explanation_text] Fail. (Optional)" - SSblackbox.add_details("changeling_objective","[objective.type]|FAIL") + SSblackbox.record_feedback("nested tally", "changeling_objective", 1, list("[objective.type]", "FAIL")) else if(objective.check_completion()) text += "
Objective #[count]: [objective.explanation_text] Success!" - SSblackbox.add_details("changeling_objective","[objective.type]|SUCCESS") + SSblackbox.record_feedback("nested tally", "changeling_objective", 1, list("[objective.type]", "SUCCESS")) else text += "
Objective #[count]: [objective.explanation_text] Fail." - SSblackbox.add_details("changeling_objective","[objective.type]|FAIL") + SSblackbox.record_feedback("nested tally", "changeling_objective", 1, list("[objective.type]", "FAIL")) changelingwin = 0 -======= - if(objective.check_completion()) - text += "
Objective #[count]: [objective.explanation_text] Success!" - SSblackbox.record_feedback("nested tally", "changeling_objective", 1, list("[objective.type]", "SUCCESS")) - else - text += "
Objective #[count]: [objective.explanation_text] Fail." - SSblackbox.record_feedback("nested tally", "changeling_objective", 1, list("[objective.type]", "FAIL")) - changelingwin = 0 ->>>>>>> 8b19b49... JSON feedback (#32188) count++ if(changelingwin) @@ -191,4 +181,4 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th if(equip) user.equip_to_slot_or_del(C, GLOB.slot2slot[slot]) - user.regenerate_icons() \ No newline at end of file + user.regenerate_icons() From a0d70d8823a5ac2a5f3b758d06bd6d2ec28e89b6 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 17 Nov 2017 23:28:09 -0500 Subject: [PATCH 003/328] Update traitor.dm --- code/game/gamemodes/traitor/traitor.dm | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 9bb2013947..7d659207cc 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -113,23 +113,21 @@ if(traitor.objectives.len)//If the traitor had no objectives, don't need to process this. var/count = 1 for(var/datum/objective/objective in traitor.objectives) -<<<<<<< HEAD if(istype(objective, /datum/objective/crew)) if(objective.check_completion()) objectives += "
Objective #[count]: [objective.explanation_text] Success! (Optional)" - SSblackbox.add_details("traitor_objective","[objective.type]|SUCCESS") + SSblackbox.record_feedback("nested tally", "traitor_objective", 1, list("[objective.type]", "SUCCESS")) else objectives += "
Objective #[count]: [objective.explanation_text] Fail. (Optional)" - SSblackbox.add_details("traitor_objective","[objective.type]|FAIL") -======= - if(objective.check_completion()) - objectives += "
Objective #[count]: [objective.explanation_text] Success!" - SSblackbox.record_feedback("nested tally", "traitor_objective", 1, list("[objective.type]", "SUCCESS")) ->>>>>>> 8b19b49... JSON feedback (#32188) + SSblackbox.record_feedback("nested tally", "traitor_objective", 1, list("[objective.type]", "FAIL")) else - objectives += "
Objective #[count]: [objective.explanation_text] Fail." - SSblackbox.record_feedback("nested tally", "traitor_objective", 1, list("[objective.type]", "FAIL")) - traitorwin = FALSE + if(objective.check_completion()) + objectives += "
Objective #[count]: [objective.explanation_text] Success!" + SSblackbox.record_feedback("nested tally", "traitor_objective", 1, list("[objective.type]", "SUCCESS")) + else + objectives += "
Objective #[count]: [objective.explanation_text] Fail." + SSblackbox.record_feedback("nested tally", "traitor_objective", 1, list("[objective.type]", "FAIL")) + traitorwin = FALSE count++ if(uplink_true) From eea00b4d850fea7947bc830e93dcaa4bb93a669a Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 17 Nov 2017 23:29:09 -0500 Subject: [PATCH 004/328] Update wizard.dm --- code/game/gamemodes/wizard/wizard.dm | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index dc392946da..6d691d197c 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -89,31 +89,21 @@ var/count = 1 var/wizardwin = 1 for(var/datum/objective/objective in wizard.objectives) -<<<<<<< HEAD if(istype(objective, /datum/objective/crew)) if(objective.check_completion()) text += "
Objective #[count]: [objective.explanation_text] Success! (Optional)" - SSblackbox.add_details("wizard_objective","[objective.type]|SUCCESS") + SSblackbox.record_feedback("nested tally", "wizard_objective", 1, list("[objective.type]", "SUCCESS")) else text += "
Objective #[count]: [objective.explanation_text] Fail. (Optional)" - SSblackbox.add_details("wizard_objective","[objective.type]|FAIL") + SSblackbox.record_feedback("nested tally", "wizard_objective", 1, list("[objective.type]", "FAIL")) else if(objective.check_completion()) text += "
Objective #[count]: [objective.explanation_text] Success!" - SSblackbox.add_details("wizard_objective","[objective.type]|SUCCESS") + SSblackbox.record_feedback("nested tally", "wizard_objective", 1, list("[objective.type]", "SUCCESS")) else text += "
Objective #[count]: [objective.explanation_text] Fail." - SSblackbox.add_details("wizard_objective","[objective.type]|FAIL") + SSblackbox.record_feedback("nested tally", "wizard_objective", 1, list("[objective.type]", "FAIL")) wizardwin = 0 -======= - if(objective.check_completion()) - text += "
Objective #[count]: [objective.explanation_text] Success!" - SSblackbox.record_feedback("nested tally", "wizard_objective", 1, list("[objective.type]", "SUCCESS")) - else - text += "
Objective #[count]: [objective.explanation_text] Fail." - SSblackbox.record_feedback("nested tally", "wizard_objective", 1, list("[objective.type]", "FAIL")) - wizardwin = 0 ->>>>>>> 8b19b49... JSON feedback (#32188) count++ if(wizard.current && wizard.current.stat!=2 && wizardwin) From 4bf7fd963d54fe01cd45ac78f6c18292b2e9a3bd Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 17 Nov 2017 23:30:31 -0500 Subject: [PATCH 005/328] Update secrets.dm --- code/modules/admin/secrets.dm | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index b19c80d362..2b9237f1fe 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -272,13 +272,8 @@ if("monkey") if(!check_rights(R_FUN)) return -<<<<<<< HEAD - SSblackbox.add_details("admin_secrets_fun_used","Monkeyize All Humans") - for(var/mob/living/carbon/human/H in GLOB.mob_list) -======= SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Monkeyize All Humans") - for(var/mob/living/carbon/human/H in GLOB.carbon_list) ->>>>>>> 8b19b49... JSON feedback (#32188) + for(var/mob/living/carbon/human/H in GLOB.mob_list) spawn(0) H.monkeyize() ok = 1 From b55312613f4459e8ff8dca09bb06ac306159fafb Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 17 Nov 2017 23:31:47 -0500 Subject: [PATCH 006/328] Update secrets.dm --- code/modules/admin/secrets.dm | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index 2b9237f1fe..4bcdb91925 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -504,13 +504,8 @@ if("dorf") if(!check_rights(R_FUN)) return -<<<<<<< HEAD - SSblackbox.add_details("admin_secrets_fun_used","Dwarf Beards") - for(var/mob/living/carbon/human/B in GLOB.mob_list) -======= SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Dwarf Beards") - for(var/mob/living/carbon/human/B in GLOB.carbon_list) ->>>>>>> 8b19b49... JSON feedback (#32188) + for(var/mob/living/carbon/human/B in GLOB.mob_list) B.facial_hair_style = "Dward Beard" B.update_hair() message_admins("[key_name_admin(usr)] activated dorf mode") From 9cb06c70f694e3ee986e05b1c62af133e88d514a Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 17 Nov 2017 23:33:22 -0500 Subject: [PATCH 007/328] Update adminjump.dm --- code/modules/admin/verbs/adminjump.dm | 166 +------------------------- 1 file changed, 3 insertions(+), 163 deletions(-) diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm index 26fb42fe04..1e7f89fc8d 100644 --- a/code/modules/admin/verbs/adminjump.dm +++ b/code/modules/admin/verbs/adminjump.dm @@ -1,91 +1,3 @@ -<<<<<<< HEAD -/client/proc/jumptoarea(area/A in GLOB.sortedAreas) - set name = "Jump to Area" - set desc = "Area to jump to" - set category = "Admin" - if(!src.holder) - to_chat(src, "Only administrators may use this command.") - return - - if(!A) - return - - var/list/turfs = list() - for(var/area/Ar in A.related) - for(var/turf/T in Ar) - if(T.density) - continue - turfs.Add(T) - - var/turf/T = safepick(turfs) - if(!T) - to_chat(src, "Nowhere to jump to!") - return - usr.forceMove(T) - log_admin("[key_name(usr)] jumped to [A]") - message_admins("[key_name_admin(usr)] jumped to [A]") - SSblackbox.add_details("admin_verb","Jump To Area") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - -/client/proc/jumptoturf(turf/T in world) - set name = "Jump to Turf" - set category = "Admin" - if(!src.holder) - to_chat(src, "Only administrators may use this command.") - return - - log_admin("[key_name(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]") - message_admins("[key_name_admin(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]") - usr.loc = T - SSblackbox.add_details("admin_verb","Jump To Turf") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return - -/client/proc/jumptomob(mob/M in GLOB.mob_list) - set category = "Admin" - set name = "Jump to Mob" - - if(!src.holder) - to_chat(src, "Only administrators may use this command.") - return - - log_admin("[key_name(usr)] jumped to [key_name(M)]") - message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]") - if(src.mob) - var/mob/A = src.mob - var/turf/T = get_turf(M) - if(T && isturf(T)) - SSblackbox.add_details("admin_verb","Jump To Mob") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - A.forceMove(M.loc) - else - to_chat(A, "This mob is not located in the game world.") - -/client/proc/jumptocoord(tx as num, ty as num, tz as num) - set category = "Admin" - set name = "Jump to Coordinate" - - if (!holder) - to_chat(src, "Only administrators may use this command.") - return - - if(src.mob) - var/mob/A = src.mob - A.x = tx - A.y = ty - A.z = tz - SSblackbox.add_details("admin_verb","Jump To Coordiate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - message_admins("[key_name_admin(usr)] jumped to coordinates [tx], [ty], [tz]") - -/client/proc/jumptokey() - set category = "Admin" - set name = "Jump to Key" - - if(!src.holder) - to_chat(src, "Only administrators may use this command.") - return - - var/list/keys = list() - for(var/mob/M in GLOB.player_list) - keys += M.client -======= /client/proc/jumptoarea(area/A in GLOB.sortedAreas) set name = "Jump to Area" set desc = "Area to jump to" @@ -172,82 +84,11 @@ var/list/keys = list() for(var/mob/M in GLOB.player_list) keys += M.client ->>>>>>> 8b19b49... JSON feedback (#32188) var/client/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in sortKey(keys) - if(!selection) - to_chat(src, "No keys found.") - return + if(!selection) + to_chat(src, "No keys found.") + return var/mob/M = selection.mob -<<<<<<< HEAD - log_admin("[key_name(usr)] jumped to [key_name(M)]") - message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]") - - usr.forceMove(M.loc) - - SSblackbox.add_details("admin_verb","Jump To Key") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - -/client/proc/Getmob(mob/M in GLOB.mob_list) - set category = "Admin" - set name = "Get Mob" - set desc = "Mob to teleport" - if(!src.holder) - to_chat(src, "Only administrators may use this command.") - return - - var/atom/loc = get_turf(usr) - log_admin("[key_name(usr)] teleported [key_name(M)] to [COORD(loc)]") - var/msg = "[key_name_admin(usr)] teleported [key_name_admin(M)] to [ADMIN_COORDJMP(loc)]" - message_admins(msg) - admin_ticket_log(M, msg) - M.forceMove(loc) - SSblackbox.add_details("admin_verb","Get Mob") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - -/client/proc/Getkey() - set category = "Admin" - set name = "Get Key" - set desc = "Key to teleport" - - if(!src.holder) - to_chat(src, "Only administrators may use this command.") - return - - var/list/keys = list() - for(var/mob/M in GLOB.player_list) - keys += M.client - var/client/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in sortKey(keys) - if(!selection) - return - var/mob/M = selection.mob - - if(!M) - return - log_admin("[key_name(usr)] teleported [key_name(M)]") - var/msg = "[key_name_admin(usr)] teleported [key_name_admin(M)]" - message_admins(msg) - admin_ticket_log(M, msg) - if(M) - M.forceMove(get_turf(usr)) - usr.loc = M.loc - SSblackbox.add_details("admin_verb","Get Key") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - -/client/proc/sendmob(mob/M in sortmobs()) - set category = "Admin" - set name = "Send Mob" - if(!src.holder) - to_chat(src, "Only administrators may use this command.") - return - var/area/A = input(usr, "Pick an area.", "Pick an area") in GLOB.sortedAreas|null - if(A && istype(A)) - if(M.forceMove(safepick(get_area_turfs(A)))) - - log_admin("[key_name(usr)] teleported [key_name(M)] to [A]") - var/msg = "[key_name_admin(usr)] teleported [key_name_admin(M)] to [A]" - message_admins(msg) - admin_ticket_log(M, msg) - else - to_chat(src, "Failed to move mob to a valid location.") - SSblackbox.add_details("admin_verb","Send Mob") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -======= log_admin("[key_name(usr)] jumped to [key_name(M)]") message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]") @@ -316,4 +157,3 @@ else to_chat(src, "Failed to move mob to a valid location.") SSblackbox.record_feedback("tally", "admin_verb", 1, "Send Mob") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! ->>>>>>> 8b19b49... JSON feedback (#32188) From 2d250c9b0153f206f03485a7d3b2ee61c283adee Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 17 Nov 2017 23:34:31 -0500 Subject: [PATCH 008/328] Update playsound.dm --- code/modules/admin/verbs/playsound.dm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm index 9fad82f87d..6b1edf7709 100644 --- a/code/modules/admin/verbs/playsound.dm +++ b/code/modules/admin/verbs/playsound.dm @@ -92,12 +92,7 @@ if(SSevents.holidays && SSevents.holidays[APRIL_FOOLS]) pitch = pick(0.5, 0.7, 0.8, 0.85, 0.9, 0.95, 1.1, 1.2, 1.4, 1.6, 2.0, 2.5) to_chat(src, "You feel the Honkmother messing with your song...") -<<<<<<< HEAD - SSblackbox.add_details("played_url", "[web_sound_input]|[ckey]") -======= - SSblackbox.record_feedback("nested tally", "played_url", 1, list("[ckey]", "[web_sound_input]")) ->>>>>>> 8b19b49... JSON feedback (#32188) log_admin("[key_name(src)] played web sound: [web_sound_input]") message_admins("[key_name(src)] played web sound: [web_sound_input]") else From 3cee5f356867db7ba0abc75e16f809b53db0812a Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 17 Nov 2017 23:36:00 -0500 Subject: [PATCH 009/328] Update pray.dm --- code/modules/admin/verbs/pray.dm | 128 +++++++++++++++---------------- 1 file changed, 60 insertions(+), 68 deletions(-) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 58dd8f2952..9f5af20b67 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -1,76 +1,68 @@ -/mob/verb/pray(msg as text) - set category = "IC" - set name = "Pray" - - if(GLOB.say_disabled) //This is here to try to identify lag problems - to_chat(usr, "Speech is currently admin-disabled.") - return - - msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN) - if(!msg) - return - log_prayer("[src.key]/([src.name]): [msg]") - if(usr.client) - if(usr.client.prefs.muted & MUTE_PRAY) - to_chat(usr, "You cannot pray (muted).") - return - if(src.client.handle_spam_prevention(msg,MUTE_PRAY)) - return - - var/mutable_appearance/cross = mutable_appearance('icons/obj/storage.dmi', "bible") - var/font_color = "purple" - var/prayer_type = "PRAYER" - var/deity - if(usr.job == "Chaplain") - cross.icon_state = "kingyellow" - font_color = "blue" - prayer_type = "CHAPLAIN PRAYER" - if(SSreligion.deity) - deity = SSreligion.deity - else if(iscultist(usr)) - cross.icon_state = "tome" - font_color = "red" - prayer_type = "CULTIST PRAYER" - deity = "Nar-Sie" - +/mob/verb/pray(msg as text) + set category = "IC" + set name = "Pray" + + if(GLOB.say_disabled) //This is here to try to identify lag problems + to_chat(usr, "Speech is currently admin-disabled.") + return + + msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN) + if(!msg) + return + log_prayer("[src.key]/([src.name]): [msg]") + if(usr.client) + if(usr.client.prefs.muted & MUTE_PRAY) + to_chat(usr, "You cannot pray (muted).") + return + if(src.client.handle_spam_prevention(msg,MUTE_PRAY)) + return + + var/mutable_appearance/cross = mutable_appearance('icons/obj/storage.dmi', "bible") + var/font_color = "purple" + var/prayer_type = "PRAYER" + var/deity + if(usr.job == "Chaplain") + cross.icon_state = "kingyellow" + font_color = "blue" + prayer_type = "CHAPLAIN PRAYER" + if(SSreligion.deity) + deity = SSreligion.deity + else if(iscultist(usr)) + cross.icon_state = "tome" + font_color = "red" + prayer_type = "CULTIST PRAYER" + deity = "Nar-Sie" + msg = "[icon2html(cross, GLOB.admins)][prayer_type][deity ? " (to [deity])" : ""]: [ADMIN_FULLMONTY(src)] [ADMIN_SC(src)]: [msg]" - - for(var/client/C in GLOB.admins) - if(C.prefs.chat_toggles & CHAT_PRAYER) - to_chat(C, msg) - if(C.prefs.toggles & SOUND_PRAYERS) - if(usr.job == "Chaplain") + + for(var/client/C in GLOB.admins) + if(C.prefs.chat_toggles & CHAT_PRAYER) + to_chat(C, msg) + if(C.prefs.toggles & SOUND_PRAYERS) + if(usr.job == "Chaplain") SEND_SOUND(C, sound('sound/effects/pray.ogg')) -<<<<<<< HEAD - to_chat(usr, "Your prayers have been received by the gods.") - - SSblackbox.add_details("admin_verb","Prayer") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - //log_admin("HELP: [key_name(src)]: [msg]") - -======= to_chat(usr, "Your prayers have been received by the gods.") SSblackbox.record_feedback("tally", "admin_verb", 1, "Prayer") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! //log_admin("HELP: [key_name(src)]: [msg]") ->>>>>>> 8b19b49... JSON feedback (#32188) /proc/CentCom_announce(text , mob/Sender) - var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) - msg = "CENTCOM:[ADMIN_FULLMONTY(Sender)] [ADMIN_CENTCOM_REPLY(Sender)]: [msg]" - to_chat(GLOB.admins, msg) - for(var/obj/machinery/computer/communications/C in GLOB.machines) - C.overrideCooldown() - -/proc/Syndicate_announce(text , mob/Sender) - var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) - msg = "SYNDICATE:[ADMIN_FULLMONTY(Sender)] [ADMIN_SYNDICATE_REPLY(Sender)]: [msg]" - to_chat(GLOB.admins, msg) - for(var/obj/machinery/computer/communications/C in GLOB.machines) - C.overrideCooldown() - -/proc/Nuke_request(text , mob/Sender) - var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) - msg = "NUKE CODE REQUEST:[ADMIN_FULLMONTY(Sender)] [ADMIN_CENTCOM_REPLY(Sender)] [ADMIN_SET_SD_CODE]: [msg]" - to_chat(GLOB.admins, msg) - for(var/obj/machinery/computer/communications/C in GLOB.machines) - C.overrideCooldown() + var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) + msg = "CENTCOM:[ADMIN_FULLMONTY(Sender)] [ADMIN_CENTCOM_REPLY(Sender)]: [msg]" + to_chat(GLOB.admins, msg) + for(var/obj/machinery/computer/communications/C in GLOB.machines) + C.overrideCooldown() + +/proc/Syndicate_announce(text , mob/Sender) + var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) + msg = "SYNDICATE:[ADMIN_FULLMONTY(Sender)] [ADMIN_SYNDICATE_REPLY(Sender)]: [msg]" + to_chat(GLOB.admins, msg) + for(var/obj/machinery/computer/communications/C in GLOB.machines) + C.overrideCooldown() + +/proc/Nuke_request(text , mob/Sender) + var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) + msg = "NUKE CODE REQUEST:[ADMIN_FULLMONTY(Sender)] [ADMIN_CENTCOM_REPLY(Sender)] [ADMIN_SET_SD_CODE]: [msg]" + to_chat(GLOB.admins, msg) + for(var/obj/machinery/computer/communications/C in GLOB.machines) + C.overrideCooldown() From 98ce27d0ad64844efd0d6092d182d382cc865ee1 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 17 Nov 2017 23:37:32 -0500 Subject: [PATCH 010/328] Update cell.dm --- code/modules/power/cell.dm | 354 ------------------------------------- 1 file changed, 354 deletions(-) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index a94bd9fcdb..5e1966cca0 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -1,356 +1,3 @@ -<<<<<<< HEAD -/obj/item/stock_parts/cell - name = "power cell" - desc = "A rechargeable electrochemical power cell." - icon = 'icons/obj/power.dmi' - icon_state = "cell" - item_state = "cell" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - origin_tech = "powerstorage=1" - force = 5 - throwforce = 5 - throw_speed = 2 - throw_range = 5 - w_class = WEIGHT_CLASS_SMALL - var/charge = 0 // note %age conveted to actual charge in New - var/maxcharge = 1000 - materials = list(MAT_METAL=700, MAT_GLASS=50) - var/rigged = 0 // true if rigged to explode - var/chargerate = 100 //how much power is given every tick in a recharger - var/self_recharge = 0 //does it self recharge, over time, or not? - var/ratingdesc = TRUE - var/grown_battery = FALSE // If it's a grown that acts as a battery, add a wire overlay to it. - -/obj/item/stock_parts/cell/get_cell() - return src - -/obj/item/stock_parts/cell/New() - ..() - START_PROCESSING(SSobj, src) - charge = maxcharge - if(ratingdesc) - desc += " This one has a power rating of [maxcharge], and you should not swallow it." - update_icon() - -/obj/item/stock_parts/cell/Destroy() - STOP_PROCESSING(SSobj, src) - return ..() - -/obj/item/stock_parts/cell/vv_edit_var(var_name, var_value) - switch(var_name) - if("self_recharge") - if(var_value) - START_PROCESSING(SSobj, src) - else - STOP_PROCESSING(SSobj, src) - . = ..() - -/obj/item/stock_parts/cell/process() - if(self_recharge) - give(chargerate * 0.25) - else - return PROCESS_KILL - -/obj/item/stock_parts/cell/update_icon() - cut_overlays() - if(grown_battery) - add_overlay("grown_wires") - if(charge < 0.01) - return - else if(charge/maxcharge >=0.995) - add_overlay("cell-o2") - else - add_overlay("cell-o1") - -/obj/item/stock_parts/cell/proc/percent() // return % charge of cell - return 100*charge/maxcharge - -// use power from a cell -/obj/item/stock_parts/cell/proc/use(amount) - if(rigged && amount > 0) - explode() - return 0 - if(charge < amount) - return 0 - charge = (charge - amount) - if(!istype(loc, /obj/machinery/power/apc)) - SSblackbox.add_details("cell_used","[src.type]") - return 1 - -// recharge the cell -/obj/item/stock_parts/cell/proc/give(amount) - if(rigged && amount > 0) - explode() - return 0 - if(maxcharge < amount) - amount = maxcharge - var/power_used = min(maxcharge-charge,amount) - charge += power_used - return power_used - -/obj/item/stock_parts/cell/examine(mob/user) - ..() - if(rigged) - to_chat(user, "This power cell seems to be faulty!") - else - to_chat(user, "The charge meter reads [round(src.percent() )]%.") - -/obj/item/stock_parts/cell/suicide_act(mob/user) - user.visible_message("[user] is licking the electrodes of [src]! It looks like [user.p_theyre()] trying to commit suicide!") - return (FIRELOSS) - -/obj/item/stock_parts/cell/attackby(obj/item/W, mob/user, params) - ..() - if(istype(W, /obj/item/reagent_containers/syringe)) - var/obj/item/reagent_containers/syringe/S = W - to_chat(user, "You inject the solution into the power cell.") - if(S.reagents.has_reagent("plasma", 5)) - rigged = 1 - S.reagents.clear_reagents() - - -/obj/item/stock_parts/cell/proc/explode() - var/turf/T = get_turf(src.loc) -/* - * 1000-cell explosion(T, -1, 0, 1, 1) - * 2500-cell explosion(T, -1, 0, 1, 1) - * 10000-cell explosion(T, -1, 1, 3, 3) - * 15000-cell explosion(T, -1, 2, 4, 4) - * */ - if (charge==0) - return - var/devastation_range = -1 //round(charge/11000) - var/heavy_impact_range = round(sqrt(charge)/60) - var/light_impact_range = round(sqrt(charge)/30) - var/flash_range = light_impact_range - if (light_impact_range==0) - rigged = 0 - corrupt() - return - //explosion(T, 0, 1, 2, 2) - explosion(T, devastation_range, heavy_impact_range, light_impact_range, flash_range) - qdel(src) - -/obj/item/stock_parts/cell/proc/corrupt() - charge /= 2 - maxcharge = max(maxcharge/2, chargerate) - if (prob(10)) - rigged = 1 //broken batterys are dangerous - -/obj/item/stock_parts/cell/emp_act(severity) - charge -= 1000 / severity - if (charge < 0) - charge = 0 - ..() - -/obj/item/stock_parts/cell/ex_act(severity, target) - ..() - if(!QDELETED(src)) - switch(severity) - if(2) - if(prob(50)) - corrupt() - if(3) - if(prob(25)) - corrupt() - - -/obj/item/stock_parts/cell/blob_act(obj/structure/blob/B) - ex_act(EXPLODE_DEVASTATE) - -/obj/item/stock_parts/cell/proc/get_electrocute_damage() - if(charge >= 1000) - return Clamp(round(charge/10000), 10, 90) + rand(-5,5) - else - return 0 - -/* Cell variants*/ -/obj/item/stock_parts/cell/crap - name = "\improper Nanotrasen brand rechargeable AA battery" - desc = "You can't top the plasma top." //TOTALLY TRADEMARK INFRINGEMENT - maxcharge = 500 - materials = list(MAT_GLASS=40) - rating = 2 - -/obj/item/stock_parts/cell/crap/empty/New() - ..() - charge = 0 - -/obj/item/stock_parts/cell/upgraded - name = "high-capacity power cell" - desc = "A power cell with a slightly higher capacity than normal!" - maxcharge = 2500 - materials = list(MAT_GLASS=50) - rating = 2 - chargerate = 1000 - -/obj/item/stock_parts/cell/upgraded/plus - name = "upgraded power cell+" - desc = "A power cell with an even higher capacity than the base model!" - maxcharge = 5000 - -/obj/item/stock_parts/cell/secborg - name = "security borg rechargeable D battery" - origin_tech = null - maxcharge = 600 //600 max charge / 100 charge per shot = six shots - materials = list(MAT_GLASS=40) - rating = 2.5 - -/obj/item/stock_parts/cell/secborg/empty/New() - ..() - charge = 0 - -/obj/item/stock_parts/cell/pulse //200 pulse shots - name = "pulse rifle power cell" - maxcharge = 40000 - rating = 3 - chargerate = 1500 - -/obj/item/stock_parts/cell/pulse/carbine //25 pulse shots - name = "pulse carbine power cell" - maxcharge = 5000 - -/obj/item/stock_parts/cell/pulse/pistol //10 pulse shots - name = "pulse pistol power cell" - maxcharge = 2000 - -/obj/item/stock_parts/cell/high - name = "high-capacity power cell" - origin_tech = "powerstorage=2" - icon_state = "hcell" - maxcharge = 10000 - materials = list(MAT_GLASS=60) - rating = 3 - chargerate = 1500 - -/obj/item/stock_parts/cell/high/plus - name = "high-capacity power cell+" - desc = "Where did these come from?" - icon_state = "h+cell" - maxcharge = 15000 - chargerate = 2250 - -/obj/item/stock_parts/cell/high/empty/New() - ..() - charge = 0 - -/obj/item/stock_parts/cell/super - name = "super-capacity power cell" - origin_tech = "powerstorage=3;materials=3" - icon_state = "scell" - maxcharge = 20000 - materials = list(MAT_GLASS=300) - rating = 4 - chargerate = 2000 - -/obj/item/stock_parts/cell/super/empty/New() - ..() - charge = 0 - -/obj/item/stock_parts/cell/hyper - name = "hyper-capacity power cell" - origin_tech = "powerstorage=4;engineering=4;materials=4" - icon_state = "hpcell" - maxcharge = 30000 - materials = list(MAT_GLASS=400) - rating = 5 - chargerate = 3000 - -/obj/item/stock_parts/cell/hyper/empty/New() - ..() - charge = 0 - -/obj/item/stock_parts/cell/bluespace - name = "bluespace power cell" - desc = "A rechargeable transdimensional power cell." - origin_tech = "powerstorage=5;bluespace=4;materials=4;engineering=4" - icon_state = "bscell" - maxcharge = 40000 - materials = list(MAT_GLASS=600) - rating = 6 - chargerate = 4000 - -/obj/item/stock_parts/cell/bluespace/empty/New() - ..() - charge = 0 - -/obj/item/stock_parts/cell/infinite - name = "infinite-capacity power cell!" - icon_state = "icell" - origin_tech = "powerstorage=7" - maxcharge = 30000 - materials = list(MAT_GLASS=1000) - rating = 6 - chargerate = 30000 - -/obj/item/stock_parts/cell/infinite/use() - return 1 - -/obj/item/stock_parts/cell/infinite/abductor - name = "void core" - desc = "An alien power cell that produces energy seemingly out of nowhere." - icon = 'icons/obj/abductor.dmi' - icon_state = "cell" - origin_tech = "abductor=5;powerstorage=8;engineering=6" - maxcharge = 50000 - rating = 12 - ratingdesc = FALSE - -/obj/item/stock_parts/cell/infinite/abductor/update_icon() - return - - -/obj/item/stock_parts/cell/potato - name = "potato battery" - desc = "A rechargeable starch based power cell." - icon = 'icons/obj/hydroponics/harvest.dmi' - icon_state = "potato" - origin_tech = "powerstorage=1;biotech=1" - charge = 100 - maxcharge = 300 - materials = list() - rating = 1 - grown_battery = TRUE //it has the overlays for wires - -/obj/item/stock_parts/cell/high/slime - name = "charged slime core" - desc = "A yellow slime core infused with plasma, it crackles with power." - origin_tech = "powerstorage=5;biotech=4" - icon = 'icons/mob/slimes.dmi' - icon_state = "yellow slime extract" - materials = list() - self_recharge = 1 // Infused slime cores self-recharge, over time - -/obj/item/stock_parts/cell/emproof - name = "\improper EMP-proof cell" - desc = "An EMP-proof cell." - maxcharge = 500 - rating = 2 - -/obj/item/stock_parts/cell/emproof/empty/New() - ..() - charge = 0 - -/obj/item/stock_parts/cell/emproof/emp_act(severity) - return - -/obj/item/stock_parts/cell/emproof/corrupt() - return - -/obj/item/stock_parts/cell/beam_rifle - name = "beam rifle capacitor" - desc = "A high powered capacitor that can provide huge amounts of energy in an instant." - maxcharge = 50000 - chargerate = 5000 //Extremely energy intensive - rating = 4 - -/obj/item/stock_parts/cell/beam_rifle/corrupt() - return - -/obj/item/stock_parts/cell/beam_rifle/emp_act(severity) - charge = Clamp((charge-(10000/severity)),0,maxcharge) -======= /obj/item/stock_parts/cell name = "power cell" desc = "A rechargeable electrochemical power cell." @@ -702,4 +349,3 @@ /obj/item/stock_parts/cell/beam_rifle/emp_act(severity) charge = Clamp((charge-(10000/severity)),0,maxcharge) ->>>>>>> 8b19b49... JSON feedback (#32188) From 49c72a8a9109f70cf4e1bd2c7ffdeb6329ffe159 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 17 Nov 2017 23:39:06 -0500 Subject: [PATCH 011/328] Update on_move.dm --- code/modules/shuttle/on_move.dm | 8 -------- 1 file changed, 8 deletions(-) diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index 2fc795568b..2c48d18e6e 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -26,16 +26,8 @@ All ShuttleMove procs go here if(M.pulledby) M.pulledby.stop_pulling() M.stop_pulling() -<<<<<<< HEAD - M.visible_message("[src] slams into [M]!") - if(M.key || M.get_ghost(TRUE)) - SSblackbox.add_details("shuttle_gib", "[type]") - else - SSblackbox.add_details("shuttle_gib_unintelligent", "[type]") -======= M.visible_message("[shuttle] slams into [M]!") SSblackbox.record_feedback("tally", "shuttle_gib", 1, M.type) ->>>>>>> 8b19b49... JSON feedback (#32188) M.gib() else //non-living mobs shouldn't be affected by shuttles, which is why this is an else From 591efe27a3e2017a918b273d713cb4d5dd71d87a Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sat, 18 Nov 2017 00:19:35 -0500 Subject: [PATCH 012/328] Update robot_modules.dm --- code/modules/mob/living/silicon/robot/robot_modules.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 831f83e3bc..b1be1c3076 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -353,7 +353,6 @@ /obj/item/clockwork/weapon/ratvarian_spear) cyborg_base_icon = "k9" moduleselect_icon = "k9" - feedback_key = "cyborg_k9" can_be_pushed = FALSE hat_offset = INFINITY @@ -389,7 +388,6 @@ /obj/item/clockwork/weapon/ratvarian_spear) cyborg_base_icon = "medihound" moduleselect_icon = "medihound" - feedback_key = "cyborg_medihound" can_be_pushed = FALSE hat_offset = INFINITY @@ -412,7 +410,6 @@ /obj/item/clockwork/replica_fabricator/cyborg) cyborg_base_icon = "scrubpup" moduleselect_icon = "scrubpup" - feedback_key = "cyborg_scrubpup" hat_offset = INFINITY clean_on_move = TRUE From c98faf5bb513cc4159855ae978763245c3b50d53 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sat, 18 Nov 2017 00:23:19 -0500 Subject: [PATCH 013/328] Update _cit_helpers.dm --- code/citadel/_cit_helpers.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/citadel/_cit_helpers.dm b/code/citadel/_cit_helpers.dm index f3db31c228..1eacc01ef3 100644 --- a/code/citadel/_cit_helpers.dm +++ b/code/citadel/_cit_helpers.dm @@ -121,7 +121,7 @@ GLOBAL_VAR_INIT(miscreants_allowed, FALSE) prefs.chat_toggles ^= CHAT_LOOC prefs.save_preferences() src << "You will [(prefs.chat_toggles & CHAT_LOOC) ? "now" : "no longer"] see messages on the LOOC channel." - SSblackbox.add_details("admin_verb","TLOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "TLOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/togglelooc() set category = "Server" @@ -130,7 +130,7 @@ GLOBAL_VAR_INIT(miscreants_allowed, FALSE) toggle_looc() log_admin("[key_name(usr)] toggled LOOC.") message_admins("[key_name_admin(usr)] toggled LOOC.") - SSblackbox.add_details("admin_verb","TLOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "TLOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /proc/toggle_looc(toggle = null) if(toggle != null) //if we're specifically en/disabling ooc @@ -150,7 +150,7 @@ GLOBAL_VAR_INIT(miscreants_allowed, FALSE) log_admin("[key_name(usr)] toggled Dead LOOC.") message_admins("[key_name_admin(usr)] toggled Dead LOOC.") - SSblackbox.add_details("admin_verb","TDLOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "admin_verb", 1, "TDLOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /mob/living/carbon/proc/has_penis() From bc1f65b3817a8e32f11971453e72a0e2e471841f Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sat, 18 Nov 2017 00:24:52 -0500 Subject: [PATCH 014/328] Update adminhelp.dm --- code/modules/admin/verbs/adminhelp.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 460e162d0b..99e21c2da2 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -393,7 +393,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(initiator) to_chat(initiator, msg) - SSblackbox.inc("ahelp_handleissue") + SSblackbox.record_feedback("tally", "ahelp_stats", 1, "handling") msg = "Ticket [TicketHref("#[id]")] is being handled by [key_name]" message_admins(msg) log_admin_private(msg) From 9e43ca826119ae376e6c740f42f77171467c18ca Mon Sep 17 00:00:00 2001 From: Michiyamenotehifunana <31995558+Michiyamenotehifunana@users.noreply.github.com> Date: Sun, 19 Nov 2017 23:16:27 +0800 Subject: [PATCH 015/328] Adds recolorable clothes --- .../icons/polyclothes/item/uniform.dmi | Bin 0 -> 1410 bytes .../icons/polyclothes/mob/uniform.dmi | Bin 0 -> 9530 bytes modular_citadel/polychromic_clothes.dm | 158 ++++++++++++++++++ tgstation.dme | 1 + 4 files changed, 159 insertions(+) create mode 100644 modular_citadel/icons/polyclothes/item/uniform.dmi create mode 100644 modular_citadel/icons/polyclothes/mob/uniform.dmi create mode 100644 modular_citadel/polychromic_clothes.dm diff --git a/modular_citadel/icons/polyclothes/item/uniform.dmi b/modular_citadel/icons/polyclothes/item/uniform.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4406da89fa21b9ed37fb19c43e165851abcc8546 GIT binary patch literal 1410 zcmV-|1%3L7P)005u}0{{R3yb+fl0001oP)t-smeGfe zjg6U^ncv^v`1tq{5fT6Y|9*ac0000eC@4NYK5A-e(9qBZ4+<(41~VH6hV=-0C=3WlsyZ=Fc604=2wJvR{UBW)E4Pr5go;$*l5mvq+C*^|K6I6 zE;+EKuE2K#QAd3KC)j8t@@5=i_FVoUUG9mr(h6euE@W z3(!0*GLEM%0X+--CTWdYf>^0#Msk%3jV45CwhkfcI%pinVn`gw6 zEVf7N1MT2+e}bDk*#H0o#7RU!RCt{2oQrbWFc3v$8AOPjr0?cIY#@QyrT_nZ-Ic+8 zX)R@i>P%-(Em^~5wRdEpkey7G5(GgIP83>0uXVxHb5oS%Y(Afxvh+JZ9d4u^gE593 zs|tuVbLnAvPTo0-D9M7^#^J-{bwrcnvyTk-8XE#bA)wgM-0o z_8{)Eqrnkfjp#8X8Y~Tc%Jh2LDU)V!0R|k!!vBUrC*nP$vr=5lmzRsn<@|!TM1^N` zR@^~c@(<$F_^1TsqD(TF5+9KPD6yL;UJwL95ClOG1mP`HXjfe{hA5$i^z0N`Yom;& zYP=ymH&`0dT7e0Fc_^f3#}x*QHdJXKq-Uov_GrKo2FLaM6oUa`4+ix7Skq&fdUmX> z980F2ovZ7ccke&kTwhIPAVgJZjaM~Md=U5qd|ZBlexmpwda0M6q3Ma@{|ml+y}i9v z(C+T1w&LX;0fTpVpW2KMSh|OY2L%lmQV;||5ClOG-W1lZpkGa4& zd=IhL-N36y8nj%4usJL~y9zrCH$qp09t*o}gDGK&@BzD#$Ka@*9at4-pz00$b(Dnk ze`9i3A)cO{pDV=Evx6mGyhsB9-TrYuJ8*jR7yS-9_Ja6x@$NYJ5Zn_>jQ#759)!jgQQcG<#~iAP9mW2to?*`$k>Y)yOYR<9Y-T z&kt@O^}1ezjmH0mL1)en4dRa@mO=Qk`G{XSDT61SZ%{oBqu0l8+?RFiHvSm~ojLz7 zB<2qrw66SSNrNYSDudQl2%!-Z4Ei(%RWp<}i1@_PN8=g24p#ug@*h*r4puKKL)ZR7 zdTtv0^FY_gM|{+Yc+cppY@eQY`^|p${Iuo8dq!tv+q}HIxW+V?7$1>fvuPUaxCYbW zBQk7Z5gO7);2KX0USxN6tZKFzJ*@G1$Th2L|DoBOIWv40#N;p3zwi9=;!T`}KYY zcV4__^c%zctm$Fe7U-~J8cd9jNPr(u?6?Ng;$t%OE5MyUHC_+|K@c+V1Bk6wrLAXW QlK=n!07*qoM6N<$f^HImmH+?% literal 0 HcmV?d00001 diff --git a/modular_citadel/icons/polyclothes/mob/uniform.dmi b/modular_citadel/icons/polyclothes/mob/uniform.dmi new file mode 100644 index 0000000000000000000000000000000000000000..3cccdf096420326e792339dbc16f111bad320cef GIT binary patch literal 9530 zcmbVy2UJsSx8|XV2ntd}njq49Q9(gKK&es$q!%e7Nbg7>D58Wa(iI53O2^QPg|5;& z2}nSiAq0dZK*&9OGk4ayGykml=Vm2va&q3j_p_h>2P*k8{Ni_z&~k)FMFB#ox)#%_qRk+Y10fvOkU18BobGoLM67vOZFZ5()SL zEYKlG&W+YND*C=4yt|%^i99@DPzWe{%M9a^BsLvy*nc&_k74tX``SNuSvppRR83xXq({Tzg8HNBU##&-b zX`LAVYid2_zOP$ofBZp&<-&3JT)wpb?Z1HrZ#t(oMxpe>GT zG8F*$03FS{rXkrFWVi?GbcezY_V*7ugv>V0hm2>N$_d&zrk2%ydls;0wX5~7C^MMu zupP6^m4tXn)BkWf1PtF*T%YvM7ZvkzuhAABkW|3u%f(WArD#nF3Vc@gdgV7RXZ%w7 zdW)^v=b3y8VKpDS=eerc@+wNX;aU6Hvl)9N?Wygb)%f6`;qTtV*|+3{4;t8cX)Y$i zszrk+Vq#*W>E6b~_fTtV_Bv7u@H@#;Fele#0=*rn|>$Lp;y zb-T%%Tx{}BzIVsBMNjS4p7do|k<&!dvE@F~x!IyuAUk(~?(AFsGOj z=YU!$IYLrApHr2~7FQfs)Awzs#lNf-cOOs-55H4_yme{5?!XPVzPA|XOp{ty-EJv( z|Neada5AqcczodD$@QY?1WMdx@yh-&)I>kNWpCc@QSgzhn`Tbg4vwPEZM;NhsB1T^ zX6Y-VYIY-Jy4p6s`c>9)=|j=$H*UBkVSBf@*uct`XV-H5GX$CGCZ?y+w5kM(-@|Z5 zq>fMDTxrk7cqwiVPUgOL?V7ew%C`Sj=aH=`GQ??JGDUxp{4?W9oTpu9_`}NY6Nii8 zAz=aoYw&bsq0?TZH!vDiL%?CS1z{+G_=JSV9v&WJB-^&2t7*EA$4efBVyag(PIkfG zG^J(1AU~oQRW4gWCgVBe7t$7exdoW%EYhP9h?^eB)*F9(I6RT9Y@VK;wG#9&P0Bm-};^@du_tvBbiQU3R*n0#iuQn_T_|hggi1cGb^j8pak%pt@NqS?n!UUc&-Zy73undB7FV&b*3#CTXbFm926GSarw%X3pYA> zIjDdMmGYyxxi1&ek~#GxqpT1zwI{;zMqY*>+^iAa|g}8~&;z4F3gz8F8vT8P9q|PLp~@3Bh*YN9N{Y@u)EA zkq?&+p~Uv#9}0_qj;sPhEpYN~o}M(opVF@3>)|>u_$PTr_MSJDhr` zaCgc#^1+b1lXSahp_`@WoF8^n0V}0bLZ%n9KGv`M8jlV9dR_ql>_X-fMX{1UbCll9 zHn_gw6lb4Zyp}}h*g>2J9NXia^1nHdO699g9xy%SYZOb<{ly3+M5SNAdPvzcGr1{C zcU?UL&QIo@u$zgzs)^8}BzyM+=rO@pp~QZ+x*axh)Nx$&P!zJqmF_??oFHpJ$>BI} zGET2b!|2N45tg1~yvDKnYQSTm`64hfIawSoaMCmFq@F~R1@|vm3uV5ZZ9r20{o2Qy^q2cPM{wK>BQKP@JA~PTP*0URkW^r# zGfz&Hdc)R}rqKTW{riQhjB+QZwh?9^a&g0iZeF#9_8%0?=AY$twel#?H438J!FQ3v z^Hw!YZ+$_XP%%as^Fr&EAm6<$?+S`W5#A{;i?MAjX_Ti%eK-1pG1NL%1JShXT`E#a z=AyC1zkt!We+O-iIcDk|`(o!B9ysppVopD9=4#19?!z}>lHx%UBOI#J@M?nCja+=& z*;u+-HNWBy?lh*cB3-oOoqOODA1%5fNLZj7;W>lAM9_Z7@Mibp06yAxoqS7YQ+l)> z>uq_-%E}4=PN4$4aIj2A5GqU;%W5Tt5?tqRmb^O~dh4U;Ogp4)hB)Tber7SFfS{s( z{L>`7P(3H`fl%9MOSuJRR*0he!P#yCYgz7^KL1TN6Eu) z?r3?}p4ct4P-XCV~xYqmi_DKVy_J5@YxQu%O+yAp=&v1n7UVm zozUk(*0Y8j2`~0-mMXLid~)-W%st$`?>oLP3)!^-7(S+p*huRS_$$8})gU?ety4PW9j&H|^k){`sUCEsgX;(K)t zO#Z8@@5Wc-VB%-_qsE>l32~?8lqMzn=lahe*rPr)uF;PsfmeiL5Z1g(y})jtLw_B zh27#xjL2)pUZGek(8Ncln&&zW;5LX*V$kWe?W1zsq+gkADRV|!x2B7FuBY#*oqnVZ zWi?gd{i`427h99AkwBNX)J!AX4Gw1q1SDFc>}xem)$TDliarMYa!h8eAH~EP0pMZuOFf(xi73#;Yee?N{+x6s)Wn(^LXtzS3UD(akr{Oe`>c{r;i) z^Y;&93iBVTx$LD_KF4uEFS^@jb9N!z`7Z!ACx2_2PdJxaFE{q!(WLLuy)L|b#xN!F zfIafa30~@rc7i9_zgk*0%iFwt=e+cdlODrP0QlBxNcq*(9-%#KPo#uvT{qFoglB;> z;w-UE$?`85!Y2h|WThB-yIUzh>cc-(Qo1tgcJV0CFd9=>I04oTx2 zKC;ym9Xu2s%g>`0F^7ackQ%CYu)OpzywK|A%l`#>k+`gUkNMXNJFA+q^%7gtHL7(k zJ&A0s%hu^>H(Bn;s0dfKOSB~ZgLZEh6=Y7rHFM4uRzvx1&)sIXs9qm%_8apD!<*k+ zYi-ft{b)`-uaH826WQ6_w{&;4INEUyIs(i9(_!%2D(>4(PsC`MY)LE|%*`|+u8tYv zUC#p_@f=&R)%O^OAw;Wgq;8SF#KIGf?E;!!uh^8yJyE`rR77(r5G=x~NHLf-Q(UN( z^xBF~6^x(=&o;>%{gpi;Vroz@LTEGC+j5HVZR9;$;R!5&ZuNO&BD%RMS!OcVlNm<{ zc~;uczygvS@1JC_L!d9C2bLthnf?|vL$4hXzr_F8dTFHG|&r<@Z!SznkaB8Ub1r8A+!%B$L) z<+2*?anj`M8x~nFMe*&52*}7Pr8Wr`JPQiRiaciK1wL9foB`3bxQfcIHv`^OT-<}C zF=ffCCZO_#cH1&wa|lliEnlo9S@SV{Hb9=&YKjeBBwn*4Oqb#YTqzeLwrSnOk2x9^X||~vC5DigI?u2%NOro*<2AjcXfqZ544XBHA$8<} zWu~nXi|gy*<*_$~+kQEuq|H|N#-p`XY?J3e;jZzw441MZjH(Z1s+J~FS8L(USQdz! z2bNr!ToHF+D^CI7w0x-{y!V*6H=e#_gBPkgQfX>Mmu4GZJqmp`e3S0h1^HM)JwsX} z$*`QJY#}y8`9i7ed;6<$Dar(X#>4M$RaMWH?I|tMMxZPH8h77aNN6MOj!Rh#2D&NP z9RsBquu(mnO~QSt!RHqiQUN2Qqc48`G$^!+>_Hvq<}*A#S4neuqlPJKL)bbZzAHyo zp{i%C<3mZYmLA-%xuNdKZf~n&E zf??==wef{H^~J;(5%Dbl2}q$`LfKnxQy)rGL)w&fr|ShUG!jw;$~skEXDQf5eW-Rqfp=L#*a^qN&KnT$ivWdkiA^fc36?)`s&#JNsRhAb_EC_;iagerq`xY?C@GTV*SyNh%a=wSI; zIWA+@?DN^y&fI(rHGN06eP9KT#q+p^N&O+Hh3tdDZdGtnLG0at^Bfw{JL%^CRVYP= z@Pm!(5#%2PL4nj7B+o5SY!_K&#lLmAa`i2=vh$?YVt@Zlv`w{qbrS=?hpu!P<1nd$ zs;*j)+XYlsi>i-7m@rf!3IGmUQ&n#G$>~?K%>9kHmXw{4S3LHTZ(JeG_R3&?lkX$vD@Bg`=B75`m!D-~(@ z2X}F`lfz0JPhVE!)qWRuh;5bH?A*hF^o+%Aiy3EzuBlx6*%E$h(h&BMXMUO!NuJ`N zoijYvh6vWC#b}7FM7IW-NL3W?M|xi= z+092*m?X4BAOm?|X(Z2FJbSk$eXUy-s{HZfCBC;Oma9@*AR4N}T+~SoG}<&nQK9*SuQKIY|H zm4v@2OXG%%F|zQj3LJ&6got;&DC;JKNbs-=hy+1CG0ZM+bzasGP0b&xWqj-R@aTCY zEQ)V)VBMW;KGWvVlZchnKoD*RtLo)5qzM`EI-K&Gv9XsRG|eMqZ!54>g7jKq=p|ZF z@%dko`)ehQP$DW5;D>EVQUM`dNg_i=5)qQ|A_}+1(HXiNVt4bXGeKC~^omiY#@Ln= z7g-KcuzJ(PA2zTUhfrcD`_R6Pjg8GoTFJY%B_9-?nEH0O08B(z;es8X%M2Ge;&VhR5`j}pmyFQ33a?y^Chl)TnfPGDqqmSZC|Bx02!5~PN}w)3df+C9PN>-ld0z`Dt+C&f?&B(|VhBO7OG z3Jpeg6#RJ4Hh>WJAED)i@STM0Pm1=PTcAuGz=EC.Cm-M$+y5huZwY|zH&oizEM zKI?%0g}F~&I>BvL)`2d%BJa6jDwv{UYHofleuY*)pV8>&IeS}Mo=|2}>w zH~vA<`*$VPZjAOH@$m2@H&UKvX_&n|aTa6N3%Rp>E2S~ZeSCi|zhKGpoc9{HN78_< z9{-Usuc1M{N*U#M@#5+=Bg#}-p7$UPSb;;T3k$D#`nlUO!(N3=OxH-%$7^b~P8$W$#hU^S~VsUVie&16w7JFb5M6-<|KB zne7SuLdL~(*O^*DOV>yCcW^;WH6FLi%BN|)IhE#SFK%_f*T)xWYC(dHS4!+dt9MKy z=`eUw#VTww<|!i6_~fiH5&dmFRChli77~PGfxSw9^zIZm6a@EKc*6e(f&SMh|Q3tY)@iM`c-QP(v><*oujOtdXwt9*{Pd) z&Tro@_If2JTCNfK1w|ts1o7sm@0o5nvOMRKH~2-Ro09NJreI-RKgnLqC2zOyADxsJ z)I7b;_|5utT9IZhW96Pp;gMWtb6KPmWk+*&yUeOzyl!IfROJzP3|+ zjH>6}ydw}G^x0;=#=812X)Nn~lVjW^N#>r9WIuxlHI6@&l>=H2g~`Uk^puhL`Bx<@ z>#5CAAI}x*Y_qF!Wl@8vw;)R*TG67(iwBIaQTO65T?NOK$bGBen)CZ>T8U~8BEZ<} z-^JxEHz8&3=32s$zM}7Tm#h*pgWzX1WxaMn40wW@3cLyGk zjSap}Of_4js*|*4u^fnZ-V~JRhVTKE8-eDgq@I+aQqU6U<%ywas?5frVwK#WH4FV| zUB&RjfQ3V~aQ%~w7~`{_^ugXtbBddjw60o{wyyu(oP6i)nWn*E=8_DUZH_kS;~$Jp zPOf?pK%F-kL%IL=FREn(j|3#fuJup8J&wZ}y?k?{0 z5S>ZKlZ7EL*DjF1}2fo5)e=-`}&MUcWvA>hD9c(90YgpLcd-UcY|5(_I+% ziNwzX**x#t#}m9X3_X$e>LmVdoCoDtv?276W$sFgp7n7`7fDUR;+8mu#2DBi`s8Oe zthM#F@^1gN^*gv{RbBmz3x_93Y5@f<_FQwdy{yv9O^`oO6s#kyuMo-8!(8>Z&2IdGQlt=^L)K633hV| ziIlwQF~is1b_avO0Fk#wJ^-pG1gFNPCUll-E`^L8F9>KLN!#A`s@>PR9o<37K;C6? zC_oceGwc)FSz23KIKcJt(t_|Os~H*^TIm@nU^mRc$}Cy~+?;V4Qns-N2M0Q?YfSg9 ze#dlyt9V?C@I19jN53Zd3W3W>eMo2F5A%Kw9uv-$;)5%~lD4g^NF?%}5~c2wb74o) zZMF_w5eSjKNFrtvwA}m8osG7)b!*ypb)D-va1$qL{76tN9oiHDHPFmKFZRqB5sCl0 zne^WS&om^BF|16nBGB`KSjMSB7?<#%{X>2`$gpBY&j;^xuZ?^jtt?zwOA>{2%C zQmR3JGQ(7#LWH{Id_laF#r&+xPWyn}8kFn|CH+T6!k;-D(d3PXqjJ?md7Hq~Qv_W?zB5!qRHAtnCjO&su_H^EI@CezyBzt26+kn{3oHMy*Kflj#kvOGn4^J(D7 zYp|O|U<_t0w{aa{!{*GAsx=QKr%n5(GW5mVySRY%gSlsJNvnGU&T^@b^6ZcGb$lEg z^706Os3fS+1I`jP(*|w+5>v0{Vq>M#)Z>N?%hSafOQ2E8v?sd~f?X zJ2M;<$szlAd|_7?FW@shXWdA)mj!#moLtj3g<77k-@g*Rk3h(g>_vNBDFq6;oyX{& znKz9POiuSPLy14UBci75!p?)QW(;C}r~g{g66hVhICP(^vT{7wnDWlLqbDvHi%RH; zV@Kx%qdsGr7F9M7V1tW?8>-aLhi8WEAlI?%rJx4nV!4g}{Q2&61%~G%y0n%L7z*VU>t!sbncKkxPR5G$Mp3B5^ISKZU2sCq z1-gPM3Ad$2ytQMc+zZn1lj#mjFKE?4CLi2nzP)`@L4jS6qHI9gT`xoGUT|cDQerLC>}m$i4W_F%HuR6|}o3u{Uv}X*thmX#ReVCI*kc{=D$%AU$)j z-Y<6el!7gT`z!xV3dWWSl!6GdUEZd;MlEW53LnYCuOv;^ds1B9*43v8{>j|* zuyE)0zGY=?ovbgUAsJ%sh47MSMK#W(iHHlXI`Vns4>5hw7)1Ya0YFD({-rSOP#FIgyMpmE5n34vH1 zG+#_A=R$UOMV9pG7m?f|E;vieyr%yM=?Co#lw#vS`BmKf7eBivq zG;8E8(OHf|SNywl1mf1kFNtu`MAMCZ!?c>bOAeydPg@5C7R?XDSKp@!PH&ZfDs)Bw z_)L|4aS`i~X0h~6d$+r|HY$T>*El(c>|UwWNBx6DBCTVwv;erMmoQ{=cN{6xlx#|* z6jtk==d=`w#3k@mq#1b<%UtNfGNi{DOi+b2s07uIS#_~Isw^g(a54KO>UAWWi8Y0> zAC%Pf-VRZAlQJtH_S2Tx$7XN^1YVT%{N-BPuOS}=JAw?NnRGDkJMY;FMNrZ%5`^*EGaf2T$U5Ar33-;u)Hx7{5 zbK2sDP$+brWT&YX(Kd4%3Yl#10h(PY%98?np`e-eEce9adwFjv&Vci!L#3S$ zLIs6P9g5c>4|1Tq!Hqrgo~IT@KHgvts@1guJ7 zwgO*hbh=H72Efx7e^AoD3F0>pRzm#9m1^^euih(X81?^n9pxmJn+ST6O$k(vLk|0L)lzAV-3z@Q2| P3You can't do that right now!") + return + if(!in_range(src, user)) + return + if(user.incapacitated() || !istype(user) || !in_range(src, user)) + return + + var/choice = input(user,"polychromic thread options", "Clothing Recolor") in list("Primary Color","Secondary Color","Tertiary Color","*CANCEL*") + switch(choice) + + if("Primary Color") + var/primary_color_input = input(usr,"Choose Primary Color") as color|null + if(primary_color_input) + primary_color = sanitize_hexcolor(primary_color_input, desired_format=6, include_crunch=1) + update_icon() + user.update_inv_w_uniform() + + if("Secondary Color") + var/secondary_color_input = input(usr,"Choose Secondary Color") as color|null + if(secondary_color_input) + secondary_color = sanitize_hexcolor(secondary_color_input, desired_format=6, include_crunch=1) + update_icon() + user.update_inv_w_uniform() + + if("Tertiary Color") + var/tertiary_color_input = input(usr,"Choose Tertiary Color") as color|null + if(tertiary_color_input) + tertiary_color = sanitize_hexcolor(tertiary_color_input, desired_format=6, include_crunch=1) + update_icon() + user.update_inv_w_uniform() + +/obj/item/clothing/under/polychromic/worn_overlays(isinhands, icon_file) + . = ..() + if(!isinhands) + if(hasprimary) + var/mutable_appearance/primary_worn = mutable_appearance('modular_citadel/icons/polyclothes/mob/uniform.dmi', "[item_color]-primary") + primary_worn.color = primary_color + . += primary_worn + if(hassecondary) + var/mutable_appearance/secondary_worn = mutable_appearance('modular_citadel/icons/polyclothes/mob/uniform.dmi', "[item_color]-secondary") + secondary_worn.color = secondary_color + . += secondary_worn + if(hastertiary) + var/mutable_appearance/tertiary_worn = mutable_appearance('modular_citadel/icons/polyclothes/mob/uniform.dmi', "[item_color]-tertiary") + tertiary_worn.color = tertiary_color + . += tertiary_worn + +/obj/item/clothing/under/polychromic/examine(mob/user) + ..() + to_chat(user, "Alt-click to recolor it.") + +/obj/item/clothing/under/polychromic/Initialize() + ..() + update_icon() + +/obj/item/clothing/under/polychromic/shirt + name = "polychromic button-up shirt" + desc = "A fancy button-up shirt made with polychromic threads." + icon_state = "polysuit" + item_color = "polysuit" + item_state = "sl_suit" + hasprimary = TRUE + hassecondary = TRUE + hastertiary = TRUE + primary_color = "#FFFFFF" //RGB in hexcode + secondary_color = "#353535" + tertiary_color = "#353535" + +/obj/item/clothing/under/polychromic/kilt + name = "polychromic kilt" + desc = "It's not a skirt!" + icon_state = "polykilt" + item_color = "polykilt" + item_state = "kilt" + hasprimary = TRUE + hassecondary = TRUE + hastertiary = TRUE + primary_color = "#FFFFFF" //RGB in hexcode + secondary_color = "#F08080" + tertiary_color = "#808080" + +/obj/item/clothing/under/polychromic/skirt + name = "polychromic skirt" + desc = "A fancy skirt made with polychromic threads." + icon_state = "polyskirt" + item_color = "polyskirt" + item_state = "rainbow" + hasprimary = TRUE + hassecondary = TRUE + hastertiary = TRUE + primary_color = "#FFFFFF" //RGB in hexcode + secondary_color = "#F08080" + tertiary_color = "#808080" + +/obj/item/clothing/under/polychromic/shorts + name = "polychromic shorts" + desc = "For ease of movement and style." + icon_state = "polyshorts" + item_color = "polyshorts" + item_state = "rainbow" + hasprimary = TRUE + hassecondary = TRUE + hastertiary = TRUE + primary_color = "#353535" //RGB in hexcode + secondary_color = "#808080" + tertiary_color = "#808080" + +/obj/item/clothing/under/polychromic/jumpsuit + name = "polychromic tri-tone jumpsuit" + desc = "A fancy jumpsuit made with polychromic threads." + icon_state = "polyjump" + item_color = "polyjump" + item_state = "rainbow" + hasprimary = TRUE + hassecondary = TRUE + hastertiary = TRUE + primary_color = "#FFFFFF" //RGB in hexcode + secondary_color = "#808080" + tertiary_color = "#FF3535" \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index b68ee744a2..07cb24d372 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2403,4 +2403,5 @@ #include "interface\skin.dmf" #include "modular_citadel\cit_medkits.dm" #include "modular_citadel\cit_screenshake.dm" +#include "modular_citadel\polychromic_clothes.dm" // END_INCLUDE From f1c54c0b779902ffd4285e145428a3032f181a1b Mon Sep 17 00:00:00 2001 From: Michiyamenotehifunana <31995558+Michiyamenotehifunana@users.noreply.github.com> Date: Tue, 21 Nov 2017 21:27:51 +0800 Subject: [PATCH 016/328] implementation, changed 5 pixels --- .../icons/polyclothes/mob/uniform.dmi | Bin 9530 -> 9550 bytes modular_citadel/polychromic_clothes.dm | 38 +++++++++++++++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/modular_citadel/icons/polyclothes/mob/uniform.dmi b/modular_citadel/icons/polyclothes/mob/uniform.dmi index 3cccdf096420326e792339dbc16f111bad320cef..84c957d7112ade2d36732b7816efcfdaedc600f3 100644 GIT binary patch delta 8858 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 M?-^=WX*#_AKYKdY{Qv*} diff --git a/modular_citadel/polychromic_clothes.dm b/modular_citadel/polychromic_clothes.dm index 826df3dd48..b14a083f3e 100644 --- a/modular_citadel/polychromic_clothes.dm +++ b/modular_citadel/polychromic_clothes.dm @@ -155,4 +155,40 @@ hastertiary = TRUE primary_color = "#FFFFFF" //RGB in hexcode secondary_color = "#808080" - tertiary_color = "#FF3535" \ No newline at end of file + tertiary_color = "#FF3535" + +//replaces the jumpsuit contents of the mixed wardrobe + +/obj/structure/closet/wardrobe/mixed/PopulateContents() + if(prob(40)) + new /obj/item/clothing/suit/jacket(src) + if(prob(40)) + new /obj/item/clothing/suit/jacket(src) + new /obj/item/clothing/under/polychromic/jumpsuit(src) + new /obj/item/clothing/under/polychromic/jumpsuit(src) + new /obj/item/clothing/under/polychromic/jumpsuit(src) + new /obj/item/clothing/under/polychromic/shirt(src) + new /obj/item/clothing/under/polychromic/shirt(src) + new /obj/item/clothing/under/polychromic/shirt(src) + new /obj/item/clothing/under/polychromic/kilt(src) + new /obj/item/clothing/under/polychromic/kilt(src) + new /obj/item/clothing/under/polychromic/kilt(src) + new /obj/item/clothing/under/polychromic/skirt(src) + new /obj/item/clothing/under/polychromic/skirt(src) + new /obj/item/clothing/under/polychromic/skirt(src) + new /obj/item/clothing/under/polychromic/shorts(src) + new /obj/item/clothing/under/polychromic/shorts(src) + new /obj/item/clothing/under/polychromic/shorts(src) + new /obj/item/clothing/mask/bandana/red(src) + new /obj/item/clothing/mask/bandana/red(src) + new /obj/item/clothing/mask/bandana/blue(src) + new /obj/item/clothing/mask/bandana/blue(src) + new /obj/item/clothing/mask/bandana/gold(src) + new /obj/item/clothing/mask/bandana/gold(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/shoes/sneakers/brown(src) + new /obj/item/clothing/shoes/sneakers/white(src) + if(prob(30)) + new /obj/item/clothing/suit/hooded/wintercoat(src) + new /obj/item/clothing/shoes/winterboots(src) + return \ No newline at end of file From 973be1b49496c038d967f8c48902921559096f44 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Tue, 21 Nov 2017 14:56:41 -0500 Subject: [PATCH 017/328] Update traitor_bro.dm --- code/game/gamemodes/brother/traitor_bro.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/game/gamemodes/brother/traitor_bro.dm b/code/game/gamemodes/brother/traitor_bro.dm index 67fd86d63e..116bba64ee 100644 --- a/code/game/gamemodes/brother/traitor_bro.dm +++ b/code/game/gamemodes/brother/traitor_bro.dm @@ -121,6 +121,12 @@ if(!(istype(objective, /datum/objective/crew))) win = FALSE objective_count++ + if(win) + text += "
The blood brothers were successful!" + SSblackbox.record_feedback("tally", "brother_success", 1, "SUCCESS") + else + text += "
The blood brothers have failed!" + SSblackbox.record_feedback("tally", "brother_success", 1, "FAIL") text += "
" to_chat(world, text) From 0feca054da3e27dd8c9efe49c4973e40e06ec2f9 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Tue, 21 Nov 2017 14:58:43 -0500 Subject: [PATCH 018/328] cleans up whitespace in traitor_bro.dm --- code/game/gamemodes/brother/traitor_bro.dm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/brother/traitor_bro.dm b/code/game/gamemodes/brother/traitor_bro.dm index 116bba64ee..c1af1601ce 100644 --- a/code/game/gamemodes/brother/traitor_bro.dm +++ b/code/game/gamemodes/brother/traitor_bro.dm @@ -122,12 +122,11 @@ win = FALSE objective_count++ if(win) - text += "
The blood brothers were successful!" - SSblackbox.record_feedback("tally", "brother_success", 1, "SUCCESS") - else - text += "
The blood brothers have failed!" + text += "
The blood brothers were successful!" + SSblackbox.record_feedback("tally", "brother_success", 1, "SUCCESS") + else + text += "
The blood brothers have failed!" SSblackbox.record_feedback("tally", "brother_success", 1, "FAIL") - text += "
" to_chat(world, text) From aedf16a76e1b4be57991def7f43daf96d4e6a86a Mon Sep 17 00:00:00 2001 From: deathride58 Date: Tue, 21 Nov 2017 15:07:31 -0500 Subject: [PATCH 019/328] merges #4011 --- code/controllers/subsystem/blackbox.dm | 1 + code/modules/mob/living/carbon/human/human_defense.dm | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm index f7abc72cbd..a1efcfc167 100644 --- a/code/controllers/subsystem/blackbox.dm +++ b/code/controllers/subsystem/blackbox.dm @@ -154,6 +154,7 @@ feedback data can be recorded in 5 formats: used to track the number of occurances of structured semi-relational values i.e. the results of arcade machines similar to running total, but related values are nested in a multi-dimensional array built the final element in the data list is used as the tracking key, all prior elements are used for nesting + all data list elements must be strings further calls to the same key will: add or subtract from the saved value of the data key if it already exists in the same multi-dimensional position append the key and it's value if it doesn't exist diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index e339ac1ea1..a1e60f8820 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -162,7 +162,7 @@ affecting = get_bodypart(ran_zone(user.zone_selected)) var/target_area = parse_zone(check_zone(user.zone_selected)) //our intended target - SSblackbox.record_feedback("nested tally", "item_used_for_combat", 1, list(I.force, I.type)) + SSblackbox.record_feedback("nested tally", "item_used_for_combat", 1, list("[I.force]", "[I.type]")) SSblackbox.record_feedback("tally", "zone_targeted", 1, target_area) // the attacked_by code varies among species From 0b2ae3905ac6bddac45f209af225e08a00134aad Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 22 Nov 2017 01:49:40 -0600 Subject: [PATCH 020/328] layer memes --- code/__DEFINES/misc.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index b83fc3dd39..425ebbf45f 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -49,8 +49,8 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s #define GENITALS_BEHIND_LAYER 29 //Some genitalia needs to be behind everything, such as with taurs (Taurs use body_behind_layer #define BODY_BEHIND_LAYER 28 //certain mutantrace features (tail when looking south) that must appear behind the body parts #define BODYPARTS_LAYER 27 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag -#define BODY_ADJ_LAYER 26 //certain mutantrace features (snout, body markings) that must appear above the body parts -#define GENITALS_ADJ_LAYER 25 +#define GENITALS_ADJ_LAYER 26 // tits do not magically override body markings. Christ +#define BODY_ADJ_LAYER 25 //certain mutantrace features (snout, body markings) that must appear above the body parts #define BODY_LAYER 24 //underwear, undershirts, socks, eyes, lips(makeup) #define FRONT_MUTATIONS_LAYER 23 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes) #define DAMAGE_LAYER 22 //damage indicators (cuts and burns) From 33c1f85ff69b4e1f45cd63e3c4f5ddf027a20d3e Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 22 Nov 2017 02:39:46 -0600 Subject: [PATCH 021/328] adjusts how boobs look sprite wise No more sports bra tits. --- code/citadel/icons/breasts_onmob.dmi | Bin 768 -> 668 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/code/citadel/icons/breasts_onmob.dmi b/code/citadel/icons/breasts_onmob.dmi index 4d5fc4a40b26b613b63743f5e8bc8c54affa6222..d0597e1a38a32ad8a15943ef75964681fa21dc2f 100644 GIT binary patch delta 431 zcmV;g0Z{&c2Alq+ zpHNAR&VbIUHEA2)CrC2c8HVF*7L@`3co^RPcPrmimmnC$qbJ8R`ZQX^Y;l^#CLK%V zx}!UCgYFBB)j3}&0Dk~3)t;Y^RIva3gwGqq zY;ju6|MGO~Khx+VZYJ>YoF~}b{BIMnf#LPd?TBR)f0s}D?^<~Su|c@v84`DYf}uJS|Yk z;kM_V|J&9S$A2g^(fn-csRkQ8p7e@SsRzrP6twE&y{kc3R+ro$qfsU|000000Qg1z zj7GEgx@x=IKMWHw#nAJGz{vZDW&`K`!PE2rVQpMr6V)5&`9jMLYs`Td+eJd;jMH04M+ez+*}dxBuFpIxD~*3IG5e Z$u|P+DRm{YZ_NMz002ovPDHLkV1oQi(;ol; delta 532 zcmV+v0_**p1%L*S_kZ+BL_t(&f$iGCZks?524D=f&lwCpo2k=tZPJ`sgmVrR+q082 zy#FJVsFAY6%CkYS6)F8c$%hfMI~(OP0~=%&jxh!DnEt^U&AlLf^jOh4N+3nv^ zW7cYc<%1kh*2i&1XWhsi?Y(Em8f<$%&oEC2ui003vgly1(s zACY_&outewb$><7vb|^ZJjqZ%>{q|^|CL@~)c>mm%us;b{lfkK!tn7eT5@)OGIelh zGqUb}Pjs_e9ZzKc)42=g z1*mJq#Nrn)>GmzEi)>nfKem7Fj%v!SdxOcWo+j--3@C@tfRgmi0hWE>I@H+QUgcdN zM|_kq)Ak1d004kXSrCyv4}6gK{{P$#lv94u0=Bc_{r|Z&FY~}93-})x007`q{RPe4 WJ9D$yG!2sg0000 Date: Wed, 22 Nov 2017 02:41:11 -0600 Subject: [PATCH 022/328] reverts layering changes since the sprites should be a tad better --- code/__DEFINES/misc.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 425ebbf45f..b83fc3dd39 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -49,8 +49,8 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s #define GENITALS_BEHIND_LAYER 29 //Some genitalia needs to be behind everything, such as with taurs (Taurs use body_behind_layer #define BODY_BEHIND_LAYER 28 //certain mutantrace features (tail when looking south) that must appear behind the body parts #define BODYPARTS_LAYER 27 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag -#define GENITALS_ADJ_LAYER 26 // tits do not magically override body markings. Christ -#define BODY_ADJ_LAYER 25 //certain mutantrace features (snout, body markings) that must appear above the body parts +#define BODY_ADJ_LAYER 26 //certain mutantrace features (snout, body markings) that must appear above the body parts +#define GENITALS_ADJ_LAYER 25 #define BODY_LAYER 24 //underwear, undershirts, socks, eyes, lips(makeup) #define FRONT_MUTATIONS_LAYER 23 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes) #define DAMAGE_LAYER 22 //damage indicators (cuts and burns) From 64c7fa0cfdbc949e0ed68ff22a29514ab7574274 Mon Sep 17 00:00:00 2001 From: AnturK Date: Wed, 22 Nov 2017 19:44:27 +0100 Subject: [PATCH 023/328] Simple wall turret buff (#32937) * Simple wall turret buff * Adds mapper support --- .../machinery/porta_turret/portable_turret.dm | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 9aa0a8f4b0..670ea2bccf 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -73,6 +73,8 @@ var/obj/machinery/turretid/cp = null + var/wall_turret_direction //The turret will try to shoot from a turf in that direction when in a wall + /obj/machinery/porta_turret/Initialize() . = ..() if(!base) @@ -503,6 +505,20 @@ if(!istype(T) || !istype(U)) return + //Wall turrets will try to find adjacent empty turf to shoot from to cover full arc + if(T.density) + if(wall_turret_direction) + var/turf/closer = get_step(T,wall_turret_direction) + if(istype(closer) && !is_blocked_turf(closer) && T.Adjacent(closer)) + T = closer + else + var/target_dir = get_dir(T,target) + for(var/d in list(0,-45,45)) + var/turf/closer = get_step(T,turn(target_dir,d)) + if(istype(closer) && !is_blocked_turf(closer) && T.Adjacent(closer)) + T = closer + break + update_icon() var/obj/item/projectile/A //any emagged turrets drains 2x power and uses a different projectile? @@ -517,10 +533,13 @@ //Shooting Code: - A.preparePixelProjectile(target, src) + A.preparePixelProjectile(target, T) A.fire() return A +/obj/machinery/porta_turret/shuttleRotate(rotation) + if(wall_turret_direction) + wall_turret_direction = turn(wall_turret_direction,rotation) /obj/machinery/porta_turret/proc/setState(on, mode) if(controllock) From 2934effd36a538f72ac009317daf6cf3b80d8be1 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 14:27:10 -0500 Subject: [PATCH 025/328] Update blackbox.dm --- code/controllers/subsystem/blackbox.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm index a1efcfc167..3a0f3cff24 100644 --- a/code/controllers/subsystem/blackbox.dm +++ b/code/controllers/subsystem/blackbox.dm @@ -9,7 +9,8 @@ SUBSYSTEM_DEF(blackbox) var/triggertime = 0 var/sealed = FALSE //time to stop tracking stats? var/list/research_levels = list() //list of highest tech levels attained that isn't lost lost by destruction of RD computers - var/list/versions = list() //associative list of any feedback variables that have had their format changed since creation and their current version, remember to update this + var/list/versions = list("time_dilation_current" = 2, + "science_techweb_unlock" = 2) //associative list of any feedback variables that have had their format changed since creation and their current version, remember to update this /datum/controller/subsystem/blackbox/Initialize() From 8efbcc9cb0e4b6d9b0a24ce839cf25439a91b945 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 14:28:25 -0500 Subject: [PATCH 026/328] Update time_track.dm --- code/controllers/subsystem/time_track.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/subsystem/time_track.dm b/code/controllers/subsystem/time_track.dm index 5ccfb8af19..17cfa6fc06 100644 --- a/code/controllers/subsystem/time_track.dm +++ b/code/controllers/subsystem/time_track.dm @@ -35,4 +35,4 @@ SUBSYSTEM_DEF(time_track) last_tick_realtime = current_realtime last_tick_byond_time = current_byondtime last_tick_tickcount = current_tickcount - SSblackbox.record_feedback("tally", "time_dilation_current", 1, time_dilation_current) + SSblackbox.record_feedback("associative", "time_dilation_current", 1, list("[time_dilation_current]" = "[SQLtime()]")) From 889defd2ce074ebd62d345c8641d5caa50ad605f Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 14:29:13 -0500 Subject: [PATCH 027/328] Update _event.dm --- code/modules/events/_event.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/events/_event.dm b/code/modules/events/_event.dm index 266c2d4720..a5b23623f2 100644 --- a/code/modules/events/_event.dm +++ b/code/modules/events/_event.dm @@ -88,7 +88,7 @@ var/datum/round_event/E = new typepath() E.current_players = get_active_player_count(alive_check = 1, afk_check = 1, human_check = 1) E.control = src - SSblackbox.record_feedback("tally", "event_ran", 1, "E") + SSblackbox.record_feedback("tally", "event_ran", 1, "[E]") occurrences++ testing("[time2text(world.time, "hh:mm:ss")] [E.type]") From cec6c028f53518d398d605eaa4532a8afa555fb4 Mon Sep 17 00:00:00 2001 From: oranges Date: Thu, 23 Nov 2017 10:16:16 +1300 Subject: [PATCH 028/328] [READY]Refactors uplinks to a component! --- code/__DEFINES/components.dm | 2 +- code/datums/components/_component.dm | 13 +- code/datums/components/uplink.dm | 204 ++++++++++++++++++ code/datums/mind.dm | 21 +- .../uplink_item.dm => datums/uplink_items.dm} | 49 +---- code/datums/uplink_purchase_log.dm | 64 ++++++ code/game/gamemodes/nuclear/nuclear.dm | 13 +- .../gamemodes/nuclear/nuclear_challenge.dm | 17 +- code/game/gamemodes/sandbox/h_sandbox.dm | 2 +- code/game/gamemodes/traitor/traitor.dm | 4 +- .../machinery/computer/telecrystalconsoles.dm | 25 ++- code/game/objects/items.dm | 4 - code/game/objects/items/devices/PDA/PDA.dm | 17 +- .../objects/items/devices/PDA/virus_cart.dm | 19 +- .../game/objects/items/devices/radio/radio.dm | 4 +- .../objects/items/devices/uplink_devices.dm | 31 +++ .../objects/items/implants/implantuplink.dm | 51 +++++ code/game/objects/items/stacks/telecrystal.dm | 20 +- .../awaymissions/mission_code/snowdin.dm | 9 - .../friendly/drone/extra_drone_types.dm | 6 +- code/modules/paperwork/pen.dm | 10 +- code/modules/reagents/chemistry/holder.dm | 12 ++ code/modules/uplink/uplink.dm | 162 -------------- tgstation.dme | 7 + 24 files changed, 468 insertions(+), 298 deletions(-) create mode 100644 code/datums/components/uplink.dm rename code/{modules/uplink/uplink_item.dm => datums/uplink_items.dm} (97%) create mode 100644 code/datums/uplink_purchase_log.dm create mode 100644 code/game/objects/items/devices/uplink_devices.dm delete mode 100644 code/modules/uplink/uplink.dm diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 135fe3ece3..fa7b96f037 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -71,4 +71,4 @@ // /obj/machinery signals #define COMSIG_MACHINE_PROCESS "machine_process" //from machinery subsystem fire(): () -#define COMSIG_MACHINE_PROCESS_ATMOS "machine_process_atmos" //from air subsystem process_atmos_machinery(): () +#define COMSIG_MACHINE_PROCESS_ATMOS "machine_process_atmos" //from air subsystem process_atmos_machinery(): () diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 0c85ddd871..48e1b98fd1 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -16,7 +16,7 @@ if(Initialize(arglist(arguments)) == COMPONENT_INCOMPATIBLE) qdel(src, TRUE, TRUE) return - + _CheckDupesAndJoinParent(P) /datum/component/proc/_CheckDupesAndJoinParent() @@ -45,12 +45,12 @@ if(!old) //let the others know P.SendSignal(COMSIG_COMPONENT_ADDED, src) - + //lazy init the parent's dc list var/list/dc = P.datum_components if(!dc) P.datum_components = dc = list() - + //set up the typecache var/our_type = type for(var/I in _GetInverseTypeList(our_type)) @@ -114,7 +114,7 @@ if(!procs) procs = list() signal_procs = procs - + var/list/sig_types = islist(sig_type_or_types) ? sig_type_or_types : list(sig_type_or_types) for(var/sig_type in sig_types) if(!override) @@ -177,7 +177,7 @@ for(var/I in target) var/datum/component/C = I if(!C.enabled) - continue + continue var/list/sps = C.signal_procs var/datum/callback/CB = LAZYACCESS(sps, sigtype) if(!CB) @@ -255,3 +255,6 @@ target.TakeComponent(I) else target.TakeComponent(comps) + +/datum/component/ui_host() + return parent diff --git a/code/datums/components/uplink.dm b/code/datums/components/uplink.dm new file mode 100644 index 0000000000..407965aeb9 --- /dev/null +++ b/code/datums/components/uplink.dm @@ -0,0 +1,204 @@ +GLOBAL_LIST_EMPTY(uplinks) + +/** + * Uplinks + * + * All /obj/item(s) have a hidden_uplink var. By default it's null. Give the item one with 'new(src') (it must be in it's contents). Then add 'uses.' + * Use whatever conditionals you want to check that the user has an uplink, and then call interact() on their uplink. + * You might also want the uplink menu to open if active. Check if the uplink is 'active' and then interact() with it. +**/ +/datum/component/uplink + dupe_mode = COMPONENT_DUPE_UNIQUE + var/name = "syndicate uplink" + var/active = FALSE + var/lockable = TRUE + var/locked = TRUE + var/telecrystals + var/selected_cat + var/owner = null + var/datum/game_mode/gamemode + var/spent_telecrystals = 0 + var/datum/uplink_purchase_log/purchase_log + var/list/uplink_items + var/hidden_crystals = 0 + +/datum/component/uplink/Initialize(_owner, _lockable = TRUE, _enabled = FALSE, datum/game_mode/_gamemode, starting_tc = 20) + if(!isitem(parent)) + return COMPONENT_INCOMPATIBLE + GLOB.uplinks += src + uplink_items = get_uplink_items(gamemode) + RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy) + RegisterSignal(COMSIG_ITEM_ATTACK_SELF, .proc/interact) + owner = _owner + if(owner) + LAZYINITLIST(GLOB.uplink_purchase_logs_by_key) + if(GLOB.uplink_purchase_logs_by_key[owner]) + purchase_log = GLOB.uplink_purchase_logs_by_key[owner] + else + purchase_log = new(owner, src) + lockable = _lockable + active = _enabled + gamemode = _gamemode + telecrystals = starting_tc + if(!lockable) + active = TRUE + locked = FALSE + +/datum/component/uplink/InheritComponent(datum/component/uplink/U) + lockable |= U.lockable + active |= U.active + if(!gamemode) + gamemode = U.gamemode + telecrystals += U.telecrystals + if(purchase_log && U.purchase_log) + purchase_log.MergeWithAndDel(U.purchase_log) + +/datum/component/uplink/Destroy() + GLOB.uplinks -= src + gamemode = null + return ..() + +/datum/component/uplink/proc/LoadTC(mob/user, obj/item/stack/telecrystal/TC, silent = FALSE) + if(!silent) + to_chat(user, "You slot [TC] into [parent] and charge its internal uplink.") + var/amt = TC.amount + telecrystals += amt + TC.use(amt) + +/datum/component/uplink/proc/set_gamemode(_gamemode) + gamemode = _gamemode + uplink_items = get_uplink_items(gamemode) + +/datum/component/uplink/proc/OnAttackBy(obj/item/I, mob/user) + if(!active) + return //no hitting everyone/everything just to try to slot tcs in! + if(istype(I, /obj/item/stack/telecrystal)) + LoadTC(user, I) + for(var/item in subtypesof(/datum/uplink_item)) + var/datum/uplink_item/UI = item + var/path = null + if(initial(UI.refund_path)) + path = initial(UI.refund_path) + else + path = initial(UI.item) + var/cost = 0 + if(initial(UI.refund_amount)) + cost = initial(UI.refund_amount) + else + cost = initial(UI.cost) + var/refundable = initial(UI.refundable) + if(I.type == path && refundable && I.check_uplink_validity()) + telecrystals += cost + spent_telecrystals -= cost + to_chat(user, "[I] refunded.") + qdel(I) + return + +/datum/component/uplink/proc/interact(mob/user) + if(locked) + return + active = TRUE + if(user) + ui_interact(user) + +/datum/component/uplink/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ + datum/tgui/master_ui = null, datum/ui_state/state = GLOB.inventory_state) + active = TRUE + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "uplink", name, 450, 750, master_ui, state) + ui.set_autoupdate(FALSE) // This UI is only ever opened by one person, and never is updated outside of user input. + ui.set_style("syndicate") + ui.open() + +/datum/component/uplink/ui_data(mob/user) + if(!user.mind) + return + var/list/data = list() + data["telecrystals"] = telecrystals + data["lockable"] = lockable + + data["categories"] = list() + for(var/category in uplink_items) + var/list/cat = list( + "name" = category, + "items" = (category == selected_cat ? list() : null)) + if(category == selected_cat) + for(var/item in uplink_items[category]) + var/datum/uplink_item/I = uplink_items[category][item] + if(I.limited_stock == 0) + continue + if(I.restricted_roles.len) + var/is_inaccessible = 1 + for(var/R in I.restricted_roles) + if(R == user.mind.assigned_role) + is_inaccessible = 0 + if(is_inaccessible) + continue + cat["items"] += list(list( + "name" = I.name, + "cost" = I.cost, + "desc" = I.desc, + )) + data["categories"] += list(cat) + return data + +/datum/component/uplink/ui_act(action, params) + if(!active) + return + + switch(action) + if("buy") + var/item = params["item"] + + var/list/buyable_items = list() + for(var/category in uplink_items) + buyable_items += uplink_items[category] + + if(item in buyable_items) + var/datum/uplink_item/I = buyable_items[item] + MakePurchase(usr, I) + . = TRUE + if("lock") + active = FALSE + locked = TRUE + telecrystals += hidden_crystals + hidden_crystals = 0 + SStgui.close_uis(src) + if("select") + selected_cat = params["category"] + return TRUE + +/datum/component/uplink/proc/MakePurchase(mob/user, datum/uplink_item/U) + if(!istype(U)) + return + if (!user || user.incapacitated()) + return + + if(telecrystals < U.cost || U.limited_stock == 0) + return + telecrystals -= U.cost + + var/atom/A = U.spawn_item(get_turf(user), src, user) + if(U.purchase_log_vis && purchase_log) + var/obj/item/storage/box/B = A + var/list/atom/logging = list() + if(istype(B) && B.contents.len > 0) + logging |= list(B) + else + logging |= A + for(var/atom/_logging in logging) + purchase_log.LogPurchase(_logging, U.cost) + + if(U.limited_stock > 0) + U.limited_stock -= 1 + + SSblackbox.record_feedback("nested tally", "traitor_uplink_items_bought", 1, list("[initial(U.name)]", "[U.cost]")) + if(ishuman(user) && istype(A, /obj/item)) + var/mob/living/carbon/human/H = user + if(H.put_in_hands(A)) + to_chat(H, "[A] materializes into your hands!") + else + to_chat(H, "\The [A] materializes onto the floor.") + return TRUE + diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 04b3ee31b7..0a069ad6e3 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -299,9 +299,7 @@ to_chat(traitor_mob, "Unfortunately, [employer] wasn't able to get you an Uplink.") . = 0 else - var/obj/item/device/uplink/U = new(uplink_loc) - U.owner = "[traitor_mob.key]" - uplink_loc.hidden_uplink = U + uplink_loc.LoadComponent(/datum/component/uplink, traitor_mob.key) if(uplink_loc == R) R.traitor_frequency = sanitize_frequency(rand(MIN_FREQ, MAX_FREQ)) @@ -717,7 +715,7 @@ if(((src in SSticker.mode.traitors) || (src in SSticker.mode.syndicates)) && ishuman(current)) text = "Uplink: give" - var/obj/item/device/uplink/U = find_syndicate_uplink() + var/datum/component/uplink/U = find_syndicate_uplink() if(U) text += " | take" if (check_rights(R_FUN, 0)) @@ -1306,7 +1304,7 @@ log_admin("[key_name(usr)] removed [current]'s uplink.") if("crystals") if(check_rights(R_FUN, 0)) - var/obj/item/device/uplink/U = find_syndicate_uplink() + var/datum/component/uplink/U = find_syndicate_uplink() if(U) var/crystals = input("Amount of telecrystals for [key]","Syndicate uplink", U.telecrystals) as null | num if(!isnull(crystals)) @@ -1335,15 +1333,14 @@ /datum/mind/proc/find_syndicate_uplink() var/list/L = current.GetAllContents() - for (var/obj/item/I in L) - if (I.hidden_uplink) - return I.hidden_uplink - return null + for (var/i in L) + var/atom/movable/I = i + . = I.GetComponent(/datum/component/uplink) + if(.) + break /datum/mind/proc/take_uplink() - var/obj/item/device/uplink/H = find_syndicate_uplink() - if(H) - qdel(H) + qdel(find_syndicate_uplink()) /datum/mind/proc/make_Traitor() if(!(has_antag_datum(ANTAG_DATUM_TRAITOR))) diff --git a/code/modules/uplink/uplink_item.dm b/code/datums/uplink_items.dm similarity index 97% rename from code/modules/uplink/uplink_item.dm rename to code/datums/uplink_items.dm index 6aad347e2a..cd51838309 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/datums/uplink_items.dm @@ -89,43 +89,14 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. /datum/uplink_item/proc/get_discount() return pick(4;0.75,2;0.5,1;0.25) -/datum/uplink_item/proc/spawn_item(turf/loc, obj/item/device/uplink/U) +/datum/uplink_item/proc/spawn_item(turf/loc, datum/component/uplink/U, mob/user) if(item) +<<<<<<< HEAD:code/modules/uplink/uplink_item.dm SSblackbox.add_details("traitor_uplink_items_bought", "[name]|[cost]") +======= +>>>>>>> ccd4981... Merge pull request #32624 from kevinz000/component_uplinks:code/datums/uplink_items.dm return new item(loc) -/datum/uplink_item/proc/buy(mob/user, obj/item/device/uplink/U) - if(!istype(U)) - return - if (!user || user.incapacitated()) - return - - if(U.telecrystals < cost || limited_stock == 0) - return - else - U.telecrystals -= cost - U.spent_telecrystals += cost - - var/atom/A = spawn_item(get_turf(user), U) - var/obj/item/storage/box/B = A - if(istype(B) && B.contents.len > 0) - for(var/obj/item/I in B) - U.purchase_log += "[icon2base64html(I)]" - else - if(purchase_log_vis) - U.purchase_log += "[icon2base64html(A)]" - - if(limited_stock > 0) - limited_stock -= 1 - - if(ishuman(user) && istype(A, /obj/item)) - var/mob/living/carbon/human/H = user - if(H.put_in_hands(A)) - to_chat(H, "[A] materializes into your hands!") - else - to_chat(H, "\The [A] materializes onto the floor.") - return 1 - /datum/uplink_item/Destroy() if(src in GLOB.uplink_items) GLOB.uplink_items -= src //Take us out instead of leaving a null! @@ -368,7 +339,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. cost = 12 surplus = 35 include_modes = list(/datum/game_mode/nuclear) - + /datum/uplink_item/dangerous/guardian name = "Holoparasites" desc = "Though capable of near sorcerous feats via use of hardlight holograms and nanomachines, they require an \ @@ -977,8 +948,8 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. item = /obj/item/briefcase_launchpad cost = 6 -/datum/uplink_item/device_tools/briefcase_launchpad/buy(mob/user, obj/item/device/uplink/U) - var/obj/item/device/launchpad_remote/L = new(get_turf(user)) //free remote +/datum/uplink_item/device_tools/briefcase_launchpad/spawn_item(turf/loc, datum/component/uplink/U, mob/user) + var/obj/item/device/launchpad_remote/L = new(loc) //free remote if(ishuman(user)) var/mob/living/carbon/human/H = user if(H.put_in_hands(L)) @@ -1381,7 +1352,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. exclude_modes = list(/datum/game_mode/nuclear) cant_discount = TRUE -/datum/uplink_item/badass/surplus/spawn_item(turf/loc, obj/item/device/uplink/U) +/datum/uplink_item/badass/surplus/spawn_item(turf/loc, datum/component/uplink/U) var/list/uplink_items = get_uplink_items(SSticker.mode) var/crate_value = 50 @@ -1397,7 +1368,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. continue crate_value -= I.cost var/obj/goods = new I.item(C) - U.purchase_log += "[icon2base64html(goods)]" + U.purchase_log.LogPurchase(goods, I.cost) SSblackbox.add_details("traitor_uplink_items_bought", "[name]|[cost]") return C @@ -1409,7 +1380,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. cost = 0 cant_discount = TRUE -/datum/uplink_item/badass/random/spawn_item(turf/loc, obj/item/device/uplink/U) +/datum/uplink_item/badass/random/spawn_item(turf/loc, datum/component/uplink/U) var/list/uplink_items = get_uplink_items(SSticker.mode) var/list/possible_items = list() for(var/category in uplink_items) diff --git a/code/datums/uplink_purchase_log.dm b/code/datums/uplink_purchase_log.dm new file mode 100644 index 0000000000..5ec462d237 --- /dev/null +++ b/code/datums/uplink_purchase_log.dm @@ -0,0 +1,64 @@ +GLOBAL_LIST(uplink_purchase_logs_by_key) //assoc key = /datum/uplink_purchase_log + +/datum/uplink_purchase_log + var/owner + var/list/purchase_log //assoc path-of-item = /datum/uplink_purchase_entry + var/datum/component/uplink/parent + var/total_spent = 0 + +/datum/uplink_purchase_log/New(_owner, datum/component/uplink/_parent) + owner = _owner + parent = _parent + LAZYINITLIST(GLOB.uplink_purchase_logs_by_key) + if(owner) + if(GLOB.uplink_purchase_logs_by_key[owner]) + stack_trace("WARNING: DUPLICATE PURCHASE LOGS DETECTED. [_owner] [_parent] [_parent.type]") + MergeWithAndDel(GLOB.uplink_purchase_logs_by_key[owner]) + GLOB.uplink_purchase_logs_by_key[owner] = src + purchase_log = list() + +/datum/uplink_purchase_log/Destroy() + purchase_log = null + parent = null + return ..() + +/datum/uplink_purchase_log/proc/MergeWithAndDel(datum/uplink_purchase_log/other) + if(!istype(other)) + return + . = owner == other.owner + if(!.) + return + for(var/path in other.purchase_log) + if(!purchase_log[path]) + purchase_log[path] = other.purchase_log[path] + else + var/datum/uplink_purchase_entry/UPE = purchase_log[path] + var/datum/uplink_purchase_entry/UPE_O = other.purchase_log[path] + UPE.amount_purchased += UPE_O.amount_purchased + qdel(other) + +/datum/uplink_purchase_log/proc/TotalTelecrystalsSpent() + . = total_spent + +/datum/uplink_purchase_log/proc/generate_render(show_key = TRUE) + . = "" + for(var/path in purchase_log) + var/datum/uplink_purchase_entry/UPE = purchase_log[path] + . += "\[[UPE.icon_b64][show_key?"([owner])":""]\]" + +/datum/uplink_purchase_log/proc/LogPurchase(atom/A, cost) + var/datum/uplink_purchase_entry/UPE + if(purchase_log[A.type]) + UPE = purchase_log[A.type] + else + UPE = new + purchase_log[A.type] = UPE + UPE.path = A.type + UPE.icon_b64 = "[icon2base64html(A)]" + UPE.amount_purchased++ + total_spent += cost + +/datum/uplink_purchase_entry + var/amount_purchased = 0 + var/path + var/icon_b64 diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 1e5d899bfa..94c372ef23 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -264,10 +264,11 @@ var/TC_uses = 0 for(var/datum/mind/syndicate in syndicates) text += printplayer(syndicate) - for(var/obj/item/device/uplink/H in GLOB.uplinks) - if(H && H.owner && H.owner == syndicate.key) - TC_uses += H.spent_telecrystals - purchases += H.purchase_log + for(var/datum/component/uplink/H in GLOB.uplinks) + if(H.purchase_log) + purchases += H.purchase_log.generate_render() + else + stack_trace("WARNING: Uplink with no purchase_log in nuclear mode! Owner: [H.owner]") text += "
" text += "(Syndicates used [TC_uses] TC) [purchases]" if(TC_uses == 0 && station_was_nuked && !are_operatives_dead()) @@ -325,9 +326,7 @@ R.freqlock = 1 if(tc) - var/obj/item/device/radio/uplink/nuclear/U = new(H) - U.hidden_uplink.owner = "[H.key]" - U.hidden_uplink.telecrystals = tc + var/obj/item/device/radio/uplink/nuclear/U = new(H, H.key, tc) H.equip_to_slot_or_del(U, slot_in_backpack) var/obj/item/implant/weapons_auth/W = new/obj/item/implant/weapons_auth(H) diff --git a/code/game/gamemodes/nuclear/nuclear_challenge.dm b/code/game/gamemodes/nuclear/nuclear_challenge.dm index 6e7a567324..f9b565a65d 100644 --- a/code/game/gamemodes/nuclear/nuclear_challenge.dm +++ b/code/game/gamemodes/nuclear/nuclear_challenge.dm @@ -54,10 +54,7 @@ var/obj/item/circuitboard/computer/syndicate_shuttle/board = V board.challenge = TRUE - var/obj/item/device/radio/uplink/nuclear/U = new(get_turf(user)) - U.hidden_uplink.owner = "[user.key]" - U.hidden_uplink.telecrystals = CHALLENGE_TELECRYSTALS - U.hidden_uplink.set_gamemode(/datum/game_mode/nuclear) + new /obj/item/device/radio/uplink/nuclear(get_turf(user), user.key, CHALLENGE_TELECRYSTALS) CONFIG_SET(number/shuttle_refuel_delay, max(CONFIG_GET(number/shuttle_refuel_delay), CHALLENGE_SHUTTLE_DELAY)) SSblackbox.set_val("nuclear_challenge_mode",1) qdel(src) @@ -65,22 +62,22 @@ /obj/item/device/nuclear_challenge/proc/check_allowed(mob/living/user) if(declaring_war) to_chat(user, "You are already in the process of declaring war! Make your mind up.") - return 0 + return FALSE if(GLOB.player_list.len < CHALLENGE_MIN_PLAYERS) to_chat(user, "The enemy crew is too small to be worth declaring war on.") - return 0 + return FALSE if(user.z != ZLEVEL_CENTCOM) to_chat(user, "You have to be at your base to use this.") - return 0 + return FALSE if(world.time-SSticker.round_start_time > CHALLENGE_TIME_LIMIT) to_chat(user, "It's too late to declare hostilities. Your benefactors are already busy with other schemes. You'll have to make do with what you have on hand.") - return 0 + return FALSE for(var/V in GLOB.syndicate_shuttle_boards) var/obj/item/circuitboard/computer/syndicate_shuttle/board = V if(board.moved) to_chat(user, "The shuttle has already been moved! You have forfeit the right to declare war.") - return 0 - return 1 + return FALSE + return TRUE #undef CHALLENGE_TELECRYSTALS #undef CHALLENGE_MIN_PLAYERS diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm index cf2b867941..101a33e551 100644 --- a/code/game/gamemodes/sandbox/h_sandbox.dm +++ b/code/game/gamemodes/sandbox/h_sandbox.dm @@ -28,7 +28,7 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE) var/global/list/spawn_forbidden = list( /obj/item/tk_grab, /obj/item/implant, // not implanter, the actual thing that is inside you /obj/item/assembly, /obj/item/device/onetankbomb, /obj/item/radio, /obj/item/device/pda/ai, - /obj/item/device/uplink, /obj/item/smallDelivery, /obj/item/projectile, + /obj/item/smallDelivery, /obj/item/projectile, /obj/item/borg/sight, /obj/item/borg/stun, /obj/item/robot_module) /datum/hSB/proc/update() diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index a4229942c5..e367750bc1 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -103,11 +103,11 @@ var/TC_uses = 0 var/uplink_true = FALSE var/purchases = "" - for(var/obj/item/device/uplink/H in GLOB.uplinks) + for(var/datum/component/uplink/H in GLOB.uplinks) if(H && H.owner && H.owner == traitor.key) TC_uses += H.spent_telecrystals uplink_true = TRUE - purchases += H.purchase_log + purchases += H.purchase_log.generate_render(FALSE) var/objectives = "" if(traitor.objectives.len)//If the traitor had no objectives, don't need to process this. diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm index c879bc175a..959253036b 100644 --- a/code/game/machinery/computer/telecrystalconsoles.dm +++ b/code/game/machinery/computer/telecrystalconsoles.dm @@ -33,7 +33,8 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E if(uplinkholder) to_chat(user, "[src] already has an uplink in it.") return - if(I.hidden_uplink) + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, I) + if(hidden_uplink) if(!user.transferItemToLoc(I, src)) return uplinkholder = I @@ -56,26 +57,28 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E /obj/machinery/computer/telecrystals/uplinker/proc/donateTC(amt, addLog = 1) if(uplinkholder && linkedboss) + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, uplinkholder) if(amt < 0) - linkedboss.storedcrystals += uplinkholder.hidden_uplink.telecrystals + linkedboss.storedcrystals += hidden_uplink.telecrystals if(addLog) - linkedboss.logTransfer("[src] donated [uplinkholder.hidden_uplink.telecrystals] telecrystals to [linkedboss].") - uplinkholder.hidden_uplink.telecrystals = 0 - else if(amt <= uplinkholder.hidden_uplink.telecrystals) - uplinkholder.hidden_uplink.telecrystals -= amt + linkedboss.logTransfer("[src] donated [hidden_uplink.telecrystals] telecrystals to [linkedboss].") + hidden_uplink.telecrystals = 0 + else if(amt <= hidden_uplink.telecrystals) + hidden_uplink.telecrystals -= amt linkedboss.storedcrystals += amt if(addLog) linkedboss.logTransfer("[src] donated [amt] telecrystals to [linkedboss].") /obj/machinery/computer/telecrystals/uplinker/proc/giveTC(amt, addLog = 1) if(uplinkholder && linkedboss) + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, uplinkholder) if(amt < 0) - uplinkholder.hidden_uplink.telecrystals += linkedboss.storedcrystals + hidden_uplink.telecrystals += linkedboss.storedcrystals if(addLog) linkedboss.logTransfer("[src] received [linkedboss.storedcrystals] telecrystals from [linkedboss].") linkedboss.storedcrystals = 0 else if(amt <= linkedboss.storedcrystals) - uplinkholder.hidden_uplink.telecrystals += amt + hidden_uplink.telecrystals += amt linkedboss.storedcrystals -= amt if(addLog) linkedboss.logTransfer("[src] received [amt] telecrystals from [linkedboss].") @@ -95,7 +98,8 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E dat += "No linked management consoles detected. Scan for uplink stations using the management console.

" if(uplinkholder) - dat += "[uplinkholder.hidden_uplink.telecrystals] telecrystals remain in this uplink.
" + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, uplinkholder) + dat += "[hidden_uplink.telecrystals] telecrystals remain in this uplink.
" if(linkedboss) dat += "Donate TC: 1 | 5 | All" dat += "
Eject Uplink" @@ -175,7 +179,8 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E for(var/obj/machinery/computer/telecrystals/uplinker/A in TCstations) dat += "[A.name] | " if(A.uplinkholder) - dat += "[A.uplinkholder.hidden_uplink.telecrystals] telecrystals." + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, A.uplinkholder) + dat += "[hidden_uplink.telecrystals] telecrystals." if(storedcrystals) dat+= "
Add TC: 1 | 5 | 10 | All" dat += "
" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index e96c4c015b..52dc2fed6e 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -57,7 +57,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/slowdown = 0 // How much clothing is slowing you down. Negative values speeds you up var/armour_penetration = 0 //percentage of armour effectiveness to remove var/list/allowed = null //suit storage stuff. - var/obj/item/device/uplink/hidden_uplink = null var/equip_delay_self = 0 //In deciseconds, how long an item takes to equip; counts only for normal clothing slots, not pockets etc. var/equip_delay_other = 20 //In deciseconds, how long an item takes to put on another person var/strip_delay = 40 //In deciseconds, how long an item takes to remove from another person @@ -224,9 +223,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) /obj/item/interact(mob/user) add_fingerprint(user) - if(hidden_uplink && hidden_uplink.active) - hidden_uplink.interact(user) - return 1 ui_interact(user) /obj/item/ui_act(action, params) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 244e82ee77..8e52483cba 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -155,15 +155,20 @@ GLOBAL_LIST_EMPTY(PDAs) return /obj/item/device/pda/attack_self(mob/user) +<<<<<<< HEAD +======= + if(!user.IsAdvancedToolUser()) + to_chat(user, "You don't have the dexterity to do this!") + return + + . = ..() + +>>>>>>> ccd4981... Merge pull request #32624 from kevinz000/component_uplinks var/datum/asset/assets = get_asset_datum(/datum/asset/simple/pda) assets.send(user) user.set_machine(src) - if(hidden_uplink && hidden_uplink.active) - hidden_uplink.interact(user) - return - var/dat = "Personal Data Assistant" @@ -496,7 +501,9 @@ GLOBAL_LIST_EMPTY(PDAs) if("Ringtone") var/t = input(U, "Please enter new ringtone", name, ttone) as text if(in_range(src, U) && loc == U && t) + GET_COMPONENT(hidden_uplink, /datum/component/uplink) if(hidden_uplink && (trim(lowertext(t)) == trim(lowertext(lock_code)))) + hidden_uplink.locked = FALSE hidden_uplink.interact(U) to_chat(U, "The PDA softly beeps.") U << browse(null, "window=pda") @@ -822,8 +829,6 @@ GLOBAL_LIST_EMPTY(PDAs) var/obj/item/photo/P = C photo = P.img to_chat(user, "You scan \the [C].") - else if(hidden_uplink && hidden_uplink.active) - hidden_uplink.attackby(C, user, params) else return ..() diff --git a/code/game/objects/items/devices/PDA/virus_cart.dm b/code/game/objects/items/devices/PDA/virus_cart.dm index ce7f85b825..e28f6676e8 100644 --- a/code/game/objects/items/devices/PDA/virus_cart.dm +++ b/code/game/objects/items/devices/PDA/virus_cart.dm @@ -7,7 +7,7 @@ /obj/item/cartridge/virus/message_header() return "[charges] viral files left.
" - + /obj/item/cartridge/virus/message_special(obj/item/device/pda/target) if (!istype(loc, /obj/item/device/pda)) return "" //Sanity check, this shouldn't be possible. @@ -67,11 +67,12 @@ var/difficulty = 0 if(target.cartridge) difficulty += BitCount(target.cartridge.access&(CART_MEDICAL | CART_SECURITY | CART_ENGINE | CART_CLOWN | CART_JANITOR | CART_MANIFEST)) - if(target.cartridge.access & CART_MANIFEST) + if(target.cartridge.access & CART_MANIFEST) difficulty++ //if cartridge has manifest access it has extra snowflake difficulty else difficulty += 2 - if(!target.detonatable || prob(difficulty * 15) || (target.hidden_uplink)) + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, target) + if(!target.detonatable || prob(difficulty * 15) || (hidden_uplink)) U.show_message("An error flashes on your [src].", 1) else U.show_message("Success!", 1) @@ -92,14 +93,14 @@ charges-- var/lock_code = "[rand(100,999)] [pick(GLOB.phonetic_alphabet)]" to_chat(U, "Virus Sent! The unlock code to the target is: [lock_code]") - if(!target.hidden_uplink) - var/obj/item/device/uplink/uplink = new(target) - target.hidden_uplink = uplink + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, target) + if(!hidden_uplink) + hidden_uplink = target.LoadComponent(/datum/component/uplink) target.lock_code = lock_code else - target.hidden_uplink.hidden_crystals += target.hidden_uplink.telecrystals //Temporarially hide the PDA's crystals, so you can't steal telecrystals. - target.hidden_uplink.telecrystals = telecrystals + hidden_uplink.hidden_crystals += hidden_uplink.telecrystals //Temporarially hide the PDA's crystals, so you can't steal telecrystals. + hidden_uplink.telecrystals = telecrystals telecrystals = 0 - target.hidden_uplink.active = TRUE + hidden_uplink.active = TRUE else to_chat(U, "PDA not found.") diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 6603bc29ef..236f3df93e 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -155,7 +155,9 @@ if(.) frequency = sanitize_frequency(tune, freerange) set_frequency(frequency) - if(frequency == traitor_frequency && hidden_uplink) + GET_COMPONENT(hidden_uplink, /datum/component/uplink) + if(hidden_uplink && (frequency == traitor_frequency)) + hidden_uplink.locked = FALSE hidden_uplink.interact(usr) ui.close() if("listen") diff --git a/code/game/objects/items/devices/uplink_devices.dm b/code/game/objects/items/devices/uplink_devices.dm new file mode 100644 index 0000000000..3f3970fe51 --- /dev/null +++ b/code/game/objects/items/devices/uplink_devices.dm @@ -0,0 +1,31 @@ + +// A collection of pre-set uplinks, for admin spawns. +/obj/item/device/radio/uplink/Initialize(mapload, _owner, _tc_amount = 20) + . = ..() + icon_state = "radio" + lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + LoadComponent(/datum/component/uplink, _owner, FALSE, TRUE, null, _tc_amount) + +/obj/item/device/radio/uplink/nuclear/Initialize() + . = ..() + GET_COMPONENT(hidden_uplink, /datum/component/uplink) + hidden_uplink.set_gamemode(/datum/game_mode/nuclear) + +/obj/item/device/multitool/uplink/Initialize(mapload, _owner, _tc_amount = 20) + . = ..() + LoadComponent(/datum/component/uplink, _owner, FALSE, TRUE, null, _tc_amount) + +/obj/item/pen/uplink/Initialize(mapload, _owner, _tc_amount = 20) + . = ..() + LoadComponent(/datum/component/uplink) + traitor_unlock_degrees = 360 + +/obj/item/device/radio/uplink/old + name = "dusty radio" + desc = "A dusty looking radio." + +/obj/item/device/radio/uplink/old/Initialize(mapload, _owner, _tc_amount = 10) + . = ..() + GET_COMPONENT(hidden_uplink, /datum/component/uplink) + hidden_uplink.name = "dusty radio" diff --git a/code/game/objects/items/implants/implantuplink.dm b/code/game/objects/items/implants/implantuplink.dm index d89c4598b5..82555e12c4 100644 --- a/code/game/objects/items/implants/implantuplink.dm +++ b/code/game/objects/items/implants/implantuplink.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /obj/item/implant/uplink name = "uplink implant" desc = "Sneeki breeki." @@ -40,3 +41,53 @@ /obj/item/implant/uplink/precharged starting_tc = 10 +======= +/obj/item/implant/uplink + name = "uplink implant" + desc = "Sneeki breeki." + icon = 'icons/obj/radio.dmi' + icon_state = "radio" + lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + var/starting_tc = 0 + +/obj/item/implant/uplink/Initialize(mapload, _owner) + . = ..() + LoadComponent(/datum/component/uplink, _owner, TRUE, FALSE, null, starting_tc) + +/obj/item/implant/uplink/implant(mob/living/target, mob/user, silent = 0) + GET_COMPONENT(hidden_uplink, /datum/component/uplink) + if(hidden_uplink) + for(var/X in target.implants) + if(istype(X, type)) + var/obj/item/implant/imp_e = X + GET_COMPONENT_FROM(their_hidden_uplink, /datum/component/uplink, imp_e) + if(their_hidden_uplink) + their_hidden_uplink.telecrystals += hidden_uplink.telecrystals + qdel(src) + return TRUE + else + qdel(imp_e) //INFERIOR AND EMPTY! + + if(..()) + if(hidden_uplink) + hidden_uplink.owner = "[user.key]" + return TRUE + return FALSE + +/obj/item/implant/uplink/activate() + GET_COMPONENT(hidden_uplink, /datum/component/uplink) + if(hidden_uplink) + hidden_uplink.interact(usr) + +/obj/item/implanter/uplink + name = "implanter (uplink)" + imp_type = /obj/item/implant/uplink + +/obj/item/implanter/uplink/precharged + name = "implanter (precharged uplink)" + imp_type = /obj/item/implant/uplink/precharged + +/obj/item/implant/uplink/precharged + starting_tc = 10 +>>>>>>> ccd4981... Merge pull request #32624 from kevinz000/component_uplinks diff --git a/code/game/objects/items/stacks/telecrystal.dm b/code/game/objects/items/stacks/telecrystal.dm index 87978ac58e..0300d08414 100644 --- a/code/game/objects/items/stacks/telecrystal.dm +++ b/code/game/objects/items/stacks/telecrystal.dm @@ -13,18 +13,16 @@ if(target == user) //You can't go around smacking people with crystals to find out if they have an uplink or not. for(var/obj/item/implant/uplink/I in target) if(I && I.imp_in) - I.hidden_uplink.telecrystals += amount - use(amount) - to_chat(user, "You press [src] onto yourself and charge your hidden uplink.") + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, I) + if(hidden_uplink) + hidden_uplink.telecrystals += amount + use(amount) + to_chat(user, "You press [src] onto yourself and charge your hidden uplink.") + else + return ..() /obj/item/stack/telecrystal/afterattack(obj/item/I, mob/user, proximity) - if(!proximity) - return - if(isitem(I) && I.hidden_uplink && I.hidden_uplink.active) //No metagaming by using this on every PDA around just to see if it gets used up. - I.hidden_uplink.telecrystals += amount - use(amount) - to_chat(user, "You slot [src] into [I] and charge its internal uplink.") - else if(istype(I, /obj/item/cartridge/virus/frame)) + if(istype(I, /obj/item/cartridge/virus/frame)) var/obj/item/cartridge/virus/frame/cart = I if(!cart.charges) to_chat(user, "[cart] is out of charges, it's refusing to accept [src].") @@ -32,6 +30,8 @@ cart.telecrystals += amount use(amount) to_chat(user, "You slot [src] into [cart]. The next time it's used, it will also give telecrystals.") + else + return ..() /obj/item/stack/telecrystal/five amount = 5 diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index c8658c677f..c015d778fe 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -218,15 +218,6 @@ desc = "This wand uses healing magics to heal and revive. The years of the cold have weakened the magic inside the wand." max_charges = 5 -/obj/item/device/radio/uplink/old - name = "dusty radio" - desc = "A dusty looking radio." - -/obj/item/device/radio/uplink/old/Initialize() - . = ..() - hidden_uplink.name = "dusty radio" - hidden_uplink.telecrystals = 10 - /obj/effect/mob_spawn/human/syndicatesoldier/coldres name = "Syndicate Snow Operative" outfit = /datum/outfit/snowsyndie/corpse diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm index a19a6abeb3..3aa1153133 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm @@ -34,7 +34,8 @@ /mob/living/simple_animal/drone/syndrone/Initialize() . = ..() - internal_storage.hidden_uplink.telecrystals = 10 + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, internal_storage) + hidden_uplink.telecrystals = 10 /mob/living/simple_animal/drone/syndrone/Login() ..() @@ -47,7 +48,8 @@ /mob/living/simple_animal/drone/syndrone/badass/Initialize() . = ..() - internal_storage.hidden_uplink.telecrystals = 30 + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, internal_storage) + hidden_uplink.telecrystals = 30 var/obj/item/implant/weapons_auth/W = new/obj/item/implant/weapons_auth(src) W.implant(src) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 4b31ce7262..6732bec474 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -99,19 +99,13 @@ if(deg && (deg > 0 && deg <= 360)) degrees = deg to_chat(user, "You rotate the top of the pen to [degrees] degrees.") + GET_COMPONENT(hidden_uplink, /datum/component/uplink) if(hidden_uplink && degrees == traitor_unlock_degrees) to_chat(user, "Your pen makes a clicking noise, before quickly rotating back to 0 degrees!") degrees = 0 + hidden_uplink.locked = FALSE hidden_uplink.interact(user) - -/obj/item/pen/attackby(obj/item/I, mob/user, params) - if(hidden_uplink) - return hidden_uplink.attackby(I, user, params) - else - return ..() - - /obj/item/pen/attack(mob/living/M, mob/user,stealth) if(!istype(M)) return diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index b16d0bc2e7..eb1c6d7b43 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -732,6 +732,18 @@ out += "[taste_desc]" return english_list(out, "something indescribable") +<<<<<<< HEAD +======= + +/datum/reagents/proc/expose_temperature(var/temperature, var/coeff=0.02) + var/temp_delta = (temperature - chem_temp) * coeff + if(temp_delta > 0) + chem_temp = min(chem_temp + max(temp_delta, 1), temperature) + else + chem_temp = max(chem_temp + min(temp_delta, -1), temperature) + chem_temp = round(chem_temp) + handle_reactions() +>>>>>>> ccd4981... Merge pull request #32624 from kevinz000/component_uplinks /////////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/uplink/uplink.dm b/code/modules/uplink/uplink.dm deleted file mode 100644 index 6b53ed5920..0000000000 --- a/code/modules/uplink/uplink.dm +++ /dev/null @@ -1,162 +0,0 @@ -GLOBAL_LIST_EMPTY(uplinks) - -/** - * Uplinks - * - * All /obj/item(s) have a hidden_uplink var. By default it's null. Give the item one with 'new(src') (it must be in it's contents). Then add 'uses.' - * Use whatever conditionals you want to check that the user has an uplink, and then call interact() on their uplink. - * You might also want the uplink menu to open if active. Check if the uplink is 'active' and then interact() with it. -**/ -/obj/item/device/uplink - name = "syndicate uplink" - desc = "There is something wrong if you're examining this." - var/active = FALSE - var/lockable = TRUE - var/telecrystals = 20 - var/selected_cat = null - var/owner = null - var/datum/game_mode/gamemode = null - var/spent_telecrystals = 0 - var/purchase_log = "" - var/list/uplink_items - var/hidden_crystals = 0 - -/obj/item/device/uplink/Initialize() - . = ..() - GLOB.uplinks += src - uplink_items = get_uplink_items(gamemode) - -/obj/item/device/uplink/proc/set_gamemode(gamemode) - src.gamemode = gamemode - uplink_items = get_uplink_items(gamemode) - -/obj/item/device/uplink/Destroy() - GLOB.uplinks -= src - return ..() - -/obj/item/device/uplink/attackby(obj/item/I, mob/user, params) - for(var/item in subtypesof(/datum/uplink_item)) - var/datum/uplink_item/UI = item - var/path = null - if(initial(UI.refund_path)) - path = initial(UI.refund_path) - else - path = initial(UI.item) - var/cost = 0 - if(initial(UI.refund_amount)) - cost = initial(UI.refund_amount) - else - cost = initial(UI.cost) - var/refundable = initial(UI.refundable) - if(I.type == path && refundable && I.check_uplink_validity()) - telecrystals += cost - spent_telecrystals -= cost - to_chat(user, "[I] refunded.") - qdel(I) - return - ..() - -/obj/item/device/uplink/interact(mob/user) - active = TRUE - if(user) - ui_interact(user) - -/obj/item/device/uplink/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ - datum/tgui/master_ui = null, datum/ui_state/state = GLOB.inventory_state) - ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) - if(!ui) - ui = new(user, src, ui_key, "uplink", name, 450, 750, master_ui, state) - ui.set_autoupdate(FALSE) // This UI is only ever opened by one person, and never is updated outside of user input. - ui.set_style("syndicate") - ui.open() - -/obj/item/device/uplink/ui_data(mob/user) - if(!user.mind) - return - var/list/data = list() - data["telecrystals"] = telecrystals - data["lockable"] = lockable - - data["categories"] = list() - for(var/category in uplink_items) - var/list/cat = list( - "name" = category, - "items" = (category == selected_cat ? list() : null)) - if(category == selected_cat) - for(var/item in uplink_items[category]) - var/datum/uplink_item/I = uplink_items[category][item] - if(I.limited_stock == 0) - continue - if(I.restricted_roles.len) - var/is_inaccessible = 1 - for(var/R in I.restricted_roles) - if(R == user.mind.assigned_role) - is_inaccessible = 0 - if(is_inaccessible) - continue - cat["items"] += list(list( - "name" = I.name, - "cost" = I.cost, - "desc" = I.desc, - )) - data["categories"] += list(cat) - return data - - -/obj/item/device/uplink/ui_act(action, params) - if(!active) - return - - switch(action) - if("buy") - var/item = params["item"] - - var/list/buyable_items = list() - for(var/category in uplink_items) - buyable_items += uplink_items[category] - - if(item in buyable_items) - var/datum/uplink_item/I = buyable_items[item] - I.buy(usr, src) - . = TRUE - if("lock") - active = FALSE - telecrystals += hidden_crystals - hidden_crystals = 0 - SStgui.close_uis(src) - if("select") - selected_cat = params["category"] - return 1 - - -/obj/item/device/uplink/ui_host() - return loc - -// Refund certain items by hitting the uplink with it. -/obj/item/device/radio/uplink/attackby(obj/item/I, mob/user, params) - return hidden_uplink.attackby(I, user, params) - -// A collection of pre-set uplinks, for admin spawns. -/obj/item/device/radio/uplink/Initialize() - . = ..() - icon_state = "radio" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - hidden_uplink = new(src) - hidden_uplink.active = TRUE - hidden_uplink.lockable = FALSE - -/obj/item/device/radio/uplink/nuclear/Initialize() - . = ..() - hidden_uplink.set_gamemode(/datum/game_mode/nuclear) - -/obj/item/device/multitool/uplink/Initialize() - . = ..() - hidden_uplink = new(src) - hidden_uplink.active = TRUE - hidden_uplink.lockable = FALSE - -/obj/item/pen/uplink/Initialize() - . = ..() - hidden_uplink = new(src) - traitor_unlock_degrees = 360 diff --git a/tgstation.dme b/tgstation.dme index bbbd444d7d..8cb49902ba 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -310,6 +310,8 @@ #include "code\datums\shuttles.dm" #include "code\datums\soullink.dm" #include "code\datums\spawners_menu.dm" +#include "code\datums\uplink_items.dm" +#include "code\datums\uplink_purchase_log.dm" #include "code\datums\verbs.dm" #include "code\datums\weakrefs.dm" #include "code\datums\world_topic.dm" @@ -342,6 +344,7 @@ #include "code\datums\components\spooky.dm" #include "code\datums\components\squeek.dm" #include "code\datums\components\thermite.dm" +#include "code\datums\components\uplink.dm" #include "code\datums\diseases\_disease.dm" #include "code\datums\diseases\_MobProcs.dm" #include "code\datums\diseases\anxiety.dm" @@ -908,6 +911,7 @@ #include "code\game\objects\items\devices\taperecorder.dm" #include "code\game\objects\items\devices\traitordevices.dm" #include "code\game\objects\items\devices\transfer_valve.dm" +#include "code\game\objects\items\devices\uplink_devices.dm" #include "code\game\objects\items\devices\PDA\cart.dm" #include "code\game\objects\items\devices\PDA\PDA.dm" #include "code\game\objects\items\devices\PDA\PDA_types.dm" @@ -2372,9 +2376,12 @@ #include "code\modules\tgui\states\self.dm" #include "code\modules\tgui\states\zlevel.dm" #include "code\modules\tooltip\tooltip.dm" +<<<<<<< HEAD #include "code\modules\uplink\uplink.dm" #include "code\modules\uplink\uplink_item.dm" #include "code\modules\uplink\uplink_item_cit.dm" +======= +>>>>>>> ccd4981... Merge pull request #32624 from kevinz000/component_uplinks #include "code\modules\vehicles\atv.dm" #include "code\modules\vehicles\bicycle.dm" #include "code\modules\vehicles\pimpin_ride.dm" From 8458dc952ce9821094b2a6f7e3dd68b3e2387189 Mon Sep 17 00:00:00 2001 From: GupGup <33478354+GupGup@users.noreply.github.com> Date: Wed, 22 Nov 2017 16:23:26 -0500 Subject: [PATCH 029/328] Fixes hostile mobs attacking surrounding tiles when trying to attack someone: the stunning finale --- code/__HELPERS/game.dm | 1 + .../simple_animal/hostile/gorilla/gorilla.dm | 4 +- .../living/simple_animal/hostile/hostile.dm | 52 ++++++++++++++----- .../mob/living/simple_animal/hostile/mimic.dm | 2 +- .../living/simple_animal/hostile/statue.dm | 2 +- 5 files changed, 45 insertions(+), 16 deletions(-) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 7af9bf2280..b5d75a6f63 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -311,6 +311,7 @@ else return get_step(start, EAST) + /proc/try_move_adjacent(atom/movable/AM) var/turf/T = get_turf(AM) for(var/direction in GLOB.cardinals) diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm index e0afdefd6b..84bb54f242 100644 --- a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm +++ b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm @@ -67,7 +67,7 @@ var/mob/living/L = target if(prob(80)) var/atom/throw_target = get_edge_target_turf(L, dir) - L.throw_at(throw_target, rand(1,2), 7, src) + L.throw_at(throw_target, rand(1,2), 7, src) else L.Knockdown(20) visible_message("[src] knocks [L] down!") @@ -76,9 +76,11 @@ var/list/parts = target_bodyparts(target) return ..() && !istype(the_target, /mob/living/carbon/monkey) && (!parts || parts.len > 3) + /mob/living/simple_animal/hostile/gorilla/CanSmashTurfs(turf/T) return iswallturf(T) + /mob/living/simple_animal/hostile/gorilla/gib(no_brain) if(!no_brain) var/mob/living/brain/B = new(drop_location()) diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index f1b3043447..b3ad02af08 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -14,7 +14,7 @@ var/list/emote_taunt = list() var/taunt_chance = 0 -//typecache of things this mob will attack in DestroySurroundings() if it has environment_smash +//typecache of things this mob will attack in DestroyPathToTarget() if it has environment_smash var/list/environment_target_typecache = list( /obj/machinery/door/window, /obj/structure/window, @@ -84,7 +84,8 @@ EscapeConfinement() if(AICanContinue(possible_targets)) - DestroySurroundings() + if(!QDELETED(target) && !targets_from.Adjacent(target)) + DestroyPathToTarget() if(!MoveToTarget(possible_targets)) //if we lose our target if(AIShouldSleep(possible_targets)) // we try to acquire a new one toggle_ai(AI_IDLE) // otherwise we go idle @@ -371,24 +372,49 @@ P.preparePixelProjectile(targeted_atom, src) P.fire() return P +<<<<<<< HEAD +======= + + +>>>>>>> ce82a2e... Fixes hostile mobs attacking surrounding tiles when trying to attack someone: the stunning finale (#32699) /mob/living/simple_animal/hostile/proc/CanSmashTurfs(turf/T) return iswallturf(T) || ismineralturf(T) -/mob/living/simple_animal/hostile/proc/DestroySurroundings() + +/mob/living/simple_animal/hostile/proc/DestroyObjectsInDirection(direction) + var/turf/T = get_step(targets_from, direction) + if(T.Adjacent(targets_from)) + if(CanSmashTurfs(T)) + T.attack_animal(src) + for(var/a in T) + var/atom/A = a + if(is_type_in_typecache(A, environment_target_typecache) && !A.IsObscured()) + A.attack_animal(src) + return + + +/mob/living/simple_animal/hostile/proc/DestroyPathToTarget() + if(environment_smash) + EscapeConfinement() + var/dir_to_target = get_dir(targets_from, target) + var/dir_list = list() + if(dir_to_target in GLOB.diagonals) //it's diagonal, so we need two directions to hit + for(var/direction in GLOB.cardinals) + if(direction & dir_to_target) + dir_list += direction + else + dir_list += dir_to_target + for(var/direction in dir_list) //now we hit all of the directions we got in this fashion, since it's the only directions we should actually need + DestroyObjectsInDirection(direction) + + +mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with megafauna destroying everything around them if(environment_smash) EscapeConfinement() for(var/dir in GLOB.cardinals) - var/turf/T = get_step(targets_from, dir) - if(CanSmashTurfs(T)) - if(T.Adjacent(targets_from)) - T.attack_animal(src) - for(var/a in T) - var/atom/A = a - if(!A.Adjacent(targets_from)) - continue - if(is_type_in_typecache(A, environment_target_typecache) && !A.IsObscured()) - A.attack_animal(src) + DestroyObjectsInDirection(dir) + /mob/living/simple_animal/hostile/proc/EscapeConfinement() diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index 83291d7822..0c7edd0334 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -45,7 +45,7 @@ for(var/obj/item/I in loc) I.loc = src -/mob/living/simple_animal/hostile/mimic/crate/DestroySurroundings() +/mob/living/simple_animal/hostile/mimic/crate/DestroyPathToTarget() ..() if(prob(90)) icon_state = "[initial(icon_state)]open" diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm index e5aa946b00..5d30a210a8 100644 --- a/code/modules/mob/living/simple_animal/hostile/statue.dm +++ b/code/modules/mob/living/simple_animal/hostile/statue.dm @@ -95,7 +95,7 @@ else return ..() -/mob/living/simple_animal/hostile/statue/DestroySurroundings() +/mob/living/simple_animal/hostile/statue/DestroyPathToTarget() if(!can_be_seen(get_turf(loc))) ..() From 783960a986ed1582136b541bfa161b7f73e1e6e0 Mon Sep 17 00:00:00 2001 From: XDTM Date: Wed, 22 Nov 2017 22:36:09 +0100 Subject: [PATCH 030/328] Divides species in subtypes, makes viruses able to infect certain subtypes --- code/__DEFINES/DNA.dm | 11 +++ code/datums/diseases/_MobProcs.dm | 19 +++-- code/datums/diseases/_disease.dm | 2 + .../diseases/advance/symptoms/species.dm | 30 ++++++++ code/datums/diseases/beesease.dm | 1 + code/datums/diseases/magnitis.dm | 2 + code/datums/diseases/parrotpossession.dm | 2 + code/datums/diseases/rhumba_beat.dm | 1 + code/datums/diseases/transformation.dm | 3 +- .../carbon/human/species_types/abductors.dm | 2 +- .../carbon/human/species_types/android.dm | 2 +- .../carbon/human/species_types/angel.dm | 2 +- .../carbon/human/species_types/corporate.dm | 21 ++++++ .../carbon/human/species_types/dullahan.dm | 2 +- .../carbon/human/species_types/flypeople.dm | 1 + .../carbon/human/species_types/golems.dm | 12 ++-- .../carbon/human/species_types/humans.dm | 6 ++ .../carbon/human/species_types/jellypeople.dm | 4 +- .../human/species_types/lizardpeople.dm | 5 ++ .../carbon/human/species_types/plasmamen.dm | 2 +- .../carbon/human/species_types/podpeople.dm | 69 +++++++++++++++++++ .../human/species_types/shadowpeople.dm | 2 +- .../carbon/human/species_types/skeletons.dm | 2 +- .../carbon/human/species_types/synths.dm | 7 +- .../carbon/human/species_types/vampire.dm | 2 +- .../carbon/human/species_types/zombies.dm | 3 +- code/modules/mob/living/carbon/life.dm | 2 +- tgstation.dme | 1 + 28 files changed, 192 insertions(+), 26 deletions(-) create mode 100644 code/datums/diseases/advance/symptoms/species.dm diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index a2aa7b1414..de3d235664 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -127,6 +127,7 @@ #define TOXINLOVER 24 #define DIGITIGRADE 25 //Uses weird leg sprites. Optional for Lizards, required for ashwalkers. Don't give it to other races unless you make sprites for this (see human_parts_greyscale.dmi) #define NO_UNDERWEAR 26 +<<<<<<< HEAD #define MUTCOLORS2 27 #define MUTCOLORS3 28 #define NOLIVER 29 @@ -136,6 +137,16 @@ #define NOGENITALS 30 //Cannot create, use, or otherwise have genitals #define NO_DNA_COPY 31 #define DRINKSBLOOD 32 +======= +#define NOLIVER 27 +#define NOSTOMACH 28 +#define NO_DNA_COPY 29 +#define DRINKSBLOOD 30 +#define SPECIES_ORGANIC 31 +#define SPECIES_INORGANIC 32 +#define SPECIES_UNDEAD 33 +#define SPECIES_ROBOTIC 34 +>>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) #define ORGAN_SLOT_BRAIN "brain" #define ORGAN_SLOT_APPENDIX "appendix" diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm index f13239a113..7c08a3908f 100644 --- a/code/datums/diseases/_MobProcs.dm +++ b/code/datums/diseases/_MobProcs.dm @@ -143,14 +143,25 @@ //Proc to use when you 100% want to infect someone, as long as they aren't immune /mob/proc/ForceContractDisease(datum/disease/D) if(!CanContractDisease(D)) - return 0 + return FALSE AddDisease(D) /mob/living/carbon/human/CanContractDisease(datum/disease/D) - if(dna && (VIRUSIMMUNE in dna.species.species_traits) && !D.bypasses_immunity) - return 0 + + if(dna) + if((VIRUSIMMUNE in dna.species.species_traits) && !D.bypasses_immunity) + return FALSE + + var/can_infect = FALSE + for(var/host_type in D.infectable_hosts) + if(host_type in dna.species.species_traits) + can_infect = TRUE + break + if(!can_infect) + return FALSE + for(var/thing in D.required_organs) if(!((locate(thing) in bodyparts) || (locate(thing) in internal_organs))) - return 0 + return FALSE return ..() \ No newline at end of file diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 69da2ab96d..547b1d5db9 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -30,6 +30,8 @@ var/list/required_organs = list() var/needs_all_cures = TRUE var/list/strain_data = list() //dna_spread special bullshit + var/list/infectable_hosts = list(SPECIES_ORGANIC) //if the disease can spread on organics, synthetics, or undead + var/process_dead = FALSE //if this ticks while the host is dead /datum/disease/Destroy() affected_mob = null diff --git a/code/datums/diseases/advance/symptoms/species.dm b/code/datums/diseases/advance/symptoms/species.dm new file mode 100644 index 0000000000..837252c1e6 --- /dev/null +++ b/code/datums/diseases/advance/symptoms/species.dm @@ -0,0 +1,30 @@ +/datum/symptom/undead_adaptation + name = "Necrotic Metabolism" + desc = "The virus is able to thrive and act even within dead hosts." + stealth = 2 + resistance = -2 + stage_speed = 1 + transmittable = 0 + level = 5 + severity = 0 + +/datum/symptom/undead_adaptation/Start(datum/disease/advance/A) + if(!..()) + return + A.process_dead = TRUE + A.infectable_hosts |= SPECIES_UNDEAD + +/datum/symptom/inorganic_adaptation + name = "Inorganic Biology" + desc = "The virus can survive and replicate even in an inorganic environment, increasing its resistance and infection rate." + stealth = -1 + resistance = 4 + stage_speed = -2 + transmittable = 3 + level = 5 + severity = 0 + +/datum/symptom/inorganic_adaptation/Start(datum/disease/advance/A) + if(!..()) + return + A.infectable_hosts |= SPECIES_INORGANIC \ No newline at end of file diff --git a/code/datums/diseases/beesease.dm b/code/datums/diseases/beesease.dm index f02c3b90ee..80ec0abe6b 100644 --- a/code/datums/diseases/beesease.dm +++ b/code/datums/diseases/beesease.dm @@ -10,6 +10,7 @@ viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) desc = "If left untreated subject will regurgitate bees." severity = VIRUS_SEVERITY_MEDIUM + infectable_hosts = list(SPECIES_ORGANIC, SPECIES_UNDEAD) //bees nesting in corpses /datum/disease/beesease/stage_act() ..() diff --git a/code/datums/diseases/magnitis.dm b/code/datums/diseases/magnitis.dm index e82c24ba59..4430eee19d 100644 --- a/code/datums/diseases/magnitis.dm +++ b/code/datums/diseases/magnitis.dm @@ -10,6 +10,8 @@ permeability_mod = 0.75 desc = "This disease disrupts the magnetic field of your body, making it act as if a powerful magnet. Injections of iron help stabilize the field." severity = VIRUS_SEVERITY_MEDIUM + infectable_hosts = list(SPECIES_ORGANIC, SPECIES_ROBOTIC) + process_dead = TRUE /datum/disease/magnitis/stage_act() ..() diff --git a/code/datums/diseases/parrotpossession.dm b/code/datums/diseases/parrotpossession.dm index 42d5daa797..284c3bd7f2 100644 --- a/code/datums/diseases/parrotpossession.dm +++ b/code/datums/diseases/parrotpossession.dm @@ -11,6 +11,8 @@ viable_mobtypes = list(/mob/living/carbon/human) desc = "Subject is possesed by the vengeful spirit of a parrot. Call the priest." severity = VIRUS_SEVERITY_MEDIUM + infectable_hosts = list(SPECIES_ORGANIC, SPECIES_UNDEAD, SPECIES_INORGANIC, SPECIES_ROBOTIC) + bypasses_immunity = TRUE //2spook var/mob/living/simple_animal/parrot/Poly/ghost/parrot /datum/disease/parrot_possession/stage_act() diff --git a/code/datums/diseases/rhumba_beat.dm b/code/datums/diseases/rhumba_beat.dm index 855f1f44f0..8217364fb5 100644 --- a/code/datums/diseases/rhumba_beat.dm +++ b/code/datums/diseases/rhumba_beat.dm @@ -9,6 +9,7 @@ viable_mobtypes = list(/mob/living/carbon/human) permeability_mod = 1 severity = VIRUS_SEVERITY_BIOHAZARD + process_dead = TRUE /datum/disease/rhumba_beat/stage_act() ..() diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index 0ff47f854d..60622f61cb 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -127,7 +127,7 @@ stage4 = list("Your skin feels very loose.", "You can feel... something...inside you.") stage5 = list("Your skin feels as if it's about to burst off!") new_form = /mob/living/silicon/robot - + infectable_hosts = list(SPECIES_ORGANIC, SPECIES_UNDEAD, SPECIES_ROBOTIC) /datum/disease/transformation/robot/stage_act() ..() @@ -240,3 +240,4 @@ stage4 = list("You're ravenous.") stage5 = list("You have become a morph.") new_form = /mob/living/simple_animal/hostile/morph + infectable_hosts = list(SPECIES_ORGANIC, SPECIES_INORGANIC, SPECIES_UNDEAD) //magic! diff --git a/code/modules/mob/living/carbon/human/species_types/abductors.dm b/code/modules/mob/living/carbon/human/species_types/abductors.dm index 160b0b73a1..cf03d12130 100644 --- a/code/modules/mob/living/carbon/human/species_types/abductors.dm +++ b/code/modules/mob/living/carbon/human/species_types/abductors.dm @@ -3,7 +3,7 @@ id = "abductor" say_mod = "gibbers" sexes = FALSE - species_traits = list(NOBLOOD,NOBREATH,VIRUSIMMUNE,NOGUNS,NOHUNGER) + species_traits = list(SPECIES_ORGANIC,NOBLOOD,NOBREATH,VIRUSIMMUNE,NOGUNS,NOHUNGER) mutanttongue = /obj/item/organ/tongue/abductor var/scientist = FALSE // vars to not pollute spieces list with castes diff --git a/code/modules/mob/living/carbon/human/species_types/android.dm b/code/modules/mob/living/carbon/human/species_types/android.dm index 44f1e5c456..4badfa8405 100644 --- a/code/modules/mob/living/carbon/human/species_types/android.dm +++ b/code/modules/mob/living/carbon/human/species_types/android.dm @@ -2,7 +2,7 @@ name = "Android" id = "android" say_mod = "states" - species_traits = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOBLOOD,VIRUSIMMUNE,PIERCEIMMUNE,NOHUNGER,EASYLIMBATTACHMENT) + species_traits = list(SPECIES_ROBOTIC,NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOBLOOD,PIERCEIMMUNE,NOHUNGER,EASYLIMBATTACHMENT) meat = null damage_overlay_type = "synth" mutanttongue = /obj/item/organ/tongue/robot diff --git a/code/modules/mob/living/carbon/human/species_types/angel.dm b/code/modules/mob/living/carbon/human/species_types/angel.dm index cc9a2ff12f..de0120028c 100644 --- a/code/modules/mob/living/carbon/human/species_types/angel.dm +++ b/code/modules/mob/living/carbon/human/species_types/angel.dm @@ -2,7 +2,7 @@ name = "Angel" id = "angel" default_color = "FFFFFF" - species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS) + species_traits = list(SPECIES_ORGANIC,EYECOLOR,HAIR,FACEHAIR,LIPS) mutant_bodyparts = list("tail_human", "ears", "wings") default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "Angel") use_skintones = 1 diff --git a/code/modules/mob/living/carbon/human/species_types/corporate.dm b/code/modules/mob/living/carbon/human/species_types/corporate.dm index b9106cf408..4127e49cec 100644 --- a/code/modules/mob/living/carbon/human/species_types/corporate.dm +++ b/code/modules/mob/living/carbon/human/species_types/corporate.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /datum/species/corporate name = "Corporate Agent" id = "agent" @@ -16,4 +17,24 @@ blacklisted = 1 use_skintones = 0 species_traits = list(RADIMMUNE,VIRUSIMMUNE,NOBLOOD,PIERCEIMMUNE,EYECOLOR,NODISMEMBER,NOHUNGER) +======= +/datum/species/corporate + name = "Corporate Agent" + id = "agent" + hair_alpha = 0 + say_mod = "declares" + speedmod = -2//Fast + brutemod = 0.7//Tough against firearms + burnmod = 0.65//Tough against lasers + coldmod = 0 + heatmod = 0.5//it's a little tough to burn them to death not as hard though. + punchdamagelow = 20 + punchdamagehigh = 30//they are inhumanly strong + punchstunthreshold = 25 + attack_verb = "smash" + attack_sound = 'sound/weapons/resonator_blast.ogg' + blacklisted = 1 + use_skintones = 0 + species_traits = list(SPECIES_ORGANIC,RADIMMUNE,VIRUSIMMUNE,NOBLOOD,PIERCEIMMUNE,EYECOLOR,NODISMEMBER,NOHUNGER) +>>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) sexes = 0 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm index 5effff5bd3..78cf1a3b7a 100644 --- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm +++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm @@ -2,7 +2,7 @@ name = "dullahan" id = "dullahan" default_color = "FFFFFF" - species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,NOBREATH,NOHUNGER) + species_traits = list(SPECIES_ORGANIC,EYECOLOR,HAIR,FACEHAIR,LIPS,NOBREATH,NOHUNGER) mutant_bodyparts = list("tail_human", "ears", "wings") default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None") use_skintones = TRUE diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index 61609f653c..7b37e5fc42 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -2,6 +2,7 @@ name = "Flyperson" id = "fly" say_mod = "buzzes" + species_traits = list(SPECIES_ORGANIC) mutanttongue = /obj/item/organ/tongue/fly mutantliver = /obj/item/organ/liver/fly mutantstomach = /obj/item/organ/stomach/fly diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index e3d2d5db61..ee2d13ae4a 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -2,7 +2,7 @@ // Animated beings of stone. They have increased defenses, and do not need to breathe. They're also slow as fuuuck. name = "Golem" id = "iron golem" - species_traits = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS,NO_UNDERWEAR) + species_traits = list(SPECIES_INORGANIC,NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOGUNS,NOBLOOD,RADIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS,NO_UNDERWEAR) mutant_organs = list(/obj/item/organ/adamantine_resonator) speedmod = 2 armor = 55 @@ -76,7 +76,7 @@ fixed_mut_color = "a3d" meat = /obj/item/ore/plasma //Can burn and takes damage from heat - species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS,NO_UNDERWEAR) + species_traits = list(SPECIES_INORGANIC,NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS,NO_UNDERWEAR) info_text = "As a Plasma Golem, you burn easily. Be careful, if you get hot enough while burning, you'll blow up!" heatmod = 0 //fine until they blow up prefix = "Plasma" @@ -242,7 +242,7 @@ fixed_mut_color = "49311c" meat = /obj/item/stack/sheet/mineral/wood //Can burn and take damage from heat - species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS,NO_UNDERWEAR) + species_traits = list(SPECIES_ORGANIC,NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS,NO_UNDERWEAR) armor = 30 burnmod = 1.25 heatmod = 1.5 @@ -549,7 +549,7 @@ limbs_id = "cultgolem" sexes = FALSE info_text = "As a Runic Golem, you possess eldritch powers granted by the Elder God Nar'Sie." - species_traits = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,NO_UNDERWEAR) //no mutcolors + species_traits = list(SPECIES_INORGANIC,NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOGUNS,NOBLOOD,RADIMMUNE,PIERCEIMMUNE,NODISMEMBER,NO_UNDERWEAR) //no mutcolors prefix = "Runic" var/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/golem/phase_shift @@ -602,7 +602,7 @@ limbs_id = "clockgolem" info_text = "As a clockwork golem, you are faster than \ other types of golem (being a machine), and are immune to electric shocks." - species_traits = list(NO_UNDERWEAR, NOTRANSSTING, NOBREATH, NOZOMBIE, VIRUSIMMUNE, RADIMMUNE, NOBLOOD, RESISTCOLD, RESISTPRESSURE, PIERCEIMMUNE) + species_traits = list(SPECIES_INORGANIC,NO_UNDERWEAR, NOTRANSSTING, NOBREATH, NOZOMBIE, RADIMMUNE, NOBLOOD, RESISTCOLD, RESISTPRESSURE, PIERCEIMMUNE) armor = 20 //Reinforced, but much less so to allow for fast movement attack_verb = "smash" attack_sound = 'sound/magic/clockwork/anima_fragment_attack.ogg' @@ -653,7 +653,7 @@ limbs_id = "clothgolem" sexes = FALSE info_text = "As a Cloth Golem, you are able to reform yourself after death, provided your remains aren't burned or destroyed. You are, of course, very flammable." - species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,NO_UNDERWEAR) //no mutcolors, and can burn + species_traits = list(SPECIES_UNDEAD,NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,PIERCEIMMUNE,NODISMEMBER,NO_UNDERWEAR) //no mutcolors, and can burn armor = 15 //feels no pain, but not too resistant burnmod = 2 // don't get burned speedmod = 1 // not as heavy as stone diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index 63fdacc504..7d43d1cdb4 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -2,9 +2,15 @@ name = "Human" id = "human" default_color = "FFFFFF" +<<<<<<< HEAD species_traits = list(MUTCOLORS_PARTSONLY,EYECOLOR,HAIR,FACEHAIR,LIPS) mutant_bodyparts = list("tail_human", "ears", "taur") default_features = list("tail_human" = "None", "ears" = "None", "taur" = "none") +======= + species_traits = list(SPECIES_ORGANIC,EYECOLOR,HAIR,FACEHAIR,LIPS) + mutant_bodyparts = list("tail_human", "ears", "wings") + default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None") +>>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) use_skintones = 1 skinned_type = /obj/item/stack/sheet/animalhide/human disliked_food = GROSS | RAW diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index b79a0e81a5..5d10ea6b36 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -4,7 +4,7 @@ id = "jelly" default_color = "00FF90" say_mod = "chirps" - species_traits = list(MUTCOLORS,EYECOLOR,NOBLOOD,VIRUSIMMUNE,TOXINLOVER) + species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,NOBLOOD,VIRUSIMMUNE,TOXINLOVER) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime exotic_blood = "slimejelly" damage_overlay_type = "" @@ -101,7 +101,7 @@ name = "Slimeperson" id = "slime" default_color = "00FFFF" - species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD,VIRUSIMMUNE, TOXINLOVER) + species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD,VIRUSIMMUNE, TOXINLOVER) say_mod = "says" hair_color = "mutcolor" hair_alpha = 150 diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index e528d58b11..c1db8cd69b 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -4,8 +4,13 @@ id = "lizard" say_mod = "hisses" default_color = "00FF00" +<<<<<<< HEAD species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,FACEHAIR) mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs", "taur") +======= + species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,LIPS) + mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs") +>>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) mutanttongue = /obj/item/organ/tongue/lizard mutanttail = /obj/item/organ/tail/lizard coldmod = 1.5 diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index 817e22163a..c4f85501d0 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -4,7 +4,7 @@ say_mod = "rattles" sexes = 0 meat = /obj/item/stack/sheet/mineral/plasma - species_traits = list(NOBLOOD,RESISTCOLD,RADIMMUNE,NOTRANSSTING,VIRUSIMMUNE,NOHUNGER) + species_traits = list(SPECIES_INORGANIC,NOBLOOD,RESISTCOLD,RADIMMUNE,NOTRANSSTING,NOHUNGER) mutantlungs = /obj/item/organ/lungs/plasmaman mutanttongue = /obj/item/organ/tongue/bone/plasmaman mutantliver = /obj/item/organ/liver/plasmaman diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 3881eae6f5..37b3d1b1cf 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /datum/species/pod // A mutation caused by a human being ressurected in a revival pod. These regain health in light, and begin to wither in darkness. name = "Podperson" @@ -69,3 +70,71 @@ H.show_message("The radiation beam singes you!") if(/obj/item/projectile/energy/florayield) H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL) +======= +/datum/species/pod + // A mutation caused by a human being ressurected in a revival pod. These regain health in light, and begin to wither in darkness. + name = "Podperson" + id = "pod" + default_color = "59CE00" + species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR) + attack_verb = "slash" + attack_sound = 'sound/weapons/slice.ogg' + miss_sound = 'sound/weapons/slashmiss.ogg' + burnmod = 1.25 + heatmod = 1.5 + meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/plant + disliked_food = MEAT | DAIRY + liked_food = VEGETABLES | FRUIT | GRAIN + +/datum/species/pod/on_species_gain(mob/living/carbon/C, datum/species/old_species) + . = ..() + C.faction |= "plants" + C.faction |= "vines" + +/datum/species/pod/on_species_loss(mob/living/carbon/C) + . = ..() + C.faction -= "plants" + C.faction -= "vines" + +/datum/species/pod/spec_life(mob/living/carbon/human/H) + if(H.stat == DEAD) + return + var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing + if(isturf(H.loc)) //else, there's considered to be no light + var/turf/T = H.loc + light_amount = min(1,T.get_lumcount()) - 0.5 + H.nutrition += light_amount * 10 + if(H.nutrition > NUTRITION_LEVEL_FULL) + H.nutrition = NUTRITION_LEVEL_FULL + if(light_amount > 0.2) //if there's enough light, heal + H.heal_overall_damage(1,1) + H.adjustToxLoss(-1) + H.adjustOxyLoss(-1) + + if(H.nutrition < NUTRITION_LEVEL_STARVING + 50) + H.take_overall_damage(2,0) + +/datum/species/pod/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) + if(chem.id == "plantbgone") + H.adjustToxLoss(3) + H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + return 1 + +/datum/species/pod/on_hit(obj/item/projectile/P, mob/living/carbon/human/H) + switch(P.type) + if(/obj/item/projectile/energy/floramut) + if(prob(15)) + H.rad_act(rand(30,80)) + H.Knockdown(100) + H.visible_message("[H] writhes in pain as [H.p_their()] vacuoles boil.", "You writhe in pain as your vacuoles boil!", "You hear the crunching of leaves.") + if(prob(80)) + H.randmutb() + else + H.randmutg() + H.domutcheck() + else + H.adjustFireLoss(rand(5,15)) + H.show_message("The radiation beam singes you!") + if(/obj/item/projectile/energy/florayield) + H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL) +>>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index a326150c60..09c9df5f9f 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -9,7 +9,7 @@ blacklisted = 1 ignored_by = list(/mob/living/simple_animal/hostile/faithless) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/shadow - species_traits = list(NOBREATH,NOBLOOD,RADIMMUNE,VIRUSIMMUNE) + species_traits = list(SPECIES_ORGANIC,NOBREATH,NOBLOOD,RADIMMUNE,VIRUSIMMUNE) dangerous_existence = 1 mutanteyes = /obj/item/organ/eyes/night_vision diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index acaa182ad0..0a55ae0134 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -6,7 +6,7 @@ blacklisted = 1 sexes = 0 meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton - species_traits = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NOHUNGER,EASYDISMEMBER,EASYLIMBATTACHMENT) + species_traits = list(SPECIES_UNDEAD,NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,PIERCEIMMUNE,NOHUNGER,EASYDISMEMBER,EASYLIMBATTACHMENT) mutanttongue = /obj/item/organ/tongue/bone damage_overlay_type = ""//let's not show bloody wounds or burns over bones. disliked_food = NONE diff --git a/code/modules/mob/living/carbon/human/species_types/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm index 8b21c2a237..856a472a73 100644 --- a/code/modules/mob/living/carbon/human/species_types/synths.dm +++ b/code/modules/mob/living/carbon/human/species_types/synths.dm @@ -3,13 +3,13 @@ id = "synth" say_mod = "beep boops" //inherited from a user's real species sexes = 0 - species_traits = list(NOTRANSSTING,NOBREATH,VIRUSIMMUNE,NODISMEMBER,NOHUNGER) //all of these + whatever we inherit from the real species + species_traits = list(SPECIES_ROBOTIC,NOTRANSSTING,NOBREATH,VIRUSIMMUNE,NODISMEMBER,NOHUNGER) //all of these + whatever we inherit from the real species dangerous_existence = 1 blacklisted = 1 meat = null damage_overlay_type = "synth" limbs_id = "synth" - var/list/initial_species_traits = list(NOTRANSSTING,NOBREATH,VIRUSIMMUNE,NODISMEMBER,NOHUNGER,NO_DNA_COPY) //for getting these values back for assume_disguise() + var/list/initial_species_traits = list(SPECIES_ROBOTIC,NOTRANSSTING,NOBREATH,VIRUSIMMUNE,NODISMEMBER,NOHUNGER,NO_DNA_COPY) //for getting these values back for assume_disguise() var/disguise_fail_health = 75 //When their health gets to this level their synthflesh partially falls off var/datum/species/fake_species = null //a species to do most of our work for us, unless we're damaged @@ -41,7 +41,8 @@ say_mod = S.say_mod sexes = S.sexes species_traits = initial_species_traits.Copy() - species_traits.Add(S.species_traits) + species_traits |= S.species_traits + species_traits -= list(SPECIES_ORGANIC, SPECIES_INORGANIC, SPECIES_UNDEAD) attack_verb = S.attack_verb attack_sound = S.attack_sound miss_sound = S.miss_sound diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index 0d309876c7..6d1384f12f 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -2,7 +2,7 @@ name = "vampire" id = "vampire" default_color = "FFFFFF" - species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,NOHUNGER,NOBREATH,DRINKSBLOOD) + species_traits = list(SPECIES_UNDEAD,EYECOLOR,HAIR,FACEHAIR,LIPS,NOHUNGER,NOBREATH,DRINKSBLOOD) mutant_bodyparts = list("tail_human", "ears", "wings") default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None") exotic_bloodtype = "U" diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index 8c87e1c9c9..2fe526368a 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -8,7 +8,7 @@ sexes = 0 blacklisted = 1 meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie - species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,NOZOMBIE,EASYDISMEMBER,EASYLIMBATTACHMENT,NOTRANSSTING) + species_traits = list(SPECIES_UNDEAD,NOBREATH,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,NOZOMBIE,EASYDISMEMBER,EASYLIMBATTACHMENT,NOTRANSSTING) mutanttongue = /obj/item/organ/tongue/zombie var/static/list/spooks = list('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/wail.ogg') disliked_food = NONE @@ -73,6 +73,7 @@ id = "goofzombies" limbs_id = "zombie" //They look like zombies sexes = 0 + species_traits = list(SPECIES_ORGANIC) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie mutanttongue = /obj/item/organ/tongue/zombie diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index f9b13dd24f..44613a9036 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -248,7 +248,7 @@ if(prob(D.infectivity)) D.spread() - if(stat != DEAD) + if(stat != DEAD && !D.process_dead) D.stage_act() //todo generalize this and move hud out diff --git a/tgstation.dme b/tgstation.dme index bbbd444d7d..48c61949b3 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -386,6 +386,7 @@ #include "code\datums\diseases\advance\symptoms\shivering.dm" #include "code\datums\diseases\advance\symptoms\skin.dm" #include "code\datums\diseases\advance\symptoms\sneeze.dm" +#include "code\datums\diseases\advance\symptoms\species.dm" #include "code\datums\diseases\advance\symptoms\symptoms.dm" #include "code\datums\diseases\advance\symptoms\viral.dm" #include "code\datums\diseases\advance\symptoms\vision.dm" From 7c1fe796356813792b379bde5ff12fe0d84ac80f Mon Sep 17 00:00:00 2001 From: oranges Date: Thu, 23 Nov 2017 10:37:58 +1300 Subject: [PATCH 031/328] Merge pull request #32943 from ShizCalev/alium-softcrit-sprite Fixes aliums showing wrong sprite in softcrit --- code/modules/mob/living/carbon/alien/humanoid/update_icons.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm index 3992cc62ca..e1a7752e9d 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm @@ -12,7 +12,7 @@ else icon_state = "alien[caste]_dead" - else if((stat == UNCONSCIOUS && !asleep) || IsKnockdown()) + else if((stat == UNCONSCIOUS && !asleep) || stat == SOFT_CRIT || IsKnockdown()) icon_state = "alien[caste]_unconscious" else if(leap_on_click) icon_state = "alien[caste]_pounce" From 31b98282857d0bf89549ce7f61bf758f32170164 Mon Sep 17 00:00:00 2001 From: Jordie Date: Thu, 23 Nov 2017 08:37:09 +1100 Subject: [PATCH 033/328] Adds ip and cid to banning panel ban search (#32801) For kevinz000 because he managed to lose a ban and couldn't find it with ckey or ackey somehow. No indexes because ORDER BY indexing is too finicky and having something like 8 indexes just for this wouldn't be worth the slowdown. --- code/modules/admin/DB_ban/functions.dm | 26 +++++++++++++++----------- code/modules/admin/topic.dm | 6 ++++-- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/code/modules/admin/DB_ban/functions.dm b/code/modules/admin/DB_ban/functions.dm index 5139ea8480..5047b31641 100644 --- a/code/modules/admin/DB_ban/functions.dm +++ b/code/modules/admin/DB_ban/functions.dm @@ -337,7 +337,7 @@ holder.DB_ban_panel() -/datum/admins/proc/DB_ban_panel(playerckey = null, adminckey = null, page = 0) +/datum/admins/proc/DB_ban_panel(playerckey, adminckey, ip, cid, page = 0) if(!usr.client) return @@ -394,25 +394,29 @@ output += "" output += HrefTokenFormField() output += "Ckey: " - output += "Admin ckey: " + output += "Admin ckey:
" + output += "IP: " + output += "CID: " output += "" output += "" output += "Please note that all jobban bans or unbans are in-effect the following round." - if(adminckey || playerckey) - playerckey = sanitizeSQL(ckey(playerckey)) - adminckey = sanitizeSQL(ckey(adminckey)) - var/playersearch = "" - var/adminsearch = "" + if(adminckey || playerckey || ip || cid) + var/list/searchlist = list() if(playerckey) - playersearch = "AND ckey = '[playerckey]' " + searchlist += "ckey = '[sanitizeSQL(ckey(playerckey))]'" if(adminckey) - adminsearch = "AND a_ckey = '[adminckey]' " + searchlist += "a_ckey = '[sanitizeSQL(ckey(adminckey))]'" + if(ip) + searchlist += "ip = INET_ATON('[sanitizeSQL(ip)]')" + if(cid) + searchlist += "computerid = '[sanitizeSQL(cid)]'" + var/search = searchlist.Join(" AND ") var/bancount = 0 var/bansperpage = 15 var/pagecount = 0 page = text2num(page) - var/datum/DBQuery/query_count_bans = SSdbcore.NewQuery("SELECT COUNT(id) FROM [format_table_name("ban")] WHERE 1 [playersearch] [adminsearch]") + var/datum/DBQuery/query_count_bans = SSdbcore.NewQuery("SELECT COUNT(id) FROM [format_table_name("ban")] WHERE [search]") if(!query_count_bans.warn_execute()) return if(query_count_bans.NextRow()) @@ -438,7 +442,7 @@ output += "OPTIONS" output += "" var/limit = " LIMIT [bansperpage * page], [bansperpage]" - var/datum/DBQuery/query_search_bans = SSdbcore.NewQuery("SELECT id, bantime, bantype, reason, job, duration, expiration_time, ckey, a_ckey, unbanned, unbanned_ckey, unbanned_datetime, edits, round_id FROM [format_table_name("ban")] WHERE 1 [playersearch] [adminsearch] ORDER BY bantime DESC[limit]") + var/datum/DBQuery/query_search_bans = SSdbcore.NewQuery("SELECT id, bantime, bantype, reason, job, duration, expiration_time, ckey, a_ckey, unbanned, unbanned_ckey, unbanned_datetime, edits, round_id FROM [format_table_name("ban")] WHERE [search] ORDER BY bantime DESC[limit]") if(!query_search_bans.warn_execute()) return diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 5139f0bb47..5c8f637b98 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -181,12 +181,14 @@ log_admin("[key_name(usr)] has triggered an event. ([E.name])") return - else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"]) + else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"] || href_list["dbsearchip"] || href_list["dbsearchcid"]) var/adminckey = href_list["dbsearchadmin"] var/playerckey = href_list["dbsearchckey"] + var/ip = href_list["dbsearchip"] + var/cid = href_list["dbsearchcid"] var/page = href_list["dbsearchpage"] - DB_ban_panel(playerckey, adminckey, page) + DB_ban_panel(playerckey, adminckey, ip, cid, page) return else if(href_list["dbbanedit"]) From 2615ddd2262937ec24b6bdd9cda56460edec712b Mon Sep 17 00:00:00 2001 From: oranges Date: Thu, 23 Nov 2017 10:38:12 +1300 Subject: [PATCH 035/328] Merge pull request #32945 from tgstation/Cyberboss-patch-1 Fixes bad text2file call --- code/controllers/subsystem/overlays.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/subsystem/overlays.dm b/code/controllers/subsystem/overlays.dm index 498890d430..c0ccdddb31 100644 --- a/code/controllers/subsystem/overlays.dm +++ b/code/controllers/subsystem/overlays.dm @@ -29,7 +29,7 @@ SUBSYSTEM_DEF(overlays) /datum/controller/subsystem/overlays/Shutdown() - text2file("[GLOB.log_directory]/overlay.log", render_stats(stats)) + text2file(render_stats(stats), "[GLOB.log_directory]/overlay.log") /datum/controller/subsystem/overlays/Recover() From b9e37a74c71017cc962ffa304bc987f2ec82dd2a Mon Sep 17 00:00:00 2001 From: oranges Date: Thu, 23 Nov 2017 10:40:07 +1300 Subject: [PATCH 037/328] Specifies that MariaDB is required for sql in the project readme --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index f51647b568..bd86a59216 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,12 @@ To enable an away mission open `config/awaymissionconfig.txt` and uncomment one ## SQL SETUP +<<<<<<< HEAD The SQL backend requires a MySQL server. SQL is required for the library, stats tracking, admin notes, and job-only bans, among other features, mostly related to server administration. Your server details go in /config/dbconfig.txt, and the SQL schema is in /SQL/tgstation_schema.sql and /SQL/tgstation_schema_prefix.sql depending on if you want table prefixes. More detailed setup instructions are located here: http://www.tgstation13.org/wiki/Downloading_the_source_code#Setting_up_the_database +======= +The SQL backend requires a Mariadb server running 10.2 or later. Mysql is not supported but Mariadb is a drop in replacement for mysql. SQL is required for the library, stats tracking, admin notes, and job-only bans, among other features, mostly related to server administration. Your server details go in /config/dbconfig.txt, and the SQL schema is in /SQL/tgstation_schema.sql and /SQL/tgstation_schema_prefix.sql depending on if you want table prefixes. More detailed setup instructions are located here: https://www.tgstation13.org/wiki/Downloading_the_source_code#Setting_up_the_database + +>>>>>>> e0b2b71... Merge pull request #32999 from MrStonedOne/patch-451 ## IRC BOT SETUP From c2c22d56c74261c170acb0258c612e1c1871f2f8 Mon Sep 17 00:00:00 2001 From: oranges Date: Thu, 23 Nov 2017 10:52:44 +1300 Subject: [PATCH 038/328] [READY]NTnet refactor, assimilates exonet --- code/__DEFINES/components.dm | 1 + code/__DEFINES/networks.dm | 1 + code/__DEFINES/subsystems.dm | 13 ++ .../subsystem/processing/circuit.dm | 23 +--- .../subsystem/processing/networks.dm | 36 ++++++ code/datums/EPv2.dm | 113 ------------------ code/datums/components/ntnet_interface.dm | 59 +++++++++ code/game/machinery/exonet_node.dm | 106 ---------------- .../circuitboards/machine_circuitboards.dm | 3 + code/modules/NTNet/netdata.dm | 29 +++++ .../NTNet/NTNet.dm => NTNet/network.dm} | 99 ++++++++++----- .../NTNet/NTNet_relay.dm => NTNet/relays.dm} | 32 +++-- .../integrated_electronics/subtypes/input.dm | 54 ++++----- .../NTNet/NTNRC/conversation.dm | 8 +- .../computers/item/computer.dm | 2 +- .../file_system/programs/antagonist/dos.dm | 12 +- .../file_system/programs/ntdownloader.dm | 10 +- .../file_system/programs/ntmonitor.dm | 50 ++++---- .../file_system/programs/ntnrc_client.dm | 6 +- .../file_system/programs/nttransfer.dm | 10 +- .../hardware/network_card.dm | 2 +- .../research/designs/telecomms_designs.dm | 3 + tgstation.dme | 10 +- 23 files changed, 311 insertions(+), 371 deletions(-) create mode 100644 code/__DEFINES/networks.dm create mode 100644 code/controllers/subsystem/processing/networks.dm delete mode 100644 code/datums/EPv2.dm create mode 100644 code/datums/components/ntnet_interface.dm delete mode 100644 code/game/machinery/exonet_node.dm create mode 100644 code/modules/NTNet/netdata.dm rename code/modules/{modular_computers/NTNet/NTNet.dm => NTNet/network.dm} (67%) rename code/modules/{modular_computers/NTNet/NTNet_relay.dm => NTNet/relays.dm} (76%) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 135fe3ece3..ddf3deb4a3 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -19,6 +19,7 @@ #define COMSIG_PARENT_QDELETED "parent_qdeleted" //before a datum's Destroy() is called: () #define COMSIG_COMPONENT_CLEAN_ACT "clean_act" //called on an object to clean it of cleanables. Usualy with soap: (num/strength) +#define COMSIG_COMPONENT_NTNET_RECIEVE "ntnet_recieve" //called on an object by its NTNET connection component on recieve. (sending_id(number), sending_netname(text), data(datum/netdata)) // /atom signals #define COMSIG_PARENT_ATTACKBY "atom_attackby" //from base of atom/attackby(): (/obj/item, /mob/living, params) diff --git a/code/__DEFINES/networks.dm b/code/__DEFINES/networks.dm new file mode 100644 index 0000000000..42fe8a5ded --- /dev/null +++ b/code/__DEFINES/networks.dm @@ -0,0 +1 @@ +#define HID_RESTRICTED_END 101 //the first nonrestricted ID, automatically assigned on connection creation. diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 7eaf7e089d..1252e167c2 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -46,6 +46,7 @@ #define INIT_ORDER_DBCORE 18 #define INIT_ORDER_BLACKBOX 17 #define INIT_ORDER_SERVER_MAINT 16 +<<<<<<< HEAD #define INIT_ORDER_EVENTS 15 #define INIT_ORDER_JOBS 14 #define INIT_ORDER_TICKER 13 @@ -54,6 +55,18 @@ #define INIT_ORDER_LANGUAGE 10 #define INIT_ORDER_MACHINES 9 #define INIT_ORDER_CIRCUIT 8 +======= +#define INIT_ORDER_RESEARCH 15 +#define INIT_ORDER_EVENTS 14 +#define INIT_ORDER_JOBS 13 +#define INIT_ORDER_TICKER 12 +#define INIT_ORDER_MAPPING 11 +#define INIT_ORDER_ATOMS 10 +#define INIT_ORDER_NETWORKS 9 +#define INIT_ORDER_LANGUAGE 8 +#define INIT_ORDER_MACHINES 7 +#define INIT_ORDER_CIRCUIT 6 +>>>>>>> 92632ec... Merge pull request #32914 from kevinz000/NTNet #define INIT_ORDER_TIMER 1 #define INIT_ORDER_DEFAULT 0 #define INIT_ORDER_AIR -1 diff --git a/code/controllers/subsystem/processing/circuit.dm b/code/controllers/subsystem/processing/circuit.dm index 73e9ee669d..461a793a45 100644 --- a/code/controllers/subsystem/processing/circuit.dm +++ b/code/controllers/subsystem/processing/circuit.dm @@ -6,13 +6,11 @@ PROCESSING_SUBSYSTEM_DEF(circuit) var/cipherkey - var/list/all_exonet_connections = list() //Address = connection datum. - var/list/obj/machinery/exonet_node/all_exonet_nodes = list() - var/list/all_components = list() // Associative list of [component_name]:[component_path] pairs var/list/cached_components = list() // Associative list of [component_path]:[component] pairs var/list/all_assemblies = list() // Associative list of [assembly_name]:[assembly_path] pairs var/list/cached_assemblies = list() // Associative list of [assembly_path]:[assembly] pairs + var/list/all_circuits = list() // Associative list of [circuit_name]:[circuit_path] pairs var/list/circuit_fabricator_recipe_list = list() // Associative list of [category_name]:[list_of_circuit_paths] pairs var/cost_multiplier = MINERAL_MATERIAL_AMOUNT / 10 // Each circuit cost unit is 200cm3 @@ -58,22 +56,3 @@ PROCESSING_SUBSYSTEM_DEF(circuit) /obj/item/device/integrated_electronics/debugger, /obj/item/device/integrated_electronics/analyzer ) - -/datum/controller/subsystem/processing/circuit/proc/get_exonet_node() - for(var/i in 1 to all_exonet_nodes.len) - var/obj/machinery/exonet_node/E = all_exonet_nodes[i] - if(E.is_operating()) - return E - -/datum/controller/subsystem/processing/circuit/proc/get_exonet_address(addr) - return all_exonet_connections[addr] - - -// Proc: get_atom_from_address() -// Parameters: 1 (target_address - the desired address to find) -// Description: Searches an address for the atom it is attached for, otherwise returns null. - -/datum/controller/subsystem/processing/circuit/proc/get_atom_from_address(var/target_address) - var/datum/exonet_protocol/exonet = SScircuit.get_exonet_address(target_address) - if(exonet) - return exonet.holder \ No newline at end of file diff --git a/code/controllers/subsystem/processing/networks.dm b/code/controllers/subsystem/processing/networks.dm new file mode 100644 index 0000000000..960a70a59d --- /dev/null +++ b/code/controllers/subsystem/processing/networks.dm @@ -0,0 +1,36 @@ +PROCESSING_SUBSYSTEM_DEF(networks) + name = "Networks" + priority = 80 + wait = 1 + stat_tag = "NET" + flags = SS_KEEP_TIMING + init_order = INIT_ORDER_NETWORKS + var/datum/ntnet/station/station_network + var/assignment_hardware_id = HID_RESTRICTED_END + var/list/networks_by_id = list() //id = network + var/list/interfaces_by_id = list() //hardware id = component interface + +/datum/controller/subsystem/processing/networks/Initialize() + station_network = new + station_network.register_map_supremecy() + . = ..() + +/datum/controller/subsystem/processing/networks/proc/register_network(datum/ntnet/network) + if(!networks_by_id[network.network_id]) + networks_by_id[network.network_id] = network + return TRUE + return FALSE + +/datum/controller/subsystem/processing/networks/proc/unregister_network(datum/ntnet/network) + networks_by_id -= network.network_id + return TRUE + +/datum/controller/subsystem/processing/networks/proc/register_interface(datum/component/ntnet_interface/D) + if(!interfaces_by_id[D.hardware_id]) + interfaces_by_id[D.hardware_id] = D + return TRUE + return FALSE + +/datum/controller/subsystem/processing/networks/proc/unregister_interface(datum/component/ntnet_interface/D) + interfaces_by_id -= D.hardware_id + return TRUE diff --git a/code/datums/EPv2.dm b/code/datums/EPv2.dm deleted file mode 100644 index 85088ff903..0000000000 --- a/code/datums/EPv2.dm +++ /dev/null @@ -1,113 +0,0 @@ -/* -Exonet Protocol Version 2 - -This is designed to be a fairly simple fake-networking system, allowing you to send and receive messages -between the exonet_protocol datums, and for atoms to react to those messages, based on the contents of the message. -Hopefully, this can evolve to be a more robust fake-networking system and allow for some devious network hacking in the future. - -Version 1 never existed. - -*Setting up* - -To set up the exonet link, define a variable on your desired atom it is like this; - var/datum/exonet_protocol/exonet = null -Afterwards, before you want to do networking, call exonet = New(src), then exonet.make_address(string), and give it a string to hash into the new IP. -The reason it needs a string is so you can have the addresses be persistant, assuming no-one already took it first. - -When you're no longer wanting to use the address and want to free it up, like when you want to Destroy() it, you need to call remove_address() -Destroy() also automatically calls remove_address(). - -*Sending messages* - -To send a message to another datum, you need to know it's EPv2 (fake IP) address. Once you know that, call send_message(), place your -intended address in the first argument, then the message in the second. For example, send_message(exonet.address, "ping") will make you -ping yourself. - -*Receiving messages* -You don't need to do anything special to receive the messages, other than give your target exonet datum an address as well. Once something hits -your datum with send_message(), receive_message() is called, and the default action is to call receive_exonet_message() on the datum's holder. -You'll want to override receive_exonet_message() on your atom, and define what will occur when the message is received. -The receiving atom will receive the origin atom (the atom that sent the message), the origin address, and finally the message itself. -It's suggested to start with an if or switch statement for the message, to determine what to do. -*/ - -/datum/exonet_protocol - var/address = "" //Resembles IPv6, but with only five 'groups', e.g. XXXX:XXXX:XXXX:XXXX:XXXX - var/atom/holder - -/datum/exonet_protocol/New(var/atom/H) - holder = H - -/datum/exonet_protocol/Destroy() - remove_address() - holder = null - return ..() - -// Proc: make_address() -// Parameters: 1 (string - used to make into a hash that will be part of the new address) -// Description: Allocates a new address based on the string supplied. It results in consistant addresses for each round assuming it is not already taken.. -/datum/exonet_protocol/proc/make_address(var/string) - if(!string) - return - var/hex = copytext(md5(string),1,25) - if(!hex) - return - var/addr_1 = copytext(hex,1,5) - var/addr_2 = copytext(hex,5,9) - var/addr_3 = copytext(hex,9,13) - var/addr_4 = copytext(hex,13,17) - address = "fc00:[addr_1]:[addr_2]:[addr_3]:[addr_4]" - if(SScircuit.all_exonet_connections[address]) - stack_trace("WARNING: Exonet address collision in make_address. Holder type if applicable is [holder? holder.type : "NO HOLDER"]!") - SScircuit.all_exonet_connections[address] = src - - -// Proc: make_arbitrary_address() -// Parameters: 1 (new_address - the desired address) -// Description: Allocates that specific address, if it is available. -/datum/exonet_protocol/proc/make_arbitrary_address(var/new_address) - if(new_address) - if(new_address == SScircuit.get_exonet_address(new_address) ) //Collision test. - return FALSE - address = new_address - SScircuit.all_exonet_connections[address] = src - return TRUE - - -// Proc: remove_address() -// Parameters: None -// Description: Deallocates the address, freeing it for use. -/datum/exonet_protocol/proc/remove_address() - SScircuit.all_exonet_connections -= address - address = "" - - - -// Proc: send_message() -// Parameters: 3 (target_address - the desired address to send the message to, data_type - text stating what the content is meant to be used for, -// content - the actual 'message' being sent to the address) -// Description: Sends the message to target_address, by calling receive_message() on the desired datum. Returns true if the message is recieved. -/datum/exonet_protocol/proc/send_message(var/target_address, var/data_type, var/content) - if(!address) - return FALSE - var/obj/machinery/exonet_node/node = SScircuit.get_exonet_node() - if(!node) // Telecomms went boom, ion storm, etc. - return FALSE - var/datum/exonet_protocol/exonet = SScircuit.get_exonet_address(target_address) - if(exonet) - node.write_log(address, target_address, data_type, content) - return exonet.receive_message(holder, address, data_type, content) - -// Proc: receive_message() -// Parameters: 4 (origin_atom - the origin datum's holder, origin_address - the address the message originated from, -// data_type - text stating what the content is meant to be used for, content - the actual 'message' being sent from origin_atom) -// Description: Called when send_message() successfully reaches the intended datum. By default, calls receive_exonet_message() on the holder atom. -/datum/exonet_protocol/proc/receive_message(var/atom/origin_atom, var/origin_address, var/data_type, var/content) - holder.receive_exonet_message(origin_atom, origin_address, data_type, content) - return TRUE // for send_message() - -// Proc: receive_exonet_message() -// Parameters: 3 (origin_atom - the origin datum's holder, origin_address - the address the message originated from, message - the message that was sent) -// Description: Override this to make your atom do something when a message is received. -/atom/proc/receive_exonet_message(var/atom/origin_atom, var/origin_address, var/message, var/text) - return diff --git a/code/datums/components/ntnet_interface.dm b/code/datums/components/ntnet_interface.dm new file mode 100644 index 0000000000..14705691bb --- /dev/null +++ b/code/datums/components/ntnet_interface.dm @@ -0,0 +1,59 @@ +//Thing meant for allowing datums and objects to access a NTnet network datum. +/datum/proc/ntnet_recieve(datum/netdata/data) + return + +/datum/proc/ntnet_send(datum/netdata/data, netid) + GET_COMPONENT(NIC, /datum/component/ntnet_interface) + if(!NIC) + return FALSE + return NIC.__network_send(data, netid) + +/datum/component/ntnet_interface + var/hardware_id //text + var/network_name = "" //text + var/list/networks_connected_by_id = list() //id = datum/ntnet + +/datum/component/ntnet_interface/Initialize(force_ID, force_name = "NTNet Device", autoconnect_station_network = TRUE) //Don't force ID unless you know what you're doing! + if(!force_ID) + hardware_id = "[SSnetworks.assignment_hardware_id++]" + else + hardware_id = force_ID + network_name = force_name + SSnetworks.register_interface(src) + if(autoconnect_station_network) + register_connection(SSnetworks.station_network) + +/datum/component/ntnet_interface/Destroy() + unregister_all_connections() + SSnetworks.unregister_interface(src) + return ..() + +/datum/component/ntnet_interface/proc/__network_recieve(datum/netdata/data) //Do not directly proccall! + parent.SendSignal(COMSIG_COMPONENT_NTNET_RECIEVE, data) + parent.ntnet_recieve(data) + +/datum/component/ntnet_interface/proc/__network_send(datum/netdata/data, netid) //Do not directly proccall! + if(netid) + if(networks_connected_by_id[netid]) + var/datum/ntnet/net = networks_connected_by_id[netid] + return net.process_data_transmit(src, data) + return FALSE + for(var/i in networks_connected_by_id) + var/datum/ntnet/net = networks_connected_by_id[i] + net.process_data_transmit(src, data) + return TRUE + +/datum/component/ntnet_interface/proc/register_connection(datum/ntnet/net) + if(net.interface_connect(src)) + networks_connected_by_id[net.network_id] = net + return TRUE + +/datum/component/ntnet_interface/proc/unregister_all_connections() + for(var/i in networks_connected_by_id) + unregister_connection(networks_connected_by_id[i]) + return TRUE + +/datum/component/ntnet_interface/proc/unregister_connection(datum/ntnet/net) + net.interface_disconnect(src) + networks_connected_by_id -= net.network_id + return TRUE diff --git a/code/game/machinery/exonet_node.dm b/code/game/machinery/exonet_node.dm deleted file mode 100644 index b521f404ce..0000000000 --- a/code/game/machinery/exonet_node.dm +++ /dev/null @@ -1,106 +0,0 @@ -/obj/machinery/exonet_node - name = "exonet node" - icon = 'icons/obj/stationobjs.dmi' - icon_state = "exonet_node" - idle_power_usage = 25 - var/on = TRUE - var/toggle = TRUE - density = TRUE - anchored = TRUE - circuit = /obj/item/circuitboard/machine/exonet_node - max_integrity = 300 - integrity_failure = 100 - armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 70) - desc = "This machine is exonet node." - var/list/logs = list() // Gets written to by exonet's send_message() function. - var/opened = FALSE - -/obj/machinery/exonet_node/Initialize() - . = ..() - SScircuit.all_exonet_nodes += src - -/obj/machinery/exonet_node/Destroy() - SScircuit.all_exonet_nodes -= src - return ..() - -/obj/machinery/exonet_node/proc/is_operating() - return on && !stat - -// Proc: update_icon() -// Parameters: None -// Description: Self explanatory. -/obj/machinery/exonet_node/update_icon() - icon_state = "[initial(icon_state)][on? "" : "_off"]" - -// Proc: update_power() -// Parameters: None -// Description: Sets the device on/off and adjusts power draw based on stat and toggle variables. -/obj/machinery/exonet_node/proc/update_power() - on = is_operational() && toggle - use_power = on - update_icon() - -// Proc: emp_act() -// Parameters: 1 (severity - how strong the EMP is, with lower numbers being stronger) -// Description: Shuts off the machine for awhile if an EMP hits it. Ion anomalies also call this to turn it off. -/obj/machinery/exonet_node/emp_act(severity) - if(!(stat & EMPED)) - stat |= EMPED - var/duration = (300 * 10)/severity - addtimer(CALLBACK(src, /obj/machinery/exonet_node/proc/unemp_act), rand(duration - 20, duration + 20)) - update_icon() - ..() - -/obj/machinery/exonet_node/proc/unemp_act(severity) - stat &= ~EMPED - -// Proc: attackby() -// Parameters: 2 (I - the item being whacked against the machine, user - the person doing the whacking) -// Description: Handles deconstruction. -/obj/machinery/exonet_node/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/screwdriver)) - default_deconstruction_screwdriver(user, I) - else if(istype(I, /obj/item/crowbar)) - default_deconstruction_crowbar(user, I) - else - return ..() - -// Proc: attack_ai() -// Parameters: 1 (user - the AI clicking on the machine) -// Description: Redirects to attack_hand() -/obj/machinery/exonet_node/attack_ai(mob/user) - ui_interact(user) - - -/obj/machinery/exonet_node/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, var/force_open = 1,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, "exonet_node", name, 600, 300, master_ui, state) - ui.open() - -/obj/machinery/exonet_node/ui_data(mob/user) - var/list/data = list() - data["toggle"] = toggle - data["logs"] = logs - return data - -/obj/machinery/exonet_node/ui_act(action, params) - if(..()) - return - switch(action) - if("toggle_power") - toggle = !toggle - update_power() - if(!toggle) - investigate_log("has been turned off by [key_name(usr)].", INVESTIGATE_EXONET) - . = TRUE - update_icon() - add_fingerprint(usr) - -// Proc: get_exonet_node() -// Parameters: None -// Description: Helper proc to get a reference to an Exonet node. - -/obj/machinery/exonet_node/proc/write_log(var/origin_address, var/target_address, var/data_type, var/content) - var/msg = "[time2text(world.time, "hh:mm:ss")] | FROM [origin_address] TO [target_address] | TYPE: [data_type] | CONTENT: [content]" - logs.Add(msg) diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 0e816a6634..8fc39b832f 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -193,6 +193,7 @@ /obj/item/stack/cable_coil = 1, /obj/item/stock_parts/subspace/filter = 1) +<<<<<<< HEAD /obj/item/circuitboard/machine/exonet_node name = "Exonet Node(machine board)" build_path = /obj/machinery/exonet_node @@ -206,6 +207,8 @@ /obj/item/stock_parts/subspace/treatment = 2, /obj/item/stack/cable_coil = 2) +======= +>>>>>>> 92632ec... Merge pull request #32914 from kevinz000/NTNet /obj/item/circuitboard/machine/teleporter_hub name = "Teleporter Hub (Machine Board)" build_path = /obj/machinery/teleport/hub diff --git a/code/modules/NTNet/netdata.dm b/code/modules/NTNet/netdata.dm new file mode 100644 index 0000000000..7d3d8f2b5d --- /dev/null +++ b/code/modules/NTNet/netdata.dm @@ -0,0 +1,29 @@ +/datum/netdata //this requires some thought later on but for now it's fine. + var/network_id + + var/list/recipient_ids = list() + var/sender_id + + var/plaintext_data + var/plaintext_data_secondary + var/plaintext_passkey + +/datum/netdata/proc/json_list_generation_admin() //for admin logs and such. + . = list() + . |= json_list_generation() + +/datum/netdata/proc/json_list_generation() + . = list() + . |= json_list_generation_netlog() + .["network_id"] = network_id + +/datum/netdata/proc/json_list_generation_netlog() + . = list() + .["recipient_ids"] = recipient_ids + .["sender_id"] = sender_id + .["plaintext_data"] = plaintext_data + .["plaintext_data_secondary"] = plaintext_data_secondary + .["plaintext_passkey"] = plaintext_passkey + +/datum/netdata/proc/generate_netlog() + return "[json_encode(json_list_generation_netlog())]" diff --git a/code/modules/modular_computers/NTNet/NTNet.dm b/code/modules/NTNet/network.dm similarity index 67% rename from code/modules/modular_computers/NTNet/NTNet.dm rename to code/modules/NTNet/network.dm index a928e8da06..aacc1b08b5 100644 --- a/code/modules/modular_computers/NTNet/NTNet.dm +++ b/code/modules/NTNet/network.dm @@ -1,8 +1,7 @@ -GLOBAL_DATUM_INIT(ntnet_global, /datum/ntnet, new) - - -// This is the NTNet datum. There can be only one NTNet datum in game at once. Modular computers read data from this. /datum/ntnet + var/network_id = "Network" + var/connected_interfaces_by_id = list() //id = datum/component/ntnet_interface + var/list/relays = list() var/list/logs = list() var/list/available_station_software = list() @@ -14,25 +13,59 @@ GLOBAL_DATUM_INIT(ntnet_global, /datum/ntnet, new) var/setting_maxlogcount = 100 // These only affect wireless. LAN (consoles) are unaffected since it would be possible to create scenario where someone turns off NTNet, and is unable to turn it back on since it refuses connections - var/setting_softwaredownload = 1 - var/setting_peertopeer = 1 - var/setting_communication = 1 - var/setting_systemcontrol = 1 - var/setting_disabled = 0 // Setting to 1 will disable all wireless, independently on relays status. - - var/intrusion_detection_enabled = 1 // Whether the IDS warning system is enabled - var/intrusion_detection_alarm = 0 // Set when there is an IDS warning due to malicious (antag) software. + var/setting_softwaredownload = TRUE + var/setting_peertopeer = TRUE + var/setting_communication = TRUE + var/setting_systemcontrol = TRUE + var/setting_disabled = FALSE // Setting to 1 will disable all wireless, independently on relays status. + var/intrusion_detection_enabled = TRUE // Whether the IDS warning system is enabled + var/intrusion_detection_alarm = FALSE // Set when there is an IDS warning due to malicious (antag) software. // If new NTNet datum is spawned, it replaces the old one. -/datum/ntnet/New() - if(GLOB.ntnet_global && (GLOB.ntnet_global != src)) - GLOB.ntnet_global = src // There can be only one. - for(var/obj/machinery/ntnet_relay/R in GLOB.machines) - relays.Add(R) - R.NTNet = src +/datum/ntnet/New(_netid) build_software_lists() add_log("NTNet logging system activated.") + if(_netid) + network_id = _netid + if(!SSnetworks.register_network(src)) + stack_trace("Network [type] with ID [network_id] failed to register and has been deleted.") + qdel(src) + +/datum/ntnet/proc/interface_connect(datum/component/ntnet_interface/I) + connected_interfaces_by_id[I.hardware_id] = I + return TRUE + +/datum/ntnet/proc/interface_disconnect(datum/component/ntnet_interface/I) + connected_interfaces_by_id -= I.hardware_id + return TRUE + +/datum/ntnet/proc/find_interface_id(id) + return connected_interfaces_by_id[id] + +/datum/ntnet/proc/process_data_transmit(datum/component/ntnet_interface/sender, datum/netdata/data) + data.network_id = src + log_data_transfer(data) + if(!check_relay_operation()) + return FALSE + for(var/i in data.recipient_ids) + var/datum/component/ntnet_interface/reciever = find_interface_id(i) + if(reciever) + reciever.__network_recieve(data) + return TRUE + +/datum/ntnet/proc/check_relay_operation(zlevel) //can be expanded later but right now it's true/false. + for(var/i in relays) + var/obj/machinery/ntnet_relay/n = i + if(zlevel && n.z != zlevel) + continue + if(n.is_operational()) + return TRUE + return FALSE + +/datum/ntnet/proc/log_data_transfer(datum/netdata/data) + logs += "[worldtime2text()] - [data.generate_netlog()]" + return // Simplified logging: Adds a log. log_string is mandatory parameter, source is optional. /datum/ntnet/proc/add_log(log_string, obj/item/computer_hardware/network_card/source = null) @@ -44,7 +77,6 @@ GLOBAL_DATUM_INIT(ntnet_global, /datum/ntnet, new) log_text += log_string logs.Add(log_text) - // We have too many logs, remove the oldest entries until we get into the limit if(logs.len > setting_maxlogcount) logs = logs.Copy(logs.len-setting_maxlogcount,0) @@ -55,28 +87,23 @@ GLOBAL_DATUM_INIT(ntnet_global, /datum/ntnet, new) if(!relays || !relays.len) // No relays found. NTNet is down return FALSE - var/operating = FALSE - // Check all relays. If we have at least one working relay, network is up. - for(var/M in relays) - var/obj/machinery/ntnet_relay/R = M - if(R.is_operational()) - operating = TRUE - break + if(!check_relay_operation()) + return FALSE if(setting_disabled) return FALSE switch(specific_action) if(NTNET_SOFTWAREDOWNLOAD) - return (operating && setting_softwaredownload) + return setting_softwaredownload if(NTNET_PEERTOPEER) - return (operating && setting_peertopeer) + return setting_peertopeer if(NTNET_COMMUNICATION) - return (operating && setting_communication) + return setting_communication if(NTNET_SYSTEMCONTROL) - return (operating && setting_systemcontrol) - return operating + return setting_systemcontrol + return TRUE // Builds lists that contain downloadable software. /datum/ntnet/proc/build_software_lists() @@ -106,7 +133,7 @@ GLOBAL_DATUM_INIT(ntnet_global, /datum/ntnet, new) // Resets the IDS alarm /datum/ntnet/proc/resetIDS() - intrusion_detection_alarm = 0 + intrusion_detection_alarm = FALSE /datum/ntnet/proc/toggleIDS() resetIDS() @@ -143,3 +170,11 @@ GLOBAL_DATUM_INIT(ntnet_global, /datum/ntnet, new) if(NTNET_SYSTEMCONTROL) setting_systemcontrol = !setting_systemcontrol add_log("Configuration Updated. Wireless network firewall now [setting_systemcontrol ? "allows" : "disallows"] remote control of station's systems.") + +/datum/ntnet/station + network_id = "SS13-NTNET" + +/datum/ntnet/station/proc/register_map_supremecy() //called at map init to make this what station networks use. + for(var/obj/machinery/ntnet_relay/R in GLOB.machines) + relays.Add(R) + R.NTNet = src diff --git a/code/modules/modular_computers/NTNet/NTNet_relay.dm b/code/modules/NTNet/relays.dm similarity index 76% rename from code/modules/modular_computers/NTNet/NTNet_relay.dm rename to code/modules/NTNet/relays.dm index cab74df734..52ca6d1822 100644 --- a/code/modules/modular_computers/NTNet/NTNet_relay.dm +++ b/code/modules/NTNet/relays.dm @@ -17,7 +17,6 @@ var/uid var/static/gl_uid = 1 - // Denial of Service attack variables var/dos_overload = 0 // Amount of DoS "packets" in this relay's buffer var/dos_capacity = 500 // Amount of DoS "packets" in buffer required to crash the relay @@ -27,12 +26,12 @@ // TODO: Implement more logic here. For now it's only a placeholder. /obj/machinery/ntnet_relay/is_operational() if(stat & (BROKEN | NOPOWER | EMPED)) - return 0 + return FALSE if(dos_failure) - return 0 + return FALSE if(!enabled) - return 0 - return 1 + return FALSE + return TRUE /obj/machinery/ntnet_relay/update_icon() if(is_operational()) @@ -55,12 +54,12 @@ if((dos_overload > dos_capacity) && !dos_failure) dos_failure = 1 update_icon() - GLOB.ntnet_global.add_log("Quantum relay switched from normal operation mode to overload recovery mode.") + SSnetworks.station_network.add_log("Quantum relay switched from normal operation mode to overload recovery mode.") // If the DoS buffer reaches 0 again, restart. if((dos_overload == 0) && dos_failure) dos_failure = 0 update_icon() - GLOB.ntnet_global.add_log("Quantum relay switched from overload recovery mode to normal operation mode.") + SSnetworks.station_network.add_log("Quantum relay switched from overload recovery mode to normal operation mode.") ..() /obj/machinery/ntnet_relay/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) @@ -89,13 +88,12 @@ dos_overload = 0 dos_failure = 0 update_icon() - GLOB.ntnet_global.add_log("Quantum relay manually restarted from overload recovery mode to normal operation mode.") + SSnetworks.station_network.add_log("Quantum relay manually restarted from overload recovery mode to normal operation mode.") if("toggle") enabled = !enabled - GLOB.ntnet_global.add_log("Quantum relay manually [enabled ? "enabled" : "disabled"].") + SSnetworks.station_network.add_log("Quantum relay manually [enabled ? "enabled" : "disabled"].") update_icon() - /obj/machinery/ntnet_relay/attack_hand(mob/living/user) ui_interact(user) @@ -103,16 +101,16 @@ uid = gl_uid++ component_parts = list() - if(GLOB.ntnet_global) - GLOB.ntnet_global.relays.Add(src) - NTNet = GLOB.ntnet_global - GLOB.ntnet_global.add_log("New quantum relay activated. Current amount of linked relays: [NTNet.relays.len]") + if(SSnetworks.station_network) + SSnetworks.station_network.relays.Add(src) + NTNet = SSnetworks.station_network + SSnetworks.station_network.add_log("New quantum relay activated. Current amount of linked relays: [NTNet.relays.len]") . = ..() /obj/machinery/ntnet_relay/Destroy() - if(GLOB.ntnet_global) - GLOB.ntnet_global.relays.Remove(src) - GLOB.ntnet_global.add_log("Quantum relay connection severed. Current amount of linked relays: [NTNet.relays.len]") + if(SSnetworks.station_network) + SSnetworks.station_network.relays.Remove(src) + SSnetworks.station_network.add_log("Quantum relay connection severed. Current amount of linked relays: [NTNet.relays.len]") NTNet = null for(var/datum/computer_file/program/ntnet_dos/D in dos_sources) diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index 928e1f471d..b579901a2d 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -543,55 +543,55 @@ for(var/mob/O in hearers(1, get_turf(src))) audible_message("[icon2html(src, hearers(src))] *beep* *beep*", null, 1) -/obj/item/integrated_circuit/input/EPv2 - name = "EPv2 circuit" - desc = "Enables the sending and receiving of messages on the Exonet with the EPv2 protocol." - extended_desc = "An EPv2 address is a string with the format of XXXX:XXXX:XXXX:XXXX. Data can be send or received using the \ +/obj/item/integrated_circuit/input/ntnet_packet + name = "NTNet networking circuit" + desc = "Enables the sending and receiving of messages on NTNet with packet data protocol." + extended_desc = "Data can be send or received using the \ second pin on each side, with additonal data reserved for the third pin. When a message is received, the second activation pin \ will pulse whatever's connected to it. Pulsing the first activation pin will send a message." icon_state = "signal" complexity = 4 inputs = list( - "target EPv2 address" = IC_PINTYPE_STRING, + "target NTNet address" = IC_PINTYPE_STRING, "data to send" = IC_PINTYPE_STRING, - "secondary text" = IC_PINTYPE_STRING + "secondary text" = IC_PINTYPE_STRING, + "passkey" = IC_PINTYPE_STRING, //No this isn't a real passkey encryption scheme but that's why you keep your nodes secure so no one can find it out! ) outputs = list( "address received" = IC_PINTYPE_STRING, "data received" = IC_PINTYPE_STRING, - "secondary text received" = IC_PINTYPE_STRING + "secondary text received" = IC_PINTYPE_STRING, + "passkey" = IC_PINTYPE_STRING ) activators = list("send data" = IC_PINTYPE_PULSE_IN, "on data received" = IC_PINTYPE_PULSE_OUT) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_MAGNET = 2, TECH_BLUESPACE = 2) power_draw_per_use = 50 - var/datum/exonet_protocol/exonet = null + var/datum/ntnet_connection/exonet = null -/obj/item/integrated_circuit/input/EPv2/New() - ..() - exonet = new(src) - exonet.make_address("EPv2_circuit-[REF(src)]") - desc += "
This circuit's EPv2 address is: [exonet.address]" +/obj/item/integrated_circuit/input/ntnet_packet/Initialize() + . = ..() + var/datum/component/ntnet_interface/net = LoadComponent(/datum/component/ntnet_interface) + desc += "
This circuit's NTNet hardware address is: [net.hardware_id]" -/obj/item/integrated_circuit/input/EPv2/Destroy() - if(exonet) - exonet.remove_address() - qdel(exonet) - exonet = null - return ..() - -/obj/item/integrated_circuit/input/EPv2/do_work() +/obj/item/integrated_circuit/input/ntnet_packet/do_work() var/target_address = get_pin_data(IC_INPUT, 1) var/message = get_pin_data(IC_INPUT, 2) var/text = get_pin_data(IC_INPUT, 3) + var/key = get_pin_data(IC_INPUT, 4) - if(target_address && istext(target_address)) - exonet.send_message(target_address, message, text) + var/datum/netdata/data = new + data.recipient_ids += target_address + data.plaintext_data = message + data.plaintext_data_secondary = text + data.plaintext_passkey = key + ntnet_send(data) -/obj/item/integrated_circuit/input/receive_exonet_message(var/atom/origin_atom, var/origin_address, var/message, var/text) - set_pin_data(IC_OUTPUT, 1, origin_address) - set_pin_data(IC_OUTPUT, 2, message) - set_pin_data(IC_OUTPUT, 3, text) +/obj/item/integrated_circuit/input/ntnet_recieve(datum/netdata/data) + set_pin_data(IC_OUTPUT, 1, length(data.recipient_ids) >= 1? data.recipient_ids[1] : null) + set_pin_data(IC_OUTPUT, 2, data.plaintext_data) + set_pin_data(IC_OUTPUT, 3, data.plaintext_data_secondary) + set_pin_data(IC_OUTPUT, 4, data.plaintext_passkey) push_data() activate_pin(2) diff --git a/code/modules/modular_computers/NTNet/NTNRC/conversation.dm b/code/modules/modular_computers/NTNet/NTNRC/conversation.dm index 939276c4c9..3efa1d7963 100644 --- a/code/modules/modular_computers/NTNet/NTNRC/conversation.dm +++ b/code/modules/modular_computers/NTNet/NTNRC/conversation.dm @@ -9,13 +9,13 @@ /datum/ntnet_conversation/New() id = ntnrc_uid++ - if(GLOB.ntnet_global) - GLOB.ntnet_global.chat_channels.Add(src) + if(SSnetworks.station_network) + SSnetworks.station_network.chat_channels.Add(src) ..() /datum/ntnet_conversation/Destroy() - if(GLOB.ntnet_global) - GLOB.ntnet_global.chat_channels.Remove(src) + if(SSnetworks.station_network) + SSnetworks.station_network.chat_channels.Remove(src) return ..() /datum/ntnet_conversation/proc/add_message(message, username) diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index 95e78391bb..0b149c20da 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -357,7 +357,7 @@ if(!get_ntnet_status()) return FALSE var/obj/item/computer_hardware/network_card/network_card = all_components[MC_NET] - return GLOB.ntnet_global.add_log(text, network_card) + return SSnetworks.station_network.add_log(text, network_card) /obj/item/device/modular_computer/proc/shutdown_computer(loud = 1) kill_program(forced = TRUE) diff --git a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm index 4bd3a3b751..337e98acaa 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm @@ -46,7 +46,7 @@ return 1 switch(action) if("PRG_target_relay") - for(var/obj/machinery/ntnet_relay/R in GLOB.ntnet_global.relays) + for(var/obj/machinery/ntnet_relay/R in SSnetworks.station_network.relays) if("[R.uid]" == params["targid"]) target = R return 1 @@ -61,14 +61,14 @@ if(target) executed = 1 target.dos_sources.Add(src) - if(GLOB.ntnet_global.intrusion_detection_enabled) + if(SSnetworks.station_network.intrusion_detection_enabled) var/obj/item/computer_hardware/network_card/network_card = computer.all_components[MC_NET] - GLOB.ntnet_global.add_log("IDS WARNING - Excess traffic flood targeting relay [target.uid] detected from device: [network_card.get_network_tag()]") - GLOB.ntnet_global.intrusion_detection_alarm = 1 + SSnetworks.station_network.add_log("IDS WARNING - Excess traffic flood targeting relay [target.uid] detected from device: [network_card.get_network_tag()]") + SSnetworks.station_network.intrusion_detection_alarm = 1 return 1 /datum/computer_file/program/ntnet_dos/ui_data(mob/user) - if(!GLOB.ntnet_global) + if(!SSnetworks.station_network) return var/list/data = list() @@ -93,7 +93,7 @@ data["dos_strings"] += list(list("nums" = string)) else data["relays"] = list() - for(var/obj/machinery/ntnet_relay/R in GLOB.ntnet_global.relays) + for(var/obj/machinery/ntnet_relay/R in SSnetworks.station_network.relays) data["relays"] += list(list("id" = R.uid)) data["focus"] = target ? target.uid : null diff --git a/code/modules/modular_computers/file_system/programs/ntdownloader.dm b/code/modules/modular_computers/file_system/programs/ntdownloader.dm index 41dce90997..be38f8a7b6 100644 --- a/code/modules/modular_computers/file_system/programs/ntdownloader.dm +++ b/code/modules/modular_computers/file_system/programs/ntdownloader.dm @@ -23,7 +23,7 @@ if(downloaded_file) return 0 - var/datum/computer_file/program/PRG = GLOB.ntnet_global.find_ntnet_file_by_name(filename) + var/datum/computer_file/program/PRG = SSnetworks.station_network.find_ntnet_file_by_name(filename) if(!PRG || !istype(PRG)) return 0 @@ -39,10 +39,10 @@ ui_header = "downloader_running.gif" - if(PRG in GLOB.ntnet_global.available_station_software) + if(PRG in SSnetworks.station_network.available_station_software) generate_network_log("Began downloading file [PRG.filename].[PRG.filetype] from NTNet Software Repository.") hacked_download = 0 - else if(PRG in GLOB.ntnet_global.available_antag_software) + else if(PRG in SSnetworks.station_network.available_antag_software) generate_network_log("Began downloading file **ENCRYPTED**.[PRG.filetype] from unspecified server.") hacked_download = 1 else @@ -127,7 +127,7 @@ data["disk_size"] = hard_drive.max_capacity data["disk_used"] = hard_drive.used_capacity var/list/all_entries[0] - for(var/A in GLOB.ntnet_global.available_station_software) + for(var/A in SSnetworks.station_network.available_station_software) var/datum/computer_file/program/P = A // Only those programs our user can run will show in the list if(!P.can_run(user,transfer = 1) || hard_drive.find_file_by_name(P.filename)) @@ -142,7 +142,7 @@ data["hackedavailable"] = 0 if(computer.emagged) // If we are running on emagged computer we have access to some "bonus" software var/list/hacked_programs[0] - for(var/S in GLOB.ntnet_global.available_antag_software) + for(var/S in SSnetworks.station_network.available_antag_software) var/datum/computer_file/program/P = S if(hard_drive.find_file_by_name(P.filename)) continue diff --git a/code/modules/modular_computers/file_system/programs/ntmonitor.dm b/code/modules/modular_computers/file_system/programs/ntmonitor.dm index dfca4870bd..2312db7b11 100644 --- a/code/modules/modular_computers/file_system/programs/ntmonitor.dm +++ b/code/modules/modular_computers/file_system/programs/ntmonitor.dm @@ -15,22 +15,22 @@ switch(action) if("resetIDS") . = 1 - if(GLOB.ntnet_global) - GLOB.ntnet_global.resetIDS() + if(SSnetworks.station_network) + SSnetworks.station_network.resetIDS() return 1 if("toggleIDS") . = 1 - if(GLOB.ntnet_global) - GLOB.ntnet_global.toggleIDS() + if(SSnetworks.station_network) + SSnetworks.station_network.toggleIDS() return 1 if("toggleWireless") . = 1 - if(!GLOB.ntnet_global) + if(!SSnetworks.station_network) return 1 // NTNet is disabled. Enabling can be done without user prompt - if(GLOB.ntnet_global.setting_disabled) - GLOB.ntnet_global.setting_disabled = 0 + if(SSnetworks.station_network.setting_disabled) + SSnetworks.station_network.setting_disabled = 0 return 1 // NTNet is enabled and user is about to shut it down. Let's ask them if they really want to do it, as wirelessly connected computers won't connect without NTNet being enabled (which may prevent people from turning it back on) @@ -39,43 +39,43 @@ return 1 var/response = alert(user, "Really disable NTNet wireless? If your computer is connected wirelessly you won't be able to turn it back on! This will affect all connected wireless devices.", "NTNet shutdown", "Yes", "No") if(response == "Yes") - GLOB.ntnet_global.setting_disabled = 1 + SSnetworks.station_network.setting_disabled = 1 return 1 if("purgelogs") . = 1 - if(GLOB.ntnet_global) - GLOB.ntnet_global.purge_logs() + if(SSnetworks.station_network) + SSnetworks.station_network.purge_logs() if("updatemaxlogs") . = 1 var/mob/user = usr var/logcount = text2num(input(user,"Enter amount of logs to keep in memory ([MIN_NTNET_LOGS]-[MAX_NTNET_LOGS]):")) - if(GLOB.ntnet_global) - GLOB.ntnet_global.update_max_log_count(logcount) + if(SSnetworks.station_network) + SSnetworks.station_network.update_max_log_count(logcount) if("toggle_function") . = 1 - if(!GLOB.ntnet_global) + if(!SSnetworks.station_network) return 1 - GLOB.ntnet_global.toggle_function(text2num(params["id"])) + SSnetworks.station_network.toggle_function(text2num(params["id"])) /datum/computer_file/program/ntnetmonitor/ui_data(mob/user) - if(!GLOB.ntnet_global) + if(!SSnetworks.station_network) return var/list/data = get_header_data() - data["ntnetstatus"] = GLOB.ntnet_global.check_function() - data["ntnetrelays"] = GLOB.ntnet_global.relays.len - data["idsstatus"] = GLOB.ntnet_global.intrusion_detection_enabled - data["idsalarm"] = GLOB.ntnet_global.intrusion_detection_alarm + data["ntnetstatus"] = SSnetworks.station_network.check_function() + data["ntnetrelays"] = SSnetworks.station_network.relays.len + data["idsstatus"] = SSnetworks.station_network.intrusion_detection_enabled + data["idsalarm"] = SSnetworks.station_network.intrusion_detection_alarm - data["config_softwaredownload"] = GLOB.ntnet_global.setting_softwaredownload - data["config_peertopeer"] = GLOB.ntnet_global.setting_peertopeer - data["config_communication"] = GLOB.ntnet_global.setting_communication - data["config_systemcontrol"] = GLOB.ntnet_global.setting_systemcontrol + data["config_softwaredownload"] = SSnetworks.station_network.setting_softwaredownload + data["config_peertopeer"] = SSnetworks.station_network.setting_peertopeer + data["config_communication"] = SSnetworks.station_network.setting_communication + data["config_systemcontrol"] = SSnetworks.station_network.setting_systemcontrol data["ntnetlogs"] = list() - for(var/i in GLOB.ntnet_global.logs) + for(var/i in SSnetworks.station_network.logs) data["ntnetlogs"] += list(list("entry" = i)) - data["ntnetmaxlogs"] = GLOB.ntnet_global.setting_maxlogcount + data["ntnetmaxlogs"] = SSnetworks.station_network.setting_maxlogcount return data \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm index 76f3b139ce..813a3f47e7 100644 --- a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm +++ b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm @@ -39,7 +39,7 @@ if("PRG_joinchannel") . = 1 var/datum/ntnet_conversation/C - for(var/datum/ntnet_conversation/chan in GLOB.ntnet_global.chat_channels) + for(var/datum/ntnet_conversation/chan in SSnetworks.station_network.chat_channels) if(chan.id == text2num(params["id"])) C = chan break @@ -183,7 +183,7 @@ ..() /datum/computer_file/program/chatclient/ui_data(mob/user) - if(!GLOB.ntnet_global || !GLOB.ntnet_global.chat_channels) + if(!SSnetworks.station_network || !SSnetworks.station_network.chat_channels) return var/list/data = list() @@ -212,7 +212,7 @@ else // Channel selection screen var/list/all_channels[0] - for(var/C in GLOB.ntnet_global.chat_channels) + for(var/C in SSnetworks.station_network.chat_channels) var/datum/ntnet_conversation/conv = C if(conv && conv.title) all_channels.Add(list(list( diff --git a/code/modules/modular_computers/file_system/programs/nttransfer.dm b/code/modules/modular_computers/file_system/programs/nttransfer.dm index b0c8744336..698e557941 100644 --- a/code/modules/modular_computers/file_system/programs/nttransfer.dm +++ b/code/modules/modular_computers/file_system/programs/nttransfer.dm @@ -88,7 +88,7 @@ return 1 switch(action) if("PRG_downloadfile") - for(var/datum/computer_file/program/nttransfer/P in GLOB.ntnet_global.fileservers) + for(var/datum/computer_file/program/nttransfer/P in SSnetworks.station_network.fileservers) if("[P.unique_token]" == params["id"]) remote = P break @@ -106,8 +106,8 @@ error = "" upload_menu = 0 finalize_download() - if(src in GLOB.ntnet_global.fileservers) - GLOB.ntnet_global.fileservers.Remove(src) + if(src in SSnetworks.station_network.fileservers) + SSnetworks.station_network.fileservers.Remove(src) for(var/datum/computer_file/program/nttransfer/T in connected_clients) T.crash_download("Remote server has forcibly closed the connection") provided_file = null @@ -133,7 +133,7 @@ if(!P.can_run(usr,transfer = 1)) error = "Access Error: Insufficient rights to upload file." provided_file = F - GLOB.ntnet_global.fileservers.Add(src) + SSnetworks.station_network.fileservers.Add(src) return error = "I/O Error: Unable to locate file on hard drive." return 1 @@ -171,7 +171,7 @@ data["upload_filelist"] = all_files else var/list/all_servers[0] - for(var/datum/computer_file/program/nttransfer/P in GLOB.ntnet_global.fileservers) + for(var/datum/computer_file/program/nttransfer/P in SSnetworks.station_network.fileservers) all_servers.Add(list(list( "uid" = P.unique_token, "filename" = "[P.provided_file.filename].[P.provided_file.filetype]", diff --git a/code/modules/modular_computers/hardware/network_card.dm b/code/modules/modular_computers/hardware/network_card.dm index 8ed67d761b..c6d507c4ed 100644 --- a/code/modules/modular_computers/hardware/network_card.dm +++ b/code/modules/modular_computers/hardware/network_card.dm @@ -42,7 +42,7 @@ if(ethernet) // Computer is connected via wired connection. return 3 - if(!GLOB.ntnet_global || !GLOB.ntnet_global.check_function(specific_action)) // NTNet is down and we are not connected via wired connection. No signal. + if(!SSnetworks.station_network || !SSnetworks.station_network.check_function(specific_action)) // NTNet is down and we are not connected via wired connection. No signal. return 0 if(holder) diff --git a/code/modules/research/designs/telecomms_designs.dm b/code/modules/research/designs/telecomms_designs.dm index a9e89ac9d0..f333e97e41 100644 --- a/code/modules/research/designs/telecomms_designs.dm +++ b/code/modules/research/designs/telecomms_designs.dm @@ -10,6 +10,7 @@ build_path = /obj/item/circuitboard/machine/telecomms/receiver category = list("Subspace Telecomms") +<<<<<<< HEAD /datum/design/board/exonet_node name = "Machine Design (Exonet Node)" desc = "Allows for the construction of Exonet Node." @@ -18,6 +19,8 @@ build_path = /obj/item/circuitboard/machine/exonet_node category = list("Subspace Telecomms") +======= +>>>>>>> 92632ec... Merge pull request #32914 from kevinz000/NTNet /datum/design/board/telecomms_bus name = "Machine Design (Bus Mainframe)" desc = "Allows for the construction of Telecommunications Bus Mainframes." diff --git a/tgstation.dme b/tgstation.dme index bbbd444d7d..e5d267b667 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -60,6 +60,7 @@ #include "code\__DEFINES\misc.dm" #include "code\__DEFINES\mobs.dm" #include "code\__DEFINES\monkeys.dm" +#include "code\__DEFINES\networks.dm" #include "code\__DEFINES\pinpointers.dm" #include "code\__DEFINES\pipe_construction.dm" #include "code\__DEFINES\preferences.dm" @@ -274,6 +275,7 @@ #include "code\controllers\subsystem\processing\fastprocess.dm" #include "code\controllers\subsystem\processing\fields.dm" #include "code\controllers\subsystem\processing\flightpacks.dm" +#include "code\controllers\subsystem\processing\networks.dm" #include "code\controllers\subsystem\processing\obj.dm" #include "code\controllers\subsystem\processing\processing.dm" #include "code\controllers\subsystem\processing\projectiles.dm" @@ -290,7 +292,6 @@ #include "code\datums\dna.dm" #include "code\datums\dog_fashion.dm" #include "code\datums\emotes.dm" -#include "code\datums\EPv2.dm" #include "code\datums\explosion.dm" #include "code\datums\forced_movement.dm" #include "code\datums\holocall.dm" @@ -334,6 +335,7 @@ #include "code\datums\components\decal.dm" #include "code\datums\components\infective.dm" #include "code\datums\components\material_container.dm" +#include "code\datums\components\ntnet_interface.dm" #include "code\datums\components\paintable.dm" #include "code\datums\components\rad_insulation.dm" #include "code\datums\components\radioactive.dm" @@ -635,7 +637,6 @@ #include "code\game\machinery\dna_scanner.dm" #include "code\game\machinery\doppler_array.dm" #include "code\game\machinery\droneDispenser.dm" -#include "code\game\machinery\exonet_node.dm" #include "code\game\machinery\firealarm.dm" #include "code\game\machinery\flasher.dm" #include "code\game\machinery\gulag_item_reclaimer.dm" @@ -2005,8 +2006,6 @@ #include "code\modules\modular_computers\hardware\portable_disk.dm" #include "code\modules\modular_computers\hardware\printer.dm" #include "code\modules\modular_computers\hardware\recharger.dm" -#include "code\modules\modular_computers\NTNet\NTNet.dm" -#include "code\modules\modular_computers\NTNet\NTNet_relay.dm" #include "code\modules\modular_computers\NTNet\NTNRC\conversation.dm" #include "code\modules\ninja\__ninjaDefines.dm" #include "code\modules\ninja\energy_katana.dm" @@ -2030,6 +2029,9 @@ #include "code\modules\ninja\suit\n_suit_verbs\ninja_stars.dm" #include "code\modules\ninja\suit\n_suit_verbs\ninja_stealth.dm" #include "code\modules\ninja\suit\n_suit_verbs\ninja_sword_recall.dm" +#include "code\modules\NTNet\netdata.dm" +#include "code\modules\NTNet\network.dm" +#include "code\modules\NTNet\relays.dm" #include "code\modules\orbit\orbit.dm" #include "code\modules\paperwork\clipboard.dm" #include "code\modules\paperwork\contract.dm" From 87653021f60da0a1299c7279469ce8bdd6a4bcf5 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 22 Nov 2017 16:40:57 -0600 Subject: [PATCH 039/328] Automatic changelog generation for PR #4077 [ci skip] --- html/changelogs/AutoChangeLog-pr-4077.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4077.yml diff --git a/html/changelogs/AutoChangeLog-pr-4077.yml b/html/changelogs/AutoChangeLog-pr-4077.yml new file mode 100644 index 0000000000..56e6ca4c9e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4077.yml @@ -0,0 +1,4 @@ +author: "ShizCalev" +delete-after: True +changes: + - bugfix: "Aliens in soft-crit will now use the correct sprite." From fc2a0f48fa13ecedfe12023c128e0a102b93cbf5 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 17:45:15 -0500 Subject: [PATCH 040/328] Update DNA.dm --- code/__DEFINES/DNA.dm | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index de3d235664..d3dd3fabe3 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -127,18 +127,7 @@ #define TOXINLOVER 24 #define DIGITIGRADE 25 //Uses weird leg sprites. Optional for Lizards, required for ashwalkers. Don't give it to other races unless you make sprites for this (see human_parts_greyscale.dmi) #define NO_UNDERWEAR 26 -<<<<<<< HEAD -#define MUTCOLORS2 27 -#define MUTCOLORS3 28 -#define NOLIVER 29 -#define NOSTOMACH 30 -//citadel code -#define NOAROUSAL 29 //Stops all arousal effects -#define NOGENITALS 30 //Cannot create, use, or otherwise have genitals -#define NO_DNA_COPY 31 -#define DRINKSBLOOD 32 -======= -#define NOLIVER 27 +#define NOLIVER 27 #define NOSTOMACH 28 #define NO_DNA_COPY 29 #define DRINKSBLOOD 30 @@ -146,7 +135,11 @@ #define SPECIES_INORGANIC 32 #define SPECIES_UNDEAD 33 #define SPECIES_ROBOTIC 34 ->>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) +//citadel code +#define MUTCOLORS2 35 +#define MUTCOLORS3 36 +#define NOAROUSAL 37 //Stops all arousal effects +#define NOGENITALS 38 //Cannot create, use, or otherwise have genitals #define ORGAN_SLOT_BRAIN "brain" #define ORGAN_SLOT_APPENDIX "appendix" From 3f07d95b565bcedee9c674371845c1de3aaab9c4 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 17:46:40 -0500 Subject: [PATCH 041/328] Update corporate.dm --- .../carbon/human/species_types/corporate.dm | 23 +------------------ 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/corporate.dm b/code/modules/mob/living/carbon/human/species_types/corporate.dm index 4127e49cec..a15a14159a 100644 --- a/code/modules/mob/living/carbon/human/species_types/corporate.dm +++ b/code/modules/mob/living/carbon/human/species_types/corporate.dm @@ -1,23 +1,3 @@ -<<<<<<< HEAD -/datum/species/corporate - name = "Corporate Agent" - id = "agent" - hair_alpha = 0 - say_mod = "declares" - speedmod = -2//Fast - brutemod = 0.7//Tough against firearms - burnmod = 0.65//Tough against lasers - coldmod = 0 - heatmod = 0.5//it's a little tough to burn them to death not as hard though. - punchdamagelow = 20 - punchdamagehigh = 30//they are inhumanly strong - punchstunthreshold = 25 - attack_verb = "smash" - attack_sound = 'sound/weapons/resonator_blast.ogg' - blacklisted = 1 - use_skintones = 0 - species_traits = list(RADIMMUNE,VIRUSIMMUNE,NOBLOOD,PIERCEIMMUNE,EYECOLOR,NODISMEMBER,NOHUNGER) -======= /datum/species/corporate name = "Corporate Agent" id = "agent" @@ -36,5 +16,4 @@ blacklisted = 1 use_skintones = 0 species_traits = list(SPECIES_ORGANIC,RADIMMUNE,VIRUSIMMUNE,NOBLOOD,PIERCEIMMUNE,EYECOLOR,NODISMEMBER,NOHUNGER) ->>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) - sexes = 0 \ No newline at end of file + sexes = 0 From 93a2d653bfc0f760f6f322d3e576a7e0980e270f Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 17:48:56 -0500 Subject: [PATCH 042/328] Update humans.dm --- .../mob/living/carbon/human/species_types/humans.dm | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index 7d43d1cdb4..fe0acc4feb 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -2,15 +2,9 @@ name = "Human" id = "human" default_color = "FFFFFF" -<<<<<<< HEAD - species_traits = list(MUTCOLORS_PARTSONLY,EYECOLOR,HAIR,FACEHAIR,LIPS) - mutant_bodyparts = list("tail_human", "ears", "taur") - default_features = list("tail_human" = "None", "ears" = "None", "taur" = "none") -======= - species_traits = list(SPECIES_ORGANIC,EYECOLOR,HAIR,FACEHAIR,LIPS) - mutant_bodyparts = list("tail_human", "ears", "wings") - default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None") ->>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) + species_traits = list(MUTCOLORS_PARTSONLY,SPECIES_ORGANIC,EYECOLOR,HAIR,FACEHAIR,LIPS) + mutant_bodyparts = list("tail_human", "ears", "wings", "taur") + default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None", "taur" = "none") use_skintones = 1 skinned_type = /obj/item/stack/sheet/animalhide/human disliked_food = GROSS | RAW From 6bfba3ea033a7f41abe805b9f9fc7c8fbb736563 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 17:50:23 -0500 Subject: [PATCH 043/328] Update lizardpeople.dm --- .../mob/living/carbon/human/species_types/lizardpeople.dm | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index c1db8cd69b..257abf63d0 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -4,13 +4,8 @@ id = "lizard" say_mod = "hisses" default_color = "00FF00" -<<<<<<< HEAD - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,FACEHAIR) + species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,LIPS, HAIR, FACEHAIR) mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs", "taur") -======= - species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,LIPS) - mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs") ->>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) mutanttongue = /obj/item/organ/tongue/lizard mutanttail = /obj/item/organ/tail/lizard coldmod = 1.5 From 29d4b023f09d8774b45ea4df1adc7562ca2f66d3 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 17:51:36 -0500 Subject: [PATCH 044/328] Update podpeople.dm --- .../carbon/human/species_types/podpeople.dm | 99 +++---------------- 1 file changed, 15 insertions(+), 84 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 37b3d1b1cf..8ff0e67f5d 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -1,76 +1,3 @@ -<<<<<<< HEAD -/datum/species/pod - // A mutation caused by a human being ressurected in a revival pod. These regain health in light, and begin to wither in darkness. - name = "Podperson" - id = "pod" - default_color = "59CE00" - species_traits = list(MUTCOLORS,EYECOLOR) - attack_verb = "slash" - attack_sound = 'sound/weapons/slice.ogg' - miss_sound = 'sound/weapons/slashmiss.ogg' - burnmod = 1.25 - heatmod = 1.55 - meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/plant - disliked_food = NONE - liked_food = NONE - toxic_food = NONE - - -/datum/species/pod/on_species_gain(mob/living/carbon/C, datum/species/old_species) - . = ..() - C.faction |= "plants" - C.faction |= "vines" - -/datum/species/pod/on_species_loss(mob/living/carbon/C) - . = ..() - C.faction -= "plants" - C.faction -= "vines" - -/datum/species/pod/spec_life(mob/living/carbon/human/H) - if(H.stat == DEAD) - return - var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing - if(isturf(H.loc)) //else, there's considered to be no light - var/turf/T = H.loc - light_amount = min(1,T.get_lumcount()) - 0.5 - H.nutrition += light_amount * 10 - if(H.nutrition > NUTRITION_LEVEL_FULL) - H.nutrition = NUTRITION_LEVEL_FULL - if(light_amount > 0.2) //if there's enough light, heal - H.heal_overall_damage(0.75,0) - H.adjustOxyLoss(-0.5) - - if(H.nutrition < NUTRITION_LEVEL_STARVING + 55) - H.adjustOxyLoss(5) //can eat to negate this unfortunately - H.adjustToxLoss(3) - - -/datum/species/pod/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.id == "plantbgone") - H.adjustToxLoss(5) - H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) - H.confused = max(H.confused, 1) - return TRUE - - -/datum/species/pod/on_hit(obj/item/projectile/P, mob/living/carbon/human/H) - switch(P.type) - if(/obj/item/projectile/energy/floramut) - if(prob(15)) - H.rad_act(rand(30,80)) - H.Knockdown(100) - H.visible_message("[H] writhes in pain as [H.p_their()] vacuoles boil.", "You writhe in pain as your vacuoles boil!", "You hear the crunching of leaves.") - if(prob(80)) - H.randmutb() - else - H.randmutg() - H.domutcheck() - else - H.adjustFireLoss(rand(5,15)) - H.show_message("The radiation beam singes you!") - if(/obj/item/projectile/energy/florayield) - H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL) -======= /datum/species/pod // A mutation caused by a human being ressurected in a revival pod. These regain health in light, and begin to wither in darkness. name = "Podperson" @@ -81,10 +8,12 @@ attack_sound = 'sound/weapons/slice.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' burnmod = 1.25 - heatmod = 1.5 + heatmod = 1.55 meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/plant - disliked_food = MEAT | DAIRY - liked_food = VEGETABLES | FRUIT | GRAIN + disliked_food = NONE + liked_food = NONE + toxic_food = NONE + /datum/species/pod/on_species_gain(mob/living/carbon/C, datum/species/old_species) . = ..() @@ -107,18 +36,21 @@ if(H.nutrition > NUTRITION_LEVEL_FULL) H.nutrition = NUTRITION_LEVEL_FULL if(light_amount > 0.2) //if there's enough light, heal - H.heal_overall_damage(1,1) - H.adjustToxLoss(-1) - H.adjustOxyLoss(-1) + H.heal_overall_damage(0.75,0) + H.adjustOxyLoss(-0.5) + + if(H.nutrition < NUTRITION_LEVEL_STARVING + 55) + H.adjustOxyLoss(5) //can eat to negate this unfortunately + H.adjustToxLoss(3) - if(H.nutrition < NUTRITION_LEVEL_STARVING + 50) - H.take_overall_damage(2,0) /datum/species/pod/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) if(chem.id == "plantbgone") - H.adjustToxLoss(3) + H.adjustToxLoss(5) H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) - return 1 + H.confused = max(H.confused, 1) + return TRUE + /datum/species/pod/on_hit(obj/item/projectile/P, mob/living/carbon/human/H) switch(P.type) @@ -137,4 +69,3 @@ H.show_message("The radiation beam singes you!") if(/obj/item/projectile/energy/florayield) H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL) ->>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) From c97e8805f6fd181f9596e7ff0a0017ed636dcfb3 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 17:53:36 -0500 Subject: [PATCH 045/328] Update hostile.dm --- code/modules/mob/living/simple_animal/hostile/hostile.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index b3ad02af08..10d9fd93d7 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -372,12 +372,8 @@ P.preparePixelProjectile(targeted_atom, src) P.fire() return P -<<<<<<< HEAD - -======= ->>>>>>> ce82a2e... Fixes hostile mobs attacking surrounding tiles when trying to attack someone: the stunning finale (#32699) /mob/living/simple_animal/hostile/proc/CanSmashTurfs(turf/T) return iswallturf(T) || ismineralturf(T) From c69f933f15317db2915e14685a6e20c1cc548b21 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 17:55:49 -0500 Subject: [PATCH 046/328] Update uplink_items.dm --- code/datums/uplink_items.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/datums/uplink_items.dm b/code/datums/uplink_items.dm index cd51838309..43abd72f16 100644 --- a/code/datums/uplink_items.dm +++ b/code/datums/uplink_items.dm @@ -91,10 +91,6 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. /datum/uplink_item/proc/spawn_item(turf/loc, datum/component/uplink/U, mob/user) if(item) -<<<<<<< HEAD:code/modules/uplink/uplink_item.dm - SSblackbox.add_details("traitor_uplink_items_bought", "[name]|[cost]") -======= ->>>>>>> ccd4981... Merge pull request #32624 from kevinz000/component_uplinks:code/datums/uplink_items.dm return new item(loc) /datum/uplink_item/Destroy() From 1d4e3612ea099251072076660e0a5e521766ecb2 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 17:56:49 -0500 Subject: [PATCH 047/328] Update PDA.dm --- code/game/objects/items/devices/PDA/PDA.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 8e52483cba..4eebb60195 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -155,15 +155,12 @@ GLOBAL_LIST_EMPTY(PDAs) return /obj/item/device/pda/attack_self(mob/user) -<<<<<<< HEAD -======= if(!user.IsAdvancedToolUser()) to_chat(user, "You don't have the dexterity to do this!") return . = ..() ->>>>>>> ccd4981... Merge pull request #32624 from kevinz000/component_uplinks var/datum/asset/assets = get_asset_datum(/datum/asset/simple/pda) assets.send(user) From 738c1b7b2ac4fc7ccaa5911a5c42e4cc4e100f0d Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 17:57:43 -0500 Subject: [PATCH 048/328] Update implantuplink.dm --- .../objects/items/implants/implantuplink.dm | 45 ------------------- 1 file changed, 45 deletions(-) diff --git a/code/game/objects/items/implants/implantuplink.dm b/code/game/objects/items/implants/implantuplink.dm index 82555e12c4..4ef25c28a9 100644 --- a/code/game/objects/items/implants/implantuplink.dm +++ b/code/game/objects/items/implants/implantuplink.dm @@ -1,47 +1,3 @@ -<<<<<<< HEAD -/obj/item/implant/uplink - name = "uplink implant" - desc = "Sneeki breeki." - icon = 'icons/obj/radio.dmi' - icon_state = "radio" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - origin_tech = "materials=4;magnets=4;programming=4;biotech=4;syndicate=5;bluespace=5" - var/starting_tc = 0 - -/obj/item/implant/uplink/New() - hidden_uplink = new(src) - hidden_uplink.telecrystals = starting_tc - ..() - -/obj/item/implant/uplink/implant(mob/living/target, mob/user, silent = 0) - for(var/X in target.implants) - if(istype(X, type)) - var/obj/item/implant/imp_e = X - imp_e.hidden_uplink.telecrystals += hidden_uplink.telecrystals - qdel(src) - return 1 - - if(..()) - hidden_uplink.owner = "[user.key]" - return 1 - return 0 - -/obj/item/implant/uplink/activate() - if(hidden_uplink) - hidden_uplink.interact(usr) - -/obj/item/implanter/uplink - name = "implanter (uplink)" - imp_type = /obj/item/implant/uplink - -/obj/item/implanter/uplink/precharged - name = "implanter (precharged uplink)" - imp_type = /obj/item/implant/uplink/precharged - -/obj/item/implant/uplink/precharged - starting_tc = 10 -======= /obj/item/implant/uplink name = "uplink implant" desc = "Sneeki breeki." @@ -90,4 +46,3 @@ /obj/item/implant/uplink/precharged starting_tc = 10 ->>>>>>> ccd4981... Merge pull request #32624 from kevinz000/component_uplinks From 72f14418f1f4ee78b94b7b6f5822059cf7d44afe Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 17:59:42 -0500 Subject: [PATCH 049/328] Update holder.dm --- code/modules/reagents/chemistry/holder.dm | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index eb1c6d7b43..b16d0bc2e7 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -732,18 +732,6 @@ out += "[taste_desc]" return english_list(out, "something indescribable") -<<<<<<< HEAD -======= - -/datum/reagents/proc/expose_temperature(var/temperature, var/coeff=0.02) - var/temp_delta = (temperature - chem_temp) * coeff - if(temp_delta > 0) - chem_temp = min(chem_temp + max(temp_delta, 1), temperature) - else - chem_temp = max(chem_temp + min(temp_delta, -1), temperature) - chem_temp = round(chem_temp) - handle_reactions() ->>>>>>> ccd4981... Merge pull request #32624 from kevinz000/component_uplinks /////////////////////////////////////////////////////////////////////////////////// From ea577e2d9e75324185761e392f787d26671b111f Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 22 Nov 2017 19:03:41 -0600 Subject: [PATCH 050/328] Automatic changelog generation for PR #4075 [ci skip] --- html/changelogs/AutoChangeLog-pr-4075.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4075.yml diff --git a/html/changelogs/AutoChangeLog-pr-4075.yml b/html/changelogs/AutoChangeLog-pr-4075.yml new file mode 100644 index 0000000000..d627c00d1f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4075.yml @@ -0,0 +1,4 @@ +author: "GupGup" +delete-after: True +changes: + - bugfix: "Fixes hostile mobs attacking surrounding tiles when trying to attack someone" From 5fb8856480f82d3ed8bc9b26a9537798eff8b16a Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 20:07:57 -0500 Subject: [PATCH 051/328] Update subsystems.dm --- code/__DEFINES/subsystems.dm | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 1252e167c2..7e49a437bb 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -46,27 +46,15 @@ #define INIT_ORDER_DBCORE 18 #define INIT_ORDER_BLACKBOX 17 #define INIT_ORDER_SERVER_MAINT 16 -<<<<<<< HEAD #define INIT_ORDER_EVENTS 15 #define INIT_ORDER_JOBS 14 #define INIT_ORDER_TICKER 13 #define INIT_ORDER_MAPPING 12 #define INIT_ORDER_ATOMS 11 -#define INIT_ORDER_LANGUAGE 10 -#define INIT_ORDER_MACHINES 9 -#define INIT_ORDER_CIRCUIT 8 -======= -#define INIT_ORDER_RESEARCH 15 -#define INIT_ORDER_EVENTS 14 -#define INIT_ORDER_JOBS 13 -#define INIT_ORDER_TICKER 12 -#define INIT_ORDER_MAPPING 11 -#define INIT_ORDER_ATOMS 10 -#define INIT_ORDER_NETWORKS 9 -#define INIT_ORDER_LANGUAGE 8 -#define INIT_ORDER_MACHINES 7 -#define INIT_ORDER_CIRCUIT 6 ->>>>>>> 92632ec... Merge pull request #32914 from kevinz000/NTNet +#define INIT_ORDER_NETWORKS 10 +#define INIT_ORDER_LANGUAGE 9 +#define INIT_ORDER_MACHINES 8 +#define INIT_ORDER_CIRCUIT 7 #define INIT_ORDER_TIMER 1 #define INIT_ORDER_DEFAULT 0 #define INIT_ORDER_AIR -1 @@ -113,4 +101,4 @@ A.overlays.Cut();\ }\ A.flags_1 &= ~OVERLAY_QUEUED_1;\ - } \ No newline at end of file + } From 435ac739fcba92dd49216046a87b4cb4efce23ee Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 20:09:18 -0500 Subject: [PATCH 052/328] Update machine_circuitboards.dm --- .../items/circuitboards/machine_circuitboards.dm | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 8fc39b832f..7576824747 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -193,22 +193,6 @@ /obj/item/stack/cable_coil = 1, /obj/item/stock_parts/subspace/filter = 1) -<<<<<<< HEAD -/obj/item/circuitboard/machine/exonet_node - name = "Exonet Node(machine board)" - build_path = /obj/machinery/exonet_node - origin_tech = "programming=3;engineering=4;bluespace=3;materials=3" - req_components = list( - /obj/item/stock_parts/subspace/ansible = 1, - /obj/item/stock_parts/subspace/filter = 1, - /obj/item/stock_parts/manipulator = 2, - /obj/item/stock_parts/micro_laser = 1, - /obj/item/stock_parts/subspace/crystal = 1, - /obj/item/stock_parts/subspace/treatment = 2, - /obj/item/stack/cable_coil = 2) - -======= ->>>>>>> 92632ec... Merge pull request #32914 from kevinz000/NTNet /obj/item/circuitboard/machine/teleporter_hub name = "Teleporter Hub (Machine Board)" build_path = /obj/machinery/teleport/hub From d5a8e2f13bf722b3e0d242c155206aeea8d10b23 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 20:10:41 -0500 Subject: [PATCH 053/328] Update telecomms_designs.dm --- code/modules/research/designs/telecomms_designs.dm | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/code/modules/research/designs/telecomms_designs.dm b/code/modules/research/designs/telecomms_designs.dm index f333e97e41..5822c5b808 100644 --- a/code/modules/research/designs/telecomms_designs.dm +++ b/code/modules/research/designs/telecomms_designs.dm @@ -10,17 +10,6 @@ build_path = /obj/item/circuitboard/machine/telecomms/receiver category = list("Subspace Telecomms") -<<<<<<< HEAD -/datum/design/board/exonet_node - name = "Machine Design (Exonet Node)" - desc = "Allows for the construction of Exonet Node." - id = "e-node" - req_tech = list("programming" = 2, "engineering" = 3, "bluespace" = 1) - build_path = /obj/item/circuitboard/machine/exonet_node - category = list("Subspace Telecomms") - -======= ->>>>>>> 92632ec... Merge pull request #32914 from kevinz000/NTNet /datum/design/board/telecomms_bus name = "Machine Design (Bus Mainframe)" desc = "Allows for the construction of Telecommunications Bus Mainframes." From 8c4f52c9b1cd84200c2aa77136dd0beb11b6c471 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 20:14:50 -0500 Subject: [PATCH 054/328] Update README.md --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index bd86a59216..d1aa36edba 100644 --- a/README.md +++ b/README.md @@ -122,13 +122,8 @@ To enable an away mission open `config/awaymissionconfig.txt` and uncomment one ## SQL SETUP -<<<<<<< HEAD -The SQL backend requires a MySQL server. SQL is required for the library, stats tracking, admin notes, and job-only bans, among other features, mostly related to server administration. Your server details go in /config/dbconfig.txt, and the SQL schema is in /SQL/tgstation_schema.sql and /SQL/tgstation_schema_prefix.sql depending on if you want table prefixes. More detailed setup instructions are located here: http://www.tgstation13.org/wiki/Downloading_the_source_code#Setting_up_the_database -======= The SQL backend requires a Mariadb server running 10.2 or later. Mysql is not supported but Mariadb is a drop in replacement for mysql. SQL is required for the library, stats tracking, admin notes, and job-only bans, among other features, mostly related to server administration. Your server details go in /config/dbconfig.txt, and the SQL schema is in /SQL/tgstation_schema.sql and /SQL/tgstation_schema_prefix.sql depending on if you want table prefixes. More detailed setup instructions are located here: https://www.tgstation13.org/wiki/Downloading_the_source_code#Setting_up_the_database ->>>>>>> e0b2b71... Merge pull request #32999 from MrStonedOne/patch-451 - ## IRC BOT SETUP Included in the repository is a python3 compatible IRC bot capable of relaying adminhelps to a specified From 3a792116140938110c69195f8eb369368f5db35b Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 22 Nov 2017 19:15:06 -0600 Subject: [PATCH 055/328] Automatic changelog generation for PR #4080 [ci skip] --- html/changelogs/AutoChangeLog-pr-4080.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4080.yml diff --git a/html/changelogs/AutoChangeLog-pr-4080.yml b/html/changelogs/AutoChangeLog-pr-4080.yml new file mode 100644 index 0000000000..d10288ec03 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4080.yml @@ -0,0 +1,4 @@ +author: "MrStonedOne and Jordie" +delete-after: True +changes: + - server: "As a late note, serverops be advise that mysql is no longer supported. existing mysql databases will need to be converted to mariadb" From c81ebbfc24fa4a68f4c3d05de4a20d9fc5e39f22 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 22:18:40 -0500 Subject: [PATCH 056/328] fixes boxstation issues, readds removed boxstation areas --- _maps/map_files/BoxStation/BoxStation.dmm | 707 +++++++++++++--------- 1 file changed, 406 insertions(+), 301 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 3d0ccb33fa..875d844e21 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -915,6 +915,7 @@ /area/crew_quarters/heads/hos) "acv" = ( /obj/structure/closet/secure_closet/contraband/armory, +/obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "acw" = ( @@ -1039,9 +1040,7 @@ name = "Transfer Room"; req_access_txt = "2" }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/dark, /area/security/execution/transfer) "acJ" = ( /obj/structure/cable{ @@ -1250,9 +1249,8 @@ /area/crew_quarters/heads/hos) "adi" = ( /obj/machinery/flasher/portable, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "adj" = ( /obj/structure/rack, @@ -1866,6 +1864,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/red/side, /area/ai_monitored/security/armory) "aet" = ( @@ -1888,6 +1887,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/red/side, /area/ai_monitored/security/armory) "aev" = ( @@ -4962,9 +4962,7 @@ /area/ai_monitored/security/armory) "alu" = ( /obj/machinery/nuclearbomb/selfdestruct, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/dark, /area/ai_monitored/nuke_storage) "alv" = ( /obj/structure/cable{ @@ -10494,9 +10492,7 @@ dir = 9 }, /obj/effect/turf_decal/bot_white/right, -/turf/open/floor/plasteel/vault{ - dir = 1 - }, +/turf/open/floor/plasteel/dark, /area/gateway) "azK" = ( /obj/machinery/light{ @@ -10509,18 +10505,14 @@ dir = 5 }, /obj/effect/turf_decal/bot_white/left, -/turf/open/floor/plasteel/vault{ - dir = 4 - }, +/turf/open/floor/plasteel/dark, /area/gateway) "azM" = ( /obj/machinery/gateway{ dir = 1 }, /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/dark, /area/gateway) "azN" = ( /obj/machinery/light{ @@ -11062,9 +11054,7 @@ dir = 8 }, /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/dark, /area/gateway) "aBe" = ( /turf/open/floor/plasteel/dark, @@ -11074,9 +11064,7 @@ dir = 4 }, /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/dark, /area/gateway) "aBg" = ( /obj/machinery/gateway/centerstation, @@ -11374,9 +11362,7 @@ "aBT" = ( /obj/machinery/computer/bank_machine, /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/dark, /area/ai_monitored/nuke_storage) "aBU" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -11400,27 +11386,21 @@ /obj/structure/filingcabinet, /obj/item/folder/documents, /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/dark, /area/ai_monitored/nuke_storage) "aBX" = ( /obj/machinery/gateway{ dir = 10 }, /obj/effect/turf_decal/bot_white/left, -/turf/open/floor/plasteel/vault{ - dir = 4 - }, +/turf/open/floor/plasteel/dark, /area/gateway) "aBY" = ( /obj/machinery/gateway{ dir = 6 }, /obj/effect/turf_decal/bot_white/right, -/turf/open/floor/plasteel/vault{ - dir = 1 - }, +/turf/open/floor/plasteel/dark, /area/gateway) "aBZ" = ( /obj/machinery/gateway, @@ -11428,9 +11408,7 @@ icon_state = "0-2" }, /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/dark, /area/gateway) "aCa" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -12565,9 +12543,7 @@ }, /obj/item/storage/belt/champion, /obj/effect/turf_decal/bot_white/right, -/turf/open/floor/plasteel/vault{ - dir = 1 - }, +/turf/open/floor/plasteel/dark, /area/ai_monitored/nuke_storage) "aEO" = ( /obj/structure/cable{ @@ -12600,9 +12576,7 @@ name = "Silver Crate" }, /obj/effect/turf_decal/bot_white/left, -/turf/open/floor/plasteel/vault{ - dir = 4 - }, +/turf/open/floor/plasteel/dark, /area/ai_monitored/nuke_storage) "aEQ" = ( /obj/structure/table, @@ -13088,9 +13062,7 @@ /area/ai_monitored/nuke_storage) "aGb" = ( /obj/effect/turf_decal/bot_white/right, -/turf/open/floor/plasteel/vault{ - dir = 1 - }, +/turf/open/floor/plasteel/dark, /area/ai_monitored/nuke_storage) "aGc" = ( /obj/structure/cable{ @@ -13121,9 +13093,7 @@ /obj/item/ammo_box/a357, /obj/item/reagent_containers/food/drinks/bottle/vodka/badminka, /obj/effect/turf_decal/bot_white/left, -/turf/open/floor/plasteel/vault{ - dir = 4 - }, +/turf/open/floor/plasteel/dark, /area/ai_monitored/nuke_storage) "aGf" = ( /obj/machinery/firealarm{ @@ -14390,7 +14360,9 @@ c_tag = "EVA South"; dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark/side{ + dir = 8 + }, /area/ai_monitored/storage/eva) "aJg" = ( /obj/structure/extinguisher_cabinet{ @@ -21838,9 +21810,7 @@ /area/ai_monitored/turret_protected/ai_upload) "bdh" = ( /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/vault{ - dir = 1 - }, +/turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai_upload) "bdi" = ( /obj/machinery/computer/arcade, @@ -23826,21 +23796,15 @@ /area/bridge/meeting_room) "big" = ( /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/dark, /area/engine/gravity_generator) "bih" = ( /obj/effect/turf_decal/bot_white/right, -/turf/open/floor/plasteel/vault{ - dir = 1 - }, +/turf/open/floor/plasteel/dark, /area/engine/gravity_generator) "bii" = ( /obj/effect/turf_decal/bot_white/left, -/turf/open/floor/plasteel/vault{ - dir = 4 - }, +/turf/open/floor/plasteel/dark, /area/engine/gravity_generator) "bij" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -24387,9 +24351,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 4 - }, +/turf/open/floor/plasteel/dark, /area/ai_monitored/nuke_storage) "bjz" = ( /turf/closed/wall/r_wall, @@ -24999,9 +24961,7 @@ "bkZ" = ( /obj/machinery/gravity_generator/main/station, /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/dark, /area/engine/gravity_generator) "bla" = ( /obj/structure/disposalpipe/segment{ @@ -25627,9 +25587,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, -/turf/open/floor/plasteel/vault{ - dir = 1 - }, +/turf/open/floor/plasteel/dark, /area/ai_monitored/nuke_storage) "bmw" = ( /obj/machinery/light{ @@ -26267,7 +26225,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel/vault, +/turf/open/floor/plasteel/vault/side, /area/ai_monitored/nuke_storage) "bnV" = ( /obj/machinery/camera/motion{ @@ -26276,8 +26234,8 @@ network = list("MiniSat") }, /obj/machinery/light, -/turf/open/floor/plasteel/vault{ - dir = 10 +/turf/open/floor/plasteel/vault/corner{ + dir = 8 }, /area/ai_monitored/nuke_storage) "bnW" = ( @@ -29773,6 +29731,9 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plasteel, /area/hallway/primary/central) "bwb" = ( @@ -31036,6 +30997,9 @@ /area/security/checkpoint/supply) "byU" = ( /obj/machinery/light, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel, /area/hallway/primary/central) "byV" = ( @@ -31043,6 +31007,9 @@ pixel_x = 5; pixel_y = -32 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel, /area/hallway/primary/central) "byW" = ( @@ -31543,6 +31510,9 @@ }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plasteel, /area/hallway/primary/central) "bAh" = ( @@ -32032,6 +32002,9 @@ /obj/structure/cable{ icon_state = "1-8" }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel, /area/hallway/primary/central) "bBm" = ( @@ -32090,6 +32063,9 @@ pixel_x = -32; pixel_y = -32 }, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/open/floor/plasteel, /area/hallway/primary/central) "bBr" = ( @@ -47159,18 +47135,16 @@ /turf/open/floor/plasteel/dark, /area/engine/engine_smes) "clD" = ( -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, /area/engine/engine_smes) "clE" = ( /obj/structure/cable{ icon_state = "0-8" }, /obj/machinery/power/smes/engineering, -/turf/open/floor/plasteel/vault{ - dir = 1 - }, +/obj/effect/turf_decal/bot_white/right, +/turf/open/floor/plasteel/dark, /area/engine/engine_smes) "clF" = ( /obj/structure/cable{ @@ -47186,9 +47160,8 @@ icon_state = "0-4" }, /obj/machinery/power/smes/engineering, -/turf/open/floor/plasteel/vault{ - dir = 4 - }, +/obj/effect/turf_decal/bot_white/left, +/turf/open/floor/plasteel/dark, /area/engine/engine_smes) "clI" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -47438,9 +47411,8 @@ /obj/structure/cable/yellow{ icon_state = "0-4" }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, /area/engine/engine_smes) "cmB" = ( /obj/machinery/power/terminal{ @@ -47449,9 +47421,8 @@ /obj/structure/cable/yellow{ icon_state = "0-8" }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, /area/engine/engine_smes) "cmC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -47656,18 +47627,16 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, /area/engine/engine_smes) "cno" = ( /obj/structure/cable{ icon_state = "0-8" }, /obj/machinery/power/smes/engineering, -/turf/open/floor/plasteel/vault{ - dir = 4 - }, +/obj/effect/turf_decal/bot_white/left, +/turf/open/floor/plasteel/dark, /area/engine/engine_smes) "cnp" = ( /obj/structure/cable{ @@ -47689,9 +47658,8 @@ icon_state = "0-4" }, /obj/machinery/power/smes/engineering, -/turf/open/floor/plasteel/vault{ - dir = 1 - }, +/obj/effect/turf_decal/bot_white/right, +/turf/open/floor/plasteel/dark, /area/engine/engine_smes) "cnr" = ( /obj/machinery/door/window/southleft{ @@ -47871,6 +47839,9 @@ icon_state = "1-4" }, /obj/machinery/atmospherics/pipe/manifold4w/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plasteel/dark, /area/engine/engine_smes) "cnP" = ( @@ -48289,9 +48260,7 @@ "cpg" = ( /obj/structure/table, /obj/item/storage/lockbox/loyalty, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "cph" = ( /obj/structure/lattice, @@ -48909,9 +48878,8 @@ pixel_x = 3; pixel_y = -3 }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "cqJ" = ( /obj/structure/cable, @@ -51248,9 +51216,8 @@ pixel_x = -3 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "cwN" = ( /obj/machinery/computer/security{ @@ -57714,17 +57681,14 @@ /obj/machinery/light{ dir = 1 }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "QoZ" = ( /obj/structure/rack, /obj/item/gun/energy/e_gun/dragnet, /obj/item/gun/energy/e_gun/dragnet, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "Qpa" = ( /obj/structure/rack, @@ -57750,9 +57714,8 @@ pixel_x = 3; pixel_y = -3 }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "Qpb" = ( /obj/structure/rack, @@ -57783,9 +57746,8 @@ pixel_x = 3; pixel_y = -3 }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "Qpc" = ( /obj/structure/window/reinforced, @@ -57888,9 +57850,8 @@ /area/security/main) "Qpo" = ( /obj/machinery/suit_storage_unit/security, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "Qpp" = ( /obj/machinery/suit_storage_unit/security, @@ -57903,18 +57864,15 @@ dir = 5 }, /obj/structure/tank_dispenser/oxygen, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "Qpr" = ( /obj/machinery/suit_storage_unit/security, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "Qps" = ( /obj/machinery/suit_storage_unit/security, @@ -58018,24 +57976,19 @@ /area/ai_monitored/security/armory) "QpB" = ( /obj/structure/closet/secure_closet/lethalshots, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "QpC" = ( /obj/structure/table, /obj/item/storage/box/firingpins, /obj/item/storage/box/firingpins, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "QpD" = ( /obj/structure/table, /obj/item/storage/toolbox/drone, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "QpE" = ( /obj/structure/cable{ @@ -60241,6 +60194,158 @@ /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) +"QvG" = ( +/obj/structure/falsewall, +/obj/effect/turf_decal/delivery/white, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"QvH" = ( +/obj/effect/turf_decal/loading_area/white, +/obj/effect/turf_decal/stripes/white/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/white/corner, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"QvI" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/white/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"QvJ" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/white/corner, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"QvK" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/closet/secure_closet/brig{ + id = "Secure Cell"; + name = "Secure Cell Locker" + }, +/obj/effect/turf_decal/stripes/white/end{ + dir = 4 + }, +/obj/effect/turf_decal/delivery/white, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"QvL" = ( +/turf/open/floor/plasteel, +/area/security/execution/transfer) +"QvM" = ( +/turf/open/floor/plasteel, +/area/security/execution/transfer) +"QvN" = ( +/turf/open/floor/plasteel, +/area/security/execution/transfer) +"QvO" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"QvP" = ( +/obj/effect/turf_decal/stripes/white/line, +/obj/effect/turf_decal/stripes/white/corner{ + dir = 1 + }, +/obj/machinery/door_timer{ + id = "Secure Cell"; + name = "Secure Cell"; + pixel_y = -32 + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) +"QvQ" = ( +/obj/machinery/door/window/brigdoor/security/cell{ + dir = 4; + id = "Secure Cell"; + name = "Secure Cell" + }, +/obj/machinery/door/window/brigdoor/security/cell{ + dir = 8; + id = "Secure Cell"; + name = "Secure Cell" + }, +/obj/effect/turf_decal/stripes/white/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/white/corner{ + dir = 8 + }, +/obj/machinery/light/small, +/turf/open/floor/plasteel/dark/side{ + dir = 8 + }, +/area/security/execution/transfer) +"QvR" = ( +/turf/open/floor/plasteel, +/area/security/execution/transfer) +"QvS" = ( +/obj/structure/bed, +/obj/item/clothing/suit/straight_jacket, +/obj/item/clothing/mask/muzzle, +/turf/open/floor/plasteel, +/area/security/execution/transfer) +"QvT" = ( +/turf/open/floor/plasteel, +/area/security/execution/transfer) +"QvU" = ( +/turf/open/floor/plasteel, +/area/security/execution/transfer) +"QvV" = ( +/turf/open/floor/plasteel, +/area/security/execution/transfer) +"QvW" = ( +/turf/open/floor/plasteel, +/area/security/execution/transfer) +"QvX" = ( +/turf/open/floor/plasteel/dark/side{ + dir = 4 + }, +/area/ai_monitored/storage/eva) +"QvY" = ( +/turf/open/floor/plasteel/dark/side{ + dir = 8 + }, +/area/ai_monitored/storage/eva) +"QvZ" = ( +/turf/open/floor/plasteel/dark/side{ + dir = 4 + }, +/area/ai_monitored/storage/eva) +"Qwa" = ( +/turf/open/floor/plasteel/dark/side{ + dir = 8 + }, +/area/ai_monitored/storage/eva) +"Qwb" = ( +/turf/open/floor/plasteel/dark/side{ + dir = 4 + }, +/area/ai_monitored/storage/eva) +"Qwc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) (1,1,1) = {" aaa @@ -72710,7 +72815,7 @@ ayl beM aAC aaf -aHr +aoV aaa aaa aaa @@ -76278,7 +76383,7 @@ arH alU aaH bNb -apQ +aaf atO asK azF @@ -77881,8 +77986,8 @@ aaa aaa aoV bVz -apQ -apQ +aaf +aaf aoV aaa aaS @@ -78136,10 +78241,10 @@ aag aaa aaa aaa -bVw +aag bVz -bVw -bVw +aag +aag aoV aaa aaS @@ -78327,7 +78432,7 @@ amC amC amC ali -apQ +aaf ali amC alU @@ -78393,10 +78498,10 @@ aag aaa aaa aaa -apQ +aaf bVz aoV -bVw +aag aoV aaa aaS @@ -78648,12 +78753,12 @@ aaa aaa aag Qoi -aHr +aoV aaa -apQ +aaf bVz -apQ -bVw +aaf +aag aoV aaa aaa @@ -78910,8 +79015,8 @@ Qoi bVx caf aoV -bVw -apQ +aag +aaf aaa aaa aaf @@ -79098,7 +79203,7 @@ amF alU amC alU -apQ +aaf alU alU alU @@ -79167,8 +79272,8 @@ bCq bCq cbj aoV -bVw -apQ +aag +aaf aaf bCq bCq @@ -79355,7 +79460,7 @@ alU alU amC alU -apQ +aaf aaH alU arO @@ -79870,8 +79975,8 @@ alU amC alU aaH -apQ -apQ +aaf +aaf aaH alU ali @@ -80127,12 +80232,12 @@ ali aKY ali asC -apQ +aaf aaH -apQ +aaf aoV aoV -apQ +aaf avY axo ayB @@ -80385,7 +80490,7 @@ amC ali asC aaH -apQ +aaf aoV aoV aoV @@ -80643,10 +80748,10 @@ alU alU alU aaH -apQ +aaf aoV -apQ -apQ +aaf +aaf avY axo ayB @@ -81727,8 +81832,8 @@ bxy bJd bKm bxy -apQ -apQ +aaf +aaf bCq bPY cOw @@ -82241,8 +82346,8 @@ byE byE byE bGi -apQ -apQ +aaf +aaf bLv bQa bHE @@ -82755,8 +82860,8 @@ byE byE bKp bGi -apQ -apQ +aaf +aaf bLv bHE bHE @@ -83196,11 +83301,11 @@ abc abc afu abc -aaa -aaa -aaa -aaa -aaa +abc +abc +abc +abc +Qoi aaa akD akD @@ -83269,8 +83374,8 @@ bGn bGn bKq bxy -apQ -apQ +aaf +aaf bCq bOK bCq @@ -83452,13 +83557,13 @@ abc aea aeH aft +QvG +QvH +QvI +QvO abc -aaa -aaa -aaa -aaa -aaa -aaa +Qoi +Qoi aaa aiU aln @@ -83711,9 +83816,9 @@ aeJ afw abc abc -aaf -aaa -aaf +QvJ +QvP +abc aaf aaf aaf @@ -83829,7 +83934,7 @@ Qoi Qoi Qoi aaa -aHr +aoV aaT ctv aaT @@ -83968,9 +84073,9 @@ aeI afv agf abc -aaf -aaa -aaa +QvK +QvQ +abc aiT aiT aiV @@ -84086,7 +84191,7 @@ Qoi Qoi Qoi Qoi -aHr +aoV aaT ctv aaT @@ -84225,10 +84330,10 @@ aeL afy agh abc -aaf -aaa -aaf -aiT +QvL +QvR +QvU +aiV ajs akb akI @@ -84482,10 +84587,10 @@ aeK afx agg abc -aaf -aaa -aaa -aiU +QvM +QvS +QvV +aiV ajr aka akH @@ -84739,10 +84844,10 @@ aeN afA afA afA -aaf -aaa -aaa -aiU +QvN +QvT +QvW +aiV aju akd akK @@ -85795,9 +85900,9 @@ aAW aCa aDB aDI -azW -azW -azW +QvX +QvZ +Qwb ayW aLX aJq @@ -86823,8 +86928,8 @@ aBq aBr aDE aFc -azW -azW +QvY +Qwa aJf ayW aJr @@ -87629,7 +87734,7 @@ bmr bmr byQ aJq -aJq +bBi bCs bDy bFb @@ -88400,7 +88505,7 @@ QsA Qso aXf aJq -aJq +bBi bCs bFa bFa @@ -88657,7 +88762,7 @@ bwm bxH aXf aJq -aMh +Qwc bCs bCs bCs @@ -92286,7 +92391,7 @@ bOd cfN cfN bLK -apQ +aaf bOh bOh bOh @@ -92800,7 +92905,7 @@ cfi bRH cgV bMQ -apQ +aaf bQA ckU clT @@ -93828,7 +93933,7 @@ bOd cfP cgZ bMQ -apQ +aaf bQA ckX clV @@ -94342,7 +94447,7 @@ bUL cfP bOd bMQ -apQ +aaf bOh bOh bOh @@ -94609,7 +94714,7 @@ aaa cpd cpM cpd -cDS +cCQ aaf aaa aaa @@ -94856,7 +94961,7 @@ bUR cfT chc bMQ -apQ +aaf bQA cla cBP @@ -94866,7 +94971,7 @@ aaa aaa czN aaa -cDS +cCQ aaf aaa aaa @@ -95123,7 +95228,7 @@ aaa aaa aaa aaa -cDS +cCQ aaf aaa aaa @@ -95370,7 +95475,7 @@ bLK bLK che bLK -apQ +aaf bOh bOh bOh @@ -95380,7 +95485,7 @@ aaa aaa aaa aaa -cDS +cCQ aaf aaa aaa @@ -95606,13 +95711,13 @@ bvd bKH bzs bRK -apQ +aaf bRK -apQ +aaf bVv -apQ +aaf bRK -apQ +aaf bVv cCG cCH @@ -95627,12 +95732,12 @@ cCP bLK chg bLK -apQ +aaf aoV aoV -apQ -apQ -apQ +aaf +aaf +aaf aoV aoV aoV @@ -95887,8 +95992,8 @@ bLK aoV aoV aoV -apQ -apQ +aaf +aaf aoV aoV aoV @@ -96152,7 +96257,7 @@ cCI cCI cCI cDY -apQ +aaf aaf aaf aaf @@ -96394,21 +96499,21 @@ cbH ccB cbH bOh -apQ +aaf aoV aoV -apQ +aaf aoV aoV aoV -apQ +aaf aoV aoV aoV aoV aoV aoV -apQ +aaf aoV aaa aaa @@ -96651,21 +96756,21 @@ cbH ccD cbH bOh -apQ -apQ -apQ -apQ -apQ +aaf +aaf +aaf +aaf +aaf aoV aoV -apQ +aaf aoV aoV aoV aoV aoV -csz -apQ +aae +aaf aoV aaa aaa @@ -96908,8 +97013,8 @@ bOh bOh bOh bOh -apQ -apQ +aaf +aaf ciC bVu bVu @@ -96922,7 +97027,7 @@ aoV aoV aoV aoV -apQ +aaf aoV aaa aaa @@ -97161,11 +97266,11 @@ bVu bVu bVu caJ -apQ -apQ -apQ -apQ -apQ +aaf +aaf +aaf +aaf +aaf cfj cfU cfj @@ -97181,19 +97286,19 @@ bVu bVu bVu bVu -csw -csw -csw -csw +bVu +bVu +bVu +bVu csM -csw -csw +bVu +bVu ctd -csw -csw -csw -csw -ctO +bVu +bVu +bVu +bVu +caJ ctZ ctZ cuo @@ -97950,7 +98055,7 @@ cpQ cpQ cpQ czJ -apQ +aaf aoV aaa aaa @@ -98205,10 +98310,10 @@ cmd cmd cmd cmd -bVw -bVw -bVw -bVw +aag +aag +aag +aag aaa aaa aaf @@ -98465,7 +98570,7 @@ cmd cmd cqs aaa -bVw +aag aaa aaa aaf @@ -98722,7 +98827,7 @@ ciM cpN cqt aaa -bVw +aag aaa aaa aaf @@ -98979,7 +99084,7 @@ cmd cmd cqs aaa -bVw +aag aaa aaa aaf @@ -99234,9 +99339,9 @@ cmd cos cmd czI -bVw -bVw -bVw +aag +aag +aag aaa aaa aaf @@ -99488,11 +99593,11 @@ clk clk bAw bzs -apQ +aaf aaa -apQ -apQ -apQ +aaf +aaf +aaf aaa aaa aaa @@ -99746,8 +99851,8 @@ cmg cnc cnD bzs -apQ -apQ +aaf +aaf aaa aaa aaa @@ -108400,13 +108505,13 @@ aaf aaa aaa atS -apQ +aaf aoV aoV atS -apQ -apQ -apQ +aaf +aaf +aaf atS aCR aEn @@ -108663,7 +108768,7 @@ aoV atS aoV aoV -apQ +aaf atS aaf aaa @@ -108920,7 +109025,7 @@ aoV aaH aoV aoV -apQ +aaf atS aaf aaa @@ -109692,7 +109797,7 @@ atS aoV aoV aoV -apQ +aaf aaf aaa aaf @@ -110198,7 +110303,7 @@ aaa aaa aaa aaa -apQ +aaf aoV aoV aoV @@ -110455,11 +110560,11 @@ aaa aaa aaa aaa -apQ +aaf aoV aoV aoV -apQ +aaf aoV aoV aoV @@ -110716,7 +110821,7 @@ aoV aoV aoV aoV -apQ +aaf aoV aoV aoV @@ -121782,7 +121887,7 @@ aaa aaa aaa aaa -aHr +aoV aaa aaa aaa @@ -122054,7 +122159,7 @@ aaa aaa aaa aaa -aHr +aoV aaa aaa aaa @@ -122344,7 +122449,7 @@ aaa aaa aaa aaa -aHr +aoV aaa aaa aaa @@ -123574,7 +123679,7 @@ aaa aaa aaa aaa -aHr +aoV aaa aaa aaa @@ -123607,7 +123712,7 @@ aaa aaa aaa aaa -aHr +aoV aaa aaa aaa @@ -123899,7 +124004,7 @@ aaa aaa aaa aaa -aHr +aoV aaa aaa aaa From 1b094a4374244f134877d32e5505c32f6246b336 Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Wed, 22 Nov 2017 23:00:33 -0500 Subject: [PATCH 057/328] Fixes deleted turfs --- .../lavaland_surface_syndicate_base1.dmm | 90 ++++++++++++------- .../map_files/Deltastation/DeltaStation2.dmm | 8 ++ _maps/map_files/MetaStation/MetaStation.dmm | 4 + _maps/map_files/generic/CentCom.dmm | 34 ++++--- 4 files changed, 92 insertions(+), 44 deletions(-) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index c97e995325..56ed4a3716 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -19,7 +19,10 @@ req_access = null; req_access_txt = "150" }, -/turf/open/space/basic, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/mineral/plastitanium, /area/ruin/powered/syndicate_lava_base) "ag" = ( /obj/structure/table/wood, @@ -34,12 +37,16 @@ /obj/machinery/light/small{ dir = 1 }, -/turf/open/space/basic, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/mineral/plastitanium, /area/ruin/powered/syndicate_lava_base) "ah" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/snacks/salad/validsalad, -/turf/open/space/basic, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/mineral/plastitanium, /area/ruin/powered/syndicate_lava_base) "ai" = ( /obj/structure/rack{ @@ -108,7 +115,10 @@ }, /obj/item/stack/rods/fifty, /obj/structure/table/reinforced, -/turf/open/space/basic, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/mineral/plastitanium, /area/ruin/powered/syndicate_lava_base) "as" = ( /turf/open/floor/wood, @@ -146,7 +156,10 @@ /obj/machinery/light{ dir = 4 }, -/turf/open/space/basic, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, /area/ruin/powered/syndicate_lava_base) "ay" = ( /obj/structure/table/wood, @@ -192,7 +205,10 @@ /obj/item/stack/sheet/glass/fifty, /obj/structure/table/reinforced, /obj/item/wrench, -/turf/open/space/basic, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/mineral/plastitanium, /area/ruin/powered/syndicate_lava_base) "aC" = ( /obj/structure/table/wood, @@ -532,7 +548,8 @@ /obj/structure/noticeboard{ pixel_y = 32 }, -/turf/open/space/basic, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/mineral/plastitanium, /area/ruin/powered/syndicate_lava_base) "bq" = ( /obj/structure/reagent_dispensers/virusfood{ @@ -543,7 +560,8 @@ /obj/item/stack/sheet/mineral/plasma{ amount = 5 }, -/turf/open/space/basic, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/mineral/plastitanium, /area/ruin/powered/syndicate_lava_base) "br" = ( /obj/structure/extinguisher_cabinet{ @@ -674,7 +692,10 @@ /obj/item/stack/sheet/mineral/silver{ amount = 10 }, -/turf/open/space/basic, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/mineral/plastitanium, /area/ruin/powered/syndicate_lava_base) "bH" = ( /obj/structure/chair/office/dark{ @@ -723,7 +744,10 @@ /area/ruin/powered/syndicate_lava_base) "bM" = ( /obj/machinery/smartfridge/chemistry/virology/preloaded, -/turf/open/space/basic, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, /area/ruin/powered/syndicate_lava_base) "bN" = ( /obj/machinery/vending/toyliberationstation{ @@ -771,7 +795,10 @@ /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/glass/beaker/large, -/turf/open/space/basic, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/mineral/plastitanium, /area/ruin/powered/syndicate_lava_base) "bT" = ( /obj/structure/chair/office/dark, @@ -842,7 +869,10 @@ /obj/item/clothing/head/bio_hood/general, /obj/item/clothing/glasses/hud/health, /obj/item/clothing/glasses/science, -/turf/open/space/basic, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/mineral/plastitanium, /area/ruin/powered/syndicate_lava_base) "cb" = ( /obj/machinery/shower{ @@ -2230,7 +2260,7 @@ fS bO cf cm -cv +gm ad cG cG @@ -2505,19 +2535,19 @@ aq bg bn go -gq -gs +go +go fT -gu +go co cy -gw +go fT -gy -gA +go +go fT -gC -cv +go +gm dn dq aO @@ -2545,19 +2575,19 @@ ap bg bo gp -gr -gt +gp +gp fU -gv +gp cp cz -gx +gp fU -gz -gB +gp +gp fU -gD -cA +gp +gn dn dr aO @@ -2830,7 +2860,7 @@ bx bx ae cq -cA +gn ad cI cP diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index f44a73e034..7ff557a16d 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -57608,11 +57608,19 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/loading_area, +<<<<<<< HEAD /turf/open/floor/plasteel/neutral, /area/teleporter) "cmH" = ( /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel/neutral, +======= +/turf/open/floor/plasteel, +/area/teleporter) +"cmH" = ( +/obj/effect/turf_decal/loading_area, +/turf/open/floor/plasteel, +>>>>>>> 8f164a6... Fixes deleted turfs (#33010) /area/teleporter) "cmI" = ( /obj/structure/table, diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 8d4829b2ad..c035ebfe1e 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -25863,6 +25863,10 @@ forwards = 2; id = "packageSort2" }, +<<<<<<< HEAD +======= +/obj/effect/turf_decal/loading_area, +>>>>>>> 8f164a6... Fixes deleted turfs (#33010) /turf/open/floor/plating, /area/quartermaster/sorting) "bbP" = ( diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 264d5dceb8..4a0f5fdb02 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -8111,7 +8111,10 @@ width = 18 }, /obj/structure/fans/tiny, -/turf/open/space/basic, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, /area/shuttle/syndicate/airlock) "vs" = ( /obj/structure/sign/securearea{ @@ -8554,7 +8557,10 @@ id = "XCCFerry"; name = "XCC Ferry Hangar" }, -/turf/open/space/basic, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/plasteel, /area/centcom/ferry) "ww" = ( /obj/machinery/button/door{ @@ -40556,7 +40562,7 @@ aa aa KH KH -KT +KS La Lb Ld @@ -42612,7 +42618,7 @@ aa aa KH KH -KT +KS Lc Lb Li @@ -60072,11 +60078,11 @@ Ic Ep Ep Mh -Mj -Ml -Mn -Mp -Mr +Mh +Mh +Mh +Mh +Mh Iv Iv Iv @@ -61614,11 +61620,11 @@ If Gq Ep Mi -Mk -Mm -Mo -Mq -Ms +Mi +Mi +Mi +Mi +Mi Iv Iv Iv From 0ca050563fc5194b790e7d60ea05f17f6642abf7 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 23:43:03 -0500 Subject: [PATCH 058/328] fixes merge conflicts --- _maps/map_files/Deltastation/DeltaStation2.dmm | 8 -------- _maps/map_files/MetaStation/MetaStation.dmm | 3 --- 2 files changed, 11 deletions(-) diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 7ff557a16d..48c1f9fdd5 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -57608,19 +57608,11 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/loading_area, -<<<<<<< HEAD -/turf/open/floor/plasteel/neutral, -/area/teleporter) -"cmH" = ( -/obj/effect/turf_decal/loading_area, -/turf/open/floor/plasteel/neutral, -======= /turf/open/floor/plasteel, /area/teleporter) "cmH" = ( /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel, ->>>>>>> 8f164a6... Fixes deleted turfs (#33010) /area/teleporter) "cmI" = ( /obj/structure/table, diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index c035ebfe1e..ac9ec2228b 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -25863,10 +25863,7 @@ forwards = 2; id = "packageSort2" }, -<<<<<<< HEAD -======= /obj/effect/turf_decal/loading_area, ->>>>>>> 8f164a6... Fixes deleted turfs (#33010) /turf/open/floor/plating, /area/quartermaster/sorting) "bbP" = ( From 598f0dc58038b3da97b8b31e593d1857ca55579c Mon Sep 17 00:00:00 2001 From: Leo Date: Thu, 23 Nov 2017 09:47:03 -0200 Subject: [PATCH 059/328] Merge pull request #32979 from tgstation/Cyberboss-patch-4 Adds some sanity checks to component creation --- code/datums/components/_component.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 0c85ddd871..d9b0bea6de 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -10,6 +10,14 @@ qdel(src) CRASH("[type] instantiated!") + //check for common mishaps + if(!isnum(dupe_mode)) + qdel(src) + CRASH("[type]: Invalid dupe_mode!") + if(!ispath(dupe_type)) + qdel(src) + CRASH("[type]: Invalid dupe_type!") + parent = P var/list/arguments = args.Copy() arguments.Cut(1, 2) From 67d495c053ae73271cf188472c83cbd6bbcd96ba Mon Sep 17 00:00:00 2001 From: Leo Date: Thu, 23 Nov 2017 09:48:03 -0200 Subject: [PATCH 061/328] Fixes strings runtime --- strings/brain_damage_lines.json | 9 +++++++++ strings/hallucination.json | 18 +++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/strings/brain_damage_lines.json b/strings/brain_damage_lines.json index 5efd3ac9b2..3cb60e3d22 100644 --- a/strings/brain_damage_lines.json +++ b/strings/brain_damage_lines.json @@ -57,6 +57,7 @@ "i will snatch erry motherfucker birthday", "the ai and borgs are mettacomming I think", "u just did the world a little bit more sad place for someone", +<<<<<<< HEAD "WHERES THE SLIP REWRITE WHERE THR FUCK ID IT?" "CEMISTRY SUKS!!!!!!!!", "youed call her a toeugh bithc", @@ -103,6 +104,14 @@ "iM NOT A FUWRRYY!!!", "DON'T EVER TUCH ME", "FOURTEEN INCHES SOFT!!!" +======= + "WHERES THE SLIP REWRITE WHERE THR FUCK ID IT?", + "@pick(semicolon)N-NYAAAAAA~", + "@pick(bug)", + "@pick(semicolon)wtf??????????? @pick(bug)", + "@pick(semicolon)i ran into the supermattre ten i dsappeard @pick(bug)", + "DON'T EVER TUCH ME" +>>>>>>> 2e28e4b... Merge pull request #32997 from ShizCalev/strings-fix ], "mutations": [ diff --git a/strings/hallucination.json b/strings/hallucination.json index b28c70db4a..b277f8552f 100644 --- a/strings/hallucination.json +++ b/strings/hallucination.json @@ -57,7 +57,7 @@ "i'm not robust enough to fight you", "who cares", "i'll kill you later" - ] + ], "ling_names": [ "Alpha", @@ -77,7 +77,7 @@ "Phi", "Psi", "Omega" - ] + ], "doubt": [ "Why?", @@ -110,7 +110,7 @@ "It's here!", "Follow me!", "Follow me" - ] + ], "infection_advice": [ "stay away", @@ -118,7 +118,7 @@ "be careful", "help me", "kill me" - ] + ], "people": [ "Captain", @@ -132,7 +132,7 @@ "Viro", "Qm", "[target.first_name()]" - ] + ], "accusations": [ "rogue", @@ -148,7 +148,7 @@ "a tator", "a ling", "a changeling" - ] + ], "threat": [ "Cult", @@ -162,7 +162,7 @@ "Harm", "I hear flashing", "Help" - ] + ], "location": [ "bridge", @@ -183,7 +183,7 @@ "botany", "kitchen", "the ai sat" - ] + ], "advice": [ "Hmm...not sure about that.", @@ -196,7 +196,7 @@ "You should go somewhere else. Quickly.", "Good luck. You'll need it.", "You have my permission. Do it." - ] + ], "chemicals": [ "Ooze", From 8943bf01843724652c6a783db7d2aced35100b0d Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Thu, 23 Nov 2017 13:06:33 -0500 Subject: [PATCH 062/328] Merge pull request #33041 from MrStonedOne/patch-452 Lowers the stress the dna console puts on the string tree --- code/game/machinery/computer/dna_console.dm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 7e41d9cc9a..53209108b2 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -75,9 +75,9 @@ popup.add_stylesheet("scannernew", 'html/browser/scannernew.css') var/mob/living/carbon/viable_occupant - var/occupant_status = "
Subject Status:
" + var/list/occupant_status = list("
Subject Status:
") var/scanner_status - var/temp_html + var/list/temp_html = list() if(connected && connected.is_operational()) if(connected.occupant) //set occupant_status message viable_occupant = connected.occupant @@ -117,9 +117,9 @@ occupant_status += "----
" scanner_status += "Error: No scanner detected" - var/status = "
" + var/list/status = list("
") status += "
Scanner:
[scanner_status]
" - status += "[occupant_status]" + status += occupant_status status += "

Radiation Emitter Status

" @@ -143,7 +143,7 @@ status += "
Pulse Duration:
[radduration]
" status += "
  \> Accuracy:
[chance_to_hit]
" status += "
" // Close statusDisplay div - var/buttons = "Scan " + var/list/buttons = list("Scan ") if(connected) buttons += " [connected.state_open ? "Close" : "Open"] Scanner " if (connected.state_open) @@ -304,7 +304,7 @@ temp_html += "----" temp_html += "
" - popup.set_content(temp_html) + popup.set_content(temp_html.Join()) popup.open() From b2bb9428175c23aebed77670b7b09a8f131e6154 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Thu, 23 Nov 2017 14:12:02 -0500 Subject: [PATCH 064/328] Fixes component runtimes --- code/datums/components/_component.dm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 0c85ddd871..cb46f01f0a 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -10,6 +10,17 @@ qdel(src) CRASH("[type] instantiated!") +<<<<<<< HEAD +======= + //check for common mishaps + if(!isnum(dupe_mode)) + qdel(src) + CRASH("[type]: Invalid dupe_mode!") + if(dupe_type && !ispath(dupe_type)) + qdel(src) + CRASH("[type]: Invalid dupe_type!") + +>>>>>>> 807311a... Fixes component runtimes (#33045) parent = P var/list/arguments = args.Copy() arguments.Cut(1, 2) From de9cfb2b7c207e9f9163aec58358c8ddab8ad345 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Thu, 23 Nov 2017 19:14:21 -0500 Subject: [PATCH 065/328] Update brain_damage_lines.json --- strings/brain_damage_lines.json | 9 --------- 1 file changed, 9 deletions(-) diff --git a/strings/brain_damage_lines.json b/strings/brain_damage_lines.json index 3cb60e3d22..5efd3ac9b2 100644 --- a/strings/brain_damage_lines.json +++ b/strings/brain_damage_lines.json @@ -57,7 +57,6 @@ "i will snatch erry motherfucker birthday", "the ai and borgs are mettacomming I think", "u just did the world a little bit more sad place for someone", -<<<<<<< HEAD "WHERES THE SLIP REWRITE WHERE THR FUCK ID IT?" "CEMISTRY SUKS!!!!!!!!", "youed call her a toeugh bithc", @@ -104,14 +103,6 @@ "iM NOT A FUWRRYY!!!", "DON'T EVER TUCH ME", "FOURTEEN INCHES SOFT!!!" -======= - "WHERES THE SLIP REWRITE WHERE THR FUCK ID IT?", - "@pick(semicolon)N-NYAAAAAA~", - "@pick(bug)", - "@pick(semicolon)wtf??????????? @pick(bug)", - "@pick(semicolon)i ran into the supermattre ten i dsappeard @pick(bug)", - "DON'T EVER TUCH ME" ->>>>>>> 2e28e4b... Merge pull request #32997 from ShizCalev/strings-fix ], "mutations": [ From 399c2ebfccbc1ee3e701e1a7f1402543a3e4d9b2 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 23 Nov 2017 16:37:49 -0800 Subject: [PATCH 066/328] Update _compile_options.dm --- code/_compile_options.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/_compile_options.dm b/code/_compile_options.dm index a0b13211f6..9fd5f1cbf1 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -35,7 +35,7 @@ #define MAX_CHARTER_LEN 80 //MINOR TWEAKS/MISC -#define AGE_MIN 17 //youngest a character can be +#define AGE_MIN 18 //youngest a character can be #define AGE_MAX 85 //oldest a character can be #define WIZARD_AGE_MIN 30 //youngest a wizard can be #define APPRENTICE_AGE_MIN 29 //youngest an apprentice can be From 2147c60b7f7be7d1f36fe1cfc58be44b947885f8 Mon Sep 17 00:00:00 2001 From: ACCount Date: Fri, 24 Nov 2017 03:53:18 +0300 Subject: [PATCH 067/328] Replaces "console screen" stock part with glass sheets --- _maps/RandomRuins/SpaceRuins/TheDerelict.dmm | 4 +- _maps/RandomRuins/SpaceRuins/oldstation.dmm | 6 +-- _maps/RandomZLevels/undergroundoutpost45.dmm | 6 +-- _maps/map_files/BoxStation/BoxStation.dmm | 6 +-- .../map_files/Deltastation/DeltaStation2.dmm | 34 ++++++------- _maps/map_files/MetaStation/MetaStation.dmm | 10 ++-- _maps/map_files/OmegaStation/OmegaStation.dmm | 10 ++-- _maps/map_files/PubbyStation/PubbyStation.dmm | 8 +-- _maps/shuttles/whiteship_delta.dmm | 2 +- code/game/machinery/vending.dm | 2 +- .../circuitboards/machine_circuitboards.dm | 47 ++++++++---------- .../research/designs/autolathe_designs.dm | 8 --- code/modules/research/stock_parts.dm | 3 ++ icons/obj/stock_parts.dmi | Bin 20166 -> 19428 bytes 14 files changed, 69 insertions(+), 77 deletions(-) diff --git a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm index d13454a521..e5de6294f9 100644 --- a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm @@ -559,7 +559,7 @@ /turf/template_noop, /area/ruin/space/derelict/bridge/ai_upload) "bM" = ( -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, /turf/template_noop, /area/ruin/space/derelict/bridge/ai_upload) "bN" = ( @@ -991,7 +991,7 @@ icon_state = "0-8" }, /obj/structure/frame/machine, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, /turf/open/floor/plating/airless, /area/ruin/space/derelict/gravity_generator) "dj" = ( diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index f580b26a81..bf9e23978e 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -2610,8 +2610,8 @@ /area/ruin/space/has_grav/ancientstation/rnd) "gQ" = ( /obj/structure/table, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, /obj/item/stock_parts/matter_bin, /obj/item/stock_parts/scanning_module{ pixel_x = 2; @@ -4457,7 +4457,7 @@ /area/template_noop) "lv" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, /turf/open/floor/plasteel/airless/white/side{ dir = 4 }, diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index 7a48d610df..a3eb4d1afd 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -3735,9 +3735,9 @@ /area/awaymission/undergroundoutpost45/research) "ik" = ( /obj/structure/table/glass, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, /obj/item/stock_parts/matter_bin, /obj/item/stock_parts/matter_bin, /turf/open/floor/plasteel/white/side{ diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 3d0ccb33fa..670e803f74 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -25954,10 +25954,10 @@ /turf/open/floor/plasteel/white, /area/science/lab) "bnl" = ( -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, /obj/structure/table/glass, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, /obj/item/stock_parts/matter_bin, /obj/item/stock_parts/matter_bin, /obj/machinery/light{ diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 48c1f9fdd5..0479e1ec28 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -3164,7 +3164,7 @@ name = "dust" }, /obj/structure/frame/computer, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, /turf/open/floor/plasteel/whitepurple/side{ dir = 8 }, @@ -7652,8 +7652,8 @@ }, /obj/item/stack/cable_coil/white, /obj/item/stack/cable_coil/white, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, /obj/item/circuitboard/machine/microwave, /turf/open/floor/plasteel/dark, /area/crew_quarters/electronic_marketing_den) @@ -43446,9 +43446,9 @@ /obj/structure/table/reinforced, /obj/item/folder/white, /obj/item/stock_parts/cell/high, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -61739,7 +61739,7 @@ /obj/item/clipboard, /obj/item/folder/blue, /obj/item/electronics/firelock, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/maintenance/port) @@ -75440,7 +75440,7 @@ /obj/structure/table, /obj/item/clipboard, /obj/item/electronics/airlock, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, /obj/item/device/assembly/signaler, /obj/machinery/airalarm{ dir = 1; @@ -79144,9 +79144,9 @@ /obj/structure/table/reinforced, /obj/item/folder/white, /obj/item/stock_parts/cell/high, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, /obj/structure/cable/white{ icon_state = "0-4" }, @@ -84059,9 +84059,9 @@ /obj/structure/table/reinforced, /obj/item/folder/white, /obj/item/stock_parts/cell/high, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/science/research/abandoned) @@ -86074,7 +86074,7 @@ /area/science/research/abandoned) "dus" = ( /obj/structure/table/reinforced, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, /obj/item/stock_parts/micro_laser, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, @@ -87643,7 +87643,7 @@ /obj/item/clipboard, /obj/item/folder/yellow, /obj/item/electronics/firealarm, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/hallway/secondary/construction) @@ -90494,7 +90494,7 @@ "dDk" = ( /obj/structure/frame/machine, /obj/machinery/light/small, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/science/research/abandoned) diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index ac9ec2228b..34757316a1 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -50277,7 +50277,7 @@ /area/science/research) "caA" = ( /obj/structure/table, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, /obj/item/electronics/airlock, /obj/item/device/assembly/timer{ pixel_x = -4; @@ -52868,7 +52868,7 @@ "cfC" = ( /obj/item/trash/pistachios, /obj/structure/closet, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, /obj/item/extinguisher, /obj/item/storage/belt/utility, /turf/open/floor/plating, @@ -56852,9 +56852,9 @@ /area/science/lab) "cnW" = ( /obj/structure/table, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, /obj/item/stock_parts/cell/high{ charge = 100; maxcharge = 15000 diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 1eb515a49b..00a601dba2 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -24721,9 +24721,9 @@ /obj/structure/table/reinforced, /obj/item/folder/white, /obj/item/stock_parts/cell/high, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -25197,8 +25197,8 @@ /obj/structure/table/wood, /obj/item/stack/cable_coil/white, /obj/item/stack/cable_coil/white, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, /obj/item/circuitboard/machine/microwave, /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 96b543b37a..fab27c788f 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -32699,8 +32699,8 @@ /area/science/lab) "bAq" = ( /obj/structure/table, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, /obj/item/stock_parts/capacitor, /obj/item/stock_parts/capacitor, /obj/item/stock_parts/manipulator, @@ -47954,8 +47954,8 @@ /area/tcommsat/server) "cnw" = ( /obj/structure/table, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, /obj/item/stock_parts/micro_laser, /obj/item/stock_parts/micro_laser, /turf/open/floor/plasteel/dark/telecomms, diff --git a/_maps/shuttles/whiteship_delta.dmm b/_maps/shuttles/whiteship_delta.dmm index 1deda26adf..5961fef79f 100644 --- a/_maps/shuttles/whiteship_delta.dmm +++ b/_maps/shuttles/whiteship_delta.dmm @@ -1413,7 +1413,7 @@ name = "dust" }, /obj/structure/frame/computer, -/obj/item/stock_parts/console_screen, +/obj/item/stack/sheet/glass, /turf/open/floor/plasteel/whitepurple/side{ dir = 8 }, diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 3e24b47760..ec6a53f308 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -1064,7 +1064,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C /obj/item/crowbar = 12, /obj/item/wirecutters = 12, /obj/item/device/multitool = 12, /obj/item/wrench = 12, /obj/item/device/t_scanner = 12, /obj/item/stock_parts/cell = 8, /obj/item/weldingtool = 8, /obj/item/clothing/head/welding = 8, /obj/item/light/tube = 10, /obj/item/clothing/suit/fire = 4, /obj/item/stock_parts/scanning_module = 5, /obj/item/stock_parts/micro_laser = 5, - /obj/item/stock_parts/matter_bin = 5, /obj/item/stock_parts/manipulator = 5, /obj/item/stock_parts/console_screen = 5) + /obj/item/stock_parts/matter_bin = 5, /obj/item/stock_parts/manipulator = 5) armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50) resistance_flags = FIRE_PROOF diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 7576824747..1857a27593 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -6,8 +6,7 @@ /obj/item/stock_parts/matter_bin = 1, /obj/item/stock_parts/manipulator = 1, /obj/item/stack/cable_coil = 1, - /obj/item/stock_parts/console_screen = 1, - /obj/item/stack/sheet/glass = 1) + /obj/item/stack/sheet/glass = 2) /obj/item/circuitboard/machine/announcement_system name = "Announcement System (Machine Board)" @@ -15,7 +14,7 @@ origin_tech = "programming=3;bluespace=3;magnets=2" req_components = list( /obj/item/stack/cable_coil = 2, - /obj/item/stock_parts/console_screen = 1) + /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/machine/autolathe name = "Autolathe (Machine Board)" @@ -24,7 +23,7 @@ req_components = list( /obj/item/stock_parts/matter_bin = 3, /obj/item/stock_parts/manipulator = 1, - /obj/item/stock_parts/console_screen = 1) + /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/machine/clonepod name = "Clone Pod (Machine Board)" @@ -78,7 +77,7 @@ req_components = list( /obj/item/stock_parts/manipulator = 1, /obj/item/reagent_containers/glass/beaker = 2, - /obj/item/stock_parts/console_screen = 1) + /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/machine/quantumpad name = "Quantum Pad (Machine Board)" @@ -209,7 +208,7 @@ req_components = list( /obj/item/ore/bluespace_crystal = 2, /obj/item/stock_parts/capacitor = 2, - /obj/item/stock_parts/console_screen = 1) + /obj/item/stack/sheet/glass = 1) def_components = list(/obj/item/ore/bluespace_crystal = /obj/item/ore/bluespace_crystal/artificial) /obj/item/circuitboard/machine/vendor @@ -268,7 +267,7 @@ /obj/item/stock_parts/matter_bin = 2, /obj/item/stock_parts/manipulator = 1, /obj/item/stock_parts/micro_laser = 1, - /obj/item/stock_parts/console_screen = 1) + /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/machine/cryo_tube name = "Cryotube (Machine Board)" @@ -277,18 +276,17 @@ req_components = list( /obj/item/stock_parts/matter_bin = 1, /obj/item/stack/cable_coil = 1, - /obj/item/stock_parts/console_screen = 1, - /obj/item/stack/sheet/glass = 2) + /obj/item/stack/sheet/glass = 4) /obj/item/circuitboard/machine/thermomachine name = "Thermomachine (Machine Board)" desc = "You can use a screwdriver to switch between heater and freezer." origin_tech = "programming=3;plasmatech=3" req_components = list( - /obj/item/stock_parts/matter_bin = 2, - /obj/item/stock_parts/micro_laser = 2, - /obj/item/stack/cable_coil = 1, - /obj/item/stock_parts/console_screen = 1) + /obj/item/stock_parts/matter_bin = 2, + /obj/item/stock_parts/micro_laser = 2, + /obj/item/stack/cable_coil = 1, + /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/machine/thermomachine/Initialize() . = ..() @@ -417,7 +415,7 @@ /obj/item/stock_parts/matter_bin = 1, /obj/item/stock_parts/manipulator = 1, /obj/item/stack/cable_coil = 1, - /obj/item/stock_parts/console_screen = 1) + /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/machine/plantgenes name = "Plant DNA Manipulator (Machine Board)" @@ -426,7 +424,7 @@ req_components = list( /obj/item/stock_parts/manipulator = 1, /obj/item/stock_parts/micro_laser = 1, - /obj/item/stock_parts/console_screen = 1, + /obj/item/stack/sheet/glass = 1, /obj/item/stock_parts/scanning_module = 1) /obj/item/circuitboard/machine/plantgenes/vault @@ -447,7 +445,7 @@ req_components = list( /obj/item/stock_parts/matter_bin = 2, /obj/item/stock_parts/manipulator = 1, - /obj/item/stock_parts/console_screen = 1) + /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/machine/seed_extractor name = "Seed Extractor (Machine Board)" @@ -462,7 +460,7 @@ build_path = /obj/machinery/mineral/ore_redemption origin_tech = "programming=1;engineering=2" req_components = list( - /obj/item/stock_parts/console_screen = 1, + /obj/item/stack/sheet/glass = 1, /obj/item/stock_parts/matter_bin = 1, /obj/item/stock_parts/micro_laser = 1, /obj/item/stock_parts/manipulator = 1, @@ -473,7 +471,7 @@ build_path = /obj/machinery/mineral/equipment_vendor origin_tech = "programming=1;engineering=3" req_components = list( - /obj/item/stock_parts/console_screen = 1, + /obj/item/stack/sheet/glass = 1, /obj/item/stock_parts/matter_bin = 3) /obj/item/circuitboard/machine/mining_equipment_vendor/golem @@ -594,7 +592,7 @@ /obj/item/stock_parts/matter_bin = 2, /obj/item/stock_parts/capacitor = 1, /obj/item/stock_parts/manipulator = 1, - /obj/item/stock_parts/console_screen = 1, + /obj/item/stack/sheet/glass = 1, /obj/item/stock_parts/cell = 1) def_components = list(/obj/item/stock_parts/cell = /obj/item/stock_parts/cell/high) @@ -606,7 +604,7 @@ /obj/item/stock_parts/matter_bin = 2, /obj/item/stock_parts/capacitor = 1, /obj/item/stock_parts/manipulator = 1, - /obj/item/stock_parts/console_screen = 1, + /obj/item/stack/sheet/glass = 1, /obj/item/stock_parts/cell = 1) /obj/item/circuitboard/machine/chem_heater @@ -615,7 +613,7 @@ origin_tech = "programming=2;engineering=2;biotech=2" req_components = list( /obj/item/stock_parts/micro_laser = 1, - /obj/item/stock_parts/console_screen = 1) + /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/machine/chem_master name = "ChemMaster 3000 (Machine Board)" @@ -624,7 +622,7 @@ req_components = list( /obj/item/reagent_containers/glass/beaker = 2, /obj/item/stock_parts/manipulator = 1, - /obj/item/stock_parts/console_screen = 1) + /obj/item/stack/sheet/glass = 1) /obj/item/circuitboard/machine/chem_master/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/screwdriver)) @@ -730,13 +728,12 @@ /obj/item/stock_parts/micro_laser = 1, /obj/item/stock_parts/matter_bin = 1, /obj/item/stack/cable_coil = 2, - /obj/item/stock_parts/console_screen = 1, - /obj/item/stack/sheet/glass = 1) + /obj/item/stack/sheet/glass = 2) /obj/item/circuitboard/machine/vending/donksofttoyvendor name = "Donksoft Toy Vendor (Machine Board)" build_path = /obj/machinery/vending/donksofttoyvendor origin_tech = "programming=1;syndicate=2" req_components = list( - /obj/item/stock_parts/console_screen = 1, + /obj/item/stack/sheet/glass = 1, /obj/item/vending_refill/donksoft = 3) diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 946ec70d38..03424346e8 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -123,14 +123,6 @@ build_path = /obj/item/storage/toolbox category = list("initial","Tools") -/datum/design/console_screen - name = "Console Screen" - id = "console_screen" - build_type = AUTOLATHE - materials = list(MAT_GLASS = 200) - build_path = /obj/item/stock_parts/console_screen - category = list("initial", "Electronics") - /datum/design/apc_board name = "APC Module" id = "power control" diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm index 4e160ad140..28485f535c 100644 --- a/code/modules/research/stock_parts.dm +++ b/code/modules/research/stock_parts.dm @@ -82,6 +82,7 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi //Rating 1 +<<<<<<< HEAD /obj/item/stock_parts/console_screen name = "console screen" desc = "Used in the construction of computers and other devices with an interactive console." @@ -89,6 +90,8 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi origin_tech = "materials=1" materials = list(MAT_GLASS=200) +======= +>>>>>>> 4c909b5... Replaces "console screen" stock part with glass sheets (#33018) /obj/item/stock_parts/capacitor name = "capacitor" desc = "A basic capacitor used in the construction of a variety of devices." diff --git a/icons/obj/stock_parts.dmi b/icons/obj/stock_parts.dmi index a2e09f29436f49daa33e747c8451c3bc650e9891..fbc8be5474bb718671e27ef8aaa3b7da2360c059 100644 GIT binary patch literal 19428 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 Y0jjU|^(qL)cK`qY07*qoM6N<$g2$=V$^ZZW From 876b3ebff0ef4a6a1d80458152b3742f06f173ba Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 23 Nov 2017 22:41:57 -0600 Subject: [PATCH 068/328] Automatic changelog generation for PR #4084 [ci skip] --- html/changelogs/AutoChangeLog-pr-4084.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4084.yml diff --git a/html/changelogs/AutoChangeLog-pr-4084.yml b/html/changelogs/AutoChangeLog-pr-4084.yml new file mode 100644 index 0000000000..ddd147e1e0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4084.yml @@ -0,0 +1,8 @@ +author: "deathride58" +delete-after: True +changes: + - bugfix: "The vault in boxstation now has power again." + - bugfix: "The gravity generator in boxstation now has power again." + - bugfix: "Various broken decals in boxstation have been fixed." + - bugfix: "The clown and mime offices no longer have APCs pointing to the wrong areas." + - rscadd: "Boxstation's secure cell has been readded to security." From d5d89a57b461550e37df9e61502b5046062ec088 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Thu, 23 Nov 2017 23:50:25 -0500 Subject: [PATCH 069/328] Update stock_parts.dm --- code/modules/research/stock_parts.dm | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm index 28485f535c..794c975b46 100644 --- a/code/modules/research/stock_parts.dm +++ b/code/modules/research/stock_parts.dm @@ -82,16 +82,6 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi //Rating 1 -<<<<<<< HEAD -/obj/item/stock_parts/console_screen - name = "console screen" - desc = "Used in the construction of computers and other devices with an interactive console." - icon_state = "screen" - origin_tech = "materials=1" - materials = list(MAT_GLASS=200) - -======= ->>>>>>> 4c909b5... Replaces "console screen" stock part with glass sheets (#33018) /obj/item/stock_parts/capacitor name = "capacitor" desc = "A basic capacitor used in the construction of a variety of devices." From 9f7b3a11c3be50477eeec49b52e60cc371aecae1 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 24 Nov 2017 00:42:54 -0600 Subject: [PATCH 070/328] Automatic changelog generation for PR #4095 [ci skip] --- html/changelogs/AutoChangeLog-pr-4095.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4095.yml diff --git a/html/changelogs/AutoChangeLog-pr-4095.yml b/html/changelogs/AutoChangeLog-pr-4095.yml new file mode 100644 index 0000000000..dd5036cb59 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4095.yml @@ -0,0 +1,4 @@ +author: "ACCount" +delete-after: True +changes: + - rscdel: "Removed \"console screen\" stock part. Just use glass sheets instead." From c43591982ab83962d1706a6e4c6302af9807d1bb Mon Sep 17 00:00:00 2001 From: oranges Date: Sat, 25 Nov 2017 00:45:44 +1300 Subject: [PATCH 071/328] Refactor on_reagent_change to pass through the change type --- code/__DEFINES/reagents.dm | 7 ++++++- code/datums/datumvars.dm | 2 +- code/game/mecha/equipment/tools/medical_tools.dm | 2 +- code/game/mecha/equipment/tools/work_tools.dm | 3 --- code/game/objects/items/devices/scanners.dm | 2 +- code/modules/food_and_drinks/drinks/drinks.dm | 8 ++++---- .../food_and_drinks/drinks/drinks/drinkingglass.dm | 10 ++++++++-- code/modules/food_and_drinks/food/condiment.dm | 10 +++++----- code/modules/food_and_drinks/food/customizables.dm | 2 +- code/modules/hydroponics/biogenerator.dm | 2 +- code/modules/integrated_electronics/passive/power.dm | 2 +- .../integrated_electronics/subtypes/reagents.dm | 12 ++++++------ code/modules/mob/living/simple_animal/bot/secbot.dm | 2 +- code/modules/reagents/chemistry/holder.dm | 9 ++++----- .../reagents/reagent_containers/blood_pack.dm | 2 +- code/modules/reagents/reagent_containers/bottle.dm | 2 +- code/modules/reagents/reagent_containers/glass.dm | 2 +- code/modules/reagents/reagent_containers/syringes.dm | 2 +- 18 files changed, 44 insertions(+), 37 deletions(-) diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm index 9e17719e76..c85365db90 100644 --- a/code/__DEFINES/reagents.dm +++ b/code/__DEFINES/reagents.dm @@ -11,4 +11,9 @@ #define INGEST 2 //ingestion #define VAPOR 3 //foam, spray, blob attack #define PATCH 4 //patches -#define INJECT 5 //injection \ No newline at end of file +#define INJECT 5 //injection + +//defines passed through to the on_reagent_change proc +#define DEL_REAGENT 1 //reagent deleted (fully cleared) +#define ADD_REAGENT 2 // reagent added +#define REM_REAGENT 3 // reagent removed (may still exist) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 894f34345d..c609e63f0f 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -31,7 +31,7 @@ .["Show VV To Player"] = "?_src_=vars;[HrefToken(TRUE)];expose=[REF(src)]" -/datum/proc/on_reagent_change() +/datum/proc/on_reagent_change(changetype) return diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index cc0f935628..ebac3fb6d2 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -504,7 +504,7 @@ return 1 return -/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/on_reagent_change() +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/on_reagent_change(changetype) ..() update_equip_info() return diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 7ec90ab7ce..6d9fc9e13e 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -179,9 +179,6 @@ /obj/item/mecha_parts/mecha_equipment/extinguisher/get_equip_info() return "[..()] \[[src.reagents.total_volume]\]" -/obj/item/mecha_parts/mecha_equipment/extinguisher/on_reagent_change() - return - /obj/item/mecha_parts/mecha_equipment/extinguisher/can_attach(obj/mecha/working/M as obj) if(..()) if(istype(M)) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index cbe1161422..bc99a28eea 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -417,7 +417,7 @@ MASS SPECTROMETER ..() create_reagents(5) -/obj/item/device/mass_spectrometer/on_reagent_change() +/obj/item/device/mass_spectrometer/on_reagent_change(changetype) if(reagents.total_volume) icon_state = initial(icon_state) + "_s" else diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 72e3621131..5d3cd09f51 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -15,7 +15,7 @@ resistance_flags = NONE var/isGlass = TRUE //Whether the 'bottle' is made of glass or not so that milk cartons dont shatter when someone gets hit by it -/obj/item/reagent_containers/food/drinks/on_reagent_change() +/obj/item/reagent_containers/food/drinks/on_reagent_change(changetype) if (gulp_size < 5) gulp_size = 5 else @@ -209,7 +209,7 @@ item_state = "coffee" spillable = TRUE -/obj/item/reagent_containers/food/drinks/mug/on_reagent_change() +/obj/item/reagent_containers/food/drinks/mug/on_reagent_change(changetype) if(reagents.total_volume) icon_state = "tea" else @@ -261,7 +261,7 @@ spillable = TRUE isGlass = FALSE -/obj/item/reagent_containers/food/drinks/sillycup/on_reagent_change() +/obj/item/reagent_containers/food/drinks/sillycup/on_reagent_change(changetype) if(reagents.total_volume) icon_state = "water_cup" else @@ -289,7 +289,7 @@ transfer_fingerprints_to(B) qdel(src) -/obj/item/reagent_containers/food/drinks/sillycup/smallcarton/on_reagent_change() +/obj/item/reagent_containers/food/drinks/sillycup/smallcarton/on_reagent_change(changetype) if (reagents.reagent_list.len) switch(reagents.get_master_reagent_id()) if("orangejuice") diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm index 9f2f6650bc..875185afb1 100644 --- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm @@ -12,7 +12,7 @@ resistance_flags = ACID_PROOF unique_rename = 1 -/obj/item/reagent_containers/food/drinks/drinkingglass/on_reagent_change() +/obj/item/reagent_containers/food/drinks/drinkingglass/on_reagent_change(changetype) cut_overlays() if(reagents.reagent_list.len) var/datum/reagent/R = reagents.get_master_reagent() @@ -46,7 +46,7 @@ volume = 15 materials = list(MAT_GLASS=100) -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/on_reagent_change() +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/on_reagent_change(changetype) cut_overlays() if (gulp_size < 15) @@ -74,9 +74,15 @@ desc = "A shot glass - the universal symbol for bad decisions." return +<<<<<<< HEAD /obj/item/reagent_containers/food/drinks/drinkingglass/filled/New() ..() on_reagent_change() +======= +/obj/item/reagent_containers/food/drinks/drinkingglass/filled/Initialize() + . = ..() + on_reagent_change(ADD_REAGENT) +>>>>>>> 73b25d7... Refactor on_reagent_change to pass through the change type (#32805) /obj/item/reagent_containers/food/drinks/drinkingglass/filled/soda name = "Soda Water" diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index c115ef51af..3e6e2e8450 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -13,7 +13,7 @@ container_type = OPENCONTAINER_1 possible_transfer_amounts = list(1, 5, 10, 15, 20, 25, 30, 50) volume = 50 - //Possible_states has the reagent id as key and a list of, in order, the icon_state, the name and the desc as values. Used in the on_reagent_change() to change names, descs and sprites. + //Possible_states has the reagent id as key and a list of, in order, the icon_state, the name and the desc as values. Used in the on_reagent_change(changetype) to change names, descs and sprites. var/list/possible_states = list( "ketchup" = list("ketchup", "ketchup bottle", "You feel more American already."), "capsaicin" = list("hotsauce", "hotsauce bottle", "You can almost TASTE the stomach ulcers now!"), @@ -80,7 +80,7 @@ var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) to_chat(user, "You transfer [trans] units of the condiment to [target].") -/obj/item/reagent_containers/food/condiment/on_reagent_change() +/obj/item/reagent_containers/food/condiment/on_reagent_change(changetype) if(!possible_states.len) return if(reagents.reagent_list.len > 0) @@ -126,7 +126,7 @@ list_reagents = list("sodiumchloride" = 20) possible_states = list() -/obj/item/reagent_containers/food/condiment/saltshaker/on_reagent_change() +/obj/item/reagent_containers/food/condiment/saltshaker/on_reagent_change(changetype) if(reagents.reagent_list.len == 0) icon_state = "emptyshaker" else @@ -164,7 +164,7 @@ list_reagents = list("blackpepper" = 20) possible_states = list() -/obj/item/reagent_containers/food/condiment/peppermill/on_reagent_change() +/obj/item/reagent_containers/food/condiment/peppermill/on_reagent_change(changetype) if(reagents.reagent_list.len == 0) icon_state = "emptyshaker" else @@ -255,7 +255,7 @@ src.reagents.trans_to(target, amount_per_transfer_from_this) qdel(src) -/obj/item/reagent_containers/food/condiment/pack/on_reagent_change() +/obj/item/reagent_containers/food/condiment/pack/on_reagent_change(changetype) if(reagents.reagent_list.len > 0) var/main_reagent = reagents.get_master_reagent_id() if(main_reagent in possible_states) diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index 176e3fe8eb..3351a67d39 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -313,7 +313,7 @@ . = ..() return -/obj/item/reagent_containers/glass/bowl/on_reagent_change() +/obj/item/reagent_containers/glass/bowl/on_reagent_change(changetype) ..() update_icon() diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index d46875eb00..ff3c8b4309 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -53,7 +53,7 @@ productivity = P max_items = max_storage -/obj/machinery/biogenerator/on_reagent_change() //When the reagents change, change the icon as well. +/obj/machinery/biogenerator/on_reagent_change(changetype) //When the reagents change, change the icon as well. update_icon() /obj/machinery/biogenerator/update_icon() diff --git a/code/modules/integrated_electronics/passive/power.dm b/code/modules/integrated_electronics/passive/power.dm index 8b6cb562f0..7c7439d45b 100644 --- a/code/modules/integrated_electronics/passive/power.dm +++ b/code/modules/integrated_electronics/passive/power.dm @@ -113,7 +113,7 @@ push_data() ..() -/obj/item/integrated_circuit/passive/power/chemical_cell/on_reagent_change() +/obj/item/integrated_circuit/passive/power/chemical_cell/on_reagent_change(changetype) set_pin_data(IC_OUTPUT, 1, reagents.total_volume) push_data() diff --git a/code/modules/integrated_electronics/subtypes/reagents.dm b/code/modules/integrated_electronics/subtypes/reagents.dm index bdea98bae3..1793869237 100644 --- a/code/modules/integrated_electronics/subtypes/reagents.dm +++ b/code/modules/integrated_electronics/subtypes/reagents.dm @@ -28,9 +28,10 @@ var/smoke_radius = 5 var/notified = FALSE -/obj/item/integrated_circuit/reagent/smoke/on_reagent_change() - //reset warning - notified = FALSE +/obj/item/integrated_circuit/reagent/smoke/on_reagent_change(changetype) + //reset warning only if we have reagents now + if(changetype == ADD_REAGENT) + notified = FALSE set_pin_data(IC_OUTPUT, 1, reagents.total_volume) push_data() @@ -48,7 +49,6 @@ if(S) S.set_up(reagents, smoke_radius, location, notified) if(!notified) - //we have now notified notified = TRUE S.start() @@ -83,7 +83,7 @@ ..() -/obj/item/integrated_circuit/reagent/injector/on_reagent_change() +/obj/item/integrated_circuit/reagent/injector/on_reagent_change(changetype) set_pin_data(IC_OUTPUT, 1, reagents.total_volume) push_data() @@ -263,7 +263,7 @@ push_data() ..() -/obj/item/integrated_circuit/reagent/storage/on_reagent_change() +/obj/item/integrated_circuit/reagent/storage/on_reagent_change(changetype) set_pin_data(IC_OUTPUT, 1, reagents.total_volume) push_data() diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 4300746901..03a5bec73b 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -54,7 +54,7 @@ new /obj/item/stock_parts/cell/potato(Tsec) var/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/S = new(Tsec) S.reagents.add_reagent("whiskey", 15) - S.on_reagent_change() + S.on_reagent_change(ADD_REAGENT) ..() /mob/living/simple_animal/bot/secbot/pingsky diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 5997d1d1c3..9c4bff72cb 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -1,5 +1,4 @@ - /////////////////////////////////////////////////////////////////////////////////// /datum/reagents @@ -428,7 +427,7 @@ reagent_list -= R update_total() if(my_atom) - my_atom.on_reagent_change() + my_atom.on_reagent_change(DEL_REAGENT) check_ignoreslow(my_atom) check_gofast(my_atom) check_goreallyfast(my_atom) @@ -526,7 +525,7 @@ R.volume += amount update_total() if(my_atom) - my_atom.on_reagent_change() + my_atom.on_reagent_change(ADD_REAGENT) R.on_merge(data, amount) if(!no_react) handle_reactions() @@ -545,7 +544,7 @@ update_total() if(my_atom) - my_atom.on_reagent_change() + my_atom.on_reagent_change(ADD_REAGENT) if(!no_react) handle_reactions() if(isliving(my_atom)) @@ -587,7 +586,7 @@ if(!safety)//So it does not handle reactions when it need not to handle_reactions() if(my_atom) - my_atom.on_reagent_change() + my_atom.on_reagent_change(REM_REAGENT) return TRUE return FALSE diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index d4b8e165ee..a4d766539f 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -13,7 +13,7 @@ reagents.add_reagent("blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=blood_type,"resistances"=null,"trace_chem"=null)) update_icon() -/obj/item/reagent_containers/blood/on_reagent_change() +/obj/item/reagent_containers/blood/on_reagent_change(changetype) if(reagents) var/datum/reagent/blood/B = reagents.has_reagent("blood") if(B && B.data && B.data["blood_type"]) diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index d6fad81f64..6fad290676 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -15,7 +15,7 @@ icon_state = "bottle" update_icon() -/obj/item/reagent_containers/glass/bottle/on_reagent_change() +/obj/item/reagent_containers/glass/bottle/on_reagent_change(changetype) update_icon() /obj/item/reagent_containers/glass/bottle/update_icon() diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 4e2e88c06d..20c4ba6933 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -126,7 +126,7 @@ . = ..() update_icon() -/obj/item/reagent_containers/glass/beaker/on_reagent_change() +/obj/item/reagent_containers/glass/beaker/on_reagent_change(changetype) update_icon() /obj/item/reagent_containers/glass/beaker/update_icon() diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 1bd1eba3c4..9695caab02 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -21,7 +21,7 @@ mode = SYRINGE_INJECT update_icon() -/obj/item/reagent_containers/syringe/on_reagent_change() +/obj/item/reagent_containers/syringe/on_reagent_change(changetype) update_icon() /obj/item/reagent_containers/syringe/pickup(mob/user) From 0b07f80b624bb81fa300480ac375db08e8fc37f4 Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Fri, 24 Nov 2017 06:44:12 -0500 Subject: [PATCH 072/328] custom docker improvements (#32626) --- code/__HELPERS/maths.dm | 21 +++++++ code/controllers/subsystem/shuttle.dm | 30 ++++++++- code/modules/shuttle/navigation_computer.dm | 67 +++++++++++---------- code/modules/shuttle/shuttle.dm | 30 +++++---- 4 files changed, 103 insertions(+), 45 deletions(-) diff --git a/code/__HELPERS/maths.dm b/code/__HELPERS/maths.dm index ca76b715c4..f1c901ab9a 100644 --- a/code/__HELPERS/maths.dm +++ b/code/__HELPERS/maths.dm @@ -232,3 +232,24 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, if(round(num) != num) return round(num--) else return num + +//proc/get_overlap() +// Returns a list where [1] is all x values and [2] is all y values that overlap between the given pair of rectangles +/proc/get_overlap(x1, y1, x2, y2, x3, y3, x4, y4) + var/list/region_x1 = list() + var/list/region_y1 = list() + var/list/region_x2 = list() + var/list/region_y2 = list() + + // These loops create loops filled with x/y values that the boundaries inhabit + // ex: list(5, 6, 7, 8, 9) + for(var/i in min(x1, x2) to max(x1, x2)) + region_x1["[i]"] = TRUE + for(var/i in min(y1, y2) to max(y1, y2)) + region_y1["[i]"] = TRUE + for(var/i in min(x3, x4) to max(x3, x4)) + region_x2["[i]"] = TRUE + for(var/i in min(y3, y4) to max(y3, y4)) + region_y2["[i]"] = TRUE + + return list(region_x1 & region_x2, region_y1 & region_y2) \ No newline at end of file diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 00730fc1aa..75111a2017 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -622,6 +622,30 @@ SUBSYSTEM_DEF(shuttle) return TRUE /datum/controller/subsystem/shuttle/proc/get_containing_shuttle(atom/A) - for(var/obj/docking_port/mobile/M in mobile) - if(M.is_in_shuttle_bounds(A)) - return M + var/list/mobile_cache = mobile + for(var/i in 1 to mobile_cache.len) + var/obj/docking_port/port = mobile_cache[i] + if(port.is_in_shuttle_bounds(A)) + return port + +/datum/controller/subsystem/shuttle/proc/get_containing_dock(atom/A) + . = list() + var/list/stationary_cache = stationary + for(var/i in 1 to stationary_cache.len) + var/obj/docking_port/port = stationary_cache[i] + if(port.is_in_shuttle_bounds(A)) + . += port + +/datum/controller/subsystem/shuttle/proc/get_dock_overlap(x0, y0, x1, y1, z) + . = list() + var/list/stationary_cache = stationary + for(var/i in 1 to stationary_cache.len) + var/obj/docking_port/port = stationary_cache[i] + if(!port || port.z != z) + continue + var/list/bounds = port.return_coords() + var/list/overlap = get_overlap(x0, y0, x1, y1, bounds[1], bounds[2], bounds[3], bounds[4]) + var/list/xs = overlap[1] + var/list/ys = overlap[2] + if(xs.len && ys.len) + .[port] = overlap \ No newline at end of file diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm index 7f99829843..27ef7eec33 100644 --- a/code/modules/shuttle/navigation_computer.dm +++ b/code/modules/shuttle/navigation_computer.dm @@ -8,7 +8,6 @@ var/shuttlePortId = "" var/shuttlePortName = "" var/list/jumpto_ports = list() //hashset of ports to jump to and ignore for collision purposes - var/list/blacklisted_turfs //turfs we cannot go on, by default, any turf covered by a docking port that we did not place and cannot jump to var/obj/docking_port/stationary/my_port //the custom docking port placed by this console var/obj/docking_port/mobile/shuttle_port //the mobile docking port of the connected shuttle var/view_range = 7 @@ -56,7 +55,6 @@ I.pixel_x = x_off * 32 I.pixel_y = y_off * 32 the_eye.placement_images[I] = list(x_off, y_off) - generateBlacklistedTurfs() /obj/machinery/computer/camera_advanced/shuttle_docker/give_eye_control(mob/user) ..() @@ -110,54 +108,61 @@ /obj/machinery/computer/camera_advanced/shuttle_docker/proc/rotateLandingSpot() var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj + var/list/image_cache = the_eye.placement_images the_eye.dir = turn(the_eye.dir, -90) - for(var/V in the_eye.placement_images) - var/image/I = V - var/list/coords = the_eye.placement_images[V] + for(var/i in 1 to image_cache.len) + var/image/pic = image_cache[i] + var/list/coords = image_cache[pic] var/Tmp = coords[1] coords[1] = coords[2] coords[2] = -Tmp - - I.pixel_x = coords[1] * 32 - I.pixel_y = coords[2] * 32 + pic.pixel_x = coords[1] * 32 + pic.pixel_y = coords[2] * 32 var/Tmp = x_offset x_offset = y_offset y_offset = -Tmp checkLandingSpot() -/obj/machinery/computer/camera_advanced/shuttle_docker/proc/checkLandingTurf(turf/T) - return T && (shuttle_port.shuttle_areas[T.loc] || (!blacklisted_turfs || !blacklisted_turfs[T]) && (!space_turfs_only || isspaceturf(T)) ) && (T.x > 1 && T.y > 1 && T.x < world.maxx && T.y < world.maxy) - -/obj/machinery/computer/camera_advanced/shuttle_docker/proc/generateBlacklistedTurfs() - blacklisted_turfs = list() - for(var/V in SSshuttle.stationary) - if(!V) - continue - var/obj/docking_port/stationary/S = V - if(z_lock.len && !(S.z in z_lock)) - continue - if((S.id == shuttlePortId) || jumpto_ports[S.id]) - continue - for(var/T in S.return_turfs()) - blacklisted_turfs[T] = TRUE - /obj/machinery/computer/camera_advanced/shuttle_docker/proc/checkLandingSpot() var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj var/turf/eyeturf = get_turf(the_eye) if(!eyeturf) return - var/landing_spot_clear = TRUE - for(var/V in the_eye.placement_images) - var/image/I = V + var/list/bounds = shuttle_port.return_coords(the_eye.x - x_offset, the_eye.y - y_offset, the_eye.dir) + var/list/overlappers = SSshuttle.get_dock_overlap(bounds[1], bounds[2], bounds[3], bounds[4], the_eye.z) + . = TRUE + var/list/image_cache = the_eye.placement_images + for(var/i in 1 to image_cache.len) + var/image/I = image_cache[i] I.loc = eyeturf - var/list/coords = the_eye.placement_images[V] + var/list/coords = image_cache[I] var/turf/T = locate(eyeturf.x + coords[1], eyeturf.y + coords[2], eyeturf.z) - if(checkLandingTurf(T)) + if(checkLandingTurf(T, overlappers)) I.icon_state = "green" else I.icon_state = "red" - landing_spot_clear = FALSE - return landing_spot_clear + . = FALSE + +/obj/machinery/computer/camera_advanced/shuttle_docker/proc/checkLandingTurf(turf/T, list/overlappers) + // Too close to the map edge is never allowed + if(!T || T.x == 1 || T.y == 1 || T.x == world.maxx || T.y == world.maxy) + return FALSE + // If it's one of our shuttle areas assume it's ok to be there + if(shuttle_port.shuttle_areas[T.loc]) + return TRUE + // Checking for overlapping dock boundaries + for(var/i in 1 to overlappers.len) + var/obj/docking_port/port = overlappers[i] + if(port == my_port) + continue + var/list/overlap = overlappers[port] + var/list/xs = overlap[1] + var/list/ys = overlap[2] + if(xs["[T.x]"] && ys["[T.y]"]) + return FALSE + if(space_turfs_only && !isspaceturf(T)) + return FALSE + return TRUE /mob/camera/aiEye/remote/shuttle_docker visible_icon = FALSE diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index 642037bdf1..2f0fb711bd 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -182,6 +182,25 @@ if(P) return P.id +/obj/docking_port/proc/is_in_shuttle_bounds(atom/A) + var/turf/T = get_turf(A) + if(T.z != z) + return FALSE + var/list/bounds = return_coords() + var/x0 = bounds[1] + var/y0 = bounds[2] + var/x1 = bounds[3] + var/y1 = bounds[4] + if(x0 <= x1 && !IsInRange(T.x, x0, x1)) + return FALSE + else if(!IsInRange(T.x, x1, x0)) + return FALSE + if(y0 <= y1 && !IsInRange(T.y, y0, y1)) + return FALSE + else if(!IsInRange(T.y, y1, y0)) + return FALSE + return TRUE + /obj/docking_port/stationary name = "dock" @@ -855,17 +874,6 @@ for(var/obj/machinery/door/E in A) //dumb, I know, but playing it on the engines doesn't do it justice playsound(E, s, 100, FALSE, max(width, height) - world.view) -/obj/docking_port/mobile/proc/is_in_shuttle_bounds(atom/A) - var/turf/T = get_turf(A) - if(T.z != z) - return FALSE - var/list/bounds= return_coords() - var/turf/T0 = locate(bounds[1],bounds[2],z) - var/turf/T1 = locate(bounds[3],bounds[4],z) - if(T in block(T0,T1)) - return TRUE - return FALSE - // Losing all initial engines should get you 2 // Adding another set of engines at 0.5 time /obj/docking_port/mobile/proc/alter_engines(mod) From 9806de310deece29c70422d238074ee2a717d513 Mon Sep 17 00:00:00 2001 From: Tad Hardesty Date: Fri, 24 Nov 2017 03:05:30 -0800 Subject: [PATCH 074/328] Remove NODROP from water tank misters (#32995) --- code/game/objects/items/tanks/watertank.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index b010f79b00..5f0345aa40 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -93,6 +93,10 @@ else return ..() +/obj/item/watertank/dropped(mob/user) + ..() + remove_noz() + // This mister item is intended as an extension of the watertank and always attached to it. // Therefore, it's designed to be "locked" to the player's hands or extended back onto // the watertank backpack. Allowing it to be placed elsewhere or created without a parent @@ -109,7 +113,7 @@ amount_per_transfer_from_this = 50 possible_transfer_amounts = list(25,50,100) volume = 500 - flags_1 = NODROP_1 | NOBLUDGEON_1 + flags_1 = NOBLUDGEON_1 container_type = OPENCONTAINER_1 slot_flags = 0 @@ -221,7 +225,6 @@ precision = 1 cooling_power = 5 w_class = WEIGHT_CLASS_HUGE - flags_1 = NODROP_1 //Necessary to ensure that the nozzle and tank never separate var/obj/item/watertank/tank var/nozzle_mode = 0 var/metal_synthesis_cooldown = 0 From 12aa356f10203c74e89f27256eef20472f955e5e Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Fri, 24 Nov 2017 06:04:50 -0500 Subject: [PATCH 076/328] Updates some item drops to use drop_location() --- .../miniantags/slaughter/slaughterevent.dm | 2 +- code/game/machinery/iv_drip.dm | 2 +- .../crates_lockers/closets/secure/cargo.dm | 2 +- code/game/objects/structures/girders.dm | 2 +- code/game/turfs/simulated/minerals.dm | 2 +- .../machinery/components/unary_devices/cryo.dm | 4 ++-- code/modules/awaymissions/mission_code/Academy.dm | 14 +++++++------- code/modules/food_and_drinks/food/snacks/meat.dm | 2 +- .../food_and_drinks/kitchen_machinery/juicer.dm | 2 +- code/modules/hydroponics/biogenerator.dm | 2 +- .../mob/living/simple_animal/bot/cleanbot.dm | 2 +- .../mob/living/simple_animal/bot/ed209bot.dm | 10 +++++----- .../mob/living/simple_animal/bot/floorbot.dm | 6 +++--- .../mob/living/simple_animal/bot/honkbot.dm | 6 +++--- .../modules/mob/living/simple_animal/bot/medbot.dm | 6 +++--- .../mob/living/simple_animal/bot/mulebot.dm | 4 ++-- .../modules/mob/living/simple_animal/bot/secbot.dm | 6 +++--- .../reagents/chemistry/machinery/chem_dispenser.dm | 4 ++-- .../reagents/chemistry/machinery/chem_heater.dm | 2 +- .../reagents/chemistry/machinery/pandemic.dm | 12 +++++++++--- 20 files changed, 49 insertions(+), 43 deletions(-) diff --git a/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm b/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm index 4d85744738..f1f9624380 100644 --- a/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm +++ b/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm @@ -32,7 +32,7 @@ return MAP_ERROR var/obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter((pick(spawn_locs))) - var/mob/living/simple_animal/slaughter/S = new /mob/living/simple_animal/slaughter/(holder) + var/mob/living/simple_animal/slaughter/S = new (holder) S.holder = holder player_mind.transfer_to(S) player_mind.assigned_role = "Slaughter Demon" diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index 6c9e11ffa4..198d368d59 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -175,7 +175,7 @@ return if(beaker) - beaker.forceMove(get_turf(src)) + beaker.forceMove(drop_location()) beaker = null update_icon() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm index 4e83a709b9..520c739e55 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm @@ -6,7 +6,7 @@ /obj/structure/closet/secure_closet/quartermaster/PopulateContents() ..() new /obj/item/clothing/neck/cloak/qm(src) - new /obj/item/storage/lockbox/medal/cargo/(src) + new /obj/item/storage/lockbox/medal/cargo(src) new /obj/item/clothing/under/rank/cargo(src) new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/device/radio/headset/headset_cargo(src) diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 3061a9d258..594dba355d 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -408,7 +408,7 @@ /obj/structure/girder/cult/deconstruct(disassembled = TRUE) if(!(flags_1 & NODECONSTRUCT_1)) - new/obj/item/stack/sheet/runed_metal/(get_turf(src), 1) + new /obj/item/stack/sheet/runed_metal(drop_location(), 1) qdel(src) /obj/structure/girder/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm index cbd5b23bf3..2a0147c82a 100644 --- a/code/game/turfs/simulated/minerals.dm +++ b/code/game/turfs/simulated/minerals.dm @@ -451,7 +451,7 @@ stage = GIBTONITE_DETONATE explosion(bombturf,1,2,5, adminlog = 0) if(stage == GIBTONITE_STABLE) //Gibtonite deposit is now benign and extractable. Depending on how close you were to it blowing up before defusing, you get better quality ore. - var/obj/item/twohanded/required/gibtonite/G = new /obj/item/twohanded/required/gibtonite/(src) + var/obj/item/twohanded/required/gibtonite/G = new (src) if(det_time <= 0) G.quality = 3 G.icon_state = "Gibtonite ore 3" diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 11bd241437..b395dad6bd 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -78,7 +78,7 @@ /obj/machinery/atmospherics/components/unary/cryo_cell/on_deconstruction() if(beaker) - beaker.forceMove(loc) + beaker.forceMove(drop_location()) beaker = null /obj/machinery/atmospherics/components/unary/cryo_cell/update_icon() @@ -381,7 +381,7 @@ . = TRUE if("ejectbeaker") if(beaker) - beaker.forceMove(loc) + beaker.forceMove(drop_location()) if(Adjacent(usr) && !issilicon(usr)) usr.put_in_hands(beaker) beaker = null diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index 0aa53ee126..5af834955f 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -230,7 +230,7 @@ user.throw_at(throw_target, 200, 4) if(8) //Fueltank Explosion - explosion(src.loc,-1,0,2, flame_range = 2) + explosion(loc,-1,0,2, flame_range = 2) if(9) //Cold var/datum/disease/D = new /datum/disease/cold @@ -240,7 +240,7 @@ visible_message("[src] roll perfectly.") if(11) //Cookie - var/obj/item/reagent_containers/food/snacks/cookie/C = new(get_turf(src)) + var/obj/item/reagent_containers/food/snacks/cookie/C = new(drop_location()) C.name = "Cookie of Fate" if(12) //Healing @@ -258,13 +258,13 @@ new /obj/item/coin/gold(M) if(14) //Free Gun - new /obj/item/gun/ballistic/revolver/mateba(get_turf(src)) + new /obj/item/gun/ballistic/revolver/mateba(drop_location()) if(15) //Random One-use spellbook - new /obj/item/spellbook/oneuse/random(get_turf(src)) + new /obj/item/spellbook/oneuse/random(drop_location()) if(16) //Servant & Servant Summon - var/mob/living/carbon/human/H = new(get_turf(src)) + var/mob/living/carbon/human/H = new(drop_location()) H.equipOutfit(/datum/outfit/butler) var/datum/mind/servant_mind = new /datum/mind() var/datum/objective/O = new("Serve [user.real_name].") @@ -285,10 +285,10 @@ if(17) //Tator Kit - new /obj/item/storage/box/syndicate/(get_turf(src)) + new /obj/item/storage/box/syndicate(drop_location()) if(18) //Captain ID - new /obj/item/card/id/captains_spare(get_turf(src)) + new /obj/item/card/id/captains_spare(drop_location()) if(19) //Instrinct Resistance to_chat(user, "You feel robust.") diff --git a/code/modules/food_and_drinks/food/snacks/meat.dm b/code/modules/food_and_drinks/food/snacks/meat.dm index 5b9148d16c..e43309892d 100644 --- a/code/modules/food_and_drinks/food/snacks/meat.dm +++ b/code/modules/food_and_drinks/food/snacks/meat.dm @@ -212,7 +212,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/goliath/burn() visible_message("[src] finishes cooking!") - new /obj/item/reagent_containers/food/snacks/meat/steak/goliath/(loc) + new /obj/item/reagent_containers/food/snacks/meat/steak/goliath(loc) qdel(src) /obj/item/reagent_containers/food/snacks/meat/slab/meatwheat diff --git a/code/modules/food_and_drinks/kitchen_machinery/juicer.dm b/code/modules/food_and_drinks/kitchen_machinery/juicer.dm index 0e6a7e9034..08120cc6e4 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/juicer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/juicer.dm @@ -135,7 +135,7 @@ if (!beaker) return src.verbs -= /obj/machinery/juicer/verb/detach - beaker.loc = src.loc + beaker.forceMove(drop_location()) beaker = null update_icon() diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index d46875eb00..3f992d711a 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -294,7 +294,7 @@ /obj/machinery/biogenerator/proc/detach() if(beaker) - beaker.loc = src.loc + beaker.forceMove(drop_location()) beaker = null update_icon() diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index 61c34b0466..4eb225360a 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -257,7 +257,7 @@ /mob/living/simple_animal/bot/cleanbot/explode() on = FALSE visible_message("[src] blows apart!") - var/turf/Tsec = get_turf(src) + var/atom/Tsec = drop_location() new /obj/item/reagent_containers/glass/bucket(Tsec) diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index f2b30a0a3c..62fb2e772c 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -371,24 +371,24 @@ Auto Patrol[]"}, /mob/living/simple_animal/bot/ed209/explode() walk_to(src,0) visible_message("[src] blows apart!") - var/turf/Tsec = get_turf(src) + var/atom/Tsec = drop_location() - var/obj/item/ed209_assembly/Sa = new /obj/item/ed209_assembly(Tsec) + var/obj/item/ed209_assembly/Sa = new (Tsec) Sa.build_step = 1 Sa.add_overlay("hs_hole") Sa.created_name = name new /obj/item/device/assembly/prox_sensor(Tsec) if(!lasercolor) - var/obj/item/gun/energy/e_gun/advtaser/G = new /obj/item/gun/energy/e_gun/advtaser(Tsec) + var/obj/item/gun/energy/e_gun/advtaser/G = new (Tsec) G.cell.charge = 0 G.update_icon() else if(lasercolor == "b") - var/obj/item/gun/energy/laser/bluetag/G = new /obj/item/gun/energy/laser/bluetag(Tsec) + var/obj/item/gun/energy/laser/bluetag/G = new (Tsec) G.cell.charge = 0 G.update_icon() else if(lasercolor == "r") - var/obj/item/gun/energy/laser/redtag/G = new /obj/item/gun/energy/laser/redtag(Tsec) + var/obj/item/gun/energy/laser/redtag/G = new (Tsec) G.cell.charge = 0 G.update_icon() diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index 1ae1c7d3a6..28a64838f7 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -162,7 +162,7 @@ update_controls() /mob/living/simple_animal/bot/floorbot/proc/empty_tiles() - var/turf/Tsec = get_turf(src) + var/atom/Tsec = drop_location() while(specialtiles > initial(tiletype.max_amount)) new tiletype(Tsec,initial(tiletype.max_amount)) @@ -363,9 +363,9 @@ /mob/living/simple_animal/bot/floorbot/explode() on = FALSE visible_message("[src] blows apart!") - var/turf/Tsec = get_turf(src) + var/atom/Tsec = drop_location() - var/obj/item/storage/toolbox/mechanical/N = new /obj/item/storage/toolbox/mechanical(Tsec) + var/obj/item/storage/toolbox/mechanical/N = new (Tsec) N.contents = list() new /obj/item/device/assembly/prox_sensor(Tsec) diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index f41a6138cb..3e15adbfe0 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -327,14 +327,14 @@ Maintenance panel panel is [open ? "opened" : "closed"]"}, walk_to(src,0) visible_message("[src] blows apart!") - var/turf/Tsec = get_turf(src) + var/atom/Tsec = drop_location() //doesn't drop cardboard nor its assembly, since its a very frail material. if(prob(50)) - new /obj/item/bodypart/l_arm/robot/(Tsec) + new /obj/item/bodypart/l_arm/robot(Tsec) new /obj/item/bikehorn(Tsec) new /obj/item/device/assembly/prox_sensor(Tsec) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + var/datum/effect_system/spark_spread/s = new s.set_up(3, 1, src) s.start() diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 06c953a2da..57cad4570f 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -194,7 +194,7 @@ use_beaker = !use_beaker else if(href_list["eject"] && (!isnull(reagent_glass))) - reagent_glass.loc = get_turf(src) + reagent_glass.forceMove(drop_location()) reagent_glass = null else if(href_list["togglevoice"]) @@ -516,7 +516,7 @@ /mob/living/simple_animal/bot/medbot/explode() on = FALSE visible_message("[src] blows apart!") - var/turf/Tsec = get_turf(src) + var/atom/Tsec = drop_location() new /obj/item/storage/firstaid(Tsec) @@ -525,7 +525,7 @@ new /obj/item/device/healthanalyzer(Tsec) if(reagent_glass) - reagent_glass.loc = Tsec + reagent_glass.forceMove(Tsec) reagent_glass = null if(prob(50)) diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index b602e19125..170659ef29 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -697,14 +697,14 @@ /mob/living/simple_animal/bot/mulebot/explode() visible_message("[src] blows apart!") - var/turf/Tsec = get_turf(src) + var/atom/Tsec = drop_location() new /obj/item/device/assembly/prox_sensor(Tsec) new /obj/item/stack/rods(Tsec) new /obj/item/stack/rods(Tsec) new /obj/item/stack/cable_coil/cut(Tsec) if(cell) - cell.loc = Tsec + cell.forceMove(Tsec) cell.update_icon() cell = null diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 4300746901..acef65f545 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -50,7 +50,7 @@ /mob/living/simple_animal/bot/secbot/beepsky/explode() - var/turf/Tsec = get_turf(src) + var/atom/Tsec = drop_location() new /obj/item/stock_parts/cell/potato(Tsec) var/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/S = new(Tsec) S.reagents.add_reagent("whiskey", 15) @@ -399,9 +399,9 @@ Auto Patrol: []"}, walk_to(src,0) visible_message("[src] blows apart!") - var/turf/Tsec = get_turf(src) + var/atom/Tsec = drop_location() - var/obj/item/secbot_assembly/Sa = new /obj/item/secbot_assembly(Tsec) + var/obj/item/secbot_assembly/Sa = new (Tsec) Sa.build_step = 1 Sa.add_overlay("hs_hole") Sa.created_name = name diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index af5597d790..654b9e0e69 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -170,7 +170,7 @@ . = TRUE if("eject") if(beaker) - beaker.forceMove(loc) + beaker.forceMove(drop_location()) beaker = null cut_overlays() . = TRUE @@ -301,7 +301,7 @@ /obj/machinery/chem_dispenser/constructable/on_deconstruction() if(beaker) - beaker.loc = loc + beaker.forceMove(drop_location()) beaker = null /obj/machinery/chem_dispenser/drinks diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm index abe58cb79d..f8d2a66247 100644 --- a/code/modules/reagents/chemistry/machinery/chem_heater.dm +++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm @@ -111,7 +111,7 @@ /obj/machinery/chem_heater/proc/eject_beaker() if(beaker) - beaker.loc = get_turf(src) + beaker.forceMove(drop_location()) beaker.reagents.handle_reactions() beaker = null icon_state = "mixer0b" diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 64731319b6..ae0f4a008a 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -121,7 +121,7 @@ add_overlay("waitlight") /obj/machinery/computer/pandemic/proc/eject_beaker() - beaker.forceMove(get_turf(src)) + beaker.forceMove(drop_location()) beaker = null update_icon() @@ -186,7 +186,7 @@ var/id = get_virus_id_by_index(text2num(params["index"])) var/datum/disease/advance/A = new(FALSE, SSdisease.archive_diseases[id]) var/list/data = list("viruses" = list(A)) - var/obj/item/reagent_containers/glass/bottle/B = new(get_turf(src)) + var/obj/item/reagent_containers/glass/bottle/B = new(drop_location()) B.name = "[A.name] culture bottle" B.desc = "A small bottle. Contains [A.agent] culture in synthblood medium." B.reagents.add_reagent("blood", 20, data) @@ -195,9 +195,15 @@ addtimer(CALLBACK(src, .proc/reset_replicator_cooldown), 50) . = TRUE if("create_vaccine_bottle") +<<<<<<< HEAD var/index = text2num(params["index"]) var/datum/disease/D = SSdisease.archive_diseases[get_virus_id_by_index(index)] var/obj/item/reagent_containers/glass/bottle/B = new(get_turf(src)) +======= + var/id = params["index"] + var/datum/disease/D = SSdisease.archive_diseases[id] + var/obj/item/reagent_containers/glass/bottle/B = new(drop_location()) +>>>>>>> ed12ad4... Updates some item drops to use drop_location() (#32994) B.name = "[D.name] vaccine bottle" B.reagents.add_reagent("vaccine", 15, list(index)) wait = TRUE @@ -237,6 +243,6 @@ /obj/machinery/computer/pandemic/on_deconstruction() if(beaker) - beaker.forceMove(get_turf(src)) + beaker.forceMove(drop_location()) beaker = null . = ..() From fe1d69c35d28bb0a77331601094b5c5eb9546fe5 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Fri, 24 Nov 2017 05:56:22 -0500 Subject: [PATCH 077/328] IRC message if client mob ends up in nullspace (#33004) Only if no admins are online --- code/modules/mob/living/life.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 04a10a9ad6..1f0895a7f5 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -13,9 +13,11 @@ if(!loc) if(client) for(var/obj/effect/landmark/error/E in GLOB.landmarks_list) - loc = E.loc + forceMove(E.loc) break - message_admins("[key_name_admin(src)] was found to have no .loc with an attached client, if the cause is unknown it would be wise to ask how this was accomplished.") + var/msg = "[key_name_admin(src)] was found to have no .loc with an attached client, if the cause is unknown it would be wise to ask how this was accomplished." + message_admins(msg) + send2irc_adminless_only("Mob", msg, R_ADMIN) log_game("[key_name(src)] was found to have no .loc with an attached client.") else return From dc0310eb5db96954bebdc55accdeb79c4413d111 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Fri, 24 Nov 2017 05:53:08 -0500 Subject: [PATCH 079/328] Adds a config to optionally hard reboot DD (#33006) --- .../configuration/entries/config.dm | 4 +++ code/game/world.dm | 28 +++++++++++++++++++ config/config.txt | 3 ++ 3 files changed, 35 insertions(+) diff --git a/code/controllers/configuration/entries/config.dm b/code/controllers/configuration/entries/config.dm index 39739593fc..d7dc0ff84d 100644 --- a/code/controllers/configuration/entries/config.dm +++ b/code/controllers/configuration/entries/config.dm @@ -381,3 +381,7 @@ CONFIG_TWEAK(flag/ValidateAndSet(str_val)) . = ..() if(. && Master.current_runlevel) world.sleep_offline = !value + +CONFIG_DEF(number/rounds_until_hard_restart) + value = -1 + min_val = 0 diff --git a/code/game/world.dm b/code/game/world.dm index 9a72794553..2853bb2ef6 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -1,4 +1,7 @@ +#define RESTART_COUNTER_PATH "data/round_counter.txt" + GLOBAL_VAR(security_mode) +GLOBAL_VAR(restart_counter) GLOBAL_PROTECT(security_mode) /world/New() @@ -31,6 +34,10 @@ GLOBAL_PROTECT(security_mode) GLOB.timezoneOffset = text2num(time2text(0,"hh")) * 36000 + if(fexists(RESTART_COUNTER_PATH)) + GLOB.restart_counter = text2num(trim(file2text(RESTART_COUNTER_PATH))) + fdel(RESTART_COUNTER_PATH) + Master.Initialize(10, FALSE) @@ -161,6 +168,27 @@ GLOBAL_PROTECT(security_mode) else to_chat(world, "Rebooting world...") Master.Shutdown() //run SS shutdowns + + if(SERVER_TOOLS_PRESENT) + var/do_hard_reboot + // check the hard reboot counter + var/ruhr = CONFIG_GET(number/rounds_until_hard_restart) + switch(ruhr) + if(-1) + do_hard_reboot = FALSE + if(0) + do_hard_reboot = TRUE + else + if(GLOB.restart_counter >= ruhr) + do_hard_reboot = TRUE + else + text2file("[++GLOB.restart_counter]", RESTART_COUNTER_PATH) + do_hard_reboot = FALSE + + if(do_hard_reboot) + log_world("World hard rebooted at [time_stamp()]") + SERVER_TOOLS_REBOOT_BYOND + log_world("World rebooted at [time_stamp()]") ..() diff --git a/config/config.txt b/config/config.txt index 34f11a8c7c..a05e463f45 100644 --- a/config/config.txt +++ b/config/config.txt @@ -383,3 +383,6 @@ DISABLE_HIGH_POP_MC_MODE_AMOUNT 60 ## Uncomment to prevent the world from sleeping while no players are connected after initializations #RESUME_AFTER_INITIALIZATIONS + +## Uncomment to set the number of /world/Reboot()s before the DreamDaemon restarts itself. 0 means restart every round. Requires tgstation server tools. +#ROUNDS_UNTIL_HARD_RESTART 10 From 3757be6ce204a11561fecb428b90a4e78a8d5e29 Mon Sep 17 00:00:00 2001 From: MoreRobustThanYou Date: Fri, 24 Nov 2017 05:50:20 -0500 Subject: [PATCH 081/328] Makes reverse pulling only apply to dense objects (#33024) * Makes reverse pulling only apply to dense objects * CACHE CACHE CACHE! --- code/modules/mob/mob_movement.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 39001d6e71..9885d1c4d6 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -186,8 +186,9 @@ if(LAZYLEN(mob.user_movement_hooks)) for(var/obj/O in mob.user_movement_hooks) O.intercept_user_move(direct, mob, n, oldloc) - - if(mob.pulling && !ismob(mob.pulling)) + + var/atom/movable/P = mob.pulling + if(P && !ismob(P) && P.density) mob.dir = turn(mob.dir, 180) /mob/Moved(oldLoc, dir, Forced = FALSE) From 7ea123449becf3042a638a025687a1b2f16eb18f Mon Sep 17 00:00:00 2001 From: Tad Hardesty Date: Fri, 24 Nov 2017 02:49:27 -0800 Subject: [PATCH 083/328] Fix misplaced corners in the Hotel (#33016) --- _maps/RandomRuins/SpaceRuins/spacehotel.dmm | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm index b16a67704b..f4f1711b41 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm @@ -3301,18 +3301,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/ruin/space/has_grav/hotel) -"iX" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hotel) "iY" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3944,7 +3932,7 @@ /area/ruin/space/has_grav/hotel/security) "kP" = ( /obj/effect/turf_decal/stripes/corner{ - dir = 2 + dir = 1 }, /turf/open/floor/plasteel/darkyellow, /area/ruin/space/has_grav/hotel/security) From 850b709afbeb106e4d956bf647d754d3de693a84 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Fri, 24 Nov 2017 05:48:02 -0500 Subject: [PATCH 085/328] Rename LICENSE-GPLv3.txt to OLD_LICENSE-GPLv3.txt (#33009) * Rename LICENSE-GPLv3.txt to OLD_LICENSE-GPLv3.txt * Update license file name in README.md --- LICENSE-GPLv3.txt => OLD_LICENSE-GPLv3.txt | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename LICENSE-GPLv3.txt => OLD_LICENSE-GPLv3.txt (99%) diff --git a/LICENSE-GPLv3.txt b/OLD_LICENSE-GPLv3.txt similarity index 99% rename from LICENSE-GPLv3.txt rename to OLD_LICENSE-GPLv3.txt index 20d40b6bce..94a9ed024d 100644 --- a/LICENSE-GPLv3.txt +++ b/OLD_LICENSE-GPLv3.txt @@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read -. \ No newline at end of file +. diff --git a/README.md b/README.md index d1aa36edba..618f805f94 100644 --- a/README.md +++ b/README.md @@ -140,7 +140,7 @@ All code after [commit 333c566b88108de218d882840e61928a9b759d8f on 2014/31/12 at All code before [commit 333c566b88108de218d882840e61928a9b759d8f on 2014/31/12 at 4:38 PM PST](https://github.com/tgstation/tgstation/commit/333c566b88108de218d882840e61928a9b759d8f) is licensed under [GNU GPL v3](https://www.gnu.org/licenses/gpl-3.0.html). (Including tools unless their readme specifies otherwise.) -See LICENSE and LICENSE-GPLv3.txt for more details. +See LICENSE and OLD_LICENSE-GPLv3.txt for more details. tgui clientside is licensed as a subproject under the MIT license. Font Awesome font files, used by tgui, are licensed under the SIL Open Font License v1.1 From a29d4a5d113dc7d0189893f292190381b6f03962 Mon Sep 17 00:00:00 2001 From: Cruix Date: Fri, 24 Nov 2017 04:47:11 -0600 Subject: [PATCH 087/328] Fixed mobs getting rotated by shuttles even if they are not moved (#33026) --- code/modules/shuttle/on_move.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index 2c48d18e6e..51c62029e0 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -270,6 +270,8 @@ All ShuttleMove procs go here . = ..() /mob/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) + if(!move_on_shuttle) + return . = ..() if(client && movement_force) var/shake_force = max(movement_force["THROW"], movement_force["KNOCKDOWN"]) From 2762e3b530d4cca40a583c2926bd1b617ce90b8b Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Fri, 24 Nov 2017 05:45:47 -0500 Subject: [PATCH 089/328] Fixes Lord Singuloth hungering for more than he should --- code/datums/beam.dm | 5 + .../clock_effects/city_of_cogs_rift.dm | 7 + .../clock_cult/clock_effects/clock_overlay.dm | 5 + .../clock_effects/general_markers.dm | 6 + .../clock_effects/servant_blocker.dm | 6 + .../clock_effects/spatial_gateway.dm | 8 + .../clock_cult/clock_items/judicial_visor.dm | 6 + code/game/gamemodes/cult/cult_structures.dm | 6 + code/game/gamemodes/wizard/artefact.dm | 6 + code/game/objects/effects/bump_teleporter.dm | 22 ++ code/game/objects/effects/countdown.dm | 6 + code/game/objects/effects/effects.dm | 6 + code/game/objects/effects/forcefields.dm | 3 + code/game/objects/effects/misc.dm | 6 + code/game/objects/effects/portals.dm | 6 + code/game/objects/effects/step_triggers.dm | 196 ++++++++++++++++++ code/game/objects/items/chrono_eraser.dm | 3 + code/modules/admin/sound_emitter.dm | 3 + .../atmospherics/environmental/LINDA_fire.dm | 3 + .../modules/clothing/spacesuits/chronosuit.dm | 6 + code/modules/events/immovable_rod.dm | 6 + code/modules/flufftext/Hallucination.dm | 6 + code/modules/mining/fulton.dm | 6 + .../mining/lavaland/necropolis_chests.dm | 2 +- code/modules/mining/mine_items.dm | 6 + .../simple_animal/guardian/types/ranged.dm | 6 + .../particle_accelerator/particle.dm | 3 + code/modules/projectiles/guns/beam_rifle.dm | 6 + code/modules/projectiles/projectile/energy.dm | 6 + code/modules/spells/spell.dm | 6 + .../spell_types/spacetime_distortion.dm | 6 + 31 files changed, 373 insertions(+), 1 deletion(-) diff --git a/code/datums/beam.dm b/code/datums/beam.dm index 3276a5f5b9..252a305af2 100644 --- a/code/datums/beam.dm +++ b/code/datums/beam.dm @@ -149,6 +149,11 @@ owner = null return ..() +/obj/effect/ebeam/singularity_pull() + return +/obj/effect/ebeam/singularity_act() + return + /atom/proc/Beam(atom/BeamTarget,icon_state="b_beam",icon='icons/effects/beam.dmi',time=50, maxdistance=10,beam_type=/obj/effect/ebeam,beam_sleep_time = 3) var/datum/beam/newbeam = new(src,BeamTarget,icon,icon_state,time,maxdistance,beam_type,beam_sleep_time) INVOKE_ASYNC(newbeam, /datum/beam/.proc/Start) diff --git a/code/game/gamemodes/clock_cult/clock_effects/city_of_cogs_rift.dm b/code/game/gamemodes/clock_cult/clock_effects/city_of_cogs_rift.dm index e41acb421a..ab47f1af55 100644 --- a/code/game/gamemodes/clock_cult/clock_effects/city_of_cogs_rift.dm +++ b/code/game/gamemodes/clock_cult/clock_effects/city_of_cogs_rift.dm @@ -10,6 +10,13 @@ light_power = 3 light_color = "#6A4D2F" + +/obj/effect/clockwork/city_of_cogs_rift/singularity_act() + return + +/obj/effect/clockwork/city_of_cogs_rift/singularity_pull() + return + /obj/effect/clockwork/city_of_cogs_rift/Initialize() . = ..() visible_message("The air above [loc] shimmers and pops as a [name] forms there!") diff --git a/code/game/gamemodes/clock_cult/clock_effects/clock_overlay.dm b/code/game/gamemodes/clock_cult/clock_effects/clock_overlay.dm index e8cba1a39d..f3de8d04a8 100644 --- a/code/game/gamemodes/clock_cult/clock_effects/clock_overlay.dm +++ b/code/game/gamemodes/clock_cult/clock_effects/clock_overlay.dm @@ -10,6 +10,11 @@ /obj/effect/clockwork/overlay/ex_act() return FALSE +/obj/effect/clockwork/overlay/singularity_act() + return +/obj/effect/clockwork/overlay/singularity_pull() + return + /obj/effect/clockwork/overlay/singularity_pull(S, current_size) return diff --git a/code/game/gamemodes/clock_cult/clock_effects/general_markers.dm b/code/game/gamemodes/clock_cult/clock_effects/general_markers.dm index a3465fac05..6e6704a68c 100644 --- a/code/game/gamemodes/clock_cult/clock_effects/general_markers.dm +++ b/code/game/gamemodes/clock_cult/clock_effects/general_markers.dm @@ -11,6 +11,12 @@ animate(src, alpha = 0, time = 10) QDEL_IN(src, 10) +/obj/effect/clockwork/general_marker/singularity_act() + return + +/obj/effect/clockwork/general_marker/singularity_pull() + return + /obj/effect/clockwork/general_marker/inathneq name = "Inath-neq, the Resonant Cogwheel" desc = "A humanoid form blazing with blue fire. It radiates an aura of kindness and caring." diff --git a/code/game/gamemodes/clock_cult/clock_effects/servant_blocker.dm b/code/game/gamemodes/clock_cult/clock_effects/servant_blocker.dm index 988c00b2f5..194747cefc 100644 --- a/code/game/gamemodes/clock_cult/clock_effects/servant_blocker.dm +++ b/code/game/gamemodes/clock_cult/clock_effects/servant_blocker.dm @@ -18,3 +18,9 @@ to_chat(L, "The space beyond here can't be accessed by you or other servants.") return return TRUE + +/obj/effect/clockwork/servant_blocker/singularity_act() + return + +/obj/effect/clockwork/servant_blocker/singularity_pull() + return diff --git a/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm b/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm index cbfe5d043c..50076e0919 100644 --- a/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm +++ b/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm @@ -109,6 +109,14 @@ return TRUE return FALSE + +/obj/effect/clockwork/spatial_gateway/singularity_act() + return + +/obj/effect/clockwork/spatial_gateway/singularity_pull() + return + + /obj/effect/clockwork/spatial_gateway/CollidedWith(atom/movable/AM) ..() if(!QDELETED(AM)) diff --git a/code/game/gamemodes/clock_cult/clock_items/judicial_visor.dm b/code/game/gamemodes/clock_cult/clock_items/judicial_visor.dm index 51ffdd9e10..4f6485310b 100644 --- a/code/game/gamemodes/clock_cult/clock_items/judicial_visor.dm +++ b/code/game/gamemodes/clock_cult/clock_items/judicial_visor.dm @@ -162,6 +162,12 @@ user = caster INVOKE_ASYNC(src, .proc/judicialblast) +/obj/effect/clockwork/judicial_marker/singularity_act() + return + +/obj/effect/clockwork/judicial_marker/singularity_pull() + return + /obj/effect/clockwork/judicial_marker/proc/judicialblast() playsound(src, 'sound/magic/magic_missile.ogg', 50, 1, 1, 1) flick("judicial_marker", src) diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index 2dcaf23bc6..440dfaede6 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -240,3 +240,9 @@ icon_state = "hole" density = TRUE anchored = TRUE + +/obj/effect/gateway/singularity_act() + return + +/obj/effect/gateway/singularity_pull() + return diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 3007ec51ba..cd50f52d5f 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -66,6 +66,12 @@ else return ..() +/obj/effect/rend/singularity_pull() + return + +/obj/effect/rend/singularity_pull() + return + /obj/item/veilrender/vealrender name = "veal render" desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast farm." diff --git a/code/game/objects/effects/bump_teleporter.dm b/code/game/objects/effects/bump_teleporter.dm index 5ba643e943..5e17ee9e89 100644 --- a/code/game/objects/effects/bump_teleporter.dm +++ b/code/game/objects/effects/bump_teleporter.dm @@ -7,6 +7,7 @@ invisibility = INVISIBILITY_ABSTRACT //nope, can't see this anchored = TRUE density = TRUE +<<<<<<< HEAD opacity = 0 var/static/list/AllTeleporters @@ -19,6 +20,27 @@ LAZYREMOVE(AllTeleporters, src) return ..() +======= + opacity = 0 + + var/static/list/AllTeleporters + +/obj/effect/bump_teleporter/New() + ..() + LAZYADD(AllTeleporters, src) + +/obj/effect/bump_teleporter/Destroy() + LAZYREMOVE(AllTeleporters, src) + return ..() + + +/obj/effect/bump_teleporter/singularity_act() + return + +/obj/effect/bump_teleporter/singularity_pull() + return + +>>>>>>> f912b6e... Fixes Lord Singuloth hungering for more than he should (#33025) /obj/effect/bump_teleporter/CollidedWith(atom/movable/AM) if(!ismob(AM)) return diff --git a/code/game/objects/effects/countdown.dm b/code/game/objects/effects/countdown.dm index f4b67b7df2..8448e2a7e7 100644 --- a/code/game/objects/effects/countdown.dm +++ b/code/game/objects/effects/countdown.dm @@ -154,3 +154,9 @@ else var/time_left = max(0, (A.death_time - world.time) / 10) return round(time_left) + +/obj/effect/countdown/singularity_pull() + return + +/obj/effect/countdown/singularity_act() + return diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm index d5f8e28d2a..2b456b2ed7 100644 --- a/code/game/objects/effects/effects.dm +++ b/code/game/objects/effects/effects.dm @@ -56,3 +56,9 @@ /obj/effect/abstract/singularity_act() return + +/obj/effect/dummy/singularity_pull() + return + +/obj/effect/dummy/singularity_act() + return diff --git a/code/game/objects/effects/forcefields.dm b/code/game/objects/effects/forcefields.dm index 024fb4b4ea..edf7b4f519 100644 --- a/code/game/objects/effects/forcefields.dm +++ b/code/game/objects/effects/forcefields.dm @@ -7,6 +7,9 @@ density = TRUE CanAtmosPass = ATMOS_PASS_DENSITY +/obj/effect/forcefield/singularity_pull() + return + /obj/effect/forcefield/cult desc = "An unholy shield that blocks all attacks." name = "glowing wall" diff --git a/code/game/objects/effects/misc.dm b/code/game/objects/effects/misc.dm index cadee92161..d7d36acde1 100644 --- a/code/game/objects/effects/misc.dm +++ b/code/game/objects/effects/misc.dm @@ -12,6 +12,12 @@ var/def_zone pass_flags = PASSTABLE +/obj/effect/beam/singularity_act() + return + +/obj/effect/beam/singularity_pull() + return + /obj/effect/spawner name = "object spawner" diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index f932ec9830..427e9eefe2 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -75,6 +75,12 @@ if(isturf(hard_target_override)) hard_target = hard_target_override +/obj/effect/portal/singularity_pull() + return + +/obj/effect/portal/singularity_act() + return + /obj/effect/portal/proc/link_portal(obj/effect/portal/newlink) linked = newlink if(atmos_link) diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index 93faacbf68..229dfc56de 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -6,6 +6,7 @@ var/mobs_only = FALSE invisibility = INVISIBILITY_ABSTRACT // nope cant see this shit anchored = TRUE +<<<<<<< HEAD /obj/effect/step_trigger/proc/Trigger(atom/movable/A) return 0 @@ -192,3 +193,198 @@ if(happens_once) qdel(src) +======= + +/obj/effect/step_trigger/proc/Trigger(atom/movable/A) + return 0 + +/obj/effect/step_trigger/Crossed(H as mob|obj) + ..() + if(!H) + return + if(isobserver(H) && !affect_ghosts) + return + if(!ismob(H) && mobs_only) + return + Trigger(H) + + +/obj/effect/step_trigger/singularity_act() + return + +/obj/effect/step_trigger/singularity_pull() + return + +/* Sends a message to mob when triggered*/ + +/obj/effect/step_trigger/message + var/message //the message to give to the mob + var/once = 1 + mobs_only = TRUE + +/obj/effect/step_trigger/message/Trigger(mob/M) + if(M.client) + to_chat(M, "[message]") + if(once) + qdel(src) + +/* Tosses things in a certain direction */ + +/obj/effect/step_trigger/thrower + var/direction = SOUTH // the direction of throw + var/tiles = 3 // if 0: forever until atom hits a stopper + var/immobilize = 1 // if nonzero: prevents mobs from moving while they're being flung + var/speed = 1 // delay of movement + var/facedir = 0 // if 1: atom faces the direction of movement + var/nostop = 0 // if 1: will only be stopped by teleporters + var/list/affecting = list() + +/obj/effect/step_trigger/thrower/Trigger(atom/A) + if(!A || !ismovableatom(A)) + return + var/atom/movable/AM = A + var/curtiles = 0 + var/stopthrow = 0 + for(var/obj/effect/step_trigger/thrower/T in orange(2, src)) + if(AM in T.affecting) + return + + if(ismob(AM)) + var/mob/M = AM + if(immobilize) + M.canmove = 0 + + affecting.Add(AM) + while(AM && !stopthrow) + if(tiles) + if(curtiles >= tiles) + break + if(AM.z != src.z) + break + + curtiles++ + + sleep(speed) + + // Calculate if we should stop the process + if(!nostop) + for(var/obj/effect/step_trigger/T in get_step(AM, direction)) + if(T.stopper && T != src) + stopthrow = 1 + else + for(var/obj/effect/step_trigger/teleporter/T in get_step(AM, direction)) + if(T.stopper) + stopthrow = 1 + + if(AM) + var/predir = AM.dir + step(AM, direction) + if(!facedir) + AM.setDir(predir) + + + + affecting.Remove(AM) + + if(ismob(AM)) + var/mob/M = AM + if(immobilize) + M.canmove = 1 + +/* Stops things thrown by a thrower, doesn't do anything */ + +/obj/effect/step_trigger/stopper + +/* Instant teleporter */ + +/obj/effect/step_trigger/teleporter + var/teleport_x = 0 // teleportation coordinates (if one is null, then no teleport!) + var/teleport_y = 0 + var/teleport_z = 0 + +/obj/effect/step_trigger/teleporter/Trigger(atom/movable/A) + if(teleport_x && teleport_y && teleport_z) + + A.x = teleport_x + A.y = teleport_y + A.z = teleport_z + +/* Random teleporter, teleports atoms to locations ranging from teleport_x - teleport_x_offset, etc */ + +/obj/effect/step_trigger/teleporter/random + var/teleport_x_offset = 0 + var/teleport_y_offset = 0 + var/teleport_z_offset = 0 + +/obj/effect/step_trigger/teleporter/random/Trigger(atom/movable/A) + if(teleport_x && teleport_y && teleport_z) + if(teleport_x_offset && teleport_y_offset && teleport_z_offset) + + A.x = rand(teleport_x, teleport_x_offset) + A.y = rand(teleport_y, teleport_y_offset) + A.z = rand(teleport_z, teleport_z_offset) + +/* Fancy teleporter, creates sparks and smokes when used */ + +/obj/effect/step_trigger/teleport_fancy + var/locationx + var/locationy + var/uses = 1 //0 for infinite uses + var/entersparks = 0 + var/exitsparks = 0 + var/entersmoke = 0 + var/exitsmoke = 0 + +/obj/effect/step_trigger/teleport_fancy/Trigger(mob/M) + var/dest = locate(locationx, locationy, z) + M.Move(dest) + + if(entersparks) + var/datum/effect_system/spark_spread/s = new + s.set_up(4, 1, src) + s.start() + if(exitsparks) + var/datum/effect_system/spark_spread/s = new + s.set_up(4, 1, dest) + s.start() + + if(entersmoke) + var/datum/effect_system/smoke_spread/s = new + s.set_up(4, 1, src, 0) + s.start() + if(exitsmoke) + var/datum/effect_system/smoke_spread/s = new + s.set_up(4, 1, dest, 0) + s.start() + + uses-- + if(uses == 0) + qdel(src) + +/* Simple sound player, Mapper friendly! */ + +/obj/effect/step_trigger/sound_effect + var/sound //eg. path to the sound, inside '' eg: 'growl.ogg' + var/volume = 100 + var/freq_vary = 1 //Should the frequency of the sound vary? + var/extra_range = 0 // eg World.view = 7, extra_range = 1, 7+1 = 8, 8 turfs radius + var/happens_once = 0 + var/triggerer_only = 0 //Whether the triggerer is the only person who hears this + + +/obj/effect/step_trigger/sound_effect/Trigger(atom/movable/A) + var/turf/T = get_turf(A) + + if(!T) + return + + if(triggerer_only && ismob(A)) + var/mob/B = A + B.playsound_local(T, sound, volume, freq_vary) + else + playsound(T, sound, volume, freq_vary, extra_range) + + if(happens_once) + qdel(src) + +>>>>>>> f912b6e... Fixes Lord Singuloth hungering for more than he should (#33025) diff --git a/code/game/objects/items/chrono_eraser.dm b/code/game/objects/items/chrono_eraser.dm index 6f1ab39013..d65ef6fc2a 100644 --- a/code/game/objects/items/chrono_eraser.dm +++ b/code/game/objects/items/chrono_eraser.dm @@ -252,6 +252,9 @@ /obj/effect/chrono_field/singularity_act() return +/obj/effect/chrono_field/singularity_pull() + return + /obj/effect/chrono_field/ex_act() return diff --git a/code/modules/admin/sound_emitter.dm b/code/modules/admin/sound_emitter.dm index 129c6c92c8..b7ec8c36b5 100644 --- a/code/modules/admin/sound_emitter.dm +++ b/code/modules/admin/sound_emitter.dm @@ -30,6 +30,9 @@ /obj/effect/sound_emitter/singularity_act() return +/obj/effect/sound_emitter/singularity_pull() + return + /obj/effect/sound_emitter/examine(mob/user) ..() if(!isobserver(user)) diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm index ca234308d8..d0c0979366 100644 --- a/code/modules/atmospherics/environmental/LINDA_fire.dm +++ b/code/modules/atmospherics/environmental/LINDA_fire.dm @@ -179,6 +179,9 @@ var/mob/living/L = AM L.fire_act(temperature, volume) +/obj/effect/hotspot/singularity_pull() + return + /obj/effect/dummy/fire name = "fire" desc = "OWWWWWW. IT BURNS. Tell a coder if you're seeing this." diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index c5a4f3a58a..a2b5a864c4 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -252,6 +252,12 @@ var/obj/screen/chronos_target/target_ui = null var/obj/item/clothing/suit/space/chronos/chronosuit +/obj/effect/chronos_cam/singularity_act() + return + +/obj/effect/chronos_cam/singularity_pull() + return + /obj/effect/chronos_cam/proc/create_target_ui() if(holder && holder.client && chronosuit) if(target_ui) diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm index 3b0cb1921a..b933e566be 100644 --- a/code/modules/events/immovable_rod.dm +++ b/code/modules/events/immovable_rod.dm @@ -68,6 +68,12 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 /obj/effect/immovablerod/ex_act(severity, target) return 0 +/obj/effect/immovablerod/singularity_act() + return + +/obj/effect/immovablerod/singularity_pull() + return + /obj/effect/immovablerod/Collide(atom/clong) if(prob(10)) playsound(src, 'sound/effects/bang.ogg', 50, 1) diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 749b98c09a..866b763fe6 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -98,6 +98,12 @@ GLOBAL_LIST_INIT(hallucinations_major, list( var/image_layer = MOB_LAYER var/active = TRUE //qdelery +/obj/effect/hallucination/singularity_pull() + return + +/obj/effect/hallucination/singularity_act() + return + /obj/effect/hallucination/simple/Initialize(mapload, var/mob/living/carbon/T) . = ..() target = T diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm index ecbd8a4135..743e84aca4 100644 --- a/code/modules/mining/fulton.dm +++ b/code/modules/mining/fulton.dm @@ -183,3 +183,9 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) if(L.stat != DEAD) return 1 return 0 + +/obj/effect/extraction_holder/singularity_pull() + return + +/obj/effect/extraction_holder/singularity_pull() + return diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index d7fca5c84f..18eb52c8f8 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -366,7 +366,7 @@ return /obj/effect/immortality_talisman/singularity_pull() - return 0 + return /obj/effect/immortality_talisman/Destroy(force) if(!can_destroy && !force) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 9625a47cf8..8d36922bdf 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -12,6 +12,12 @@ ..() set_light(set_luminosity, set_cap) +/obj/effect/light_emitter/singularity_pull() + return + +/obj/effect/light_emitter/singularity_act() + return + /**********************Miner Lockers**************************/ /obj/structure/closet/wardrobe/miner diff --git a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm index e3792d40ba..ccec94bea8 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm @@ -117,3 +117,9 @@ var/list/guardians = spawner.summoner.hasparasites() for(var/para in guardians) to_chat(para, "[AM] has crossed surveillance snare, [name].") + +/obj/effect/snare/singularity_act() + return + +/obj/effect/snare/singularity_pull() + return diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm index f04c61426b..2756d879d1 100644 --- a/code/modules/power/singularity/particle_accelerator/particle.dm +++ b/code/modules/power/singularity/particle_accelerator/particle.dm @@ -51,6 +51,9 @@ /obj/effect/accelerated_particle/ex_act(severity, target) qdel(src) +/obj/effect/accelerated_particle/singularity_pull() + return + /obj/effect/accelerated_particle/proc/toxmob(mob/living/M) M.rad_act(energy*6) diff --git a/code/modules/projectiles/guns/beam_rifle.dm b/code/modules/projectiles/guns/beam_rifle.dm index f2d99bc849..a88e271056 100644 --- a/code/modules/projectiles/guns/beam_rifle.dm +++ b/code/modules/projectiles/guns/beam_rifle.dm @@ -772,3 +772,9 @@ icon_icon = 'icons/mob/actions/actions_items.dmi' button_icon_state = "zoom_mode" background_icon_state = "bg_tech" + +/obj/effect/projectile_beam/singularity_pull() + return + +/obj/effect/projectile_beam/singularity_act() + return diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 4bf6ea43b1..d19079d563 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -86,6 +86,12 @@ qdel(src) +/obj/effect/nettingportal/singularity_act() + return + +/obj/effect/nettingportal/singularity_pull() + return + /obj/item/projectile/energy/trap name = "energy snare" diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index e8d65cae9f..85956b0c6d 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -38,6 +38,12 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th remove_ranged_ability() return ..() +/obj/effect/proc_holder/singularity_act() + return + +/obj/effect/proc_holder/singularity_pull() + return + /obj/effect/proc_holder/proc/InterceptClickOn(mob/living/caller, params, atom/A) if(caller.ranged_ability != src || ranged_ability_user != caller) //I'm not actually sure how these would trigger, but, uh, safety, I guess? to_chat(caller, "[caller.ranged_ability.name] has been disabled.") diff --git a/code/modules/spells/spell_types/spacetime_distortion.dm b/code/modules/spells/spell_types/spacetime_distortion.dm index 25b170745f..ed6abe1410 100644 --- a/code/modules/spells/spell_types/spacetime_distortion.dm +++ b/code/modules/spells/spell_types/spacetime_distortion.dm @@ -73,6 +73,12 @@ var/sound var/walks_left = 50 //prevents the game from hanging in extreme cases (such as minigun fire) +/obj/effect/cross_action/singularity_act() + return + +/obj/effect/cross_action/singularity_pull() + return + /obj/effect/cross_action/spacetime_dist/Initialize(mapload) . = ..() sound = "sound/guitar/[safepick(GLOB.guitar_notes)]" From a45d889fd6f6c0865005fdbf581d77cff1f4bdf4 Mon Sep 17 00:00:00 2001 From: Leo Date: Fri, 24 Nov 2017 18:05:41 -0200 Subject: [PATCH 090/328] Merge pull request #32891 from CosmicScientist/bolas Re-enables bolas in crafting --- code/modules/crafting/recipes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 99e6a695dd..0378d44809 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -91,7 +91,7 @@ reqs = list(/obj/item/restraints/handcuffs/cable = 1, /obj/item/stack/sheet/metal = 6) time = 20//15 faster than crafting them by hand! - category= CAT_WEAPON + category= CAT_WEAPONRY subcategory = CAT_WEAPON /datum/crafting_recipe/tailclub From e9daba0cd3a5e80c233e7214ee40e45631904776 Mon Sep 17 00:00:00 2001 From: Leo Date: Fri, 24 Nov 2017 18:10:12 -0200 Subject: [PATCH 092/328] Merge pull request #32984 from ninjanomnom/thermite-burns Fixes thermite burning lava --- code/datums/components/thermite.dm | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/code/datums/components/thermite.dm b/code/datums/components/thermite.dm index 7418e5d7b4..f76178213d 100644 --- a/code/datums/components/thermite.dm +++ b/code/datums/components/thermite.dm @@ -3,13 +3,30 @@ var/amount var/overlay - var/static/list/blacklist = typecacheof(/turf/closed/wall/mineral/diamond) - var/static/list/resistlist = typecacheof(/turf/closed/wall/r_wall) + var/static/list/blacklist = typecacheof( + /turf/open/lava, + /turf/open/space, + /turf/open/water, + /turf/open/chasm, + ) + + var/static/list/immunelist = typecacheof( + /turf/closed/wall/mineral/diamond, + /turf/closed/indestructible, + /turf/open/indestructible, + ) + + var/static/list/resistlist = typecacheof( + /turf/closed/wall/r_wall, + ) /datum/component/thermite/Initialize(_amount) if(!istype(parent, /turf)) - return COMPONENT_INCOMPATIBLE + . = COMPONENT_INCOMPATIBLE + CRASH("A thermite component has been applied to an incorrect object. parent: [parent]") if(blacklist[parent.type]) + return COMPONENT_INCOMPATIBLE + if(immunelist[parent.type]) _amount*=0 //Yeah the overlay can still go on it and be cleaned but you arent burning down a diamond wall if(resistlist[parent.type]) _amount*=0.25 From 541b8db6842c9b8597120dc2e0211a6f622ac040 Mon Sep 17 00:00:00 2001 From: Leo Date: Fri, 24 Nov 2017 18:10:55 -0200 Subject: [PATCH 094/328] Merge pull request #32985 from YPOQ/airlockfix Fixes AIs being unable to interact with unscrewed airlocks --- code/game/machinery/doors/airlock.dm | 1 + code/modules/power/apc.dm | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 465f74f05e..449b9ea8a4 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -49,6 +49,7 @@ var/normal_integrity = AIRLOCK_INTEGRITY_N integrity_failure = 70 damage_deflection = AIRLOCK_DAMAGE_DEFLECTION_N + interact_open = TRUE var/security_level = 0 //How much are wires secured var/aiControlDisabled = 0 //If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in. diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 35d104819f..815da3fbdb 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -49,6 +49,7 @@ max_integrity = 200 integrity_failure = 50 resistance_flags = FIRE_PROOF + interact_open = TRUE var/lon_range = 1.5 var/area/area @@ -657,7 +658,7 @@ wires.interact(user) else return ..() - + /obj/machinery/power/apc/AltClick(mob/user) ..() if(!issilicon(user) && (!user.canUseTopic(src, be_close=TRUE) || !isturf(loc))) @@ -665,7 +666,7 @@ return else togglelock(user) - + /obj/machinery/power/apc/proc/togglelock(mob/living/user) if(emagged) to_chat(user, "The interface is broken!") From 521277292d3589931d3172543d4c8a93a0cb07a5 Mon Sep 17 00:00:00 2001 From: Leo Date: Fri, 24 Nov 2017 18:12:44 -0200 Subject: [PATCH 096/328] Revises the_station_areas list --- code/controllers/subsystem/mapping.dm | 14 ++++++++++++++ code/game/area/Space_Station_13_areas.dm | 5 ++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 03b7cdc095..6b394c3a1f 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -62,6 +62,7 @@ SUBSYSTEM_DEF(mapping) repopulate_sorted_areas() // Set up Z-level transistions. setup_map_transitions() + generate_station_area_list() ..() /* Nuke threats, for making the blue tiles on the station go RED @@ -139,6 +140,19 @@ SUBSYSTEM_DEF(mapping) INIT_ANNOUNCE(msg) #undef INIT_ANNOUNCE +GLOBAL_LIST_EMPTY(the_station_areas) + +/datum/controller/subsystem/mapping/proc/generate_station_area_list() + var/list/station_areas_blacklist = typecacheof(list(/area/space, /area/mine, /area/ruin)) + for(var/area/A in world) + var/turf/picked = safepick(get_area_turfs(A.type)) + if(picked && (picked.z in GLOB.station_z_levels)) + if(!(A.type in GLOB.the_station_areas) && !is_type_in_typecache(A, station_areas_blacklist)) + GLOB.the_station_areas.Add(A.type) + + if(!GLOB.the_station_areas.len) + log_world("ERROR: Station areas list failed to generate!") + /datum/controller/subsystem/mapping/proc/maprotate() var/players = GLOB.clients.len var/list/mapvotes = list() diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm index b17fe26898..e1d650eba4 100644 --- a/code/game/area/Space_Station_13_areas.dm +++ b/code/game/area/Space_Station_13_areas.dm @@ -1486,6 +1486,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/tcommsat/lounge name = "Telecommunications Satellite Lounge" icon_state = "tcomsatlounge" +<<<<<<< HEAD ///////////////////////////////////////////////////////////////////// /* @@ -1518,4 +1519,6 @@ GLOBAL_LIST_INIT(the_station_areas, list ( /area/ai_monitored/turret_protected/ai_upload, //do not try to simplify to "/area/ai_monitored/turret_protected" --rastaf0 /area/ai_monitored/turret_protected/ai_upload_foyer, /area/ai_monitored/turret_protected/ai, -)) \ No newline at end of file +)) +======= +>>>>>>> 3d28b08... Merge pull request #32998 from ShizCalev/area-list From 5d53a5dc75b9e66aa8726d3af428dcb2e53f4bde Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Fri, 24 Nov 2017 12:50:46 -0800 Subject: [PATCH 097/328] Update cit_guns.dm --- code/citadel/cit_guns.dm | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/code/citadel/cit_guns.dm b/code/citadel/cit_guns.dm index 3d08eaeba1..1068d490f1 100644 --- a/code/citadel/cit_guns.dm +++ b/code/citadel/cit_guns.dm @@ -215,7 +215,7 @@ damage = 15 armour_penetration = 10 light_range = 2 - speed = 1.2 + speed = 0.6 range = 25 light_color = LIGHT_COLOR_RED @@ -224,10 +224,10 @@ icon_state = "magjectile-nl" damage = 1 knockdown = 0 - stamina = 30 + stamina = 25 armour_penetration = -10 light_range = 2 - speed = 1.2 + speed = 0.7 range = 25 light_color = LIGHT_COLOR_BLUE @@ -257,7 +257,7 @@ origin_tech = "magnets=5" ammo_type = /obj/item/ammo_casing/caseless/anlmags caliber = "mags" - max_ammo = 7 + max_ammo = 15 multiple_sprites = 2 /obj/item/ammo_box/magazine/mmag/small/lethal @@ -279,7 +279,7 @@ mag_type = /obj/item/ammo_box/magazine/mmag/small can_suppress = 0 casing_ejector = 0 - fire_delay = 5 + fire_delay = 2 origin_tech = "combat=4;magnets=4" /obj/item/gun/ballistic/automatic/pistol/mag/update_icon() @@ -389,7 +389,7 @@ damage = 20 armour_penetration = 25 light_range = 3 - speed = 1.2 + speed = 0.7 range = 35 light_color = LIGHT_COLOR_RED @@ -398,10 +398,10 @@ icon_state = "magjectile-large-nl" damage = 0 knockdown = 0 - stamina = 35 + stamina = 20 armour_penetration = -10 light_range = 3 - speed = 1.0 + speed = 0.65 range = 35 light_color = LIGHT_COLOR_BLUE @@ -430,7 +430,7 @@ origin_tech = "magnets=6" ammo_type = /obj/item/ammo_casing/caseless/anlmagm caliber = "magm" - max_ammo = 15 + max_ammo = 27 multiple_sprites = 2 /obj/item/ammo_box/magazine/mmag/lethal @@ -439,6 +439,7 @@ icon_state = "mediummagmag" origin_tech = "combat=6" ammo_type = /obj/item/ammo_casing/caseless/amagm + max_ammo = 21 ///the gun itself/// @@ -455,7 +456,7 @@ can_suppress = 0 burst_size = 3 fire_delay = 2 - spread = 30 + spread = 20 recoil = 1 casing_ejector = 0 From a12a12b55085db852d918c5f7e4f479e22fc7834 Mon Sep 17 00:00:00 2001 From: Armhulen Date: Fri, 24 Nov 2017 13:20:37 -0800 Subject: [PATCH 098/328] comma splice and ellipsis grammar fix (#33040) * :*) * i think this fixes splice --- code/modules/mob/living/simple_animal/spawner.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/simple_animal/spawner.dm b/code/modules/mob/living/simple_animal/spawner.dm index 33eade6014..4e136e6aa6 100644 --- a/code/modules/mob/living/simple_animal/spawner.dm +++ b/code/modules/mob/living/simple_animal/spawner.dm @@ -57,7 +57,7 @@ /mob/living/simple_animal/hostile/spawner/skeleton name = "bone pit" - desc = "A pit full of bones, some still seem to be moving.." + desc = "A pit full of bones, and some still seem to be moving..." icon_state = "hole" icon_living = "hole" icon = 'icons/mob/nest.dmi' @@ -102,4 +102,4 @@ /mob/living/simple_animal/hostile/spawner/mining/wumborian name = "wumborian fugu den" desc = "A den housing a nest of wumborian fugus, how do they all even fit in there?" - mob_type = /mob/living/simple_animal/hostile/asteroid/fugu \ No newline at end of file + mob_type = /mob/living/simple_animal/hostile/asteroid/fugu From c43dc3ab7a058da051d579d97b8f9df1a84a8c38 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 24 Nov 2017 17:39:59 -0500 Subject: [PATCH 100/328] Update Space_Station_13_areas.dm --- code/game/area/Space_Station_13_areas.dm | 36 ------------------------ 1 file changed, 36 deletions(-) diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm index e1d650eba4..c3296175fb 100644 --- a/code/game/area/Space_Station_13_areas.dm +++ b/code/game/area/Space_Station_13_areas.dm @@ -1486,39 +1486,3 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/tcommsat/lounge name = "Telecommunications Satellite Lounge" icon_state = "tcomsatlounge" -<<<<<<< HEAD - -///////////////////////////////////////////////////////////////////// -/* - Lists of areas to be used with is_type_in_list. - Used in gamemodes code at the moment. --rastaf0 -*/ - -//SPACE STATION 13 -GLOBAL_LIST_INIT(the_station_areas, list ( - /area/bridge, - /area/chapel, - /area/construction, - /area/crew_quarters, - /area/engine, - /area/hallway, - /area/holodeck, - /area/hydroponics, - /area/janitor, - /area/lawoffice, - /area/library, - /area/maintenance, - /area/medical, - /area/quartermaster, - /area/science, - /area/security, - /area/solar, - /area/storage, - /area/teleporter, - /area/ai_monitored/storage/eva, //do not try to simplify to "/area/ai_monitored" --rastaf0 - /area/ai_monitored/turret_protected/ai_upload, //do not try to simplify to "/area/ai_monitored/turret_protected" --rastaf0 - /area/ai_monitored/turret_protected/ai_upload_foyer, - /area/ai_monitored/turret_protected/ai, -)) -======= ->>>>>>> 3d28b08... Merge pull request #32998 from ShizCalev/area-list From aaa221a8cb177a0282227659feb2fd393c7cc1d2 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 24 Nov 2017 16:56:52 -0600 Subject: [PATCH 101/328] Automatic changelog generation for PR #4106 [ci skip] --- html/changelogs/AutoChangeLog-pr-4106.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4106.yml diff --git a/html/changelogs/AutoChangeLog-pr-4106.yml b/html/changelogs/AutoChangeLog-pr-4106.yml new file mode 100644 index 0000000000..326d296e90 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4106.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Some misplaced decals in the Hotel brig have been corrected." From 7a2ef152f93f796aaad669af757f796026b83dc9 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 24 Nov 2017 16:57:28 -0600 Subject: [PATCH 102/328] Automatic changelog generation for PR #4112 [ci skip] --- html/changelogs/AutoChangeLog-pr-4112.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4112.yml diff --git a/html/changelogs/AutoChangeLog-pr-4112.yml b/html/changelogs/AutoChangeLog-pr-4112.yml new file mode 100644 index 0000000000..12412931b6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4112.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "AIs and cyborgs can interact with unscrewed airlocks and APCs." From 7b2a926235be59228f56da76ef6bbd86ad2592d6 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 24 Nov 2017 17:58:29 -0500 Subject: [PATCH 103/328] Update bump_teleporter.dm --- code/game/objects/effects/bump_teleporter.dm | 42 ++++++-------------- 1 file changed, 13 insertions(+), 29 deletions(-) diff --git a/code/game/objects/effects/bump_teleporter.dm b/code/game/objects/effects/bump_teleporter.dm index 5e17ee9e89..8eb4c986de 100644 --- a/code/game/objects/effects/bump_teleporter.dm +++ b/code/game/objects/effects/bump_teleporter.dm @@ -1,26 +1,12 @@ -/obj/effect/bump_teleporter - name = "bump-teleporter" - icon = 'icons/mob/screen_gen.dmi' - icon_state = "x2" - var/id = null //id of this bump_teleporter. - var/id_target = null //id of bump_teleporter which this moves you to. - invisibility = INVISIBILITY_ABSTRACT //nope, can't see this +/obj/effect/bump_teleporter + name = "bump-teleporter" + icon = 'icons/mob/screen_gen.dmi' + icon_state = "x2" + var/id = null //id of this bump_teleporter. + var/id_target = null //id of bump_teleporter which this moves you to. + invisibility = INVISIBILITY_ABSTRACT //nope, can't see this anchored = TRUE density = TRUE -<<<<<<< HEAD - opacity = 0 - - var/static/list/AllTeleporters - -/obj/effect/bump_teleporter/New() - ..() - LAZYADD(AllTeleporters, src) - -/obj/effect/bump_teleporter/Destroy() - LAZYREMOVE(AllTeleporters, src) - return ..() - -======= opacity = 0 var/static/list/AllTeleporters @@ -33,20 +19,18 @@ LAZYREMOVE(AllTeleporters, src) return ..() - /obj/effect/bump_teleporter/singularity_act() return /obj/effect/bump_teleporter/singularity_pull() return ->>>>>>> f912b6e... Fixes Lord Singuloth hungering for more than he should (#33025) /obj/effect/bump_teleporter/CollidedWith(atom/movable/AM) if(!ismob(AM)) - return - if(!id_target) - return - - for(var/obj/effect/bump_teleporter/BT in AllTeleporters) - if(BT.id == src.id_target) + return + if(!id_target) + return + + for(var/obj/effect/bump_teleporter/BT in AllTeleporters) + if(BT.id == src.id_target) AM.forceMove(BT.loc) //Teleport to location with correct id. From d04bbbdd677dbb18196718f5e140eca39fdd1b7a Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 24 Nov 2017 17:59:18 -0500 Subject: [PATCH 104/328] Update step_triggers.dm --- code/game/objects/effects/step_triggers.dm | 203 +-------------------- 1 file changed, 7 insertions(+), 196 deletions(-) diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index 229dfc56de..bfed048eff 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -1,199 +1,11 @@ -/* Simple object type, calls a proc when "stepped" on by something */ - -/obj/effect/step_trigger - var/affect_ghosts = 0 - var/stopper = 1 // stops throwers - var/mobs_only = FALSE - invisibility = INVISIBILITY_ABSTRACT // nope cant see this shit +/* Simple object type, calls a proc when "stepped" on by something */ + +/obj/effect/step_trigger + var/affect_ghosts = 0 + var/stopper = 1 // stops throwers + var/mobs_only = FALSE + invisibility = INVISIBILITY_ABSTRACT // nope cant see this shit anchored = TRUE -<<<<<<< HEAD - -/obj/effect/step_trigger/proc/Trigger(atom/movable/A) - return 0 - -/obj/effect/step_trigger/Crossed(H as mob|obj) - ..() - if(!H) - return - if(isobserver(H) && !affect_ghosts) - return - if(!ismob(H) && mobs_only) - return - Trigger(H) - -/* Sends a message to mob when triggered*/ - -/obj/effect/step_trigger/message - var/message //the message to give to the mob - var/once = 1 - mobs_only = TRUE - -/obj/effect/step_trigger/message/Trigger(mob/M) - if(M.client) - to_chat(M, "[message]") - if(once) - qdel(src) - -/* Tosses things in a certain direction */ - -/obj/effect/step_trigger/thrower - var/direction = SOUTH // the direction of throw - var/tiles = 3 // if 0: forever until atom hits a stopper - var/immobilize = 1 // if nonzero: prevents mobs from moving while they're being flung - var/speed = 1 // delay of movement - var/facedir = 0 // if 1: atom faces the direction of movement - var/nostop = 0 // if 1: will only be stopped by teleporters - var/list/affecting = list() - -/obj/effect/step_trigger/thrower/Trigger(atom/A) - if(!A || !ismovableatom(A)) - return - var/atom/movable/AM = A - var/curtiles = 0 - var/stopthrow = 0 - for(var/obj/effect/step_trigger/thrower/T in orange(2, src)) - if(AM in T.affecting) - return - - if(ismob(AM)) - var/mob/M = AM - if(immobilize) - M.canmove = 0 - - affecting.Add(AM) - while(AM && !stopthrow) - if(tiles) - if(curtiles >= tiles) - break - if(AM.z != src.z) - break - - curtiles++ - - sleep(speed) - - // Calculate if we should stop the process - if(!nostop) - for(var/obj/effect/step_trigger/T in get_step(AM, direction)) - if(T.stopper && T != src) - stopthrow = 1 - else - for(var/obj/effect/step_trigger/teleporter/T in get_step(AM, direction)) - if(T.stopper) - stopthrow = 1 - - if(AM) - var/predir = AM.dir - step(AM, direction) - if(!facedir) - AM.setDir(predir) - - - - affecting.Remove(AM) - - if(ismob(AM)) - var/mob/M = AM - if(immobilize) - M.canmove = 1 - -/* Stops things thrown by a thrower, doesn't do anything */ - -/obj/effect/step_trigger/stopper - -/* Instant teleporter */ - -/obj/effect/step_trigger/teleporter - var/teleport_x = 0 // teleportation coordinates (if one is null, then no teleport!) - var/teleport_y = 0 - var/teleport_z = 0 - -/obj/effect/step_trigger/teleporter/Trigger(atom/movable/A) - if(teleport_x && teleport_y && teleport_z) - - A.x = teleport_x - A.y = teleport_y - A.z = teleport_z - -/* Random teleporter, teleports atoms to locations ranging from teleport_x - teleport_x_offset, etc */ - -/obj/effect/step_trigger/teleporter/random - var/teleport_x_offset = 0 - var/teleport_y_offset = 0 - var/teleport_z_offset = 0 - -/obj/effect/step_trigger/teleporter/random/Trigger(atom/movable/A) - if(teleport_x && teleport_y && teleport_z) - if(teleport_x_offset && teleport_y_offset && teleport_z_offset) - - A.x = rand(teleport_x, teleport_x_offset) - A.y = rand(teleport_y, teleport_y_offset) - A.z = rand(teleport_z, teleport_z_offset) - -/* Fancy teleporter, creates sparks and smokes when used */ - -/obj/effect/step_trigger/teleport_fancy - var/locationx - var/locationy - var/uses = 1 //0 for infinite uses - var/entersparks = 0 - var/exitsparks = 0 - var/entersmoke = 0 - var/exitsmoke = 0 - -/obj/effect/step_trigger/teleport_fancy/Trigger(mob/M) - var/dest = locate(locationx, locationy, z) - M.Move(dest) - - if(entersparks) - var/datum/effect_system/spark_spread/s = new - s.set_up(4, 1, src) - s.start() - if(exitsparks) - var/datum/effect_system/spark_spread/s = new - s.set_up(4, 1, dest) - s.start() - - if(entersmoke) - var/datum/effect_system/smoke_spread/s = new - s.set_up(4, 1, src, 0) - s.start() - if(exitsmoke) - var/datum/effect_system/smoke_spread/s = new - s.set_up(4, 1, dest, 0) - s.start() - - uses-- - if(uses == 0) - qdel(src) - -/* Simple sound player, Mapper friendly! */ - -/obj/effect/step_trigger/sound_effect - var/sound //eg. path to the sound, inside '' eg: 'growl.ogg' - var/volume = 100 - var/freq_vary = 1 //Should the frequency of the sound vary? - var/extra_range = 0 // eg World.view = 7, extra_range = 1, 7+1 = 8, 8 turfs radius - var/happens_once = 0 - var/triggerer_only = 0 //Whether the triggerer is the only person who hears this - - -/obj/effect/step_trigger/sound_effect/Trigger(atom/movable/A) - var/turf/T = get_turf(A) - - if(!T) - return - - if(triggerer_only && ismob(A)) - var/mob/B = A - B.playsound_local(T, sound, volume, freq_vary) - else - playsound(T, sound, volume, freq_vary, extra_range) - - if(happens_once) - qdel(src) - -======= /obj/effect/step_trigger/proc/Trigger(atom/movable/A) return 0 @@ -387,4 +199,3 @@ if(happens_once) qdel(src) ->>>>>>> f912b6e... Fixes Lord Singuloth hungering for more than he should (#33025) From ac3e4a800b1d556949ac7e66d7c2557ae7abcd7f Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 24 Nov 2017 17:00:07 -0600 Subject: [PATCH 105/328] Automatic changelog generation for PR #4100 [ci skip] --- html/changelogs/AutoChangeLog-pr-4100.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4100.yml diff --git a/html/changelogs/AutoChangeLog-pr-4100.yml b/html/changelogs/AutoChangeLog-pr-4100.yml new file mode 100644 index 0000000000..e8abc00b9e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4100.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Fix water misters being inappropriately glued to hands in some cases." From 44fb7ccdb791aa1bc55661e2dcb71bfbdf5a7e67 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 24 Nov 2017 18:00:44 -0500 Subject: [PATCH 106/328] Update drinkingglass.dm --- code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm | 6 ------ 1 file changed, 6 deletions(-) diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm index 875185afb1..263d592303 100644 --- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm @@ -74,15 +74,9 @@ desc = "A shot glass - the universal symbol for bad decisions." return -<<<<<<< HEAD -/obj/item/reagent_containers/food/drinks/drinkingglass/filled/New() - ..() - on_reagent_change() -======= /obj/item/reagent_containers/food/drinks/drinkingglass/filled/Initialize() . = ..() on_reagent_change(ADD_REAGENT) ->>>>>>> 73b25d7... Refactor on_reagent_change to pass through the change type (#32805) /obj/item/reagent_containers/food/drinks/drinkingglass/filled/soda name = "Soda Water" From 54947e9f8a2a4d26cf86c4f72ed79a52631c5f15 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 24 Nov 2017 17:01:38 -0600 Subject: [PATCH 107/328] Automatic changelog generation for PR #4099 [ci skip] --- html/changelogs/AutoChangeLog-pr-4099.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4099.yml diff --git a/html/changelogs/AutoChangeLog-pr-4099.yml b/html/changelogs/AutoChangeLog-pr-4099.yml new file mode 100644 index 0000000000..ac5424fd57 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4099.yml @@ -0,0 +1,4 @@ +author: "ninjanomnom" +delete-after: True +changes: + - bugfix: "Custom shuttle dockers can no longer place docking regions inside other custom docker regions." From 754490a2d36989d198e0111f688e9f7b52467d8f Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 24 Nov 2017 18:02:51 -0500 Subject: [PATCH 108/328] Update pandemic.dm --- code/modules/reagents/chemistry/machinery/pandemic.dm | 6 ------ 1 file changed, 6 deletions(-) diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index ae0f4a008a..9400d3317f 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -195,15 +195,9 @@ addtimer(CALLBACK(src, .proc/reset_replicator_cooldown), 50) . = TRUE if("create_vaccine_bottle") -<<<<<<< HEAD - var/index = text2num(params["index"]) - var/datum/disease/D = SSdisease.archive_diseases[get_virus_id_by_index(index)] - var/obj/item/reagent_containers/glass/bottle/B = new(get_turf(src)) -======= var/id = params["index"] var/datum/disease/D = SSdisease.archive_diseases[id] var/obj/item/reagent_containers/glass/bottle/B = new(drop_location()) ->>>>>>> ed12ad4... Updates some item drops to use drop_location() (#32994) B.name = "[D.name] vaccine bottle" B.reagents.add_reagent("vaccine", 15, list(index)) wait = TRUE From a93c69614f30aaeb27a9d456a054f6a43f810496 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 24 Nov 2017 17:13:30 -0600 Subject: [PATCH 109/328] Automatic changelog generation for PR #4105 [ci skip] --- html/changelogs/AutoChangeLog-pr-4105.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4105.yml diff --git a/html/changelogs/AutoChangeLog-pr-4105.yml b/html/changelogs/AutoChangeLog-pr-4105.yml new file mode 100644 index 0000000000..1ce922ad64 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4105.yml @@ -0,0 +1,4 @@ +author: "More Robust Than You" +delete-after: True +changes: + - tweak: "Spessmen are now smart enough to realize you don't need to turn around to pull cigarette butts" From 38a7229bdda75684904a7e76c75f13e58676cf7f Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 24 Nov 2017 17:14:34 -0600 Subject: [PATCH 110/328] Automatic changelog generation for PR #4110 [ci skip] --- html/changelogs/AutoChangeLog-pr-4110.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4110.yml diff --git a/html/changelogs/AutoChangeLog-pr-4110.yml b/html/changelogs/AutoChangeLog-pr-4110.yml new file mode 100644 index 0000000000..cd94f6dae7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4110.yml @@ -0,0 +1,4 @@ +author: "CosmicScientist" +delete-after: True +changes: + - bugfix: "bolas are back in tablecrafting!" From cf053af319509ac36ffe7b9e8b0c5e5f7bc6a997 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 24 Nov 2017 18:50:23 -0500 Subject: [PATCH 111/328] Update pandemic.dm --- code/modules/reagents/chemistry/machinery/pandemic.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 9400d3317f..466aa047ad 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -199,7 +199,7 @@ var/datum/disease/D = SSdisease.archive_diseases[id] var/obj/item/reagent_containers/glass/bottle/B = new(drop_location()) B.name = "[D.name] vaccine bottle" - B.reagents.add_reagent("vaccine", 15, list(index)) + B.reagents.add_reagent("vaccine", 15, list(id)) wait = TRUE update_icon() addtimer(CALLBACK(src, .proc/reset_replicator_cooldown), 200) From 6dea43c70990565c9f8b3012727842e9023d084f Mon Sep 17 00:00:00 2001 From: Dorsisdwarf Date: Fri, 24 Nov 2017 23:56:11 +0000 Subject: [PATCH 112/328] Advanced Laserpointer Feline Interaction --- code/__DEFINES/is_helpers.dm | 3 + .../objects/items/devices/laserpointer.dm | 162 ++++++++++++++++++ code/modules/admin/verbs/randomverbs.dm | 11 +- 3 files changed, 168 insertions(+), 8 deletions(-) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 47db1dbc06..1e5e994636 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -59,6 +59,9 @@ #define iszombie(A) (is_species(A, /datum/species/zombie)) #define ishumanbasic(A) (is_species(A, /datum/species/human)) +//why arent catpeople a subspecies +#define iscatperson(A) (ishumanbasic(A) && ( A.dna.features["ears"] == "Cat" || A.dna.features["human_tail"] == "Cat") ) + //more carbon mobs #define ismonkey(A) (istype(A, /mob/living/carbon/monkey)) diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index eef7a0bf7a..4233a82779 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -16,6 +16,7 @@ var/effectchance = 33 var/recharging = 0 var/recharge_locked = FALSE +<<<<<<< HEAD var/obj/item/stock_parts/micro_laser/diode //used for upgrading! @@ -150,6 +151,167 @@ START_PROCESSING(SSobj, src) if(energy <= 0) to_chat(user, "[src]'s battery is overused, it needs time to recharge!") +======= + var/obj/item/stock_parts/micro_laser/diode //used for upgrading! + + +/obj/item/device/laser_pointer/red + pointer_icon_state = "red_laser" +/obj/item/device/laser_pointer/green + pointer_icon_state = "green_laser" +/obj/item/device/laser_pointer/blue + pointer_icon_state = "blue_laser" +/obj/item/device/laser_pointer/purple + pointer_icon_state = "purple_laser" + +/obj/item/device/laser_pointer/New() + ..() + diode = new(src) + if(!pointer_icon_state) + pointer_icon_state = pick("red_laser","green_laser","blue_laser","purple_laser") + +/obj/item/device/laser_pointer/upgraded/New() + ..() + diode = new /obj/item/stock_parts/micro_laser/ultra + +/obj/item/device/laser_pointer/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/stock_parts/micro_laser)) + if(!diode) + if(!user.transferItemToLoc(W, src)) + return + diode = W + to_chat(user, "You install a [diode.name] in [src].") + else + to_chat(user, "[src] already has a diode installed.") + + else if(istype(W, /obj/item/screwdriver)) + if(diode) + to_chat(user, "You remove the [diode.name] from \the [src].") + diode.loc = get_turf(src.loc) + diode = null + else + return ..() + +/obj/item/device/laser_pointer/afterattack(atom/target, mob/living/user, flag, params) + laser_act(target, user, params) + +/obj/item/device/laser_pointer/proc/laser_act(atom/target, mob/living/user, params) + if( !(user in (viewers(7,target))) ) + return + if (!diode) + to_chat(user, "You point [src] at [target], but nothing happens!") + return + if (!user.IsAdvancedToolUser()) + to_chat(user, "You don't have the dexterity to do this!") + return + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if(H.dna.check_mutation(HULK) || (NOGUNS in H.dna.species.species_traits)) + to_chat(user, "Your fingers can't press the button!") + return + + add_fingerprint(user) + + //nothing happens if the battery is drained + if(recharge_locked) + to_chat(user, "You point [src] at [target], but it's still charging.") + return + + var/outmsg + var/turf/targloc = get_turf(target) + + //human/alien mobs + if(iscarbon(target)) + var/mob/living/carbon/C = target + if(user.zone_selected == "eyes") + add_logs(user, C, "shone in the eyes", src) + + var/severity = 1 + if(prob(33)) + severity = 2 + else if(prob(50)) + severity = 0 + + //chance to actually hit the eyes depends on internal component + if(prob(effectchance * diode.rating) && C.flash_act(severity)) + outmsg = "You blind [C] by shining [src] in their eyes." + else + outmsg = "You fail to blind [C] by shining [src] at their eyes!" + + //robots + else if(iscyborg(target)) + var/mob/living/silicon/S = target + add_logs(user, S, "shone in the sensors", src) + //chance to actually hit the eyes depends on internal component + if(prob(effectchance * diode.rating)) + S.flash_act(affect_silicon = 1) + S.Knockdown(rand(100,200)) + to_chat(S, "Your sensors were overloaded by a laser!") + outmsg = "You overload [S] by shining [src] at their sensors." + else + outmsg = "You fail to overload [S] by shining [src] at their sensors!" + + //cameras + else if(istype(target, /obj/machinery/camera)) + var/obj/machinery/camera/C = target + if(prob(effectchance * diode.rating)) + C.emp_act(EMP_HEAVY) + outmsg = "You hit the lens of [C] with [src], temporarily disabling the camera!" + add_logs(user, C, "EMPed", src) + else + outmsg = "You miss the lens of [C] with [src]!" + + //catpeople + for(var/mob/living/carbon/human/H in view(1,targloc)) + if(!iscatperson(H) || H.incapacitated() || H.eye_blind ) + continue + if(!H.lying) + H.setDir(get_dir(H,targloc)) // kitty always looks at the light + if(prob(effectchance)) + H.visible_message("[H] makes a grab for the light!","LIGHT!") + H.Move(targloc) + add_logs(user, H, "moved with a laser pointer",src) + else + H.visible_message("[H] looks briefly distracted by the light."," You're briefly tempted by the shiny light... ") + else + H.visible_message("[H] stares at the light"," You stare at the light... ") + + //cats! + for(var/mob/living/simple_animal/pet/cat/C in view(1,targloc)) + if(prob(50)) + C.visible_message("[C] pounces on the light!","LIGHT!") + C.Move(targloc) + C.resting = TRUE + C.update_canmove() + else + C.visible_message("[C] looks uninterested in your games.","You spot [user] shining [src] at you. How insulting!") + + //laser pointer image + icon_state = "pointer_[pointer_icon_state]" + var/image/I = image('icons/obj/projectiles.dmi',targloc,pointer_icon_state,10) + var/list/click_params = params2list(params) + if(click_params) + if(click_params["icon-x"]) + I.pixel_x = (text2num(click_params["icon-x"]) - 16) + if(click_params["icon-y"]) + I.pixel_y = (text2num(click_params["icon-y"]) - 16) + else + I.pixel_x = target.pixel_x + rand(-5,5) + I.pixel_y = target.pixel_y + rand(-5,5) + + if(outmsg) + to_chat(user, outmsg) + else + to_chat(user, "You point [src] at [target].") + + energy -= 1 + if(energy <= max_energy) + if(!recharging) + recharging = 1 + START_PROCESSING(SSobj, src) + if(energy <= 0) + to_chat(user, "[src]'s battery is overused, it needs time to recharge!") +>>>>>>> ae9ba7b... Advanced Laserpointer Feline Interaction (#32940) recharge_locked = TRUE flick_overlay_view(I, targloc, 10) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index accd8f7dcf..bf12b3eb66 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -1091,9 +1091,6 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits log_admin("[key_name(usr)] sent \"[input]\" as the Tip of the Round.") SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Tip") -#define ON_PURRBATION(H) (\H.getorgan(/obj/item/organ/tail/cat) || H.getorgan(/obj/item/organ/ears/cat) || \ - H.dna.features["ears"] == "Cat" || H.dna.features["human_tail"] == "Cat") - /proc/mass_purrbation() for(var/M in GLOB.mob_list) if(ishumanbasic(M)) @@ -1109,7 +1106,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits /proc/purrbation_toggle(mob/living/carbon/human/H, silent = FALSE) if(!ishumanbasic(H)) return - if(!ON_PURRBATION(H)) + if(!iscatperson(H)) purrbation_apply(H, silent) . = TRUE else @@ -1119,7 +1116,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits /proc/purrbation_apply(mob/living/carbon/human/H, silent = FALSE) if(!ishuman(H)) return - if(ON_PURRBATION(H)) + if(iscatperson(H)) return var/obj/item/organ/ears/cat/ears = new @@ -1134,7 +1131,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits /proc/purrbation_remove(mob/living/carbon/human/H, silent = FALSE) if(!ishuman(H)) return - if(!ON_PURRBATION(H)) + if(!iscatperson(H)) return var/obj/item/organ/ears/cat/ears = H.getorgan(/obj/item/organ/ears/cat) @@ -1173,8 +1170,6 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits if(!silent) to_chat(H, "You are no longer a cat.") -#undef ON_PURRBATION - /client/proc/modify_goals() set category = "Debug" set name = "Modify goals" From 186bcf6ef4900afc3287004356eddcef85a31602 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 24 Nov 2017 19:03:25 -0500 Subject: [PATCH 113/328] Update laserpointer.dm --- .../objects/items/devices/laserpointer.dm | 191 +++--------------- 1 file changed, 27 insertions(+), 164 deletions(-) diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index 4233a82779..24d508b8c3 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -1,157 +1,21 @@ -/obj/item/device/laser_pointer - name = "laser pointer" - desc = "Don't shine it in your eyes!" - icon = 'icons/obj/device.dmi' - icon_state = "pointer" - item_state = "pen" - var/pointer_icon_state +/obj/item/device/laser_pointer + name = "laser pointer" + desc = "Don't shine it in your eyes!" + icon = 'icons/obj/device.dmi' + icon_state = "pointer" + item_state = "pen" + var/pointer_icon_state flags_1 = CONDUCT_1 | NOBLUDGEON_1 - slot_flags = SLOT_BELT - materials = list(MAT_METAL=500, MAT_GLASS=500) - w_class = WEIGHT_CLASS_SMALL - origin_tech = "combat=1;magnets=2" - var/turf/pointer_loc - var/energy = 5 - var/max_energy = 5 - var/effectchance = 33 - var/recharging = 0 + slot_flags = SLOT_BELT + materials = list(MAT_METAL=500, MAT_GLASS=500) + w_class = WEIGHT_CLASS_SMALL + origin_tech = "combat=1;magnets=2" + var/turf/pointer_loc + var/energy = 5 + var/max_energy = 5 + var/effectchance = 33 + var/recharging = 0 var/recharge_locked = FALSE -<<<<<<< HEAD - var/obj/item/stock_parts/micro_laser/diode //used for upgrading! - - -/obj/item/device/laser_pointer/red - pointer_icon_state = "red_laser" -/obj/item/device/laser_pointer/green - pointer_icon_state = "green_laser" -/obj/item/device/laser_pointer/blue - pointer_icon_state = "blue_laser" -/obj/item/device/laser_pointer/purple - pointer_icon_state = "purple_laser" - -/obj/item/device/laser_pointer/New() - ..() - diode = new(src) - if(!pointer_icon_state) - pointer_icon_state = pick("red_laser","green_laser","blue_laser","purple_laser") - -/obj/item/device/laser_pointer/upgraded/New() - ..() - diode = new /obj/item/stock_parts/micro_laser/ultra - -/obj/item/device/laser_pointer/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/stock_parts/micro_laser)) - if(!diode) - if(!user.transferItemToLoc(W, src)) - return - diode = W - to_chat(user, "You install a [diode.name] in [src].") - else - to_chat(user, "[src] already has a diode installed.") - - else if(istype(W, /obj/item/screwdriver)) - if(diode) - to_chat(user, "You remove the [diode.name] from \the [src].") - diode.loc = get_turf(src.loc) - diode = null - else - return ..() - -/obj/item/device/laser_pointer/afterattack(atom/target, mob/living/user, flag, params) - laser_act(target, user, params) - -/obj/item/device/laser_pointer/proc/laser_act(atom/target, mob/living/user, params) - if( !(user in (viewers(7,target))) ) - return - if (!diode) - to_chat(user, "You point [src] at [target], but nothing happens!") - return - if (!user.IsAdvancedToolUser()) - to_chat(user, "You don't have the dexterity to do this!") - return - if(ishuman(user)) - var/mob/living/carbon/human/H = user - if(H.dna.check_mutation(HULK) || (NOGUNS in H.dna.species.species_traits)) - to_chat(user, "Your fingers can't press the button!") - return - - add_fingerprint(user) - - //nothing happens if the battery is drained - if(recharge_locked) - to_chat(user, "You point [src] at [target], but it's still charging.") - return - - var/outmsg - var/turf/targloc = get_turf(target) - - //human/alien mobs - if(iscarbon(target)) - var/mob/living/carbon/C = target - if(user.zone_selected == "eyes") - add_logs(user, C, "shone in the eyes", src) - - var/severity = 1 - if(prob(33)) - severity = 2 - else if(prob(50)) - severity = 0 - - //20% chance to actually hit the eyes - if(prob(effectchance * diode.rating) && C.flash_act(severity)) - outmsg = "You blind [C] by shining [src] in their eyes." - else - outmsg = "You fail to blind [C] by shining [src] at their eyes!" - - //robots - else if(iscyborg(target)) - var/mob/living/silicon/S = target - //20% chance to actually hit the sensors - if(prob(effectchance * diode.rating)) - S.flash_act(affect_silicon = 1) - S.Knockdown(rand(100,200)) - to_chat(S, "Your sensors were overloaded by a laser!") - outmsg = "You overload [S] by shining [src] at their sensors." - add_logs(user, S, "shone in the sensors", src) - else - outmsg = "You fail to overload [S] by shining [src] at their sensors!" - - //cameras - else if(istype(target, /obj/machinery/camera)) - var/obj/machinery/camera/C = target - if(prob(effectchance * diode.rating)) - C.emp_act(EMP_HEAVY) - outmsg = "You hit the lens of [C] with [src], temporarily disabling the camera!" - add_logs(user, C, "EMPed", src) - else - outmsg = "You miss the lens of [C] with [src]!" - - //laser pointer image - icon_state = "pointer_[pointer_icon_state]" - var/image/I = image('icons/obj/projectiles.dmi',targloc,pointer_icon_state,10) - var/list/click_params = params2list(params) - if(click_params) - if(click_params["icon-x"]) - I.pixel_x = (text2num(click_params["icon-x"]) - 16) - if(click_params["icon-y"]) - I.pixel_y = (text2num(click_params["icon-y"]) - 16) - else - I.pixel_x = target.pixel_x + rand(-5,5) - I.pixel_y = target.pixel_y + rand(-5,5) - - if(outmsg) - to_chat(user, outmsg) - else - to_chat(user, "You point [src] at [target].") - - energy -= 1 - if(energy <= max_energy) - if(!recharging) - recharging = 1 - START_PROCESSING(SSobj, src) - if(energy <= 0) - to_chat(user, "[src]'s battery is overused, it needs time to recharge!") -======= var/obj/item/stock_parts/micro_laser/diode //used for upgrading! @@ -311,17 +175,16 @@ START_PROCESSING(SSobj, src) if(energy <= 0) to_chat(user, "[src]'s battery is overused, it needs time to recharge!") ->>>>>>> ae9ba7b... Advanced Laserpointer Feline Interaction (#32940) recharge_locked = TRUE - - flick_overlay_view(I, targloc, 10) - icon_state = "pointer" - -/obj/item/device/laser_pointer/process() - if(prob(20 - recharge_locked*5)) - energy += 1 - if(energy >= max_energy) - energy = max_energy - recharging = 0 + + flick_overlay_view(I, targloc, 10) + icon_state = "pointer" + +/obj/item/device/laser_pointer/process() + if(prob(20 - recharge_locked*5)) + energy += 1 + if(energy >= max_energy) + energy = max_energy + recharging = 0 recharge_locked = FALSE - ..() + ..() From d52d54646331f0363c450557d7ffedc020e723af Mon Sep 17 00:00:00 2001 From: Tad Hardesty Date: Fri, 24 Nov 2017 20:29:43 -0800 Subject: [PATCH 114/328] Deny buckling when the user is inside lockers, mechs, etc. (#33015) --- code/game/objects/buckling.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 2cf463e46c..0c72e63feb 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -99,7 +99,7 @@ //Wrapper procs that handle sanity and user feedback /atom/movable/proc/user_buckle_mob(mob/living/M, mob/user, check_loc = TRUE) - if(!in_range(user, src) || user.stat || user.restrained()) + if(!in_range(user, src) || !isturf(user.loc) || user.incapacitated()) return FALSE add_fingerprint(user) From 86fca33d060d3e4c24bfd4ad504ea33b2d54413a Mon Sep 17 00:00:00 2001 From: Y0SH1M4S73R Date: Fri, 24 Nov 2017 23:28:56 -0500 Subject: [PATCH 116/328] Cleans up a double assignment (#33048) * Fixes component runtimes (#33045) * fixes an internally redundant assignment statement --- code/modules/events/portal_storm.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/events/portal_storm.dm b/code/modules/events/portal_storm.dm index 79250f1047..7e17124d59 100644 --- a/code/modules/events/portal_storm.dm +++ b/code/modules/events/portal_storm.dm @@ -37,7 +37,7 @@ var/mutable_appearance/storm /datum/round_event/portal_storm/setup() - storm = storm = mutable_appearance('icons/obj/tesla_engine/energy_ball.dmi', "energy_ball_fast", FLY_LAYER) + storm = mutable_appearance('icons/obj/tesla_engine/energy_ball.dmi', "energy_ball_fast", FLY_LAYER) storm.color = "#00FF00" station_areas = get_areas_in_z(ZLEVEL_STATION_PRIMARY) From 9bb564a1385c162bcb6e94cab95f0b867e0a50fb Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Fri, 24 Nov 2017 20:33:24 -0800 Subject: [PATCH 118/328] Adds null checks to uplink item generation for ssticker mode, so spawned uplinks work pre-game --- code/modules/uplink/uplink_item.dm | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm index 6d40ab9219..720641ecd6 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -23,12 +23,12 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. if(!istype(I)) continue if(I.include_modes.len) - if(!gamemode && SSticker && !(SSticker.mode.type in I.include_modes)) + if(!gamemode && SSticker && SSticker.mode && !(SSticker.mode.type in I.include_modes)) continue if(gamemode && !(gamemode in I.include_modes)) continue if(I.exclude_modes.len) - if(!gamemode && SSticker && (SSticker.mode.type in I.exclude_modes)) + if(!gamemode && SSticker && SSticker.mode && (SSticker.mode.type in I.exclude_modes)) continue if(gamemode && (gamemode in I.exclude_modes)) continue @@ -1381,8 +1381,13 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. exclude_modes = list(/datum/game_mode/nuclear) cant_discount = TRUE +<<<<<<< HEAD:code/modules/uplink/uplink_item.dm /datum/uplink_item/badass/surplus/spawn_item(turf/loc, obj/item/device/uplink/U) var/list/uplink_items = get_uplink_items(SSticker.mode) +======= +/datum/uplink_item/badass/surplus/spawn_item(turf/loc, datum/component/uplink/U) + var/list/uplink_items = get_uplink_items(SSticker && SSticker.mode? SSticker.mode : null) +>>>>>>> 63b7e4a... Adds null checks to uplink item generation for ssticker mode, so spawned uplinks work pre-game (#33053):code/datums/uplink_items.dm var/crate_value = 50 var/obj/structure/closet/crate/C = new(loc) @@ -1409,8 +1414,13 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. cost = 0 cant_discount = TRUE +<<<<<<< HEAD:code/modules/uplink/uplink_item.dm /datum/uplink_item/badass/random/spawn_item(turf/loc, obj/item/device/uplink/U) var/list/uplink_items = get_uplink_items(SSticker.mode) +======= +/datum/uplink_item/badass/random/spawn_item(turf/loc, datum/component/uplink/U) + var/list/uplink_items = get_uplink_items(SSticker && SSticker.mode? SSticker.mode : null) +>>>>>>> 63b7e4a... Adds null checks to uplink item generation for ssticker mode, so spawned uplinks work pre-game (#33053):code/datums/uplink_items.dm var/list/possible_items = list() for(var/category in uplink_items) for(var/item in uplink_items[category]) From d9c650970c23d12d101e8488da2481b78a9aff43 Mon Sep 17 00:00:00 2001 From: Armhulen Date: Fri, 24 Nov 2017 20:36:05 -0800 Subject: [PATCH 119/328] making prs isn't even worth it anymore (#33056) --- code/game/machinery/computer/robot.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 51188989f1..465f0eb373 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -3,7 +3,7 @@ /obj/machinery/computer/robotics name = "robotics control console" - desc = "Used to remotely lockdown or detonate linked Cyborgs." + desc = "Used to remotely lockdown or detonate linked Cyborgs and Drones." icon_screen = "robot" icon_keyboard = "rd_key" req_access = list(ACCESS_ROBOTICS) From c6a68bad8359d5cd11bfd8d2e568bc019d9a95b4 Mon Sep 17 00:00:00 2001 From: checkraisefold Date: Fri, 24 Nov 2017 20:35:33 -0800 Subject: [PATCH 121/328] fix zombie reanimation (#33049) lol --- code/modules/zombie/organs.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/zombie/organs.dm b/code/modules/zombie/organs.dm index 0b7a54ee1f..d55059960f 100644 --- a/code/modules/zombie/organs.dm +++ b/code/modules/zombie/organs.dm @@ -52,6 +52,8 @@ return if(owner.stat != DEAD && !converts_living) return + if(!owner.getorgan(/obj/item/organ/brain)) + return if(!iszombie(owner)) to_chat(owner, "You can feel your heart stopping, but something isn't right... \ life has not abandoned your broken form. You can only feel a deep and immutable hunger that \ From ceee0c80e713be6b85f0768ef533ada84ddcc52d Mon Sep 17 00:00:00 2001 From: Armhulen Date: Fri, 24 Nov 2017 20:39:41 -0800 Subject: [PATCH 123/328] okay (#33058) --- code/modules/mob/living/silicon/pai/pai.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 8030e97c1e..ed4e79f273 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -79,6 +79,12 @@ . = ..() . += slowdown +/mob/living/silicon/pai/can_unbuckle() + return FALSE + +/mob/living/silicon/pai/can_buckle() + return FALSE + /mob/living/silicon/pai/Destroy() GLOB.pai_list -= src return ..() From 4053499c837c34d080795f6df6e3198dc67f194d Mon Sep 17 00:00:00 2001 From: Jordie Date: Sat, 25 Nov 2017 15:42:06 +1100 Subject: [PATCH 125/328] A few investigate_log and message_admin fixes --- code/modules/flufftext/Hallucination.dm | 10 +--- .../mob/living/carbon/carbon_defines.dm | 7 +++ code/modules/research/circuitprinter.dm | 47 +++++++++++++++ code/modules/research/protolathe.dm | 57 +++++++++++++++++++ code/modules/research/rdconsole.dm | 39 +++++++++++++ 5 files changed, 151 insertions(+), 9 deletions(-) diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 866b763fe6..d95591b6fd 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -13,13 +13,6 @@ Gunshots/explosions/opening doors/less rare audio (done) #define HAL_LINES_FILE "hallucination.json" -/mob/living/carbon - var/image/halimage - var/image/halbody - var/obj/halitem - var/hal_screwyhud = SCREWYHUD_NONE - var/next_hallucination = 0 - GLOBAL_LIST_INIT(hallucinations_minor, list( /datum/hallucination/sounds, /datum/hallucination/bolts, @@ -82,6 +75,7 @@ GLOBAL_LIST_INIT(hallucinations_major, list( /datum/hallucination/Destroy() target.investigate_log("was afflicted with a hallucination of type [type]. [feedback_details]", INVESTIGATE_HALLUCINATIONS) + target = null return ..() /obj/effect/hallucination @@ -203,7 +197,6 @@ GLOBAL_LIST_INIT(hallucinations_major, list( flood_turfs = list() if(target.client) target.client.images.Remove(flood_images) - target = null qdel(flood_images) flood_images = list() return ..() @@ -1159,4 +1152,3 @@ GLOBAL_LIST_INIT(hallucinations_major, list( H.preparePixelProjectile(target, start) H.fire() qdel(src) - diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 45c10c6ae9..4e409391da 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -49,3 +49,10 @@ var/icon_render_key = "" var/static/list/limb_icon_cache = list() + + //halucination vars + var/image/halimage + var/image/halbody + var/obj/halitem + var/hal_screwyhud = SCREWYHUD_NONE + var/next_hallucination = 0 diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index ebeb869d9c..38c5465aff 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -94,3 +94,50 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). use_power(max(1000, (MINERAL_MATERIAL_AMOUNT * M.last_amount_inserted / 10))) add_overlay("protolathe_[stack_name]") addtimer(CALLBACK(src, /atom/proc/cut_overlay, "protolathe_[stack_name]"), 10) +<<<<<<< HEAD +======= + +/obj/machinery/rnd/circuit_imprinter/proc/user_try_print_id(id) + if((!linked_console && requires_console) || !id) + return FALSE + var/datum/design/D = (linked_console || requires_console)? linked_console.stored_research.researched_designs[id] : get_techweb_design_by_id(id) + if(!istype(D)) + return FALSE + + var/power = 1000 + for(var/M in D.materials) + power += round(D.materials[M] / 5) + power = max(4000, power) + use_power(power) + + var/list/efficient_mats = list() + for(var/MAT in D.materials) + efficient_mats[MAT] = D.materials[MAT]/efficiency_coeff + + if(!materials.has_materials(efficient_mats)) + say("Not enough materials to complete prototype.") + return FALSE + for(var/R in D.reagents_list) + if(!reagents.has_reagent(R, D.reagents_list[R]/efficiency_coeff)) + say("Not enough reagents to complete prototype.") + return FALSE + + busy = TRUE + flick("circuit_imprinter_ani", src) + materials.use_amount(efficient_mats) + for(var/R in D.reagents_list) + reagents.remove_reagent(R, D.reagents_list[R]/efficiency_coeff) + + var/P = D.build_path + addtimer(CALLBACK(src, .proc/reset_busy), 16) + addtimer(CALLBACK(src, .proc/do_print, P, efficient_mats, D.dangerous_construction), 16) + return TRUE + +/obj/machinery/rnd/circuit_imprinter/proc/do_print(path, list/matlist, notify_admins) + if(notify_admins && usr) + investigate_log("[key_name(usr)] built [path] at a circuit imprinter.", INVESTIGATE_RESEARCH) + message_admins("[ADMIN_LOOKUPFLW(usr)] has built [path] at a circuit imprinter.") + var/obj/item/I = new path(get_turf(src)) + I.materials = matlist.Copy() + SSblackbox.record_feedback("nested_tally", "circuit_printed", 1, list("[type]", "[path]")) +>>>>>>> b09b1c3... A few investigate_log and message_admin fixes (#32993) diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index 9df4946ed2..e67982d21b 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -95,3 +95,60 @@ Note: Must be placed west/left of and R&D console to function. use_power(max(1000, (MINERAL_MATERIAL_AMOUNT * M.last_amount_inserted / 10))) add_overlay("protolathe_[stack_name]") addtimer(CALLBACK(src, /atom/proc/cut_overlay, "protolathe_[stack_name]"), 10) +<<<<<<< HEAD +======= + +/obj/machinery/rnd/protolathe/proc/user_try_print_id(id, amount) + if((!istype(linked_console) && requires_console) || !id) + return FALSE + if(istext(amount)) + amount = text2num(amount) + if(isnull(amount)) + amount = 1 + var/datum/design/D = (linked_console || requires_console)? linked_console.stored_research.researched_designs[id] : get_techweb_design_by_id(id) + if(!istype(D)) + return FALSE + if(D.make_reagents.len) + return FALSE + + var/power = 1000 + amount = Clamp(amount, 1, 10) + for(var/M in D.materials) + power += round(D.materials[M] * amount / 5) + power = max(3000, power) + use_power(power) + + var/list/efficient_mats = list() + for(var/MAT in D.materials) + efficient_mats[MAT] = D.materials[MAT]*efficiency_coeff + + if(!materials.has_materials(efficient_mats, amount)) + say("Not enough materials to complete prototype[amount > 1? "s" : ""].") + return FALSE + for(var/R in D.reagents_list) + if(!reagents.has_reagent(R, D.reagents_list[R]*efficiency_coeff)) + say("Not enough reagents to complete prototype[amount > 1? "s" : ""].") + return FALSE + + materials.use_amount(efficient_mats, amount) + for(var/R in D.reagents_list) + reagents.remove_reagent(R, D.reagents_list[R]*efficiency_coeff) + + busy = TRUE + flick("protolathe_n", src) + var/timecoeff = efficiency_coeff * D.lathe_time_factor + + addtimer(CALLBACK(src, .proc/reset_busy), (32 * timecoeff * amount) ** 0.8) + addtimer(CALLBACK(src, .proc/do_print, D.build_path, amount, efficient_mats, D.dangerous_construction), (32 * timecoeff * amount) ** 0.8) + return TRUE + +/obj/machinery/rnd/protolathe/proc/do_print(path, amount, list/matlist, notify_admins) + if(notify_admins && usr) + investigate_log("[key_name(usr)] built [amount] of [path] at a protolathe.", INVESTIGATE_RESEARCH) + message_admins("[ADMIN_LOOKUPFLW(usr)] has built [amount] of [path] at a protolathe") + for(var/i in 1 to amount) + var/obj/item/I = new path(get_turf(src)) + if(!istype(I, /obj/item/stack/sheet) && !istype(I, /obj/item/ore/bluespace_crystal)) + I.materials = matlist.Copy() + SSblackbox.record_feedback("nested_tally", "item_printed", amount, list("[type]", "[path]")) +>>>>>>> b09b1c3... A few investigate_log and message_admin fixes (#32993) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index b98a75e6fd..6506a55a31 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -133,6 +133,45 @@ won't update every console in existence) but it's more of a hassle to do. Also, . = ..() updateUsrDialog() +<<<<<<< HEAD +======= +/obj/machinery/computer/rdconsole/proc/research_node(id, mob/user) + if(!stored_research.available_nodes[id] || stored_research.researched_nodes[id]) + say("Node unlock failed: Either already researched or not available!") + return FALSE + var/datum/techweb_node/TN = SSresearch.techweb_nodes[id] + if(!istype(TN)) + say("Node unlock failed: Unknown error.") + return FALSE + var/price = TN.get_price(stored_research) + if(stored_research.research_points >= price) + investigate_log("[key_name(user)] researched [id]([price]) on techweb id [stored_research.id].", INVESTIGATE_RESEARCH) + if(stored_research == SSresearch.science_tech) + SSblackbox.record_feedback("associative", "science_techweb_unlock", 1, list("id" = "[id]", "price" = "[price]", "time" = "[SQLtime()]")) + if(stored_research.research_node(SSresearch.techweb_nodes[id])) + say("Sucessfully researched [TN.display_name].") + var/logname = "Unknown" + if(isAI(user)) + logname = "AI: [user.name]" + if(iscarbon(user)) + var/obj/item/card/id/idcard = user.get_active_held_item() + if(istype(idcard)) + logname = "User: [idcard.registered_name]" + if(ishuman(user)) + var/mob/living/carbon/human/H = user + var/obj/item/I = H.wear_id + if(istype(I)) + var/obj/item/card/id/ID = I.GetID() + if(istype(ID)) + logname = "User: [ID.registered_name]" + stored_research.research_logs += "[logname] researched node id [id] for [price] points." + return TRUE + else + say("Failed to research node: Internal database error!") + return FALSE + say("Not enough research points...") + return FALSE +>>>>>>> b09b1c3... A few investigate_log and message_admin fixes (#32993) /obj/machinery/computer/rdconsole/on_deconstruction() if(linked_destroy) From 89e807e64441bc20908c690089c1c9c1d4904320 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 24 Nov 2017 23:36:25 -0600 Subject: [PATCH 126/328] Automatic changelog generation for PR #4117 [ci skip] --- html/changelogs/AutoChangeLog-pr-4117.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4117.yml diff --git a/html/changelogs/AutoChangeLog-pr-4117.yml b/html/changelogs/AutoChangeLog-pr-4117.yml new file mode 100644 index 0000000000..bb2c70bccc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4117.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "You can no longer buckle people to roller beds from inside of a locker." From 7db8a64ca1397677451136516915bda159e98caa Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 24 Nov 2017 23:49:25 -0600 Subject: [PATCH 127/328] Automatic changelog generation for PR #4121 [ci skip] --- html/changelogs/AutoChangeLog-pr-4121.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4121.yml diff --git a/html/changelogs/AutoChangeLog-pr-4121.yml b/html/changelogs/AutoChangeLog-pr-4121.yml new file mode 100644 index 0000000000..a226595420 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4121.yml @@ -0,0 +1,4 @@ +author: "zennerx" +delete-after: True +changes: + - bugfix: "Zombies don't reanimate with no head!" From 6442a3a751a187f2afb6eb3c940259822950ae11 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sat, 25 Nov 2017 00:50:45 -0500 Subject: [PATCH 128/328] Update uplink_item.dm --- code/modules/uplink/uplink_item.dm | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm index 720641ecd6..884e3f9426 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -1381,13 +1381,8 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. exclude_modes = list(/datum/game_mode/nuclear) cant_discount = TRUE -<<<<<<< HEAD:code/modules/uplink/uplink_item.dm /datum/uplink_item/badass/surplus/spawn_item(turf/loc, obj/item/device/uplink/U) - var/list/uplink_items = get_uplink_items(SSticker.mode) -======= -/datum/uplink_item/badass/surplus/spawn_item(turf/loc, datum/component/uplink/U) var/list/uplink_items = get_uplink_items(SSticker && SSticker.mode? SSticker.mode : null) ->>>>>>> 63b7e4a... Adds null checks to uplink item generation for ssticker mode, so spawned uplinks work pre-game (#33053):code/datums/uplink_items.dm var/crate_value = 50 var/obj/structure/closet/crate/C = new(loc) @@ -1414,13 +1409,8 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. cost = 0 cant_discount = TRUE -<<<<<<< HEAD:code/modules/uplink/uplink_item.dm /datum/uplink_item/badass/random/spawn_item(turf/loc, obj/item/device/uplink/U) - var/list/uplink_items = get_uplink_items(SSticker.mode) -======= -/datum/uplink_item/badass/random/spawn_item(turf/loc, datum/component/uplink/U) var/list/uplink_items = get_uplink_items(SSticker && SSticker.mode? SSticker.mode : null) ->>>>>>> 63b7e4a... Adds null checks to uplink item generation for ssticker mode, so spawned uplinks work pre-game (#33053):code/datums/uplink_items.dm var/list/possible_items = list() for(var/category in uplink_items) for(var/item in uplink_items[category]) From 237f0fa8db2d679c1a32f3471b39feb4ef564d95 Mon Sep 17 00:00:00 2001 From: WJohn Date: Sat, 25 Nov 2017 10:19:59 -0500 Subject: [PATCH 129/328] Lowers rack layer to 2.8 (#33069) --- code/game/objects/structures/tables_racks.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index b46b1c72aa..26582515f8 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -411,6 +411,7 @@ desc = "Different from the Middle Ages version." icon = 'icons/obj/objects.dmi' icon_state = "rack" + layer = TABLE_LAYER density = TRUE anchored = TRUE pass_flags = LETPASSTHROW //You can throw objects over this, despite it's density. From 744a78e9322d207b753422137457ddca5025efd2 Mon Sep 17 00:00:00 2001 From: vuonojenmustaturska Date: Sat, 25 Nov 2017 21:24:38 +0200 Subject: [PATCH 131/328] Maybe fixes meson hearing exploit (#33005) * Not all of wisdom brings joy * Serves me right for making changes based on how i remember the code working --- code/__HELPERS/game.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index b5d75a6f63..57fe0559fa 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -225,7 +225,8 @@ else // A variation of get_hear inlined here to take advantage of the compiler's fastpath for obj/mob in view var/lum = T.luminosity T.luminosity = 6 // This is the maximum luminosity - processing_list = viewers(R, T) + for(var/mob/M in view(R, T)) + processing_list += M for(var/obj/O in view(R, T)) processing_list += O T.luminosity = lum From 606f403c5be093bcb9aad4cced9022f3b76e9d3e Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sat, 25 Nov 2017 11:27:11 -0800 Subject: [PATCH 133/328] Fixes cryo rotation (#32992) --- .../machinery/components/unary_devices/cryo.dm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index b395dad6bd..a7123dd97b 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -407,4 +407,20 @@ return G.temperature return ..() +/obj/machinery/atmospherics/components/unary/cryo_cell/default_change_direction_wrench(mob/user, obj/item/wrench/W) + . = ..() + if(.) + SetInitDirections() + var/obj/machinery/atmospherics/node = NODE1 + if(node) + node.disconnect(src) + NODE1 = null + nullifyPipenet(PARENT1) + atmosinit() + node = NODE1 + if(node) + node.atmosinit() + node.addMember(src) + build_network() + #undef CRYOMOBS From 8f23eeb00346a45aed1f68141259be0ec3046560 Mon Sep 17 00:00:00 2001 From: MoreRobustThanYou Date: Sat, 25 Nov 2017 16:17:36 -0500 Subject: [PATCH 135/328] Fix #32755 (#33073) --- code/datums/antagonists/cult.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/datums/antagonists/cult.dm b/code/datums/antagonists/cult.dm index f5dbc1c829..c26b0f8108 100644 --- a/code/datums/antagonists/cult.dm +++ b/code/datums/antagonists/cult.dm @@ -5,6 +5,7 @@ var/datum/action/innate/cult/comm/communion = new var/datum/action/innate/cult/mastervote/vote = new job_rank = ROLE_CULTIST + var/ignore_implant = FALSE /datum/antagonist/cult/Destroy() QDEL_NULL(communion) @@ -65,7 +66,7 @@ /datum/antagonist/cult/can_be_owned(datum/mind/new_owner) . = ..() - if(.) + if(. && !ignore_implant) . = is_convertable_to_cult(new_owner.current) /datum/antagonist/cult/on_gain() @@ -121,6 +122,7 @@ var/datum/action/innate/cult/master/finalreck/reckoning = new var/datum/action/innate/cult/master/cultmark/bloodmark = new var/datum/action/innate/cult/master/pulse/throwing = new + ignore_implant = TRUE /datum/antagonist/cult/master/Destroy() QDEL_NULL(reckoning) From 437c527fd2b94a4801bc956fd21d6bee1e154173 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sat, 25 Nov 2017 13:17:11 -0800 Subject: [PATCH 137/328] Fixes rdconsole emagging --- code/modules/research/rdconsole.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index b98a75e6fd..165a5dc6f6 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -148,11 +148,19 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/emag_act(mob/user) +<<<<<<< HEAD if(emagged) return playsound(src, "sparks", 75, 1) emagged = TRUE to_chat(user, "You disable the security protocols") +======= + if(!emagged) + to_chat(user, "You disable the security protocols") + playsound(src, "sparks", 75, 1) + emagged = TRUE + return ..() +>>>>>>> 1148c49... fixes emagging (#33065) /obj/machinery/computer/rdconsole/Topic(href, href_list) if(..()) From 8c11252d935d739c27fd980d780c457f5d97b82e Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Sat, 25 Nov 2017 16:35:22 -0500 Subject: [PATCH 138/328] butterdogs (#33002) --- .../food_and_drinks/food/snacks_bread.dm | 17 ++++++++++++++++- .../recipes/tablecraft/recipes_bread.dm | 8 ++++++++ icons/obj/food/food.dmi | Bin 58941 -> 59184 bytes 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/code/modules/food_and_drinks/food/snacks_bread.dm b/code/modules/food_and_drinks/food/snacks_bread.dm index 8f48e94d08..c29ed30b22 100644 --- a/code/modules/food_and_drinks/food/snacks_bread.dm +++ b/code/modules/food_and_drinks/food/snacks_bread.dm @@ -238,4 +238,19 @@ filling_color = "#F0E68C" list_reagents = list("nutriment" = 5) bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - tastes = list("butter" = 1, "biscuit" = 1) \ No newline at end of file + tastes = list("butter" = 1, "biscuit" = 1) + +/obj/item/reagent_containers/food/snacks/butterdog + name = "butterdog" + desc = "Made from exotic butters." + icon = 'icons/obj/food/food.dmi' + icon_state = "butterdog" + bitesize = 1 + filling_color = "#F1F49A" + list_reagents = list("nutriment" = 5) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + tastes = list("butter", "exotic butter") + +/obj/item/reagent_containers/food/snacks/butterdog/ComponentInitialize() + . = ..() + AddComponent(/datum/component/slippery, 80) \ No newline at end of file diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm index 493c6f6cdd..e572cc76ff 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm @@ -93,3 +93,11 @@ result = /obj/item/reagent_containers/food/snacks/butterbiscuit subcategory = CAT_BREAD +/datum/crafting_recipe/food/butterdog + name = "Butterdog" + reqs = list( + /obj/item/reagent_containers/food/snacks/bun = 1, + /obj/item/reagent_containers/food/snacks/butter = 3, + ) + result = /obj/item/reagent_containers/food/snacks/butterdog + subcategory = CAT_BREAD \ No newline at end of file diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index cefc1e5ab9eeba0180b26e7ab7e75ea7bbbbf9e0..26822c2c015a2f701451ededc4b315ae3021ff63 100644 GIT binary patch delta 4907 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 aBak>!K4rN$^|b^Mhk>4nZn?I7*#7|36n*Rf delta 4662 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 Date: Sat, 25 Nov 2017 17:37:28 -0500 Subject: [PATCH 140/328] Merge pull request #33075 from AnturK/itsnotabusewhenitsassistants Adds spawn override system --- code/_globalvars/lists/mapping.dm | 1 + code/controllers/subsystem/job.dm | 10 ++++++++++ code/controllers/subsystem/ticker.dm | 2 +- code/game/objects/effects/landmarks.dm | 13 +++++++++++++ 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm index e6b05e033f..51af2b3525 100644 --- a/code/_globalvars/lists/mapping.dm +++ b/code/_globalvars/lists/mapping.dm @@ -24,6 +24,7 @@ GLOBAL_LIST_EMPTY(landmarks_list) //list of all landmarks created GLOBAL_LIST_EMPTY(start_landmarks_list) //list of all spawn points created GLOBAL_LIST_EMPTY(department_security_spawns) //list of all department security spawns GLOBAL_LIST_EMPTY(generic_event_spawns) //list of all spawns for events +GLOBAL_LIST_EMPTY(jobspawn_overrides) //These will take precedence over normal spawnpoints if created. GLOBAL_LIST_EMPTY(wizardstart) GLOBAL_LIST_EMPTY(nukeop_start) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 1e914c657d..c70b7016a4 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -393,6 +393,10 @@ SUBSYSTEM_DEF(job) continue S = sloc break + if(GLOB.jobspawn_overrides[rank]) + var/list/special_spawns = GLOB.jobspawn_overrides[rank] + if(special_spawns.len) + S = pick(special_spawns) if(S) SendToAtom(H, S, buckle = FALSE) if(!S) //if there isn't a spawnpoint send them to latejoin, if there's no latejoin go yell at your mapper @@ -536,6 +540,12 @@ SUBSYSTEM_DEF(job) M.forceMove(get_turf(A)) /datum/controller/subsystem/job/proc/SendToLateJoin(mob/M, buckle = TRUE) + if(M.mind && M.mind.assigned_role) //We're doing something special today. + var/list/special_spawns = GLOB.jobspawn_overrides[M.mind.assigned_role] + if(special_spawns.len) //just in case someone clears these + SendToAtom(M,pick(special_spawns),FALSE) + return + if(latejoin_trackers.len) SendToAtom(M, pick(latejoin_trackers), buckle) else diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 18354893fb..dfdff1890a 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -319,7 +319,7 @@ SUBSYSTEM_DEF(ticker) //Cleanup some stuff for(var/obj/effect/landmark/start/S in GLOB.landmarks_list) //Deleting Startpoints but we need the ai point to AI-ize people later - if(S.name != "AI") + if(S.delete_after_roundstart) qdel(S) //assign crew objectives and generate miscreants diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index c18c60c5f3..caeb1f168c 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -19,15 +19,23 @@ icon = 'icons/mob/screen_gen.dmi' icon_state = "x" anchored = TRUE + var/jobspawn_override = FALSE + var/delete_after_roundstart = TRUE /obj/effect/landmark/start/New() GLOB.start_landmarks_list += src + if(jobspawn_override) + if(!GLOB.jobspawn_overrides[name]) + GLOB.jobspawn_overrides[name] = list() + GLOB.jobspawn_overrides[name] += src ..() if(name != "start") tag = "start*[name]" /obj/effect/landmark/start/Destroy() GLOB.start_landmarks_list -= src + if(jobspawn_override) + GLOB.jobspawn_overrides[name] -= src return ..() // START LANDMARKS FOLLOW. Don't change the names unless @@ -36,6 +44,10 @@ /obj/effect/landmark/start/assistant name = "Assistant" +/obj/effect/landmark/start/assistant/override + jobspawn_override = TRUE + delete_after_roundstart = FALSE + /obj/effect/landmark/start/janitor name = "Janitor" @@ -74,6 +86,7 @@ /obj/effect/landmark/start/ai name = "AI" + delete_after_roundstart = FALSE /obj/effect/landmark/start/captain name = "Captain" From 7a5af2f237e2d8ac025dd43107e85ce5a3f2526a Mon Sep 17 00:00:00 2001 From: XDTM Date: Sun, 26 Nov 2017 01:54:30 +0100 Subject: [PATCH 142/328] [Super-Ready for review]Reworks healing symptoms into conditional healing symptoms --- code/datums/diseases/advance/symptoms/heal.dm | 529 +++++++++++------- .../diseases/advance/symptoms/weight.dm | 58 +- 2 files changed, 338 insertions(+), 249 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 4fba54121f..104a4c00c2 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -9,20 +9,15 @@ base_message_chance = 20 //here used for the overlays symptom_delay_min = 1 symptom_delay_max = 1 - var/hide_healing = FALSE + var/passive_message = "" //random message to infected but not actively healing people threshold_desc = "Stage Speed 6: Doubles healing speed.
\ - Stage Speed 11: Triples healing speed.
\ Stealth 4: Healing will no longer be visible to onlookers." /datum/symptom/heal/Start(datum/disease/advance/A) if(!..()) return - if(A.properties["stealth"] >= 4) //invisible healing - hide_healing = TRUE if(A.properties["stage_rate"] >= 6) //stronger healing power = 2 - if(A.properties["stage_rate"] >= 11) //even stronger healing - power = 3 /datum/symptom/heal/Activate(datum/disease/advance/A) if(!..()) @@ -31,299 +26,439 @@ var/mob/living/M = A.affected_mob switch(A.stage) if(4, 5) - Heal(M, A) + var/effectiveness = CanHeal(A) + if(!effectiveness) + if(passive_message && prob(2) && passive_message_condition(M)) + to_chat(M, passive_message) + return + else + Heal(M, A, effectiveness) return -/datum/symptom/heal/proc/Heal(mob/living/M, datum/disease/advance/A) - return 1 +/datum/symptom/heal/proc/CanHeal(datum/disease/advance/A) + return power -/* -////////////////////////////////////// +/datum/symptom/heal/proc/Heal(mob/living/M, datum/disease/advance/A, actual_power) + return TRUE -Toxin Filter +/datum/symptom/heal/proc/passive_message_condition(mob/living/M) + return TRUE - Little bit hidden. - Lowers resistance tremendously. - Decreases stage speed tremendously. - Decreases transmittablity temrendously. - Fatal Level. - -Bonus - Heals toxins in the affected mob's blood stream. - -////////////////////////////////////// -*/ /datum/symptom/heal/toxin - name = "Toxic Filter" - desc = "The virus synthesizes regenerative chemicals in the bloodstream, repairing damage caused by toxins." + name = "Starlight Condensation" + desc = "The virus reacts to direct starlight, producing regenerative chemicals that can cure toxin damage." stealth = 1 - resistance = -4 - stage_speed = -4 - transmittable = -4 + resistance = -3 + stage_speed = -3 + transmittable = -3 level = 6 + passive_message = "You miss the feeling of starlight on your skin." + var/nearspace_penalty = 0.3 + threshold_desc = "Stage Speed 6: Increases healing speed.
\ + Transmission 6: Removes penalty for only being close to space." -/datum/symptom/heal/toxin/Heal(mob/living/M, datum/disease/advance/A) - var/heal_amt = 1 * power - if(M.toxloss > 0 && prob(base_message_chance) && !hide_healing) - new /obj/effect/temp_visual/heal(get_turf(M), "#66FF99") +/datum/symptom/heal/toxin/Start(datum/disease/advance/A) + if(!..()) + return + if(A.properties["transmission"] >= 6) + nearspace_penalty = 1 + if(A.properties["stage_rate"] >= 6) + power = 2 + +/datum/symptom/heal/toxin/CanHeal(datum/disease/advance/A) + var/mob/living/M = A.affected_mob + if(istype(get_turf(M), /turf/open/space)) + return power + else + for(var/turf/T in view(M, 2)) + if(istype(T, /turf/open/space)) + return power * nearspace_penalty + +/datum/symptom/heal/toxin/Heal(mob/living/M, datum/disease/advance/A, actual_power) + var/heal_amt = actual_power + if(M.getToxLoss() && prob(5)) + to_chat(M, "Your skin tingles as the starlight purges toxins from your bloodstream.") M.adjustToxLoss(-heal_amt) return 1 -/* -////////////////////////////////////// +/datum/symptom/heal/toxin/passive_message_condition(mob/living/M) + if(M.getToxLoss()) + return TRUE + return FALSE -Apoptosis - - Lowers resistance. - Decreases stage speed. - Decreases transmittablity. - -Bonus - Heals toxins in the affected mob's blood stream faster. - -////////////////////////////////////// -*/ - -/datum/symptom/heal/toxin/plus - - name = "Apoptoxin filter" +/datum/symptom/heal/chem + name = "Toxolysis" stealth = 0 resistance = -2 stage_speed = -2 transmittable = -2 - level = 8 - desc = "The virus stimulates production of special stem cells in the bloodstream, causing rapid reparation of any damage caused by toxins." + level = 7 + var/food_conversion = FALSE + desc = "The virus rapidly breaks down any foreign chemicals in the bloodstream." + threshold_desc = "Resistance 7: Increases chem removal speed.
\ + Stage Speed 6: Consumed chemicals nourish the host." -/datum/symptom/heal/toxin/plus/Heal(mob/living/M, datum/disease/advance/A) - var/heal_amt = 2 * power - if(M.toxloss > 0 && prob(base_message_chance) && !hide_healing) - new /obj/effect/temp_visual/heal(get_turf(M), "#00FF00") - M.adjustToxLoss(-heal_amt) +/datum/symptom/heal/chem/Start(datum/disease/advance/A) + if(!..()) + return + if(A.properties["stage_rate"] >= 6) + food_conversion = TRUE + if(A.properties["resistance"] >= 7) + power = 2 + +/datum/symptom/heal/chem/Heal(mob/living/M, datum/disease/advance/A, actual_power) + for(var/datum/reagent/R in M.reagents.reagent_list) //Not just toxins! + M.reagents.remove_reagent(R.id, actual_power) + if(food_conversion) + M.nutrition += 0.3 + if(prob(2)) + to_chat(M, "You feel a mild warmth as your blood purifies itself.") return 1 -/* -////////////////////////////////////// -Regeneration - Little bit hidden. - Lowers resistance tremendously. - Decreases stage speed tremendously. - Decreases transmittablity temrendously. - Fatal Level. +/datum/symptom/heal/metabolism + name = "Metabolic Boost" + stealth = -1 + resistance = -2 + stage_speed = 2 + transmittable = 1 + level = 7 + var/triple_metabolism = FALSE + var/reduced_hunger = FALSE + desc = "The virus causes the host's metabolism to accelerate rapidly, making them process chemicals twice as fast,\ + but also causing increased hunger." + threshold_desc = "Stealth 3: Reduces hunger rate.
\ + Stage Speed 10: Chemical metabolization is tripled instead of doubled." -Bonus - Heals brute damage slowly over time. +/datum/symptom/heal/metabolism/Start(datum/disease/advance/A) + if(!..()) + return + if(A.properties["stage_rate"] >= 10) + triple_metabolism = TRUE + if(A.properties["stealth"] >= 3) + reduced_hunger = TRUE -////////////////////////////////////// -*/ +/datum/symptom/heal/metabolism/Heal(mob/living/carbon/C, datum/disease/advance/A, actual_power) + if(!istype(C)) + return + C.reagents.metabolize(C, can_overdose=TRUE) //this works even without a liver; it's intentional since the virus is metabolizing by itself + if(triple_metabolism) + C.reagents.metabolize(C, can_overdose=TRUE) + C.overeatduration = max(C.overeatduration - 2, 0) + var/lost_nutrition = 9 - (reduced_hunger * 5) + C.nutrition = max(C.nutrition - (lost_nutrition * HUNGER_FACTOR), 0) //Hunger depletes at 10x the normal speed + if(prob(2)) + to_chat(C, "You feel an odd gurgle in your stomach, as if it was working much faster than normal.") + return 1 /datum/symptom/heal/brute - - name = "Regeneration" - desc = "The virus stimulates the regenerative process in the host, causing faster wound healing." + name = "Cellular Molding" + desc = "The virus is able to shift cells around when in conditions of high heat, repairing existing physical damage." stealth = 1 - resistance = -4 - stage_speed = -4 - transmittable = -4 + resistance = -3 + stage_speed = -3 + transmittable = -3 level = 6 + passive_message = "You feel the flesh pulsing under your skin for a moment, but it's too cold to move." + threshold_desc = "Stage Speed 8: Doubles healing speed." -/datum/symptom/heal/brute/Heal(mob/living/carbon/M, datum/disease/advance/A) - var/heal_amt = 2 * power +/datum/symptom/heal/brute/Start(datum/disease/advance/A) + if(!..()) + return + if(A.properties["stage_rate"] >= 8) + power = 2 + +/datum/symptom/heal/brute/CanHeal(datum/disease/advance/A) + var/mob/living/M = A.affected_mob + switch(M.bodytemperature) + if(0 to 340) + return FALSE + if(340 to BODYTEMP_HEAT_DAMAGE_LIMIT) + . = 0.3 * power + if(BODYTEMP_HEAT_DAMAGE_LIMIT to 400) + . = 0.75 * power + if(400 to 460) + . = power + else + . = 1.5 * power + + if(M.on_fire) + . *= 2 + +/datum/symptom/heal/brute/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) + var/heal_amt = 2 * actual_power var/list/parts = M.get_damaged_bodyparts(1,0) //brute only if(!parts.len) return + if(prob(5)) + to_chat(M, "You feel your flesh moving beneath your heated skin, mending your wounds.") + for(var/obj/item/bodypart/L in parts) if(L.heal_damage(heal_amt/parts.len, 0)) M.update_damage_overlays() - - if(prob(base_message_chance) && !hide_healing) - new /obj/effect/temp_visual/heal(get_turf(M), "#FF3333") - return 1 +/datum/symptom/heal/brute/passive_message_condition(mob/living/M) + if(M.getBruteLoss()) + return TRUE + return FALSE -/* -////////////////////////////////////// - -Flesh Mending - - No resistance change. - Decreases stage speed. - Decreases transmittablity. - Fatal Level. - -Bonus - Heals brute damage over time. Turns cloneloss into burn damage. - -////////////////////////////////////// -*/ - -/datum/symptom/heal/brute/plus - - name = "Flesh Mending" - desc = "The virus rapidly mutates into body cells, effectively allowing it to quickly fix the host's wounds." +/datum/symptom/heal/coma + name = "Regenerative Coma" + desc = "The virus causes the host to fall into a death-like coma when severely damaged, then rapidly fixes the damage." stealth = 0 resistance = 0 stage_speed = -2 transmittable = -2 level = 8 + passive_message = "The pain from your wounds makes you feel oddly sleepy..." + var/deathgasp = FALSE + var/active_coma = FALSE //to prevent multiple coma procs + threshold_desc = "Stealth 2: Host appears to die when falling into a coma.
\ + Stage Speed 7: Increases healing speed." -/datum/symptom/heal/brute/plus/Heal(mob/living/carbon/M, datum/disease/advance/A) - var/heal_amt = 4 * power +/datum/symptom/heal/coma/Start(datum/disease/advance/A) + if(!..()) + return + if(A.properties["stage_rate"] >= 7) + power = 1.5 + if(A.properties["stealth"] >= 2) + deathgasp = TRUE - var/list/parts = M.get_damaged_bodyparts(1,0) //brute only +/datum/symptom/heal/coma/CanHeal(datum/disease/advance/A) + var/mob/living/M = A.affected_mob + if(M.status_flags & FAKEDEATH) + return power + else if(M.IsUnconscious() || M.stat == UNCONSCIOUS) + return power * 0.9 + else if(M.stat == SOFT_CRIT) + return power * 0.5 + else if(M.IsSleeping()) + return power * 0.25 + else if(M.getBruteLoss() + M.getFireLoss() >= 70 && !active_coma) + to_chat(M, "You feel yourself slip into a regenerative coma...") + active_coma = TRUE + addtimer(CALLBACK(src, .proc/coma, M), 60) - if(M.getCloneLoss() > 0) - M.adjustCloneLoss(-1) - M.take_bodypart_damage(0, 1) //Deals BURN damage, which is not cured by this symptom - if(!hide_healing) - new /obj/effect/temp_visual/heal(get_turf(M), "#33FFCC") +/datum/symptom/heal/coma/proc/coma(mob/living/M) + if(deathgasp) + M.emote("deathgasp") + M.status_flags |= FAKEDEATH + M.update_stat() + M.update_canmove() + addtimer(CALLBACK(src, .proc/uncoma, M), 300) + +/datum/symptom/heal/coma/proc/uncoma(mob/living/M) + if(!active_coma) + return + active_coma = FALSE + M.status_flags &= ~FAKEDEATH + M.update_stat() + M.update_canmove() + +/datum/symptom/heal/coma/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) + var/heal_amt = 4 * actual_power + + var/list/parts = M.get_damaged_bodyparts(1,1) if(!parts.len) return for(var/obj/item/bodypart/L in parts) - if(L.heal_damage(heal_amt/parts.len, 0)) + if(L.heal_damage(heal_amt/parts.len, heal_amt/parts.len)) M.update_damage_overlays() - if(prob(base_message_chance) && !hide_healing) - new /obj/effect/temp_visual/heal(get_turf(M), "#CC1100") + if(active_coma && M.getBruteLoss() + M.getFireLoss() == 0) + uncoma(M) return 1 -/* -////////////////////////////////////// - -Tissue Regrowth - - Little bit hidden. - Lowers resistance tremendously. - Decreases stage speed tremendously. - Decreases transmittablity temrendously. - Fatal Level. - -Bonus - Heals burn damage slowly over time. - -////////////////////////////////////// -*/ +/datum/symptom/heal/coma/passive_message_condition(mob/living/M) + if((M.getBruteLoss() + M.getFireLoss()) > 30) + return TRUE + return FALSE /datum/symptom/heal/burn - - name = "Tissue Regrowth" - desc = "The virus recycles dead and burnt tissues, speeding up the healing of damage caused by burns." + name = "Tissue Hydration" + desc = "The virus uses excess water inside and outside the body to repair burned tisue cells." stealth = 1 - resistance = -4 - stage_speed = -4 - transmittable = -4 + resistance = -3 + stage_speed = -3 + transmittable = -3 level = 6 + passive_message = "Your burned skin feels oddly dry..." + var/absorption_coeff = 1 + threshold_desc = "Resistance 5: Water is consumed at a much slower rate.
\ + Stage Speed 7: Increases healing speed." -/datum/symptom/heal/burn/Heal(mob/living/carbon/M, datum/disease/advance/A) - var/heal_amt = 2 * power +/datum/symptom/heal/burn/Start(datum/disease/advance/A) + if(!..()) + return + if(A.properties["stage_rate"] >= 7) + power = 2 + if(A.properties["stealth"] >= 2) + absorption_coeff = 0.25 + +/datum/symptom/heal/burn/CanHeal(datum/disease/advance/A) + . = 0 + var/mob/living/M = A.affected_mob + if(M.fire_stacks < 0) + M.fire_stacks = min(M.fire_stacks + 1 * absorption_coeff, 0) + . += power + if(M.reagents.has_reagent("holywater")) + M.reagents.remove_reagent("holywater", 0.5 * absorption_coeff) + . += power * 0.75 + else if(M.reagents.has_reagent("water")) + M.reagents.remove_reagent("water", 0.5 * absorption_coeff) + . += power * 0.5 + +/datum/symptom/heal/burn/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) + var/heal_amt = 2 * actual_power var/list/parts = M.get_damaged_bodyparts(0,1) //burn only if(!parts.len) return + if(prob(5)) + to_chat(M, "You feel yourself absorbing the water around you to soothe your burned skin.") + for(var/obj/item/bodypart/L in parts) if(L.heal_damage(0, heal_amt/parts.len)) M.update_damage_overlays() - if(prob(base_message_chance) && !hide_healing) - new /obj/effect/temp_visual/heal(get_turf(M), "#FF9933") return 1 +/datum/symptom/heal/burn/passive_message_condition(mob/living/M) + if(M.getFireLoss()) + return TRUE + return FALSE -/* -////////////////////////////////////// - -Heat Resistance //Needs a better name - - No resistance change. - Decreases stage speed. - Decreases transmittablity. - Fatal Level. - -Bonus - Heals burn damage over time, and helps stabilize body temperature. - -////////////////////////////////////// -*/ - -/datum/symptom/heal/burn/plus - - name = "Temperature Adaptation" - desc = "The virus quickly balances body heat, while also replacing tissues damaged by external sources." +/datum/symptom/heal/plasma + name = "Plasma Fixation" + desc = "The virus draws plasma from the atmosphere and from inside the body to stabilize body temperature and heal burns." stealth = 0 resistance = 0 stage_speed = -2 transmittable = -2 level = 8 + passive_message = "You feel an odd attraction to plasma." + var/temp_rate = 1 + threshold_desc = "Transmission 6: Increases temperature adjustment rate.
\ + Stage Speed 7: Increases healing speed." -/datum/symptom/heal/burn/plus/Heal(mob/living/carbon/M, datum/disease/advance/A) - var/heal_amt = 4 * power +/datum/symptom/heal/plasma/Start(datum/disease/advance/A) + if(!..()) + return + if(A.properties["stage_rate"] >= 7) + power = 2 + if(A.properties["trasmission"] >= 6) + temp_rate = 4 + +/datum/symptom/heal/plasma/CanHeal(datum/disease/advance/A) + var/mob/living/M = A.affected_mob + var/datum/gas_mixture/environment + var/list/gases + + . = 0 + + if(M.loc) + environment = M.loc.return_air() + if(environment) + gases = environment.gases + if(gases["plasma"] && gases["plasma"][MOLES] > gases["plasma"][GAS_META][META_GAS_MOLES_VISIBLE]) //if there's enough plasma in the air to see + . += power * 0.5 + if(M.reagents.has_reagent("plasma")) + . += power * 0.75 + +/datum/symptom/heal/plasma/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) + var/heal_amt = 4 * actual_power var/list/parts = M.get_damaged_bodyparts(0,1) //burn only + if(prob(5)) + to_chat(M, "You feel yourself absorbing plasma inside and around you...") + if(M.bodytemperature > 310) - M.bodytemperature = max(310, M.bodytemperature - (10 * heal_amt * TEMPERATURE_DAMAGE_COEFFICIENT)) + M.bodytemperature = max(310, M.bodytemperature - (20 * temp_rate * TEMPERATURE_DAMAGE_COEFFICIENT)) + if(prob(5)) + to_chat(M, "You feel less hot.") else if(M.bodytemperature < 311) - M.bodytemperature = min(310, M.bodytemperature + (10 * heal_amt * TEMPERATURE_DAMAGE_COEFFICIENT)) + M.bodytemperature = min(310, M.bodytemperature + (20 * temp_rate * TEMPERATURE_DAMAGE_COEFFICIENT)) + if(prob(5)) + to_chat(M, "You feel warmer.") if(!parts.len) return + if(prob(5)) + to_chat(M, "The pain from your burns fades rapidly.") for(var/obj/item/bodypart/L in parts) if(L.heal_damage(0, heal_amt/parts.len)) M.update_damage_overlays() - - if(prob(base_message_chance) && !hide_healing) - new /obj/effect/temp_visual/heal(get_turf(M), "#CC6600") return 1 -/* -////////////////////////////////////// - DNA Restoration - - Not well hidden. - Lowers resistance minorly. - Does not affect stage speed. - Decreases transmittablity greatly. - Very high level. - -Bonus - Heals brain damage, treats radiation, cleans SE of non-power mutations. - -////////////////////////////////////// -*/ - -/datum/symptom/heal/dna - - name = "Deoxyribonucleic Acid Restoration" - desc = "The virus repairs the host's genome, purging negative mutations." +/datum/symptom/heal/radiation + name = "Radioactive Resonance" + desc = "The virus uses radiation to fix damage through dna mutations." stealth = -1 - resistance = -1 + resistance = -2 stage_speed = 0 transmittable = -3 - level = 5 - symptom_delay_min = 3 - symptom_delay_max = 8 - threshold_desc = "Stage Speed 6: Additionally heals brain damage.
\ - Stage Speed 11: Increases brain damage healing." + level = 6 + symptom_delay_min = 1 + symptom_delay_max = 1 + passive_message = "Your skin glows faintly for a moment." + var/cellular_damage = FALSE + threshold_desc = "Transmission 6: Additionally heals cellular damage.
\ + Resistance 7: Increases healing speed." -/datum/symptom/heal/dna/Heal(mob/living/carbon/M, datum/disease/advance/A) - var/amt_healed = 2 * (power - 1) - M.adjustBrainLoss(-amt_healed) - //Non-power mutations, excluding race, so the virus does not force monkey -> human transformations. - var/list/unclean_mutations = (GLOB.not_good_mutations|GLOB.bad_mutations) - GLOB.mutations_list[RACEMUT] - M.dna.remove_mutation_group(unclean_mutations) - M.radiation = max(M.radiation - (2 * amt_healed), 0) +/datum/symptom/heal/radiation/Start(datum/disease/advance/A) + if(!..()) + return + if(A.properties["resistance"] >= 7) + power = 2 + if(A.properties["trasmission"] >= 6) + cellular_damage = TRUE + +/datum/symptom/heal/radiation/CanHeal(datum/disease/advance/A) + var/mob/living/M = A.affected_mob + switch(M.radiation) + if(0) + return FALSE + if(1 to RAD_MOB_SAFE) + return 0.25 + if(RAD_MOB_SAFE to RAD_BURN_THRESHOLD) + return 0.5 + if(RAD_BURN_THRESHOLD to RAD_MOB_MUTATE) + return 0.75 + if(RAD_MOB_MUTATE to RAD_MOB_KNOCKDOWN) + return 1 + else + return 1.5 + +/datum/symptom/heal/radiation/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) + var/heal_amt = actual_power + + if(cellular_damage) + M.adjustCloneLoss(-heal_amt * 0.5) + + var/list/parts = M.get_damaged_bodyparts(1,1) + + if(!parts.len) + return + + if(prob(4)) + to_chat(M, "Your skin glows faintly, and you feel your wounds mending themselves.") + + for(var/obj/item/bodypart/L in parts) + if(L.heal_damage(heal_amt/parts.len, heal_amt/parts.len)) + M.update_damage_overlays() return 1 diff --git a/code/datums/diseases/advance/symptoms/weight.dm b/code/datums/diseases/advance/symptoms/weight.dm index f8f4343649..c502203f70 100644 --- a/code/datums/diseases/advance/symptoms/weight.dm +++ b/code/datums/diseases/advance/symptoms/weight.dm @@ -1,56 +1,6 @@ /* ////////////////////////////////////// -Weight Gain - - Very Very Noticable. - Decreases resistance. - Decreases stage speed. - Reduced transmittable. - Intense Level. - -Bonus - Increases the weight gain of the mob, - forcing it to eventually turn fat. -////////////////////////////////////// -*/ - -/datum/symptom/weight_gain - - name = "Weight Gain" - desc = "The virus mutates the host's metabolism, making it gain weight much faster than normal." - stealth = -3 - resistance = -3 - stage_speed = -2 - transmittable = -2 - level = 4 - severity = 3 - base_message_chance = 100 - symptom_delay_min = 15 - symptom_delay_max = 45 - threshold_desc = "Stealth 4: The symptom is less noticeable." - -/datum/symptom/weight_gain/Start(datum/disease/advance/A) - if(!..()) - return - if(A.properties["stealth"] >= 4) //warn less often - base_message_chance = 25 - -/datum/symptom/weight_gain/Activate(datum/disease/advance/A) - if(!..()) - return - var/mob/living/M = A.affected_mob - switch(A.stage) - if(1, 2, 3, 4) - if(prob(base_message_chance)) - to_chat(M, "[pick("You feel blubbery.", "Your stomach hurts.")]") - else - M.overeatduration = min(M.overeatduration + 100, 600) - M.nutrition = min(M.nutrition + 100, NUTRITION_LEVEL_FULL) - -/* -////////////////////////////////////// - Weight Loss Very Very Noticable. @@ -70,8 +20,8 @@ Bonus name = "Weight Loss" desc = "The virus mutates the host's metabolism, making it almost unable to gain nutrition from food." - stealth = -3 - resistance = -2 + stealth = -2 + resistance = 2 stage_speed = -2 transmittable = -2 level = 3 @@ -98,6 +48,7 @@ Bonus else to_chat(M, "[pick("So hungry...", "You'd kill someone for a bite of food...", "Hunger cramps seize you...")]") M.overeatduration = max(M.overeatduration - 100, 0) +<<<<<<< HEAD M.nutrition = max(M.nutrition - 100, 0) /* @@ -139,3 +90,6 @@ Bonus if(4, 5) M.overeatduration = 0 M.nutrition = NUTRITION_LEVEL_WELL_FED + 50 +======= + M.nutrition = max(M.nutrition - 100, 0) +>>>>>>> fbe8889... [Super-Ready for review]Reworks healing symptoms into conditional healing symptoms (#32432) From 5c7f4661bd97f9978ad377dc529ddba22a24df81 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 25 Nov 2017 20:13:49 -0600 Subject: [PATCH 143/328] Automatic changelog generation for PR #4124 [ci skip] --- html/changelogs/AutoChangeLog-pr-4124.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4124.yml diff --git a/html/changelogs/AutoChangeLog-pr-4124.yml b/html/changelogs/AutoChangeLog-pr-4124.yml new file mode 100644 index 0000000000..e568f3e9df --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4124.yml @@ -0,0 +1,4 @@ +author: "WJohnston" +delete-after: True +changes: + - bugfix: "Fixed a case where items would sometimes be placed underneath racks." From 1dfeb13b77b96b638a8b77a562530c86d87e0945 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 25 Nov 2017 20:14:04 -0600 Subject: [PATCH 144/328] Automatic changelog generation for PR #4125 [ci skip] --- html/changelogs/AutoChangeLog-pr-4125.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4125.yml diff --git a/html/changelogs/AutoChangeLog-pr-4125.yml b/html/changelogs/AutoChangeLog-pr-4125.yml new file mode 100644 index 0000000000..a8f5bdbe86 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4125.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - bugfix: "Hopefully fixed mesons granting the ability to hear people through walls." From 80b3a2001a8793fff01b069e2a31fdb5ad57e5e6 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 25 Nov 2017 20:14:58 -0600 Subject: [PATCH 145/328] Automatic changelog generation for PR #4126 [ci skip] --- html/changelogs/AutoChangeLog-pr-4126.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4126.yml diff --git a/html/changelogs/AutoChangeLog-pr-4126.yml b/html/changelogs/AutoChangeLog-pr-4126.yml new file mode 100644 index 0000000000..42689125e8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4126.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Cryo cells can now be properly rotated with a wrench." From 8120e188f2c1de9db8a764641cc4994194532dca Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 25 Nov 2017 20:15:29 -0600 Subject: [PATCH 146/328] Automatic changelog generation for PR #4127 [ci skip] --- html/changelogs/AutoChangeLog-pr-4127.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4127.yml diff --git a/html/changelogs/AutoChangeLog-pr-4127.yml b/html/changelogs/AutoChangeLog-pr-4127.yml new file mode 100644 index 0000000000..b9f6abc58d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4127.yml @@ -0,0 +1,4 @@ +author: "More Robust Than You" +delete-after: True +changes: + - bugfix: "Fixed cult leaders being de-culted upon election if they had a mindshield implant" From dcf2e91e1a781a8226f5e4049f6d8049f1c09f4f Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 25 Nov 2017 20:16:05 -0600 Subject: [PATCH 147/328] Automatic changelog generation for PR #4129 [ci skip] --- html/changelogs/AutoChangeLog-pr-4129.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4129.yml diff --git a/html/changelogs/AutoChangeLog-pr-4129.yml b/html/changelogs/AutoChangeLog-pr-4129.yml new file mode 100644 index 0000000000..16d3765876 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4129.yml @@ -0,0 +1,4 @@ +author: "ninjanomnom" +delete-after: True +changes: + - rscadd: "You can now make a new tasty traditional treat: butterdogs. Watch out, they're slippery." From 87fca9945493737596c0564650f0384df51df21e Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 25 Nov 2017 20:18:59 -0600 Subject: [PATCH 148/328] Automatic changelog generation for PR #4116 [ci skip] --- html/changelogs/AutoChangeLog-pr-4116.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4116.yml diff --git a/html/changelogs/AutoChangeLog-pr-4116.yml b/html/changelogs/AutoChangeLog-pr-4116.yml new file mode 100644 index 0000000000..877ad76460 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4116.yml @@ -0,0 +1,5 @@ +author: "Dorsisdwarf" +delete-after: True +changes: + - tweak: "Catpeople are now distracted instead of debilitated" + - rscadd: "Normal cats now go for laser pointers" From 73bc0fa70014c0860870cadaa8e7d95e16067473 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 25 Nov 2017 20:19:18 -0600 Subject: [PATCH 149/328] Automatic changelog generation for PR #4111 [ci skip] --- html/changelogs/AutoChangeLog-pr-4111.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4111.yml diff --git a/html/changelogs/AutoChangeLog-pr-4111.yml b/html/changelogs/AutoChangeLog-pr-4111.yml new file mode 100644 index 0000000000..1019538b17 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4111.yml @@ -0,0 +1,4 @@ +author: "ninjanomnom" +delete-after: True +changes: + - bugfix: "Fixes thermite burning hotter than the boiling point of stone" From fb4787fbd1bef04e82ae257bdbdebfb27caf86c8 Mon Sep 17 00:00:00 2001 From: Mark9013100 Date: Sun, 26 Nov 2017 01:01:03 -0500 Subject: [PATCH 150/328] Oldstation edits/fixes (#33080) --- _maps/RandomRuins/SpaceRuins/oldstation.dmm | 60 +++++++++---------- .../reagents/reagent_containers/glass.dm | 50 ++++++++-------- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index bf9e23978e..d0c8abc18e 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -1979,7 +1979,7 @@ "fI" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch, -/obj/machinery/atmospherics/pipe/simple/supply/visible, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/hydroponics) "fJ" = ( @@ -2111,12 +2111,12 @@ /turf/open/floor/plasteel/airless/floorgrime, /area/ruin/space/has_grav/ancientstation/betanorth) "ga" = ( -/obj/machinery/atmospherics/pipe/simple/supply/visible{ - dir = 4 - }, /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plating/airless, /area/ruin/space/has_grav/ancientstation/betanorth) "gb" = ( @@ -2124,7 +2124,7 @@ /obj/item/stack/cable_coil{ amount = 2 }, -/obj/machinery/atmospherics/pipe/simple/supply/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/template_noop, @@ -2134,12 +2134,12 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/supply/visible{ - dir = 4 - }, /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/template_noop, /area/template_noop) "gd" = ( @@ -2147,7 +2147,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/template_noop, @@ -2163,7 +2163,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/template_noop, @@ -2176,7 +2176,7 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/supply/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/template_noop, @@ -2192,7 +2192,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plating, @@ -2202,7 +2202,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plating, @@ -2216,7 +2216,7 @@ /obj/structure/cable{ icon_state = "2-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plating, @@ -2230,7 +2230,7 @@ icon_state = "1-8" }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plating, @@ -2253,7 +2253,7 @@ /obj/item/stack/cable_coil{ amount = 2 }, -/obj/machinery/atmospherics/pipe/simple/supply/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plating, @@ -2318,7 +2318,7 @@ }, /obj/machinery/door/airlock/maintenance_hatch, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plating, @@ -2328,7 +2328,7 @@ icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plating, @@ -2347,7 +2347,7 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plating, @@ -2358,7 +2358,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/supply/visible{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, /turf/open/floor/plating, @@ -2485,7 +2485,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/machinery/atmospherics/pipe/simple/supply/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plating, @@ -2494,7 +2494,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plating/airless, @@ -2504,7 +2504,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plating, @@ -2514,7 +2514,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plating, @@ -2527,7 +2527,7 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plating, @@ -2538,7 +2538,7 @@ icon_state = "4-8" }, /obj/machinery/door/airlock/maintenance_hatch, -/obj/machinery/atmospherics/pipe/simple/supply/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plating, @@ -2670,7 +2670,7 @@ "gZ" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch, -/obj/machinery/atmospherics/pipe/simple/supply/visible, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/kitchen) "ha" = ( @@ -2687,7 +2687,7 @@ /area/ruin/space/has_grav/ancientstation/sec) "hc" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/visible, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/red/side{ dir = 4 }, @@ -2854,7 +2854,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/visible, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/red/side{ dir = 4 }, @@ -4288,7 +4288,7 @@ /turf/open/floor/plasteel/white, /area/ruin/space/has_grav/ancientstation/proto) "kV" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/visible{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, /turf/open/floor/plating/airless, diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 20c4ba6933..c27e2e9ea5 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -315,101 +315,101 @@ list_reagents = list() /obj/item/reagent_containers/glass/beaker/large/hydrogen - name = "hydrogen" + name = "hydrogen beaker" list_reagents = list("hydrogen" = 50) /obj/item/reagent_containers/glass/beaker/large/lithium - name = "lithium" + name = "lithium beaker" list_reagents = list("lithium" = 50) /obj/item/reagent_containers/glass/beaker/large/carbon - name = "carbon" + name = "carbon beaker" list_reagents = list("carbon" = 50) /obj/item/reagent_containers/glass/beaker/large/nitrogen - name = "nitrogen" + name = "nitrogen beaker" list_reagents = list("nitrogen" = 50) /obj/item/reagent_containers/glass/beaker/large/oxygen - name = "oxygen" + name = "oxygen beaker" list_reagents = list("oxygen" = 50) /obj/item/reagent_containers/glass/beaker/large/fluorine - name = "fluorine" + name = "fluorine beaker" list_reagents = list("fluorine" = 50) /obj/item/reagent_containers/glass/beaker/large/sodium - name = "sodium" + name = "sodium beaker" list_reagents = list("sodium" = 50) /obj/item/reagent_containers/glass/beaker/large/aluminium - name = "aluminium" + name = "aluminium beaker" list_reagents = list("aluminium" = 50) /obj/item/reagent_containers/glass/beaker/large/silicon - name = "silicon" + name = "silicon beaker" list_reagents = list("silicon" = 50) /obj/item/reagent_containers/glass/beaker/large/phosphorus - name = "phosphorus" + name = "phosphorus beaker" list_reagents = list("phosphorus" = 50) /obj/item/reagent_containers/glass/beaker/large/sulfur - name = "sulfur" + name = "sulfur beaker" list_reagents = list("sulfur" = 50) /obj/item/reagent_containers/glass/beaker/large/chlorine - name = "chlorine" + name = "chlorine beaker" list_reagents = list("chlorine" = 50) /obj/item/reagent_containers/glass/beaker/large/potassium - name = "potassium" + name = "potassium beaker" list_reagents = list("potassium" = 50) /obj/item/reagent_containers/glass/beaker/large/iron - name = "iron" + name = "iron beaker" list_reagents = list("iron" = 50) /obj/item/reagent_containers/glass/beaker/large/copper - name = "copper" + name = "copper beaker" list_reagents = list("copper" = 50) /obj/item/reagent_containers/glass/beaker/large/mercury - name = "mercury" + name = "mercury beaker" list_reagents = list("mercury" = 50) /obj/item/reagent_containers/glass/beaker/large/radium - name = "radium" + name = "radium beaker" list_reagents = list("radium" = 50) /obj/item/reagent_containers/glass/beaker/large/water - name = "water" + name = "water beaker" list_reagents = list("water" = 50) /obj/item/reagent_containers/glass/beaker/large/ethanol - name = "ethanol" + name = "ethanol beaker" list_reagents = list("ethanol" = 50) /obj/item/reagent_containers/glass/beaker/large/sugar - name = "sugar" + name = "sugar beaker" list_reagents = list("sugar" = 50) /obj/item/reagent_containers/glass/beaker/large/sacid - name = "sacid" + name = "sulphuric acid beaker" list_reagents = list("sacid" = 50) /obj/item/reagent_containers/glass/beaker/large/welding_fuel - name = "welding_fuel" + name = "welding fuel beaker" list_reagents = list("welding_fuel" = 50) /obj/item/reagent_containers/glass/beaker/large/silver - name = "silver" + name = "silver beaker" list_reagents = list("silver" = 50) /obj/item/reagent_containers/glass/beaker/large/iodine - name = "iodine" + name = "iodine beaker" list_reagents = list("iodine" = 50) /obj/item/reagent_containers/glass/beaker/large/bromine - name = "bromine" + name = "bromine beaker" list_reagents = list("bromine" = 50) \ No newline at end of file From 0be326633da5317205e3f1bce7fc84431b2dcfbd Mon Sep 17 00:00:00 2001 From: ACCount Date: Sun, 26 Nov 2017 13:56:47 +0300 Subject: [PATCH 152/328] More integrated circuit fixes and code improvements --- code/__DEFINES/integrated_electronics.dm | 2 + code/game/objects/items/devices/multitool.dm | 10 +- .../integrated_electronics/core/analyzer.dm | 2 +- .../integrated_electronics/core/assemblies.dm | 155 +++++++++--- .../integrated_electronics/core/debugger.dm | 6 +- .../integrated_electronics/core/helpers.dm | 26 +- .../core/integrated_circuit.dm | 167 ++++--------- .../integrated_electronics/core/pins.dm | 64 +++-- .../integrated_electronics/core/printer.dm | 24 +- .../core/saved_circuits.dm | 33 ++- .../core/special_pins/char_pin.dm | 2 +- .../core/special_pins/index_pin.dm | 21 ++ .../core/special_pins/list_pin.dm | 4 + .../core/special_pins/string_pin.dm | 2 +- .../integrated_electronics/core/wirer.dm | 8 +- .../subtypes/converters.dm | 6 +- .../subtypes/data_transfer.dm | 58 +++-- .../integrated_electronics/subtypes/input.dm | 20 +- .../integrated_electronics/subtypes/lists.dm | 232 ++++++++++++++---- .../subtypes/manipulation.dm | 59 +++-- .../integrated_electronics/subtypes/memory.dm | 4 +- .../integrated_electronics/subtypes/output.dm | 87 +++---- .../obj/assemblies/electronic_components.dmi | Bin 0 -> 21210 bytes icons/obj/assemblies/electronic_misc.dmi | Bin 0 -> 2623 bytes icons/obj/assemblies/electronic_setups.dmi | Bin 0 -> 3757 bytes icons/obj/assemblies/electronic_tools.dmi | Bin 0 -> 2179 bytes icons/obj/electronic_assemblies.dmi | Bin 41014 -> 0 bytes icons/obj/electronic_assemblies2.dmi | Bin 30302 -> 0 bytes tgstation.dme | 1 + 29 files changed, 590 insertions(+), 403 deletions(-) create mode 100644 code/modules/integrated_electronics/core/special_pins/index_pin.dm create mode 100644 icons/obj/assemblies/electronic_components.dmi create mode 100644 icons/obj/assemblies/electronic_misc.dmi create mode 100644 icons/obj/assemblies/electronic_setups.dmi create mode 100644 icons/obj/assemblies/electronic_tools.dmi delete mode 100644 icons/obj/electronic_assemblies.dmi delete mode 100644 icons/obj/electronic_assemblies2.dmi diff --git a/code/__DEFINES/integrated_electronics.dm b/code/__DEFINES/integrated_electronics.dm index 8e9e1b7cea..77ee69892e 100644 --- a/code/__DEFINES/integrated_electronics.dm +++ b/code/__DEFINES/integrated_electronics.dm @@ -20,6 +20,7 @@ #define IC_FORMAT_BOOLEAN "\" #define IC_FORMAT_REF "\" #define IC_FORMAT_LIST "\" +#define IC_FORMAT_INDEX "\" #define IC_FORMAT_PULSE "\" @@ -33,6 +34,7 @@ #define IC_PINTYPE_BOOLEAN /datum/integrated_io/boolean #define IC_PINTYPE_REF /datum/integrated_io/ref #define IC_PINTYPE_LIST /datum/integrated_io/lists +#define IC_PINTYPE_INDEX /datum/integrated_io/index #define IC_PINTYPE_PULSE_IN /datum/integrated_io/activate #define IC_PINTYPE_PULSE_OUT /datum/integrated_io/activate/out diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 40963c3b08..b38e872ba3 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -59,8 +59,7 @@ if(io.holder.assembly && io.holder.assembly != selected_io.holder.assembly) to_chat(user, "Both \the [io.holder] and \the [selected_io.holder] need to be inside the same assembly.") return - selected_io.linked |= io - io.linked |= selected_io + io.connect_pin(selected_io) to_chat(user, "You connect \the [selected_io.holder]'s [selected_io.name] to \the [io.holder]'s [io.name].") selected_io.holder.interact(user) // This is to update the UI. @@ -82,8 +81,7 @@ to_chat(user, "These data pins aren't connected!") return else - io1.linked.Remove(io2) - io2.linked.Remove(io1) + io1.disconnect_pin(io2) to_chat(user, "You clip the data connection between the [io1.holder.displayed_name]'s \ [io1.name] and the [io2.holder.displayed_name]'s [io2.name].") io1.holder.interact(user) // This is to update the UI. @@ -162,5 +160,9 @@ desc = "An omni-technological interface." icon = 'icons/obj/abductor.dmi' icon_state = "multitool" +<<<<<<< HEAD toolspeed = 0.1 origin_tech = "magnets=5;engineering=5;abductor=3" +======= + toolspeed = 0.1 +>>>>>>> 0d2955e... More integrated circuit fixes and code improvements (#33034) diff --git a/code/modules/integrated_electronics/core/analyzer.dm b/code/modules/integrated_electronics/core/analyzer.dm index 02b8c88acc..0166f9bce7 100644 --- a/code/modules/integrated_electronics/core/analyzer.dm +++ b/code/modules/integrated_electronics/core/analyzer.dm @@ -1,7 +1,7 @@ /obj/item/device/integrated_electronics/analyzer name = "circuit analyzer" desc = "This tool can scan an assembly and generate code necessary to recreate it in a circuit printer." - icon = 'icons/obj/electronic_assemblies.dmi' + icon = 'icons/obj/assemblies/electronic_tools.dmi' icon_state = "analyzer" flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index 6f552e1df4..5d457dfeed 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -5,10 +5,11 @@ name = "electronic assembly" desc = "It's a case, for building small electronics with." w_class = WEIGHT_CLASS_SMALL - icon = 'icons/obj/electronic_assemblies.dmi' + icon = 'icons/obj/assemblies/electronic_setups.dmi' icon_state = "setup_small" flags_1 = NOBLUDGEON_1 materials = list() // To be filled later + var/list/assembly_components = list() var/max_components = IC_MAX_SIZE_BASE var/max_complexity = IC_COMPLEXITY_BASE var/opened = FALSE @@ -40,11 +41,12 @@ /obj/item/device/electronic_assembly/proc/handle_idle_power() // First we generate power. - for(var/obj/item/integrated_circuit/passive/power/P in contents) + for(var/obj/item/integrated_circuit/passive/power/P in assembly_components) P.make_energy() // Now spend it. - for(var/obj/item/integrated_circuit/IC in contents) + for(var/I in assembly_components) + var/obj/item/integrated_circuit/IC = I if(IC.power_draw_idle) if(!draw_power(IC.power_draw_idle)) IC.power_fail() @@ -59,8 +61,8 @@ var/HTML = "" HTML += "[name]" - HTML += "
\[Refresh\] | " - HTML += "\[Rename\]
" + + HTML += "\[Refresh\] | \[Rename\]
" HTML += "[total_part_size]/[max_components] ([round((total_part_size / max_components) * 100, 0.1)]%) space taken up in the assembly.
" HTML += "[total_complexity]/[max_complexity] ([round((total_complexity / max_complexity) * 100, 0.1)]%) maximum complexity.
" if(battery) @@ -73,16 +75,14 @@ HTML += "Components:" - var/list/components = return_all_components() var/builtin_components = "" - for(var/c in components) + for(var/c in assembly_components) var/obj/item/integrated_circuit/circuit = c if(!circuit.removable) - builtin_components += "[circuit.displayed_name] | " - builtin_components += "\[Rename\] | " - builtin_components += "\[Scan with Debugger\] | " - builtin_components += "\[Move to Bottom\]" + builtin_components += "[circuit.displayed_name] | " + builtin_components += "\[Rename\] | " + builtin_components += "\[Scan with Debugger\]" builtin_components += "
" // Put removable circuits (if any) in separate categories from non-removable @@ -95,14 +95,17 @@ HTML += "
" - for(var/c in components) + for(var/c in assembly_components) var/obj/item/integrated_circuit/circuit = c if(circuit.removable) - HTML += "[circuit.displayed_name] | " - HTML += "\[Rename\] | " - HTML += "\[Scan with Debugger\] | " - HTML += "\[Remove\] | " - HTML += "\[Move to Bottom\]" + HTML += "[circuit.displayed_name] | " + HTML += "\[Rename\] | " + HTML += "\[Scan with Debugger\] | " + HTML += "\[Remove\] | " + HTML += " " + HTML += " " + HTML += " " + HTML += "" HTML += "
" HTML += "" @@ -125,6 +128,46 @@ to_chat(usr, "You pull \the [battery] out of \the [src]'s power supplier.") battery = null + if(href_list["component"]) + var/obj/item/integrated_circuit/component = locate(href_list["component"]) in assembly_components + if(component) + // Builtin components are not supposed to be removed or rearranged + if(!component.removable) + return + + var/current_pos = assembly_components.Find(component) + + // Find the position of a first removable component + var/first_removable_pos + for(var/i in 1 to assembly_components.len) + var/obj/item/integrated_circuit/temp_component = assembly_components[i] + if(temp_component.removable) + first_removable_pos = i + break + + if(href_list["remove"]) + try_remove_component(component, usr) + + else + // Adjust the position + if(href_list["up"]) + current_pos-- + else if(href_list["down"]) + current_pos++ + else if(href_list["top"]) + current_pos = first_removable_pos + else if(href_list["bottom"]) + current_pos = assembly_components.len + + // Wrap around nicely + if(current_pos < first_removable_pos) + current_pos = assembly_components.len + else if(current_pos > assembly_components.len) + current_pos = first_removable_pos + + assembly_components.Remove(component) + assembly_components.Insert(current_pos, component) + interact(usr) // To refresh the UI. /obj/item/device/electronic_assembly/proc/rename() @@ -142,9 +185,6 @@ /obj/item/device/electronic_assembly/proc/can_move() return FALSE -/obj/item/device/electronic_assembly/drone/can_move() - return TRUE - /obj/item/device/electronic_assembly/update_icon() if(opened) icon_state = initial(icon_state) + "-open" @@ -153,9 +193,10 @@ /obj/item/device/electronic_assembly/examine(mob/user) ..() - for(var/obj/item/integrated_circuit/IC in contents) + for(var/I in assembly_components) + var/obj/item/integrated_circuit/IC = I IC.external_examine(user) - if(istype(IC,/obj/item/integrated_circuit/output/screen)) + if(istype(IC, /obj/item/integrated_circuit/output/screen)) var/obj/item/integrated_circuit/output/screen/S if(S.stuff_to_display) to_chat(user, "There's a little screen labeled '[S]', which displays '[S.stuff_to_display]'.") @@ -164,21 +205,20 @@ /obj/item/device/electronic_assembly/proc/return_total_complexity() . = 0 - for(var/obj/item/integrated_circuit/part in contents) + var/obj/item/integrated_circuit/part + for(var/p in assembly_components) + part = p . += part.complexity /obj/item/device/electronic_assembly/proc/return_total_size() . = 0 - for(var/obj/item/integrated_circuit/part in contents) + var/obj/item/integrated_circuit/part + for(var/p in assembly_components) + part = p . += part.size -/obj/item/device/electronic_assembly/proc/return_all_components() - . = list() - for(var/obj/item/integrated_circuit/part in contents) - . += part - // Returns true if the circuit made it inside. -/obj/item/device/electronic_assembly/proc/add_circuit(var/obj/item/integrated_circuit/IC, var/mob/user) +/obj/item/device/electronic_assembly/proc/try_add_component(obj/item/integrated_circuit/IC, mob/user) if(!opened) to_chat(user, "\The [src]'s hatch is closed, you can't put anything inside.") return FALSE @@ -200,12 +240,45 @@ if(!user.transferItemToLoc(IC, src)) return FALSE - IC.assembly = src + to_chat(user, "You slide [IC] inside [src].") + playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) + add_component(IC) return TRUE + +// Actually puts the circuit inside, doesn't perform any checks. +/obj/item/device/electronic_assembly/proc/add_component(obj/item/integrated_circuit/component) + component.forceMove(get_object()) + component.assembly = src + assembly_components |= component + + +/obj/item/device/electronic_assembly/proc/try_remove_component(obj/item/integrated_circuit/IC, mob/user) + if(!opened) + to_chat(user, "[src]'s hatch is closed, so you can't fiddle with the internal components.") + return FALSE + + if(!IC.removable) + to_chat(user, "[src] is permanently attached to the case.") + return FALSE + + to_chat(user, "You pop \the [src] out of the case, and slide it out.") + playsound(src, 'sound/items/Crowbar.ogg', 50, 1) + + remove_component(IC) + return TRUE + +// Actually removes the component, doesn't perform any checks. +/obj/item/device/electronic_assembly/proc/remove_component(obj/item/integrated_circuit/component) + component.disconnect_all() + component.forceMove(drop_location()) + component.assembly = null + assembly_components.Remove(component) + + /obj/item/device/electronic_assembly/afterattack(atom/target, mob/user, proximity) - for(var/obj/item/integrated_circuit/input/sensor/S in contents) + for(var/obj/item/integrated_circuit/input/sensor/S in assembly_components) if(!proximity) if(istype(S,/obj/item/integrated_circuit/input/sensor/ranged)||(!user)) if(user.client) @@ -234,12 +307,10 @@ if(istype(I, /obj/item/integrated_circuit)) if(!user.canUnEquip(I)) return FALSE - if(add_circuit(I, user)) - to_chat(user, "You slide [I] inside [src].") - playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1) + if(try_add_component(I, user)) interact(user) return TRUE - else if(istype(I, /obj/item/device/integrated_electronics/wirer) || istype(I, /obj/item/device/integrated_electronics/debugger)) + else if(istype(I, /obj/item/device/multitool) || istype(I, /obj/item/device/integrated_electronics/wirer) || istype(I, /obj/item/device/integrated_electronics/debugger)) if(opened) interact(user) else @@ -270,7 +341,7 @@ var/list/input_selection = list() var/list/available_inputs = list() - for(var/obj/item/integrated_circuit/input/input in contents) + for(var/obj/item/integrated_circuit/input/input in assembly_components) if(input.can_be_asked_input) available_inputs.Add(input) var/i = 0 @@ -316,9 +387,14 @@ return FALSE /obj/item/device/electronic_assembly/Moved(oldLoc, dir) - for(var/obj/item/integrated_circuit/IC in contents) + for(var/I in assembly_components) + var/obj/item/integrated_circuit/IC = I IC.ext_moved(oldLoc, dir) +// Returns the object that is supposed to be used in attack messages, location checks, etc. +// Override in children for special behavior. +/obj/item/device/electronic_assembly/proc/get_object() + return src @@ -363,3 +439,6 @@ w_class = WEIGHT_CLASS_SMALL max_components = IC_MAX_SIZE_BASE * 3 max_complexity = IC_COMPLEXITY_BASE * 3 + +/obj/item/device/electronic_assembly/drone/can_move() + return TRUE diff --git a/code/modules/integrated_electronics/core/debugger.dm b/code/modules/integrated_electronics/core/debugger.dm index 7dc89178d2..ac6f5c1a1e 100644 --- a/code/modules/integrated_electronics/core/debugger.dm +++ b/code/modules/integrated_electronics/core/debugger.dm @@ -1,10 +1,8 @@ - - /obj/item/device/integrated_electronics/debugger name = "circuit debugger" desc = "This small tool allows one working with custom machinery to directly set data to a specific pin, useful for writing \ settings to specific circuits, or for debugging purposes. It can also pulse activation pins." - icon = 'icons/obj/electronic_assemblies.dmi' + icon = 'icons/obj/assemblies/electronic_tools.dmi' icon_state = "debugger" flags_1 = CONDUCT_1 | NOBLUDGEON_1 w_class = WEIGHT_CLASS_SMALL @@ -20,7 +18,7 @@ switch(type_to_use) if("string") accepting_refs = FALSE - new_data = stripped_input(user, "Now type in a string.","[src] string writing") + new_data = stripped_input(user, "Now type in a string.","[src] string writing", no_trim = TRUE) if(istext(new_data) && user.IsAdvancedToolUser()) data_to_write = new_data to_chat(user, "You set \the [src]'s memory to \"[new_data]\".") diff --git a/code/modules/integrated_electronics/core/helpers.dm b/code/modules/integrated_electronics/core/helpers.dm index 04137a4d05..e84823f201 100644 --- a/code/modules/integrated_electronics/core/helpers.dm +++ b/code/modules/integrated_electronics/core/helpers.dm @@ -54,21 +54,6 @@ return activators[pin_number] return -/obj/item/integrated_circuit/proc/handle_wire(var/datum/integrated_io/pin, var/obj/item/device/integrated_electronics/tool) - if(istype(tool, /obj/item/device/integrated_electronics/wirer)) - var/obj/item/device/integrated_electronics/wirer/wirer = tool - if(pin) - wirer.wire(pin, usr) - return TRUE - - else if(istype(tool, /obj/item/device/integrated_electronics/debugger)) - var/obj/item/device/integrated_electronics/debugger/debugger = tool - if(pin) - debugger.write_data(pin, usr) - return TRUE - return FALSE - - /datum/integrated_io/proc/get_data() if(isweakref(data)) return data.resolve() @@ -76,7 +61,7 @@ // Returns a list of parameters necessary to locate a pin in the assembly: component number, pin type and pin number -// Components list can be supplied from the outside, for use in savefiles or for extra performance if you are calling this multiple times +// Components list can be supplied from the outside, for use in savefiles /datum/integrated_io/proc/get_pin_parameters(list/components) if(!holder) return @@ -84,7 +69,7 @@ if(!components) if(!holder.assembly) return - components = holder.assembly.return_all_components() + components = holder.assembly.assembly_components var/component_number = components.Find(holder) @@ -105,10 +90,10 @@ // Locates a pin in the assembly when given component number, pin type and pin number -// Components list can be supplied from the outside, for use in savefiles or for extra performance if you are calling this multiple times +// Components list can be supplied from the outside, for use in savefiles /obj/item/device/electronic_assembly/proc/get_pin_ref(component_number, pin_type, pin_number, list/components) if(!components) - components = return_all_components() + components = assembly_components if(component_number > components.len) return @@ -120,6 +105,9 @@ // Same as get_pin_ref, but takes in a list of 3 parameters (same format as get_pin_parameters) // and performs extra sanity checks on parameters list and index numbers /obj/item/device/electronic_assembly/proc/get_pin_ref_list(list/parameters, list/components) + if(!components) + components = assembly_components + if(!islist(parameters) || parameters.len != 3) return diff --git a/code/modules/integrated_electronics/core/integrated_circuit.dm b/code/modules/integrated_electronics/core/integrated_circuit.dm index 042e93a2aa..748acfa5e4 100644 --- a/code/modules/integrated_electronics/core/integrated_circuit.dm +++ b/code/modules/integrated_electronics/core/integrated_circuit.dm @@ -1,7 +1,7 @@ /obj/item/integrated_circuit name = "integrated circuit" desc = "It's a tiny chip! This one doesn't seem to do much, however." - icon = 'icons/obj/electronic_assemblies.dmi' + icon = 'icons/obj/assemblies/electronic_components.dmi' icon_state = "template" w_class = WEIGHT_CLASS_TINY materials = list() // To be filled later @@ -22,8 +22,6 @@ var/category_text = "NO CATEGORY THIS IS A BUG" // To show up on circuit printer, and perhaps other places. var/removable = TRUE // Determines if a circuit is removable from the assembly. var/displayed_name = "" - var/allow_multitool = TRUE // Allows additional multitool functionality - // Used as a global var, (Do not set manually in children). /* Integrated circuits are essentially modular machines. Each circuit has a specific function, and combining them inside Electronic Assemblies allows @@ -104,9 +102,11 @@ a creative player the means to solve many problems. Circuits are held inside an if(!check_interactivity(M)) return - var/input = reject_bad_name(stripped_input(M, "What do you want to name this?", "Rename", src.name),1) - if(src && input && check_interactivity(M)) - to_chat(M, "The circuit '[src.name]' is now labeled '[input]'.") + var/input = reject_bad_name(stripped_input(M, "What do you want to name this?", "Rename", name), TRUE) + if(check_interactivity(M)) + if(!input) + input = name + to_chat(M, "The circuit '[name]' is now labeled '[input]'.") displayed_name = input /obj/item/integrated_circuit/interact(mob/user) @@ -124,13 +124,15 @@ a creative player the means to solve many problems. Circuits are held inside an HTML += "

" HTML += "" - HTML += "
\[Return to Assembly\]" + if(assembly) + HTML += "\[Return to Assembly\]
" - HTML += "
\[Refresh\] | " + HTML += "\[Refresh\] | " HTML += "\[Rename\] | " - HTML += "\[Scan with Device\] | " - if(removable) - HTML += "\[Remove\]
" + HTML += "\[Scan with Device\]" + if(assembly && removable) + HTML += " | \[Remove\]" + HTML += "
" HTML += "" HTML += "" @@ -151,12 +153,13 @@ a creative player the means to solve many problems. Circuits are held inside an if(1) io = get_pin_ref(IC_INPUT, i) if(io) - words += "[io.display_pin_type()] [io.name] [io.display_data(io.data)]
" + words += "[io.display_pin_type()] [io.name] \ + [io.display_data(io.data)]
" if(io.linked.len) for(var/k in 1 to io.linked.len) var/datum/integrated_io/linked = io.linked[k] - words += "[linked] \ - @ [linked.holder.displayed_name]
" + words += "[linked] \ + @ [linked.holder.displayed_name]
" if(outputs.len > inputs.len) height = 1 @@ -169,12 +172,13 @@ a creative player the means to solve many problems. Circuits are held inside an if(3) io = get_pin_ref(IC_OUTPUT, i) if(io) - words += "[io.display_pin_type()] [io.name] [io.display_data(io.data)]
" + words += "[io.display_pin_type()] [io.name] \ + [io.display_data(io.data)]
" if(io.linked.len) for(var/k in 1 to io.linked.len) var/datum/integrated_io/linked = io.linked[k] - words += "[linked] \ - @ [linked.holder.displayed_name]
" + words += "[linked] \ + @ [linked.holder.displayed_name]
" if(inputs.len > outputs.len) height = 1 @@ -185,12 +189,13 @@ a creative player the means to solve many problems. Circuits are held inside an var/datum/integrated_io/io = activator var/words = list() - words += "[io] [io.data?"\":"\"]
" + words += "[io] " + words += "[io.data?"\":"\"]
" if(io.linked.len) for(var/k in 1 to io.linked.len) var/datum/integrated_io/linked = io.linked[k] - words += "[linked] \ - @ [linked.holder.displayed_name]
" + words += "[linked] \ + @ [linked.holder.displayed_name]
" HTML += "" HTML += "" @@ -221,80 +226,24 @@ a creative player the means to solve many problems. Circuits are held inside an return TRUE var/update = TRUE - var/obj/item/device/electronic_assembly/A = src.assembly var/update_to_assembly = FALSE - var/datum/integrated_io/pin = locate(href_list["pin"]) in inputs + outputs + activators - var/datum/integrated_io/linked = null - if(href_list["link"]) - linked = locate(href_list["link"]) in pin.linked var/obj/held_item = usr.get_active_held_item() if(href_list["rename"]) rename_component(usr) - if(href_list["from_assembly"]) - update = FALSE - var/obj/item/device/electronic_assembly/ea = loc - if(istype(ea)) - ea.interact(usr) - if(href_list["pin_name"]) - if (!istype(held_item, /obj/item/device/multitool) || !allow_multitool) - href_list["wire"] = TRUE - else - var/obj/item/device/multitool/M = held_item - M.wire(pin,usr) + if(href_list["pin"]) + var/datum/integrated_io/pin = locate(href_list["pin"]) in inputs + outputs + activators + if(pin) + var/datum/integrated_io/linked + if(href_list["link"]) + linked = locate(href_list["link"]) in pin.linked - - - if(href_list["pin_data"]) - if (!istype(held_item, /obj/item/device/multitool) || !allow_multitool) - href_list["wire"] = TRUE - - else - var/datum/integrated_io/io = pin - io.ask_for_pin_data(usr) // The pins themselves will determine how to ask for data, and will validate the data. - - if(href_list["pin_unwire"]) - if (!istype(held_item, /obj/item/device/multitool) || !allow_multitool) - href_list["wire"] = TRUE - else - var/obj/item/device/multitool/M = held_item - M.unwire(pin, linked, usr) - - if(href_list["wire"]) - if(istype(held_item, /obj/item/device/integrated_electronics/wirer)) - var/obj/item/device/integrated_electronics/wirer/wirer = held_item - if(linked) - wirer.wire(linked, usr) - else if(pin) - wirer.wire(pin, usr) - - else if(istype(held_item, /obj/item/device/integrated_electronics/debugger)) - var/obj/item/device/integrated_electronics/debugger/debugger = held_item - if(pin) - debugger.write_data(pin, usr) - else - to_chat(usr, "You can't do a whole lot without the proper tools.") - - if(href_list["examine"]) - var/obj/item/integrated_circuit/examined - if(href_list["examined"]) - examined = href_list["examined"] - else - examined = src - examined.interact(usr) - update = FALSE - - if(href_list["bottom"]) - var/obj/item/integrated_circuit/circuit = locate(href_list["bottom"]) in src.assembly.contents - var/assy = circuit.assembly - if(!circuit) - return - circuit.loc = null - circuit.loc = assy - . = TRUE - update_to_assembly = TRUE + if(istype(held_item, /obj/item/device/integrated_electronics) || istype(held_item, /obj/item/device/multitool)) + pin.handle_wire(linked, held_item, href_list["act"], usr) + else + to_chat(usr, "You can't do a whole lot without the proper tools.") if(href_list["scan"]) if(istype(held_item, /obj/item/device/integrated_electronics/debugger)) @@ -304,39 +253,15 @@ a creative player the means to solve many problems. Circuits are held inside an else to_chat(usr, "The debugger's 'ref scanner' needs to be on.") else - to_chat(usr, "You need a multitool/debugger set to 'ref' mode to do that.") + to_chat(usr, "You need a debugger set to 'ref' mode to do that.") if(href_list["return"]) - if(A) - update_to_assembly = TRUE - usr << browse(null, "window=circuit-[REF(src)];border=1;can_resize=1;can_close=1;can_minimize=1") - else - to_chat(usr, "This circuit is not in an assembly!") + update_to_assembly = TRUE - if(href_list["remove"]) - if(!A) - to_chat(usr, "This circuit is not in an assembly!") - return - if(!removable) - to_chat(usr, "\The [src] seems to be permanently attached to the case.") - return - var/obj/item/device/electronic_assembly/ea = loc - disconnect_all() - var/turf/T = get_turf(src) - forceMove(T) - assembly = null - playsound(T, 'sound/items/Crowbar.ogg', 50, 1) - to_chat(usr, "You pop \the [src] out of the case, and slide it out.") - - if(istype(ea)) - ea.interact(usr) - update = FALSE - return - if(update) - if(A && istype(A) && update_to_assembly) - A.interact(usr) + if(assembly && update_to_assembly) + assembly.interact(usr) else interact(usr) // To refresh the UI. @@ -384,18 +309,24 @@ a creative player the means to solve many problems. Circuits are held inside an for(var/i in inputs) I = i - I.disconnect() + I.disconnect_all() for(var/i in outputs) I = i - I.disconnect() + I.disconnect_all() for(var/i in activators) I = i - I.disconnect() + I.disconnect_all() /obj/item/integrated_circuit/proc/ext_moved(oldLoc, dir) return - +// Returns the object that is supposed to be used in attack messages, location checks, etc. +/obj/item/integrated_circuit/proc/get_object() + // If the component is located in an assembly, let assembly determine it. + if(assembly) + return assembly.get_object() + else + return src // If not, the component is acting on its own. diff --git a/code/modules/integrated_electronics/core/pins.dm b/code/modules/integrated_electronics/core/pins.dm index 25ef3b80b8..bff96b713c 100644 --- a/code/modules/integrated_electronics/core/pins.dm +++ b/code/modules/integrated_electronics/core/pins.dm @@ -40,7 +40,7 @@ D [1]/ || message_admins("ERROR: An integrated_io ([name]) spawned without a valid holder! This is a bug.") /datum/integrated_io/Destroy() - disconnect() + disconnect_all() data = null holder = null return ..() @@ -102,7 +102,36 @@ D [1]/ || /datum/integrated_io/activate/scramble() push_data() -/datum/integrated_io/proc/write_data_to_pin(var/new_data) +/datum/integrated_io/proc/handle_wire(datum/integrated_io/linked_pin, obj/item/tool, action, mob/living/user) + if(istype(tool, /obj/item/device/multitool)) + var/obj/item/device/multitool/multitool = tool + switch(action) + if("wire") + multitool.wire(src, user) + return TRUE + if("unwire") + if(linked_pin) + multitool.unwire(src, linked_pin, user) + return TRUE + if("data") + ask_for_pin_data(user) + return TRUE + + else if(istype(tool, /obj/item/device/integrated_electronics/wirer)) + var/obj/item/device/integrated_electronics/wirer/wirer = tool + if(linked_pin) + wirer.wire(linked_pin, user) + else + wirer.wire(src, user) + + else if(istype(tool, /obj/item/device/integrated_electronics/debugger)) + var/obj/item/device/integrated_electronics/debugger/debugger = tool + debugger.write_data(src, user) + return TRUE + + return FALSE + +/datum/integrated_io/proc/write_data_to_pin(new_data) if(isnull(new_data) || isnum(new_data) || istext(new_data) || isweakref(new_data)) data = new_data holder.on_data_written() @@ -131,21 +160,20 @@ D [1]/ || return "the [english_list(linked)]" return "nothing" -/datum/integrated_io/proc/disconnect() - //First we iterate over everything we are linked to. - if(linked && linked.len) - for(var/i in 1 to linked.len) - var/datum/integrated_io/their_io = linked[i] - //While doing that, we iterate them as well, and disconnect ourselves from them. - if(their_io.linked.len && their_io.linked) - for(var/j in 1 to their_io.linked.len) - var/datum/integrated_io/their_linked_io = their_io.linked[j] - if(their_linked_io == src) - their_io.linked.Remove(src) - else - continue - //Now that we're removed from them, we gotta remove them from us. - linked.Remove(their_io) + +/datum/integrated_io/proc/connect_pin(datum/integrated_io/pin) + pin.linked |= src + linked |= pin + +// Iterates over every linked pin and disconnects them. +/datum/integrated_io/proc/disconnect_all() + for(var/pin in linked) + disconnect_pin(pin) + +/datum/integrated_io/proc/disconnect_pin(datum/integrated_io/pin) + pin.linked.Remove(src) + linked.Remove(pin) + /datum/integrated_io/proc/ask_for_data_type(mob/user, var/default, var/list/allowed_data_types = list("string","number","null")) var/type_to_use = input("Please choose a type to use.","[src] type setting") as null|anything in allowed_data_types @@ -155,7 +183,7 @@ D [1]/ || var/new_data = null switch(type_to_use) if("string") - new_data = stripped_input(user, "Now type in a string.","[src] string writing", istext(default) ? default : null) + new_data = stripped_input(user, "Now type in a string.","[src] string writing", istext(default) ? default : null, no_trim = TRUE) if(istext(new_data) && holder.check_interactivity(user) ) to_chat(user, "You input "+new_data+" into the pin.") return new_data diff --git a/code/modules/integrated_electronics/core/printer.dm b/code/modules/integrated_electronics/core/printer.dm index 89a0e2b213..6951d1dd09 100644 --- a/code/modules/integrated_electronics/core/printer.dm +++ b/code/modules/integrated_electronics/core/printer.dm @@ -1,7 +1,7 @@ /obj/item/device/integrated_circuit_printer name = "integrated circuit printer" desc = "A portable(ish) machine made to print tiny modular circuitry out of metal." - icon = 'icons/obj/electronic_assemblies.dmi' + icon = 'icons/obj/assemblies/electronic_tools.dmi' icon_state = "circuit_printer" w_class = WEIGHT_CLASS_BULKY var/upgraded = TRUE // When hit with an upgrade disk, will turn true, allowing it to print the higher tier circuits. @@ -108,16 +108,13 @@ if(!build_type || !ispath(build_type)) return TRUE - var/cost = 1 + var/cost = 400 if(ispath(build_type, /obj/item/device/electronic_assembly)) - var/obj/item/device/electronic_assembly/E = build_type - cost = round( (initial(E.max_complexity) + initial(E.max_components) ) / 4) + var/obj/item/device/electronic_assembly/E = SScircuit.cached_assemblies[build_type] + cost = E.materials[MAT_METAL] else if(ispath(build_type, /obj/item/integrated_circuit)) - var/obj/item/integrated_circuit/IC = build_type - cost = initial(IC.w_class) - - - cost *= SScircuit.cost_multiplier + var/obj/item/integrated_circuit/IC = SScircuit.cached_components[build_type] + cost = IC.materials[MAT_METAL] var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) @@ -125,7 +122,12 @@ to_chat(usr, "You need [cost] metal to build that!") return TRUE - new build_type(get_turf(loc)) + var/obj/item/built = new build_type(drop_location()) + + if(istype(built, /obj/item/device/electronic_assembly)) + var/obj/item/device/electronic_assembly/E = built + E.opened = TRUE + E.update_icon() if(href_list["print"]) if(!CONFIG_GET(flag/ic_printing)) @@ -179,7 +181,7 @@ /obj/item/disk/integrated_circuit/upgrade name = "integrated circuit printer upgrade disk" desc = "Install this into your integrated circuit printer to enhance it." - icon = 'icons/obj/electronic_assemblies.dmi' + icon = 'icons/obj/assemblies/electronic_tools.dmi' icon_state = "upgrade_disk" item_state = "card-id" w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/integrated_electronics/core/saved_circuits.dm b/code/modules/integrated_electronics/core/saved_circuits.dm index cbbe58f16d..34abff9a1f 100644 --- a/code/modules/integrated_electronics/core/saved_circuits.dm +++ b/code/modules/integrated_electronics/core/saved_circuits.dm @@ -23,6 +23,8 @@ // Don't waste space saving the default values if(input.data == inputs_default["[index]"]) continue + if(input.data == initial(input.data)) + continue var/list/input_value = list(index, FALSE, input.data) // Index, Type, Value @@ -91,15 +93,13 @@ //var/input_type = input[2] var/input_value = input[3] - var/datum/integrated_io/IO = inputs[index] - IO.write_data_to_pin(input_value) - // write_data_to_pin includes all the value sanity checks you'll ever need + var/datum/integrated_io/pin = inputs[index] + // The pins themselves validate the data. + pin.write_data_to_pin(input_value) // TODO: support for special input types, such as internal refs and maybe typepaths - - // Saves type and modified name (if any) to a list // The list is converted to JSON down the line. /obj/item/device/electronic_assembly/proc/save() @@ -144,10 +144,8 @@ // Attempts to save an assembly into a save file format. // Returns null if assembly is not complete enough to be saved. /datum/controller/subsystem/processing/circuit/proc/save_electronic_assembly(obj/item/device/electronic_assembly/assembly) - var/list/assembly_components = assembly.return_all_components() - // No components? Don't even try to save it. - if(!length(assembly_components)) + if(!length(assembly.assembly_components)) return @@ -160,7 +158,7 @@ // Block 2. Components. var/list/components = list() - for(var/c in assembly_components) + for(var/c in assembly.assembly_components) var/obj/item/integrated_circuit/component = c components.Add(list(component.save())) blocks["components"] = components @@ -170,18 +168,18 @@ var/list/wires = list() var/list/saved_wires = list() - for(var/c in assembly_components) + for(var/c in assembly.assembly_components) var/obj/item/integrated_circuit/component = c var/list/all_pins = component.inputs + component.outputs + component.activators for(var/p in all_pins) var/datum/integrated_io/pin = p - var/list/params = pin.get_pin_parameters(assembly_components) + var/list/params = pin.get_pin_parameters() var/text_params = params.Join() for(var/p2 in pin.linked) var/datum/integrated_io/pin2 = p2 - var/list/params2 = pin2.get_pin_parameters(assembly_components) + var/list/params2 = pin2.get_pin_parameters() var/text_params2 = params2.Join() // Check if we already saved an opposite version of this wire @@ -318,23 +316,20 @@ // Block 2. Components. - var/list/assembly_components = list() for(var/component_params in blocks["components"]) var/obj/item/integrated_circuit/component_path = all_components[component_params["type"]] var/obj/item/integrated_circuit/component = new component_path(assembly) - component.assembly = assembly + assembly.add_component(component) component.load(component_params) - assembly_components.Add(component) // Block 3. Wires. if(blocks["wires"]) for(var/w in blocks["wires"]) var/list/wire = w - var/datum/integrated_io/IO = assembly.get_pin_ref_list(wire[1], assembly_components) - var/datum/integrated_io/IO2 = assembly.get_pin_ref_list(wire[2], assembly_components) - IO.linked |= IO2 - IO2.linked |= IO + var/datum/integrated_io/IO = assembly.get_pin_ref_list(wire[1]) + var/datum/integrated_io/IO2 = assembly.get_pin_ref_list(wire[2]) + IO.connect_pin(IO2) assembly.forceMove(loc) return assembly diff --git a/code/modules/integrated_electronics/core/special_pins/char_pin.dm b/code/modules/integrated_electronics/core/special_pins/char_pin.dm index 1d859f86b5..3e466891eb 100644 --- a/code/modules/integrated_electronics/core/special_pins/char_pin.dm +++ b/code/modules/integrated_electronics/core/special_pins/char_pin.dm @@ -3,7 +3,7 @@ name = "char pin" /datum/integrated_io/char/ask_for_pin_data(mob/user) - var/new_data = stripped_input(user, "Please type in one character.","[src] char writing") + var/new_data = stripped_input(user, "Please type in one character.","[src] char writing", no_trim = TRUE) if(holder.check_interactivity(user) ) to_chat(user, "You input [new_data ? "new_data" : "NULL"] into the pin.") write_data_to_pin(new_data) diff --git a/code/modules/integrated_electronics/core/special_pins/index_pin.dm b/code/modules/integrated_electronics/core/special_pins/index_pin.dm new file mode 100644 index 0000000000..802a2612d3 --- /dev/null +++ b/code/modules/integrated_electronics/core/special_pins/index_pin.dm @@ -0,0 +1,21 @@ +// These pins can only contain integer numbers between 1 and IC_MAX_LIST_LENGTH. Null is not allowed. +/datum/integrated_io/index + name = "index pin" + data = 1 + +/datum/integrated_io/index/ask_for_pin_data(mob/user) + var/new_data = input("Please type in an index.","[src] index writing") as num + if(isnum(new_data) && holder.check_interactivity(user)) + to_chat(user, "You input [new_data] into the pin.") + write_data_to_pin(new_data) + +/datum/integrated_io/index/write_data_to_pin(new_data) + if(isnull(new_data)) + new_data = 1 + + if(isnum(new_data)) + data = Clamp(round(new_data), 1, IC_MAX_LIST_LENGTH) + holder.on_data_written() + +/datum/integrated_io/index/display_pin_type() + return IC_FORMAT_INDEX diff --git a/code/modules/integrated_electronics/core/special_pins/list_pin.dm b/code/modules/integrated_electronics/core/special_pins/list_pin.dm index ddf3a48362..8a6f80ea63 100644 --- a/code/modules/integrated_electronics/core/special_pins/list_pin.dm +++ b/code/modules/integrated_electronics/core/special_pins/list_pin.dm @@ -112,6 +112,10 @@ var/list/new_list = new_data data = new_list.Copy(max(1,new_list.len - IC_MAX_LIST_LENGTH+1),0) holder.on_data_written() + else if(isnull(new_data)) // Clear the list + var/list/my_list = data + my_list.Cut() + holder.on_data_written() /datum/integrated_io/lists/display_pin_type() return IC_FORMAT_LIST diff --git a/code/modules/integrated_electronics/core/special_pins/string_pin.dm b/code/modules/integrated_electronics/core/special_pins/string_pin.dm index a619e7450f..49d6aa9554 100644 --- a/code/modules/integrated_electronics/core/special_pins/string_pin.dm +++ b/code/modules/integrated_electronics/core/special_pins/string_pin.dm @@ -3,7 +3,7 @@ name = "string pin" /datum/integrated_io/string/ask_for_pin_data(mob/user) - var/new_data = stripped_input(user, "Please type in a string.","[src] string writing") + var/new_data = stripped_input(user, "Please type in a string.","[src] string writing", no_trim = TRUE) if(holder.check_interactivity(user) ) to_chat(user, "You input [new_data ? "[new_data]" : "NULL"] into the pin.") write_data_to_pin(new_data) diff --git a/code/modules/integrated_electronics/core/wirer.dm b/code/modules/integrated_electronics/core/wirer.dm index c1caba00cd..bfbbfa4864 100644 --- a/code/modules/integrated_electronics/core/wirer.dm +++ b/code/modules/integrated_electronics/core/wirer.dm @@ -8,7 +8,7 @@ desc = "It's a small wiring tool, with a wire roll, electric soldering iron, wire cutter, and more in one package. \ The wires used are generally useful for small electronics, such as circuitboards and breadboards, as opposed to larger wires \ used for power or data transmission." - icon = 'icons/obj/electronic_assemblies.dmi' + icon = 'icons/obj/assemblies/electronic_tools.dmi' icon_state = "wirer-wire" flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_SMALL @@ -38,8 +38,7 @@ if(io.holder.assembly && io.holder.assembly != selected_io.holder.assembly) to_chat(user, "Both \the [io.holder] and \the [selected_io.holder] need to be inside the same assembly.") return - selected_io.linked |= io - io.linked |= selected_io + selected_io.connect_pin(io) to_chat(user, "You connect \the [selected_io.holder]'s [selected_io.name] to \the [io.holder]'s [io.name].") mode = WIRE @@ -64,8 +63,7 @@ the same pin is rather moot.") return if(selected_io in io.linked) - io.linked.Remove(selected_io) - selected_io.linked.Remove(io) + selected_io.disconnect_pin(io) to_chat(user, "You disconnect \the [selected_io.holder]'s [selected_io.name] from \ \the [io.holder]'s [io.name].") selected_io.holder.interact(user) // This is to update the UI. diff --git a/code/modules/integrated_electronics/subtypes/converters.dm b/code/modules/integrated_electronics/subtypes/converters.dm index 373a059f45..272dbef071 100644 --- a/code/modules/integrated_electronics/subtypes/converters.dm +++ b/code/modules/integrated_electronics/subtypes/converters.dm @@ -175,6 +175,7 @@ extended_desc = "This circuits splits a given string into two, based on the string, and the index value. \ The index splits the string after the given index, including spaces. So 'a person' with an index of '3' \ will split into 'a p' and 'erson'." + icon_state = "split" complexity = 4 inputs = list( "string to split" = IC_PINTYPE_STRING, @@ -232,6 +233,7 @@ desc = "This splits a single string into a list of strings." extended_desc = "This circuit splits a given string into a list of strings based on the string and given delimiter. \ For example, 'eat this burger',' ' will be converted to list('eat','this','burger')." + icon_state = "split" complexity = 4 inputs = list( "string to split" = IC_PINTYPE_STRING, @@ -245,8 +247,8 @@ /obj/item/integrated_circuit/converter/exploders/do_work() var/strin = get_pin_data(IC_INPUT, 1) - var/sample = get_pin_data(IC_INPUT, 2) - set_pin_data(IC_OUTPUT, 1, splittext( strin ,sample )) + var/delimiter = get_pin_data(IC_INPUT, 2) + set_pin_data(IC_OUTPUT, 1, splittext(strin, delimiter)) push_data() activate_pin(2) diff --git a/code/modules/integrated_electronics/subtypes/data_transfer.dm b/code/modules/integrated_electronics/subtypes/data_transfer.dm index d28bb72e33..20b80926c8 100644 --- a/code/modules/integrated_electronics/subtypes/data_transfer.dm +++ b/code/modules/integrated_electronics/subtypes/data_transfer.dm @@ -14,15 +14,15 @@ activators = list("select" = IC_PINTYPE_PULSE_IN, "on select" = IC_PINTYPE_PULSE_OUT) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH power_draw_per_use = 4 - var/number_of_inputs = 2 + var/number_of_pins = 2 -/obj/item/integrated_circuit/transfer/multiplexer/New() - for(var/i = 1 to number_of_inputs) +/obj/item/integrated_circuit/transfer/multiplexer/Initialize() + for(var/i = 1 to number_of_pins) inputs["input [i]"] = IC_PINTYPE_ANY // This is just a string since pins don't get built until ..() is called. - complexity = number_of_inputs - ..() - desc += " It has [number_of_inputs] input pins." + complexity = number_of_pins + . = ..() + desc += " It has [number_of_pins] input pins." extended_desc += " This multiplexer has a range from 1 to [inputs.len - 1]." /obj/item/integrated_circuit/transfer/multiplexer/do_work() @@ -35,20 +35,20 @@ /obj/item/integrated_circuit/transfer/multiplexer/medium name = "four multiplexer" - number_of_inputs = 4 icon_state = "mux4" + number_of_pins = 4 /obj/item/integrated_circuit/transfer/multiplexer/large name = "eight multiplexer" - number_of_inputs = 8 w_class = WEIGHT_CLASS_SMALL icon_state = "mux8" + number_of_pins = 8 /obj/item/integrated_circuit/transfer/multiplexer/huge name = "sixteen multiplexer" icon_state = "mux16" w_class = WEIGHT_CLASS_SMALL - number_of_inputs = 16 + number_of_pins = 16 /obj/item/integrated_circuit/transfer/demultiplexer name = "two demultiplexer" @@ -62,16 +62,15 @@ activators = list("select" = IC_PINTYPE_PULSE_IN, "on select" = IC_PINTYPE_PULSE_OUT) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH power_draw_per_use = 4 - var/number_of_outputs = 2 + var/number_of_pins = 2 -/obj/item/integrated_circuit/transfer/demultiplexer/New() - for(var/i = 1 to number_of_outputs) - // outputs += "output [i]" +/obj/item/integrated_circuit/transfer/demultiplexer/Initialize() + for(var/i = 1 to number_of_pins) outputs["output [i]"] = IC_PINTYPE_ANY - complexity = number_of_outputs + complexity = number_of_pins - ..() - desc += " It has [number_of_outputs] output pins." + . = ..() + desc += " It has [number_of_pins] output pins." extended_desc += " This demultiplexer has a range from 1 to [outputs.len]." /obj/item/integrated_circuit/transfer/demultiplexer/do_work() @@ -84,19 +83,19 @@ /obj/item/integrated_circuit/transfer/demultiplexer/medium name = "four demultiplexer" icon_state = "dmux4" - number_of_outputs = 4 + number_of_pins = 4 /obj/item/integrated_circuit/transfer/demultiplexer/large name = "eight demultiplexer" icon_state = "dmux8" w_class = WEIGHT_CLASS_SMALL - number_of_outputs = 8 + number_of_pins = 8 /obj/item/integrated_circuit/transfer/demultiplexer/huge name = "sixteen demultiplexer" icon_state = "dmux16" w_class = WEIGHT_CLASS_SMALL - number_of_outputs = 16 + number_of_pins = 16 /obj/item/integrated_circuit/transfer/pulsedemultiplexer name = "two pulse demultiplexer" @@ -110,37 +109,36 @@ activators = list("select" = IC_PINTYPE_PULSE_IN) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH power_draw_per_use = 4 - var/number_of_outputs = 2 + var/number_of_pins = 2 -/obj/item/integrated_circuit/transfer/pulsedemultiplexer/New() - for(var/i = 1 to number_of_outputs) - // outputs += "output [i]" +/obj/item/integrated_circuit/transfer/pulsedemultiplexer/Initialize() + for(var/i = 1 to number_of_pins) activators["output [i]"] = IC_PINTYPE_PULSE_OUT - complexity = number_of_outputs + complexity = number_of_pins - ..() - desc += " It has [number_of_outputs] output pins." + . = ..() + desc += " It has [number_of_pins] output pins." extended_desc += " This pulse demultiplexer has a range from 1 to [activators.len - 1]." /obj/item/integrated_circuit/transfer/pulsedemultiplexer/do_work() var/output_index = get_pin_data(IC_INPUT, 1) - if(output_index == Clamp(output_index, 1, number_of_outputs)) + if(output_index == Clamp(output_index, 1, number_of_pins)) activate_pin(round(output_index + 1 ,1)) /obj/item/integrated_circuit/transfer/pulsedemultiplexer/medium name = "four pulse demultiplexer" icon_state = "dmux4" - number_of_outputs = 4 + number_of_pins = 4 /obj/item/integrated_circuit/transfer/pulsedemultiplexer/large name = "eight pulse demultiplexer" icon_state = "dmux8" w_class = WEIGHT_CLASS_SMALL - number_of_outputs = 8 + number_of_pins = 8 /obj/item/integrated_circuit/transfer/pulsedemultiplexer/huge name = "sixteen pulse demultiplexer" icon_state = "dmux16" w_class = WEIGHT_CLASS_SMALL - number_of_outputs = 16 \ No newline at end of file + number_of_pins = 16 \ No newline at end of file diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index b579901a2d..aa486f8f98 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -248,10 +248,12 @@ /obj/item/integrated_circuit/input/examiner name = "examiner" desc = "It' s a little machine vision system. It can return the name, description, distance, \ - relative coordinates, total amount of reagents, and maximum amount of reagents of the referenced object." + relative coordinates, total amount of reagents, maximum amount of reagents, density and opacity of the referenced object." icon_state = "video_camera" complexity = 6 - inputs = list("\ target" = IC_PINTYPE_REF) + inputs = list( + "target" = IC_PINTYPE_REF + ) outputs = list( "name" = IC_PINTYPE_STRING, "description" = IC_PINTYPE_STRING, @@ -260,8 +262,14 @@ "distance" = IC_PINTYPE_NUMBER, "max reagents" = IC_PINTYPE_NUMBER, "amount of reagents" = IC_PINTYPE_NUMBER, - ) - activators = list("scan" = IC_PINTYPE_PULSE_IN, "on scanned" = IC_PINTYPE_PULSE_OUT, "not scanned" = IC_PINTYPE_PULSE_OUT) + "density" = IC_PINTYPE_BOOLEAN, + "opacity" = IC_PINTYPE_BOOLEAN, + ) + activators = list( + "scan" = IC_PINTYPE_PULSE_IN, + "on scanned" = IC_PINTYPE_PULSE_OUT, + "not scanned" = IC_PINTYPE_PULSE_OUT + ) spawn_flags = IC_SPAWN_RESEARCH origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3, TECH_BIO = 4) power_draw_per_use = 80 @@ -273,8 +281,6 @@ return if(H in view(T)) // This is a camera. It can't examine thngs,that it can't see. - - set_pin_data(IC_OUTPUT, 1, H.name) set_pin_data(IC_OUTPUT, 2, H.desc) set_pin_data(IC_OUTPUT, 3, H.x-T.x) @@ -287,6 +293,8 @@ tr = H.reagents.total_volume set_pin_data(IC_OUTPUT, 6, mr) set_pin_data(IC_OUTPUT, 7, tr) + set_pin_data(IC_OUTPUT, 8, H.density) + set_pin_data(IC_OUTPUT, 9, H.opacity) push_data() activate_pin(2) else diff --git a/code/modules/integrated_electronics/subtypes/lists.dm b/code/modules/integrated_electronics/subtypes/lists.dm index 0d622f58e2..aa373c9940 100644 --- a/code/modules/integrated_electronics/subtypes/lists.dm +++ b/code/modules/integrated_electronics/subtypes/lists.dm @@ -2,29 +2,41 @@ /obj/item/integrated_circuit/lists complexity = 1 inputs = list( - "input" = IC_PINTYPE_LIST - ) - outputs = list("result" = IC_PINTYPE_STRING) - activators = list("compute" = IC_PINTYPE_PULSE_IN, "on computed" = IC_PINTYPE_PULSE_OUT) + "input" = IC_PINTYPE_LIST + ) + outputs = list( + "result" = IC_PINTYPE_STRING + ) + activators = list( + "compute" = IC_PINTYPE_PULSE_IN, + "on computed" = IC_PINTYPE_PULSE_OUT + ) category_text = "Lists" power_draw_per_use = 20 /obj/item/integrated_circuit/lists/pick name = "pick circuit" desc = "This circuit will pick a random element from the input list, and output said element." - extended_desc = "Will output null if the list is empty. Input list is unmodified." + extended_desc = "Input list is unmodified." icon_state = "addition" + outputs = list( + "result" = IC_PINTYPE_ANY + ) + activators = list( + "compute" = IC_PINTYPE_PULSE_IN, + "on success" = IC_PINTYPE_PULSE_OUT, + "on failure" = IC_PINTYPE_PULSE_OUT, + ) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH /obj/item/integrated_circuit/lists/pick/do_work() - var/result = null var/list/input_list = get_pin_data(IC_INPUT, 1) // List pins guarantee that there is a list inside, even if just an empty one. if(input_list.len) - result = pick(input_list) - - set_pin_data(IC_OUTPUT, 1, result) - push_data() - activate_pin(2) + set_pin_data(IC_OUTPUT, 1, pick(input_list)) + push_data() + activate_pin(2) + else + activate_pin(3) /obj/item/integrated_circuit/lists/append @@ -34,10 +46,10 @@ inputs = list( "list to append" = IC_PINTYPE_LIST, "input" = IC_PINTYPE_ANY - ) + ) outputs = list( "appended list" = IC_PINTYPE_LIST - ) + ) icon_state = "addition" spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH @@ -52,6 +64,7 @@ push_data() activate_pin(2) + /obj/item/integrated_circuit/lists/search name = "search circuit" desc = "This circuit will get the index location of the desired element in a list." @@ -59,19 +72,30 @@ inputs = list( "list" = IC_PINTYPE_LIST, "item" = IC_PINTYPE_ANY - ) + ) outputs = list( "index" = IC_PINTYPE_NUMBER - ) + ) + activators = list( + "compute" = IC_PINTYPE_PULSE_IN, + "on success" = IC_PINTYPE_PULSE_OUT, + "on failure" = IC_PINTYPE_PULSE_OUT, + ) icon_state = "addition" spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH /obj/item/integrated_circuit/lists/search/do_work() var/list/input_list = get_pin_data(IC_INPUT, 1) - var/item = get_pin_data(IC_INPUT, 2) - set_pin_data(IC_OUTPUT, 1, input_list.Find(item)) + var/output = input_list.Find(get_pin_data(IC_INPUT, 2)) + + set_pin_data(IC_OUTPUT, 1, output) push_data() - activate_pin(2) + + if(output) + activate_pin(2) + else + activate_pin(3) + /obj/item/integrated_circuit/lists/at name = "at circuit" @@ -79,31 +103,46 @@ extended_desc = "If there is no element with such index, result will be null." inputs = list( "list" = IC_PINTYPE_LIST, - "index" = IC_PINTYPE_NUMBER - ) - outputs = list("item" = IC_PINTYPE_ANY) + "index" = IC_PINTYPE_INDEX + ) + outputs = list( + "item" = IC_PINTYPE_ANY + ) + activators = list( + "compute" = IC_PINTYPE_PULSE_IN, + "on success" = IC_PINTYPE_PULSE_OUT, + "on failure" = IC_PINTYPE_PULSE_OUT, + ) icon_state = "addition" spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH /obj/item/integrated_circuit/lists/at/do_work() var/list/input_list = get_pin_data(IC_INPUT, 1) var/index = get_pin_data(IC_INPUT, 2) - var/item = input_list[index] - set_pin_data(IC_OUTPUT, 1, item) + + // Check if index is valid + if(index > input_list.len) + set_pin_data(IC_OUTPUT, 1, null) + push_data() + activate_pin(3) + return + + set_pin_data(IC_OUTPUT, 1, input_list[index]) push_data() activate_pin(2) + /obj/item/integrated_circuit/lists/delete name = "delete circuit" desc = "This circuit will remove an element from a list by the index." extended_desc = "If there is no element with such index, result list will be unchanged." inputs = list( "list" = IC_PINTYPE_LIST, - "index" = IC_PINTYPE_NUMBER - ) + "index" = IC_PINTYPE_INDEX + ) outputs = list( "item" = IC_PINTYPE_LIST - ) + ) icon_state = "addition" spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH @@ -111,26 +150,34 @@ var/list/input_list = get_pin_data(IC_INPUT, 1) var/list/red_list = list() var/index = get_pin_data(IC_INPUT, 2) - for(var/j in 1 to input_list.len) - var/I = input_list[j] - if(j != index) - red_list.Add(I) + + if(length(input_list)) + for(var/j in 1 to input_list.len) + var/I = input_list[j] + if(j != index) + red_list.Add(I) set_pin_data(IC_OUTPUT, 1, red_list) push_data() activate_pin(2) + /obj/item/integrated_circuit/lists/write name = "write circuit" desc = "This circuit will write an element to a list at the given index location." - extended_desc = "If there is no element with such index, it will give the same list, as before." + extended_desc = "If there is no element with such index, it will give the same list as before." inputs = list( "list" = IC_PINTYPE_LIST, - "index" = IC_PINTYPE_NUMBER, + "index" = IC_PINTYPE_INDEX, "item" = IC_PINTYPE_ANY - ) + ) outputs = list( "redacted list" = IC_PINTYPE_LIST - ) + ) + activators = list( + "compute" = IC_PINTYPE_PULSE_IN, + "on success" = IC_PINTYPE_PULSE_OUT, + "on failure" = IC_PINTYPE_PULSE_OUT, + ) icon_state = "addition" spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH @@ -138,7 +185,15 @@ var/list/input_list = get_pin_data(IC_INPUT, 1) var/index = get_pin_data(IC_INPUT, 2) var/item = get_pin_data(IC_INPUT, 3) - if(!islist(item)) + + // Check if index is valid + if(index > input_list.len) + set_pin_data(IC_OUTPUT, 1, input_list) + push_data() + activate_pin(3) + return + + if(!islist(item)) var/list/red_list = input_list.Copy() //crash proof red_list[index] = item set_pin_data(IC_OUTPUT, 1, red_list) @@ -146,7 +201,7 @@ activate_pin(2) -obj/item/integrated_circuit/lists/len +/obj/item/integrated_circuit/lists/len name = "len circuit" desc = "This circuit will return the length of the list." inputs = list( @@ -154,7 +209,7 @@ obj/item/integrated_circuit/lists/len ) outputs = list( "item" = IC_PINTYPE_NUMBER - ) + ) icon_state = "addition" spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH @@ -169,20 +224,20 @@ obj/item/integrated_circuit/lists/len name = "join text circuit" desc = "This circuit will combine two lists into one and output it as a string." extended_desc = "Default settings will encode the entire list into a string." + icon_state = "join" inputs = list( "list to join" = IC_PINTYPE_LIST,// - "delimiter" = IC_PINTYPE_CHAR, - "start" = IC_PINTYPE_NUMBER, + "delimiter" = IC_PINTYPE_STRING, + "start" = IC_PINTYPE_INDEX, "end" = IC_PINTYPE_NUMBER - ) + ) inputs_default = list( - "2" = ",", - "3" = 1, + "2" = ", ", "4" = 0 - ) + ) outputs = list( "joined text" = IC_PINTYPE_STRING - ) + ) icon_state = "addition" spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH @@ -200,3 +255,92 @@ obj/item/integrated_circuit/lists/len set_pin_data(IC_OUTPUT, 1, result) push_data() activate_pin(2) + + +/obj/item/integrated_circuit/lists/constructor + name = "large list constructor" + desc = "This circuit will build a list out of sixteen input values." + icon_state = "constr8" + inputs = list() + outputs = list( + "result" = IC_PINTYPE_LIST + ) + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + var/number_of_pins = 16 + +/obj/item/integrated_circuit/lists/constructor/Initialize() + for(var/i = 1 to number_of_pins) + inputs["input [i]"] = IC_PINTYPE_ANY // This is just a string since pins don't get built until ..() is called. + complexity = number_of_pins / 2 + . = ..() + +/obj/item/integrated_circuit/lists/constructor/do_work() + var/list/output_list = list() + for(var/i = 1 to number_of_pins) + var/data = get_pin_data(IC_INPUT, i) + + // No nested lists + if(!islist(data)) + output_list += data + else + output_list += null + + set_pin_data(IC_OUTPUT, 1, output_list) + push_data() + activate_pin(2) + +/obj/item/integrated_circuit/lists/constructor/small + name = "list constructor" + desc = "This circuit will build a list out of four input values." + icon_state = "constr" + number_of_pins = 4 + +/obj/item/integrated_circuit/lists/constructor/medium + name = "medium list constructor" + desc = "This circuit will build a list out of eight input values." + icon_state = "constr8" + number_of_pins = 8 + + +/obj/item/integrated_circuit/lists/deconstructor + name = "large list deconstructor" + desc = "This circuit will write first sixteen entries of input list, starting with index, into the output values." + icon_state = "deconstr8" + inputs = list( + "input" = IC_PINTYPE_LIST, + "index" = IC_PINTYPE_INDEX + ) + outputs = list() + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + var/number_of_pins = 4 + +/obj/item/integrated_circuit/lists/deconstructor/Initialize() + for(var/i = 1 to number_of_pins) + outputs["output [i]"] = IC_PINTYPE_ANY // This is just a string since pins don't get built until ..() is called. + complexity = number_of_pins / 2 + . = ..() + +/obj/item/integrated_circuit/lists/deconstructor/do_work() + var/list/input_list = get_pin_data(IC_INPUT, 1) + var/start_index = get_pin_data(IC_INPUT, 2) + + for(var/i = 1 to number_of_pins) + var/list_index = i + start_index - 1 + if(list_index > input_list.len) + set_pin_data(IC_OUTPUT, i, null) + else + set_pin_data(IC_OUTPUT, i, input_list[list_index]) + + push_data() + activate_pin(2) + +/obj/item/integrated_circuit/lists/deconstructor/small + name = "list deconstructor" + desc = "This circuit will write first four entries of input list, starting with index, into the output values." + icon_state = "deconstr" + number_of_pins = 4 + +/obj/item/integrated_circuit/lists/deconstructor/medium + name = "medium list deconstructor" + desc = "This circuit will write first eight entries of input list, starting with index, into the output values." + number_of_pins = 8 diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index fb78915f11..bc22204a2d 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -346,9 +346,9 @@ /obj/item/integrated_circuit/manipulation/thrower name = "thrower" - desc = "A compact launcher to throw things from inside or nearby tiles" - extended_desc = "The first and second inputs need to be numbers. They are coordinates to throw thing at, relative to the machine itself. \ - The 'fire' activator will cause the mechanism to attempt to throw thing at the coordinates, if possible. Note that the \ + desc = "A compact launcher to throw things from inside or nearby tiles." + extended_desc = "The first and second inputs need to be numbers. They are coordinates to throw thing at, relative to the machine itself. \ + The 'fire' activator will cause the mechanism to attempt to throw thing at the coordinates, if possible. Note that the \ projectile need to be inside the machine, or to be on an adjacent tile, and to be up to medium size." complexity = 15 w_class = WEIGHT_CLASS_SMALL @@ -365,26 +365,39 @@ spawn_flags = IC_SPAWN_RESEARCH origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3, TECH_COMBAT = 4) power_draw_per_use = 50 + var/max_w_class = WEIGHT_CLASS_NORMAL /obj/item/integrated_circuit/manipulation/thrower/do_work() - var/datum/integrated_io/target_x = inputs[1] - var/datum/integrated_io/target_y = inputs[2] - var/datum/integrated_io/projectile = inputs[3] - if(!isweakref(projectile.data)) - return - var/obj/item/A = projectile.data.resolve() - if(A.anchored || (A.w_class > WEIGHT_CLASS_NORMAL)) - return - var/turf/T = get_turf(assembly) - if(!(A.Adjacent(T) || (A in assembly.GetAllContents()))) - return - if(assembly) - if(isnum(target_x.data)) - target_x.data = round(target_x.data, 1) - if(isnum(target_y.data)) - target_y.data = round(target_y.data, 1) - var/_x = Clamp(T.x + target_x.data, 0, world.maxx) - var/_y = Clamp(T.y + target_y.data, 0, world.maxy) + var/target_x_rel = round(get_pin_data(IC_INPUT, 1)) + var/target_y_rel = round(get_pin_data(IC_INPUT, 2)) + var/obj/item/A = get_pin_data_as_type(IC_INPUT, 3, /obj/item) - A.forceMove(drop_location()) - A.throw_at(locate(_x, _y, T.z), round(Clamp(sqrt(target_x.data*target_x.data+target_y.data*target_y.data),0,8),1), 3) + if(!A || A.anchored || (A.w_class > max_w_class)) + return + + var/atom/movable/acting_object = get_object() + if(!A.Adjacent(acting_object) && !(A in acting_object.GetAllContents())) + return + + var/turf/T = get_turf(acting_object) + if(!T) + return + + // No ejecting assembly components or power cells + if(assembly) + if((A in assembly.assembly_components) || A == assembly.battery) + return + + // If the item is in mob's inventory, try to remove it from there. + if(ismob(A.loc)) + var/mob/living/M = A.loc + if(!M.temporarilyRemoveItemFromInventory(A)) + return + + + var/x_abs = Clamp(T.x + target_x_rel, 0, world.maxx) + var/y_abs = Clamp(T.y + target_y_rel, 0, world.maxy) + var/range = round(Clamp(sqrt(target_x_rel*target_x_rel+target_y_rel*target_y_rel),0,8),1) + + A.forceMove(drop_location()) + A.throw_at(locate(x_abs, y_abs, T.z), range, 3) diff --git a/code/modules/integrated_electronics/subtypes/memory.dm b/code/modules/integrated_electronics/subtypes/memory.dm index 548ea3fa1d..c7fed41847 100644 --- a/code/modules/integrated_electronics/subtypes/memory.dm +++ b/code/modules/integrated_electronics/subtypes/memory.dm @@ -11,12 +11,12 @@ power_draw_per_use = 1 var/number_of_pins = 1 -/obj/item/integrated_circuit/memory/New() +/obj/item/integrated_circuit/memory/Initialize() for(var/i = 1 to number_of_pins) inputs["input [i]"] = IC_PINTYPE_ANY // This is just a string since pins don't get built until ..() is called. outputs["output [i]"] = IC_PINTYPE_ANY complexity = number_of_pins - ..() + . = ..() /obj/item/integrated_circuit/memory/examine(mob/user) ..() diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm index 16839cc509..7cb2479ec9 100644 --- a/code/modules/integrated_electronics/subtypes/output.dm +++ b/code/modules/integrated_electronics/subtypes/output.dm @@ -126,24 +126,6 @@ power_draw_per_use = 10 var/list/sounds = list() -/obj/item/integrated_circuit/output/text_to_speech - name = "text-to-speech circuit" - desc = "Takes any string as an input and will make the device say the string when pulsed." - extended_desc = "This unit is more advanced than the plain speaker circuit, able to transpose any valid text to speech." - icon_state = "speaker" - complexity = 12 - inputs = list("text" = IC_PINTYPE_STRING) - outputs = list() - activators = list("to speech" = IC_PINTYPE_PULSE_IN) - spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH - power_draw_per_use = 60 - -/obj/item/integrated_circuit/output/text_to_speech/do_work() - text = get_pin_data(IC_INPUT, 1) - if(!isnull(text)) - var/obj/O = assembly ? loc : assembly - O.say(sanitize(text)) - /obj/item/integrated_circuit/output/sound/Initialize() .= ..() extended_desc = list() @@ -221,6 +203,26 @@ spawn_flags = IC_SPAWN_RESEARCH origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_BIO = 1) + +/obj/item/integrated_circuit/output/text_to_speech + name = "text-to-speech circuit" + desc = "Takes any string as an input and will make the device say the string when pulsed." + extended_desc = "This unit is more advanced than the plain speaker circuit, able to transpose any valid text to speech." + icon_state = "speaker" + complexity = 12 + inputs = list("text" = IC_PINTYPE_STRING) + outputs = list() + activators = list("to speech" = IC_PINTYPE_PULSE_IN) + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + power_draw_per_use = 60 + +/obj/item/integrated_circuit/output/text_to_speech/do_work() + text = get_pin_data(IC_INPUT, 1) + if(!isnull(text)) + var/atom/movable/A = get_object() + A.say(sanitize(text)) + + /obj/item/integrated_circuit/output/video_camera name = "video camera circuit" desc = "Takes a string as a name and a boolean to determine whether it is on, and uses this to be a camera linked to the research network." @@ -291,19 +293,26 @@ /obj/item/integrated_circuit/output/led name = "light-emitting diode" - desc = "Takes a boolean value in, and if the boolean value is 'true-equivalent', the LED will be marked as lit on examine." + desc = "RGB LED. Takes a boolean value in, and if the boolean value is 'true-equivalent', the LED will be marked as lit on examine." extended_desc = "TRUE-equivalent values are: Non-empty strings, non-zero numbers, and valid refs." complexity = 0.1 icon_state = "led" - inputs = list("lit" = IC_PINTYPE_BOOLEAN) + inputs = list( + "lit" = IC_PINTYPE_BOOLEAN, + "color" = IC_PINTYPE_COLOR + ) outputs = list() activators = list() + inputs_default = list( + "2" = "#FF0000" + ) power_draw_idle = 0 // Raises to 1 when lit. spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH - var/led_color + var/led_color = "#FF0000" /obj/item/integrated_circuit/output/led/on_data_written() power_draw_idle = get_pin_data(IC_INPUT, 1) ? 1 : 0 + led_color = get_pin_data(IC_INPUT, 2) /obj/item/integrated_circuit/output/led/power_fail() set_pin_data(IC_INPUT, 1, FALSE) @@ -317,39 +326,3 @@ text_output += "\an ["\improper[name]"] labeled '[displayed_name]'" text_output += " which is currently [get_pin_data(IC_INPUT, 1) ? "lit *" : "unlit"]." to_chat(user, text_output) - -/obj/item/integrated_circuit/output/led/red - name = "red LED" - led_color = "#FF0000" - -/obj/item/integrated_circuit/output/led/orange - name = "orange LED" - led_color = "#FF9900" - -/obj/item/integrated_circuit/output/led/yellow - name = "yellow LED" - led_color = "#FFFF00" - -/obj/item/integrated_circuit/output/led/green - name = "green LED" - led_color = "#008000" - -/obj/item/integrated_circuit/output/led/blue - name = "blue LED" - led_color = "#0000FF" - -/obj/item/integrated_circuit/output/led/purple - name = "purple LED" - led_color = "#800080" - -/obj/item/integrated_circuit/output/led/cyan - name = "cyan LED" - led_color = "#00FFFF" - -/obj/item/integrated_circuit/output/led/white - name = "white LED" - led_color = "#FFFFFF" - -/obj/item/integrated_circuit/output/led/pink - name = "pink LED" - led_color = "#FF00FF" diff --git a/icons/obj/assemblies/electronic_components.dmi b/icons/obj/assemblies/electronic_components.dmi new file mode 100644 index 0000000000000000000000000000000000000000..cdfa386233450202f7bf61db8c8c29cfbf80bb14 GIT binary patch literal 21210 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 N*jhPQ)>z<^{sZq2DeV9N literal 0 HcmV?d00001 diff --git a/icons/obj/assemblies/electronic_misc.dmi b/icons/obj/assemblies/electronic_misc.dmi new file mode 100644 index 0000000000000000000000000000000000000000..226b82e4999a004506b3a3385e22666fe41d1ba5 GIT binary patch literal 2623 zcmY+G3pkW%8^>Q}YpgH{i^6EvS7ei8V=`+9MUqiYl^i06gkf@KhG>Kwc4Y~Z=~|H$ zvsz(R#`%!bOXL_+4Q7zT7=|&JZ}e^Zecy9E&-MPU|8?Kb_1^FEzn|+(##}ltDSlWS z002oVOY_SBAfhTLw;8&V~vre*lJthP7BA;-Dqq z4rDq5DJd!C<>f6cEt$f2ZveOe%+~Iapa-a|tR#_0+S=NUVq#=68OR0P-Q6Q1A}|;X zAOL_KK)ADT%Y_SIn`b;&RXTVUJB@lGx(eP8a=8qO%$4Z0-ToVD-}PZo<9 z9lA6A^8VfaMj16sPH~r%l4t7HzP+@iT^UXJgwU#vK0#>5mFo~0XKLP99Gph%cX z0b;ShExluHgpyRo9_VWi>>7{L4Zjh7CiI42b@lBH8`(vPBA?CG zneM{E3g#4pGdtSGp0o9fxKu*3Cb&vwhU~w&FGkW>H;Bl{JT$gqup4_gk1g?sW@nSg zHlX4YBqx7$x+5a=+Ezs##ewp}P&qPAn|NBEeH4L zfi)DJ*toOX#6u;lRSxCDA?kZqI5!~1{BdftXZ??CMlhR=OoiB^64=>_M9j8UzSddM zP5V>g&_(yS@&9Oyyp9ZT5L;4M*hD4`tUY)hdzhzxw~IA!v`4A zoJcaNCFVfMc>eG3KZ#}yEUAf_7<_$Qw{4#Ty7-B8ibt$+O~b^e0=@rvHI&?~U4`9IqL{c%B5(fm%7qNqcYAib)_0wZ9^joIBIjZD zU_8N#P}7F=Q6PGJosl$WdN3Q`(LUZ#$_=mXoB0O0j?<^@NQ5mhpT}?%Z!gmAS9^V) zzam`eMj(1#?BrjgtxFhe1fAdw>ka)U>B&>8AnD%1HzZgl{kJvdSZ2^qW?ASgd4;-3 zP;u4Z5EnL{9)wN+cY7A`ePjJ6RwIe`giT|nUQP(pX^m^DCR)G2)+G?K*5sa{!LXQl z?d)R1d6QT7JW{L(Zrc8+MJjX$nRVB*2=o+RFU(7 zmA!GQ>Ld&MEcngqQ4!6w4^@y`#>yti`A57t4li0kr^=f;z%e%;AFhej8Zn_q3+R_Ri%C|*+U5)a1Sr;;fcr@;QZA7_}h3kh@U1}K9}(XDQ- za*@dair#sAziZdY*TaGEE$d7lzR1RibT37^4W8GB*(cx0SaAqIZ}@7i8sO9Hd5B;E z7Fv2uOO&dMtlp##kaBEs8UIeX#y2=UJXzPraO+JH{LA7R5OVe8l{g$FL4JXlT8q$8&+s zT1dLuG1@Sf_cZBm`m1=EAG@tl(dSh#2HH826EsKPt#~=D)lwe>c%#qB5=vO0FFtLa z&YE<(^BYfRvZ&C#;+>h`*ed?>1kKmU`8>z-C0>+jd2m#4ehg2q4ph($ literal 0 HcmV?d00001 diff --git a/icons/obj/assemblies/electronic_setups.dmi b/icons/obj/assemblies/electronic_setups.dmi new file mode 100644 index 0000000000000000000000000000000000000000..7074d08328cc106e8c66d0e3e70187f9433dd21f GIT binary patch literal 3757 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 NN8G$!nFm9&{ssDjXCwds literal 0 HcmV?d00001 diff --git a/icons/obj/electronic_assemblies.dmi b/icons/obj/electronic_assemblies.dmi deleted file mode 100644 index 8faa77ad02105b5787ce3b64b0e7143f9429b4c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41014 zcmbTdby$>b_cl6o3!(^!go=bTDoBTdL5fOJMYCG+_{+B*mu8fRU6ym^Sx!8BYD+ue{(vKTlAMzZszjn9 z$XQ#hX7*HzH%8bYQFDC3hDNwyRF3nZvb>M=NM}`blcmq*E6MWyQz4RUp7n>@Ge-#; zT_I|fBK-QBq|ePr8sjuo-FkkweSGjM`S-IwoXjLUB3< zu`xWd`~K|7&xy22*4XuIzQKEEJZ74v8-uA18tKtbXc<~w4^23{S$Ehs67?|aT^;XO zcm$EZwWP_Xb1ieJf7@4qJDM6b^Fto-+qcHI-9GX5<6YsueyF4NP`?c82L24Vk}mT> z5{dD*vf_EbpGVp|-+V(S!36M^^(2*#zg-;db;Vi2$n`>)s%RFhC*9f!bx^6|r&brZ5Y(?)cOlJl6FZ$gugmJg3k~zmt)Y#xoDvPKT z6E%+|$Ck}sFb0SwTUi!Ncf40PX#7(C^nRevoAE|&gD8m&t7y-?E`F0Eu4k$O+gdAU znt59DypKogM26O$&eUD$W9kaC7cCjtEfD?^=_D4rzR^v<6#M&uhuc@zLGL3 zC5F#m%X0V4hToF{3&IVA>H6_WJr+&o5GhA}MrOBiiS%igR``oPjGD>HrCZZj`=sd9+~%db>b+V^IBX z=d-~(!&g4WP*YUY*O6;=WGM{z5AL3mwM>4zm$gbMC-Uon9Kr2~@gXkAm`)dPYGY z9?-MLDzALfc3PovS67o!IFV4<(GEsSeK;rOtt-l|k;3MWQLcihRZZr&%F?4xzwe~) z1O;6;@!&c+-664Q5iMz8OZ|C1cJSMEsaH zY6emVeqmx3r-u{YRY^aRuo2&%!o@+ifp=;eHcB(%`%RJ#&{yI+ui0A)vqPV^XFqsO z#&nc$|Gca&qDX%YD3@N5%$a*}hh~8#9D?2~%p|_RYH+5y;$+vNyH;t~Uu3)xxvrj) zYyTCI`a+}^xO_)S)pH9)i|#mO4gJqOeJmR6;u0g?B;^yWBbJhkLE}3n7IuBe@R}ez z$qLfq259u(exU+*Qo~c@-k_e6ou1X#(FCxFybBJP+1*57SP86TN6VEO%Z#D4t?a-^{~qagmsF|5 ztL7+v!xgqcP4C95Za3(Irs=0foL)qg+lHm`^cN$AHW(4k>Pe7^vSX^(AD^G{Z(Xsm zvm*sL%r#ur($d;`WxmoGX(tnMVBb1}!X9M$Y&?!)1f_7Ai))U<`BflS1=M38s}bc>Ej(Diip*8rx-y1_eo|c} ziCIF{R#p;n-z}_`01Pof(Ha7|Ry!+obiSkyBLvK}nZyloE)K{T)CIyrsFlB5ltBcr z2lmw<^K+8(Jp(fM>Drz$sqPh+*Y!NGe?P7~R4?~xTi5_~lY=>TL?zB#SD5FCu!rm#9#~7<5#y4>oCKh{2iDx5_aw93QCG>(p$qu z*IQ*R5M);kZTE8~Replujsbe7CiV`g-c5xZk}pXgZ6(mOJEJ4U9znG!%j=NfgXQf+ z?lZ|tkn>YZfjEZ4K4%sf3TAlEXSfTj!?X?_J_QS}R0Ix*!IE__fqxO}VD5mFKq~YZ z&KR`&vvNgjibm;L1P$k>rSB|_D`r=>|MHi1N0D8NU>RfW{C781ERa_|MDYbx;*|HO z1}pfK@4@g9{9moQc~an!X=p;|7Uun$v_EH@Qum7P4;(Dy?vo@8xU?;F#`|6-7;=Z~ z%#qBQZJoz#j&x;we?#Uo|Izc+CPdW0BuC7-0ku-?W zkyT3aaYZNoe)be-&S&83*4(1iM}gkiJI|&>pQ#S3Byn4sgY-Lj6YD>kkON)*X01b| zP)Vy$nM2|}kQlPxYvPlau67P%(rYC5WY7)axU*tW_m)X3)-+KqhPUTL%QaR2@EpF! zsVOPr1Zk(aBoyRdfAf^CpYG|-<$oR0gAL|MvJFyQy6%YT<0vn(kq42V{=94BMgjh7 zujn0)S@r21=CcRN9OTJ3MvK%-^(eHlcA@1@mLS34M5ztQlrB&|cxGnC?bi0IyQ}`g z`3#^Br_)(FhM9pnrZ*f83gh?%Sc&c&S{#4V0rtY|UhbPXT+6kMioiED2o=Y(V%>t? zvN1;^VJb7gb9|f@rP#&L!&{zkfC4cFjYd7M?tTDw8VAyZoFq&0ASxPILTG=t<4@Iq z7-3KjyV}c?2cEMSPMbuK#vWe>oH{re7|q{TcjKj@YyHV>cW(8kSxpH>cPp^A*Pt zX7wT-{kjGAmDSYAg8^OTQdY&yUfBXRGXdEhL*sqZJs)6K4dDAv*y;N&597mk88PSK zyV4?5(a?r2WFCERApR@XWEv!}vB&c!jAfeMu)nKsxj*?HZq^4rm_w2j!tBCMVf-P5 z4`<=QFg(KXRRejozSV&FDoj%GQzkz|_}Ud&rbkc2VxF%Onx+pDu%#(-ELWJFkuy+T1cR}{4nmLuQ#<)-?w_?O$2o8 z(S?a($iZD394&+!I#KqFmOPM4ipy>X#)d$F8O6|RYHfaHXkZIiVrkpHTvU@}ZS+OE zPz2&wx4Bjef#>YN_~@tWO6QGlisE!3b#+pWWo26UvkGP#dwV+G`C>=XS1r9Kz@j5l zKrG9L4e~c{_ul)Vc9D3fUlV1oww<+e0(|T*x@M`Q2m69bbUj|A+ZYP+HKF_?CiZcr zOWAho>^SY-(H2eh4V8e+q>IpQ594WPrD#|@?otlEBWL)c!kL9;27LGLTe9XV>Dv_3 z*a8?O*|a2JX_TW1o!w%kLHqN%CuJ@w0gNd!^9g^vKm~;159t(iw2mN)lQu9(Oo$Zd z)t=%jrb)&*MYAtpL&n;U!lP^yvERE+y9D#N+eM3g{fy__VMhO}>w$w=+d9IR*?srQ z7$t|eEIDg}eKoQ}34YGm&{K-ot3HK(E2y;-v@%E!|d=^zaiBLYM zdjrRF&kXJNjTKW*Ft>((74MfPKcTC!q0H+exQ~dR)10&VEU>zOAR6ofnbFV@`m`>* zYBKx=X(=Iuy%ID?2qAaD)|M$l-cRqpOc*ZDWEW?YG?RfTqQ&K=`z6gxq3m&bzyu*N zB#ZUXc;y_$;IO20^fdW(FUrzk)}Tz7@_=Z7+CA~wg^Y*~z2AWy=n;YWQDC`ZY{yka!zIQ&X zd2Z{o{{SCwLo0apvRF}@p!u9>3BzNn-B-O5@v0_IJ>2Of#s5 z%x$Pwev|;Deflsds;l4wyZEf7tNf*;GeR(g%0dwCN(97lk`Qb7jy!X>(Dm!r$zkXk zmVqE6M}I^IeNz3#y%#eaym8I9LVJS(6%+im#mN9HO_r$F6U1=;3#Hiy{RGx^N>V?z zAch+?!AWg{)woM+K9>P6y@I%XNQ`Ec@4|5ReU_Ef*~M|XJTuuc=SxJ){bl7YD57gc zQmh8}LVfehh2`H!#)O%IT;nB%J!)5~{|`Z}ZzzP9cvJCXz|F3l`^G2{E`}JoG%Wv( zhws|cWZeH+XZUuW`R%u&xayqdzsR_+b*rnerSd%Mx%cR*9L|Mv_3_z>m*OCuyI#pXqd7<=iJchMi{SU;iznd`uPdCy`ip#+FV z-^ECtJ`G-VJ44paV}tyb*w zgVXg))8gc2W-$J)n|2!%H&V^wD*x4m!$-uZ>UXtRmFM>4YX^mxqrCF+@;oeR-aFIG za*Opjlb-OE_jghs!Em1OJi^^LXJ_a7nz_F{vBzsHv~59>G;q*LR&S|{WCb#&oZX!# zi=nNCWHJ%vS29<7Az-&2NeRN@=i|?h44mUN1gWdva6ez%y&rUR>-_oyyST9lhWaj^ zuQ5lRc6`(ag))`QSp5)jB^>SZg9rJ$6Cr)Oj!7TS&b&H!N|`LL1l88ou3FxjVW!D) zh8W)pekCso#AOxaeVJj&cUHd=ftAB;M`y6KVJD1NztgoVQYlx}70vSWi*!YC9$U!e zsziWhkPv2JI#$uR?X4|wyK#Y< z+S=^w>|diEOYI-3SXFeV@Tymv;Knpe8)D8-3DQQo@7{crp%aT5+zz&(;w1vXx{}Er zuh(que*t2n5lsMXI=87zSwcSB_GH;fi8J_y)%78c8TE5 zzlK9n-hh-{IZk-6NEa^W`p%S0meD)M+>~rek=99$8~QnSRr>e5eKsp7kJo1<}@TjIhi<)!n2u|#{8tw&d%;`(oOf!G0m8H zhX~dr%a*kJN`9BA@5DZPocjVa8R8BL5eqab%^^1z@{Sa0NNa#T?a z)~=THsut0Y$=eMP5KVv*L}{h?6W$>!+y=hh^;Q`~*3zMb_fn@RT2P*g-^DDf19aFa zd6NTMk84kv^iQ1MBXn5bkLD$s#NXzM?kh2fBKr3>*&q~f4*DBlzGqhJ4g6UOz_`#bJY#|<*A~|rWEq% zMm&6*YlBn*G*xGaL-`vr?odq{u{|FCI_nJMq+;Z{AK-ktHQ}>WTzJE|`39DD^zk#p zMz?%=(CO)EL*=?^fXiB_!*JCo!CiQW;LW;B=Cck4{$Dy@p$ge$xCPmRK6yg5P!vcO z0eulLeJTywIFO>=+Sq_|j3GfyAe&{ZhG`2q)YEs5Ct2>ygfvKnO^~s7O|<*nIRIoH zlv@1?>g6KziD)DUe~Skr4NN8|YfSRnr1NRIHG7LHDt_2?pw9NY6k@CTcvGuX432)3 z#PnFW40$M{ZC_W)i3b@0qq!btvp%xV4Y*j#Mw86bpFF>6U5xp<@!BWrFGX>!Un@C- zY%z~E_a!y*^#ZP?MLp-Z;g#h&v2Bpth8l2&Twzo=i8=Ipof2d(TX{6>0nfcDLQNC$ z<1R|+y2bQGX&0niuru#!a7fbc3Q{FQp-1zh;Czlg}oPvUa78p;GjC;W*xVXyX z`?zaQi=TtunQwH&L^EgW6km_^`N2{F6g0kQ4}36`3G`dQ(2m899oK24`IvO4sY+?t3`jsS1dQ7K>z?B@;D}gr+24<|#a>M>y9JH+@1(x$jN}M^k*luq zomVsEzTi6HeOHvqRkfX&S`Cv+Al_%~sI~)&#o=t_zL|-MRScV%Ipz;pj&NE3Stxpb z9}-R{*21Lhq7|faUOOxDmm6^CGmQPwxFHKkyK8nhhRKwh2qfrjv9AdAU_}0@JqEJm zxjpN$Qs17_wylH6+3^_35tKQ`sh>)H*hVBi^4)C)A0}(InmKpe*SNhTmn}>t?pV3% zjjZ_ikun<~0A8cn3mcc7&facLoqsE(0jldc$2EgQo96=>nRo8J&=w#`6!;Ru`z*bJ z+-znQR21Evbl;Zw5<9tBPQ$Z=JcfqCjTLjKUao!l(ZN?nTpql!ZO6*hjk(h6g$<&es;e{n_1 zVJbo`qQI=9GtzK;JWm^^zCV%JAlwQ)Ur!}E})J;QHHa1MgmE!e-{#D?uktFrsuw5dQsN=V`} zF=EuD+Uc?%1_!k@lf-|WnS4l3PiK?$C|aR^1>oT%%eIhS<;_;~(fJ<2dI1Iv?XQxfi;61VYfkNRXwCRMOh7NGd0JS?WI(P>PNIM^h5yH*HB)v?c;p)droL_D~ ziGptmoS0+EaxBtLlKEF_ksE<%O+#HswPq6XJe}m2W0qt}nI`NxOKmRRe)_PWhRkoK zz`6gfa@=9#Tzx5dFoWp0w&1nW3yHI|q^p*KcWEk6oR|{cXYlWLsz$#qT?^z{zfY(B zG)6!rCe~9YU3OLWoMzVfLyMwrpvn{7z^s$DER5NzCH{sL9DsO2bDjv3Bi_{acPPJ+ z*b`CCTQjYgyodLGRI5bS9V_ViJp7V|^25j?)(M(XQ2a_Ewo%(E7{#X4#*L=C(*u@?94? z)O$NZdpp+KA=g)i&g+IaWihezpGQjQi)wy~bi*wSw*$NnjV#IW&DCaKVtw$++MsY(Nq755S|6R~T0 z2k;q>U$ph+?rw&P=3ay`(HZW3$^M$KfBQL8r9a9Es>ZSdZuTnM^tKqrR1EnfQ@r!% z^hmJ+>GK&n_6moCdg*E~8>@=oJEz{Ah(Y&e6H1dX`Wv(q)F+GqN@lHsZUB@!zZil# z8Jbd>-HA%qjK+U^;uXrAt8ArSE8x5@vKyp5@TqkYff~GHYWWY15{u>6sY{!d+zNsL z;CXD3&J3h~G{un9(hrG$Ddh;jkPU|Bt6@yw;V4%_2N_lQ-J?p_6UC|d+%mF0-O=ooJ zU$J1id=r%9ip_j|FEl9)kzGm zprBBP$OqI=B5^uQ$RRPDVuhmF1BjC1hlZ0;4NmV7nuw4;>ox|(ahcNPja^aF)#l-5x}C1+=@3|zkaP9Cu1SWE^Jiw*osO0>86<= znZEG3Zo>4exQKPe_dwTK*5Xkd?Y4UKpG2?yPL0e9dd1`9p`v3X1moDT+Ikj|BcPLV zzh_dmwY7C)Yb!+HOVw-y4~@$B6?dlzrA;bVutOyaZ~eSis(c{Y!(didR25JzVGkzD zjQNSv!vhUbg4phNFCb12mO4l*LL0d82jOf$d@MWFpb$gH7gx$n#EV3(&(r^!*Haiock&0n%9$q;AODei8y{` ztAqgqWufhzJFjKUT+f6qOg2d)1McCmLxdYZa3cZqROeWP+6z-svw247hE1RXU_AF) zm%p^UPg*v`)+vbis^rHH-Pf=4tqvuV=|3`Zms2Lu^6O;$2Hd%Of`ac+UP*xg zkRv0TPVFnuO8vOE=QL&sz;+Nwdfwv-XmP?I!keS&xomppuTUz-iuV*&@ZKQerU>}y z{P4>ae(k>}1k$R3Z{c#$=9*p00F?PvpVa+0wP$Wt&;8Y z`{oLhEE~-Q3=LLuLcRC)SS)wtU1K{q7_a?xLUbEY zS4Y4k6})x~2anYI1dii(r)fw5>!^4_Q`P?vf^8Vnnk~>3x1pjmvkZ}JisBWI;UMF}591e|W%>`Yw~F?8XJ-!s1CXvkyt{TXK0eNqtoaV00#Es3KdI-I%Ud}tw6Je_ zT>tiz{CI6Zs9~phzs=q@l^)*v$uqa>UC*rZ`&HpkY5QPX|3dbbC6V4g-dnF0Edwvx z*$1M8_7wb&kp8f`YqMy4#id^`5etIdz#*y+T!be`fe6tR&6l7AFyX^?IYy%9@VBQ@ z+ohxwhPJLXUyWUd-8>xti#U$#DX$w`5z{=U2;~TY2@4UA)r_)z& z_a}@<$B%%~klVDD@LS)g-@JLl^!c&8EBiO?!k>Ppb~QCMMaOei?QB8um%FUEJ9|aV zERnDA@tx{`B>c{U!KH>HsTu($e7pSwc;?e$=)@6dL~Fwxb=s z=7^-$Z4N^TT$=5?2uOAFwR_3*2|LJWz;qA%_(DBn`B>gw13~z{1eNy`vCVRSBR@HN zpkjB=g!Ux^#QMgaxBsmLpg0*|okTrQQGBP7+|jt6VgHbz14UmsBb-76_-FGHBlcmj za>|>GUC7bVTV(L9i4ymaGu2<(*G|VGVd~2?VUCc#0makF1R6CpHHq7f^6nrrai2LKQHLBL{>tK>ZlcVPa^u+$g($`zlSu_UV~x>}G%?%UonJrScO9i% ziA;D|#hNo^UUEYw{U}n>>`zFg!b=ltIB4-@COU2tujA*dr%hWojF;ntgyI)*A|fJN zoYBB*m6VO(BvrqIKL9@O&t=4}inX1;yCLs0?6y`ij0asKs{~{p;Yjj**7!XHCHN)E z0!Fybcxnl|W?c<---lh#gd-Krl<{J|tIKrfnIuAMC^<6y{(W!CQXr{KZzuuFWUu_w zP1!*74@nZRKZEJjy2i~~r^th2j&Zz!sb!V}27}I|5qsDNe>O_0Lerig>}$jjQuD~{ z>38zns1fx(TfuRUygL=J1Vyp}%V=NSf`K6RGr{WMlka(WC0xp80j2`19WjBEK7l^b z!@yZiwiAx~3E$&zx>~iBgp^hJQ!+T089M!16cp*EjpYtJxf};7YHsELf=SflTWm^@ zmNLox*?LCcJANZK+GVYu-E&qSJF^J5$bK^ki zKg%<9`0q+tQ#vRF*>`>oKC-X+dB`LySAxO$gO=PIRYDTibMFvX-4U+K2y1u?Pi)WC zR*-C?h6H0QUr(B%rBmHLlMqG+x_KTCq6X!R6b+A!-Ja#7e0R1p%?9Y5!*g@Oj9l_l zlT9so910-PH)5rHaDiGd&v|Vi!bjWF~-baFCg{wXSU1j(} z|Gq>a<-%Vx;pdXLO6CB`R}|7l20nvlJwe)zI9I0e<10~0W-uwx=%o<9fd>e)ovEJ> z1I{b`!hcHYs9;PbljDNtf(B`4R^uH((}lhFA3Vq|ETp=v{#7?qG8bEsZif)L3aVmc z`>C0&y$JY`9-5}PsAh{b>1}ez-|ow=bb3XMhw+T02duJqB*Wr4>k;x=7)&^2n_0xf9f*eqIyT2y|&vV!AcL>2mY{ja}EjFv@bx>p(qYZ zIEXmNB952g+8#etCZ~SB{~2)M=6UhJezIs^kX@jjUEI_yUzQ>*COWzzs~#}EOLf`}j~?eavF4H-Ef;&BgMj|Y5?2c-K(_g`1PXjBZ4+rbqo z`9S$%UvxFLEQZjzNt%T-a;x*px^p!Jo*$T(8ddYH*Qx?51o%40aVoNCwt5*MS}_nb zt#)XSdZIG|Dg~gR4VA}-R)z&Cl9T$CH1|Og(2YI$k2fdQS>8@Y^EjYSHqQ?_7$rP5 zbOX+p!fhNK2RN4AvY)<%-N2n-R+NI*Gr?)qX$#SkXNmU1e_71;m2gYvLm3Js3om?+ z{`RENPYtHaxl>9@r4}+ps(;{=^Xl$3NwOZwsQvrTSOm2q(8bg8e=6p=6%r)Pww=4R zSqV7@7!~?Zv%e375X#4QH@MZv|3*jcQ}ntYd=>qHUSDQ632<(^up$aAj&<3Ycph9t zaMjrrz0WrHoS#$n_H25}{>@!WL0(lB5_Y zyAW`!<>Be6^1T#w2dJc|$2&HAnd=*{nr7TD-ob{wx;q0BxE?8s?iUEn-<$gRsBSjy zhl%3#NLnW@$GibJdwhpJKem!I8t9r#x!Uc59dunGjH88 zLbR>fYuC;55a>kupH3$6I75R12vCwy5#H|-OL9z#U>8^LBC7z_b#YyZ(6}weQ%I6& z43%*H2^ucJN!wXz7RtHoZ1|bo6{qA-I2B5dP9FxuDD<+163+CTHLf@_=J|WT(%W;? zA}m%3S@oEOE?Uwx$S)H-_nqqc(WOD8jI9lX--oS5x~Yk6AM3<8UI%;$a|O9(=Zq>f4butSdU-?u za6SE}mEY)k#%)-YInF?;l+fGx3}?(mqm-^)!ovLdu^~GpeI8>L*Cf;x=!xM!muYXo z7CRb9%!qUYU`p<51DQ(T@*h6{(-LlQ;$>C=+i@T$e-sl5RU>U-b9Ro;B`(QKy1R_6E;m;5JyS>3)K`EIp0K1te{3&fMIeVh4nQC}ptQkzY7 zgoOW@0}zUJ10C}v0r0gplv&XdN8&9w4v>)dKpPu-dr~HVrb-EN8Pk#`0htD#zAkK% zAKmmAl&EZqVy(m*{bvABMPML+%f&}fn!Tx^I**iIfX5q{ZW^i0stJZKM?bzbtiGj$ z+tm4K*>_DId(e@QuMr>W&q$08uKdtc(HVmg6EOA-8F7XBVT%N5qP}|0FNK*i>m}{b<-xNyk@jWFR6@ zvJ!u6j;sE6sL+RT?l@yw_(`#veVknr~G-`d1JPvrmfcjC<6+?u>3|3>Diq!lDl83#8+41-PeEO-TQv;6U^A2o`S_e z_O`aJIENCoh-*C@QVuS0ly7TnzF~(SF|PKH?U~7@>oc~EV3fVM^(#yr`zm(oA+4(X z0oh<)tJ&)27G@)%F;)JsGu9Xr7(_w35|1l^!m&5ZaMr}}Q`zB;F)-{l@<_RK=93-) znzRcC24%-y1J$;*wfz=O&mICi`@iWy4<0-yfPScxcKiGE>kXOFQ5qA6iwLncHsv!5 zffH*>=nfohjZ4K10k7dC+nJ}}y;E=v&C$u`*i^l9W^TG`Q$|9WaeWHcFi;G_a+0PP zcpV6hm8%#4x`+dff~I5TlQnz4J^g*g$%#4JeFQ`cCG^H^AgioCU&jLTy0DNGtgo-n zt**WT5{Kdg=70yGR__k@(+R+1H~)9rTum9}A- z!T1X?wxBZ8);GG8*WAC1oq;Xqfes8H&ATw5E>BsGdf@@$Z76_+mjQ8Ms?ptgP@ZDf zA244^H=*%=fdo;x0LqsDj1+qLwt5x-C_v+c+LyacUSc5H|MqLMs@VGzf7*p~#LX(; zO9^;SD)c&1k6Ro^x!|)B88Y@xui2*F^3U!hP$I?d8Mynj4ag6u&4+r*Pz3-8!LTi$ z5nULlW8_VotRnf$>ik#U($bQ7ZvG7f?vL1l*uw{Jx)^30ja-{gS${wSISt%!&a-s` z2el)zPQy-p{p_!Bh{&aNLR*-^N@a;Z_V_OGj?~Ug`*+SOv7EuK-Z_+oBKfRX4ua zU(S$Y4o`m~z^#P^?c|)-Vpgv1{%pmgZ-NGsv~kLZm|anQg8gKvIS$2X|Kh4EAgZ+> zAXyFw;_$pfGNG{TtQh3J`_RUDGY&f|gJ0DpV6pzF3$g1#>D~*zQH)z;jPgNUT>kwd zO*4*wRxk60sAbf*4gxMx0??sAL}7eF$_xZNtilx2SK=xE10|kc08qoer-B$=f7qJc zsV&V+8F-1E!TqEItbu42a@lXU!BFh{BrJVp2t9=CRK{aj9YS6?Wy|}Y33oqj5jU{?oU?8z7$!n?=|AV>OELIvMht=jS>};@QI6 zO5H<1>CjX#8I=ogA5eI}5lY3_=?ujf6D==2Wx(0q{?VgHp(zme-rt|EOgy2t;RFE! z@LtF<eXJlm-P8!UFRq(=o9MScU_v^`*#tD5F*S;f6g)B?T4kipqg0+$M6;}_B!c(3TmF!?Kl$BuDA4VYOTbn zZ_9oFo|t#F;=qcw*m4>%rHvh(Z)s{a;)&Hp-mHz)%J4(rvXzEv7qOwiY zi<#;Ft2F;l;XFNUGYAlpZSC#*Y@@XE^?)MH4Efow_)*jq)#uz+aBB7}dUi>2z*BYr z!lUXbzy!ta!}LCi>z>V5tZ+wnMVwt=!=dL?Nc4wM9cU6hShj;>jL6%H6# zhiHg(CBF4$x_0;;482wI$aNoh{xI}Jg{mtVe8K>{yM3r5>ii%OuysebY{bbJc<W#5=`2D zQdp&N!*RAwE8~HE!umkw$ryJ5@;T+8PRoJu7FmKO-zpJ`%p3sn>*Yvw6Ydksz68MF zbOw{90f*lRg#^Mx*Q)m!+y-lYnr8GXyO10u73_+Aoq`bBaAZPT6i9v1GU@YRK2TYZk?ay=e}@UY*Twrw zq=K&jxY#?iuII@GvV!g=?j(GP+l0*H#INzsA}(q_MEENG`3EVu-%6yk3s8OVakA^b zK+4Jvf*#9!2h^4L0OU$RZZnRj@9Roew10kYu3;dnkg)`p|Bl4cHki-^I5rXIR|GU@ zPN#H|06ejHGa+ka>BDzFlZJ!YM2)h0;2yTuHk#qmTz0>|+PzSmNyq8gU>h!%g;wG2 zF`v@p=?T_E-P^BFf!d;L4SU)JlrJ?Oatmfq1>X_l_hX-MvF_#;h=B3+%n5GtM96SHyZYsZ#b&scbL)mObY< zDu0+F?~?EERduKhzC}1~nJNg4U#(GDcv+$Fq0rR-uJOmEARlLf+A^R`gLg3oBu|>vWSR;jV$99B8l69ih=fN{ZD*NPSSk|45M_ zYEe3?xap^bV*r{q6-W)5i?tSZZoo3KewFZ~HF~pj$%> zViJ807c3hrw-3)^q?P7ckL0LD)tlFpOECc>-}-~t2!u~7CUI5}a|$ru z{7aO;iL*W-~e^y+5Rn_BGUkBc6s)823`T>je z78#ZmO%2{G`X091`aSDDbfU!|G{xOc_c)_^%^cu&90|W}8ML@jSa}ZgCIc?5@uIe9 zAWO~X08e$Gjv)al-dDP2j*g=okKET`xOTj52?vDVak)L<_3uQ9!MejDkPaedHbksp z#NPnzB*kgyF1k%ooj?`&-SbHD%FB&&xlLn~C{sy>DK-BZ_ z@*)KRq$?V;*IcpjQ72O|5&+K7laVJ6-PgW0IW_~xd*<-zr0Lh7R?ltyF*k6$O zKn5cLfH`%<&PjO68v;HP zoasnF-)pkW#Cd@v1}I5-pG-4VN(9)H?HdN;z#%8mlWn`*nOgh3rtR`oxB(bH5)BEf zwMUd^!{l+#*}vdPD<}>WgG7rm5tGh=bdijTHk-%WwS<+|C8|K43YY0QD6`RW&_0Yc z--oV*GUgmNBN^tDZ2r(XVE$e~V4Sa#uQ42tB6N0s;h#hxj zrh@65^Awe4qZz3(pdBvwZHxF$Rhn zc10T&NfD>eF)bLm%gsF)^#0lIEKw{6LoT4}kwdi((~`c(Ho^zrV@3FCA~=eQ3nb-? z=d5#ZH6XCQbqQW-Yusf@*&W}sqT9<-l841hbOL!M5>WM^3>CM%Db=oXz`?IHg!#D= zrEaVFqeZ-mkbc~6eE2HioSSetvgxQng@e2<%6_+*PQsf#kXu~h#d-L51caxa5fH-7 zK?SX5{ISnYmq!2&Qc%Ema<!`_tu(%}o-}DRlQ$bGcMjWe1R5ps+N1QRpyL`Rni( zveG;hpe!rB`*|17pjbd-i(FX1lRWwR2grEsM>NGPmWY9vO+m7-sgiQKDLFi#Q&JH7Ls}fXT-mF%HV_lkCkAVAo=&u=aIz7fkru1lRGZ!q zQ-aMbA^wtrK!EfJ>ZTTM-?G}lhY`N9 zBYc4`o_1@YqTWWap?BRXrZV>?xcj6Rd~z3GH4nNE3_Ju_gQ?%OK=lHOkUT^`}JstFv<+QHQ}DRH7;%pL38nV&@p zGbm$rt0#a1ml+gbHS8A*5WfMq$pk=LX+0JPXS2>Fv+iHc zLioPi0;pW*b_F--qUM6Vk}lRtd$rd1q)SMQOiC8RKQv&~3$=V!b}Sg$!; zIB&C9ZyUuk!(UW5#q%+Id{WT3=0EB|n$w{8i#mja zEV0hR&C~NiWgApx>Ff`D9M9g4#%C4znL;Uh_YMuv_JS&3Mx#rbny#mddAxHnF&TWN zVKN`Ov4c%OzcDgsj6EDLepz6e-}n>ArPREvKP3{H(^DKOTC^$3E7<@X$f9)7qw^L4 zgJibYedLY*uqpSN=DKX%bEL0LV~x;elDpUZ>K8VvXOtal!1?zhB5d9#;a%RMZ|j!Ejzcru3mK zem&iri&*KE{V04HScndyaRMe6OF9(f`n85k#zwn{W1h z52zRCyUx%Epn|99W%Y%lqay$bbyHz2N85o`$1JdTIne1wG*mV{p%AEkSX)CD_wh2H z`fh8bN@?xZdyoWeT+yM{j)G>RVFp)M!?_`bx&R{7?9I0&`%}XKU5XVb5cIVi9`v_9wvxZ~jHqb;1`g3M5R^Azjc4_%Z8tnOL@MUG5r-Dn(ewnES7>Ohch@EAQCNHgu>Wk3oCh&S1w z0_yEs*FP+5MBz!~AEx|=LJH>x&b|PO6uV%J7v45bTv3>P?#Q*Zr7bJ~zyK$Bx=*lm z>J<4*E}AZ_vx{{^op0mR)4M0KIzd3a;nPvl2TVe12+CW}!6K`*iKoymPH$@OIoI$k z?hsNCkx{Amg5`*;99Y5b=`$9Cx7m}v*%vcwI)LGAqsC5%C%@SbsK4{B4!la)ougk` zoH(1ie^b`;<1T_*EdRJcGOb-h?3D3a7W+FAP*w|StE6H%N^Xy7k45dGV<@0g->3%S zSkNh8pPR`KU}m#ff{(+YCanO}OX5AoVnTD`KSldusyP%Krf2^_!Fdm}(%=0$R(njm zRJG;9|2Z$v%d~pgDNi0a4%!<6oKcq@7fY!G%C1Il?|=jv)1n{H(TQzk{Bz54P$gN` z$b;-Hq3i$rBuMurpU|Jm`nO`}-#bb{Pv>}hm-${?(?21IIY~n9-#DcD_fliv=p%bw zCKEFku$zy7V_MV$nMFE0H$Sdd1hW@7{I?dsqYYO=4xEFukXHK59`vp1&d!Pd6hvqa zut)4`%}-B&5J|+_)~`_3sla8V7hhK!n$he0TkK&Jk!^$4uOg1ZzS_vKy$5D%l>@ZWODdde2Ri zReORy;BL~->Vz!yfm>hWvFQlai@xkhpY-6r(zi?bhX2#x)_I49vq_~gt|UsSWt>r` z_(o`!5}6fyC462TDRAnA!+Wa51y?H!T@Bcr1##kd;$r4eNq>w$^&_+dyLc)+;in529 ziAY&f_O&Ei_Jqh-lRYU*mJ!*Pu?}XvuW9*wf8YCeFOU2Cc--$l-VZaKbLKkdT-R%T zKA#sb4?g46OadZ@TH!R02Epbjw-ew|(7}WnC!Y77WKE{CBzLnZDl*PQfFXbpogaYi zu)fE~^+(D;n;)2n^47Tww_sNLn$-BqRJ7l<EXk>?QEg9ytirOYUGgIr1#VT@DtRSoM1^4&3fzs&Yy$4nW13JDRsanDXEAlYm;={`j7fV% z@akhmLDN(l87z2?5gL2U!atxwOSrCAQ8QgVpV*TYyr`*Cz>lQA{rQvsvRxlf6f|&wSdBnpi=oPf( zk7Z}VU4|ovVTp6H?o$;oqjI0QA0-s?Movh&jaKJ=2(it;(4qZNHWk`vFvXw>Kwb>8 zoL5CfoB#%$C}$ItGYk^>7_}FtrOm(h+$2sa{umyGNG};lDTPH2|trjPr)*RA%TqZMgI0#*W8+ShM_Kru(bl5&f>ap}jnFQ3#v%P1-SBabYHLO}U}BK- zLkVBLNYf90F)# zxsd|{In-ksy~cA8$BX$=QOvG@hDl+Nv!xiKB0%XPI5}jkcBhop^m2L_y^^sHN7yQ& zwBNz59UI*b1OkM9UB~eIyqcx7e{PKwRhh2Za|=g46A5oGo_cPm)sQP4I+;>P+uyh= zm%kx1C_|3&X67XfOez=Vw?#5o<2un<1uY#%4CqZZ44@{rsKa?^>`~7xWXu`Sy+X`~ z!qg#l5f&^Z`vJe56n8U8&jJgX#R4CO2BGRo7*;0OFW@WNwO4PSy198U>Z2boml72nW2&?J!Ohl+ z{2@aGTc2Cb0Xj>oxA!4D0x=R4qIq;J9$&L&VI0eDH-Rp4@}>O)ZD-w}o8 z$iOm!Xr~EH89@I8tgTH1q&P?e#f;kRiEt-3H!cadg9!~~?x~!+X ztexL7nM0jG6DM28?!4_J6CXfpJ+u#$q3QF*B#iU3eFEqxz(WrJ-4MF{pa;`#u$UxT zudZku(r=2-0+2`Ryn|%l(LnHQ;&yuF0~cUTb1_VutF>*#1mUh2wPzUvj6{%p#dJ6}XaNt-ufc+Xht#KeB8Z5uh+9eNOP|$!8%JbxG!1~QRni#A9isKm5 zlUN}ZKoqHcL99Nt8)CW;>sokarJ+eD0=_Q@cX5W6TH2=JzHhBZ6D?!4U5RemG1Lr+ zzKa#{pe^H98Z$m}SD{zho~tSZRN+x#Bvr8~8V>2LC<$jtbd+R%iadxG*2vAuR8baE zdHnwU`^JT5UoNPYP)S!mW$r4Iy0#y3U=i!$JuCR`uFW~Zv}7UH%i^{*?o3>iH@W(yv&rKPYMcF~ryl1*Kluvfd{c%eEX~yO)%w%R8ta`3 zK?K=Hyu1h-3j8w)as8_S1njs(Te`p12%~KcTbU8ho>y)5TmK*OXwsKm!y>t2PG^Tofxijt2`-_7bx}?TPwMl z8>Xp&-rK8v&L#elu4v#j6sYT+d{e}!tEPVPO+Kfte44MjzDS+d>pdXMsB~+13~JXj zuTd|7+vBG3`@>M0Lwo&cicXD$J*OKFch=}sP{ls!NKosK=&=M4+NI0;l7{ArdaMK! zNnnKAi*cq7ISS={mKj}_r5lPf1Li_Dr}*j7sEm!`Ll?=9_Z}yW=7-~CI}o%c+Sk0l zG>xaTGhTb%+lx6ozsD*ec&|3wyQlWGgNpQ#Z%6a195mlm|6fWKf|ktep7ts2N9@if z`J5*v^SMc|iP#Eh+W_jhU^9BWH)B5AlNcsSJ<5nEgeqC@!#` z;Z)Ol z^3%7);MGWf{}D9Flnuo9r)EB#O)>kxF8^B_=w%lFyk+#MZw~6=S-ZkoQuk#Cuo1hP z=|}Mh#*O@a-Ez(Qm2roH&tlH z9=U+AT17(6q59D)sFTkOP9KFolbl~?5$897P?qd-fEQpt_ca>~GG4HRe*Ujn|Hs{I z;;evB{X7oqCdqrMSXzpda539`^SkNec{g%^uc6I2^)Z$fw+zrNK3c@Mpp#sDeb9T70OclsqTXE@8FzZK5lI6BxLWZ+>> zHg^WJ4Q@3SYw6Je`o_J1_2~iRJTb*ky3;#VJkygQYDAxLj3J4ikBAxNy&$rP?Pn!0 z1*87_a!WXe*^S6Y#Uo7B^GIrsq%?Jhrm366&@jq01ZG8wef>M}UecV3zbq>@{vWMd z|#=+$j`U6$GMDplo>y zuuu60$gB`RNjT;r>!1~I5qA2Aqcb<97HOaZ-T2LPW0h-|>zX%(WeE*J+^LzU?)UHB ziV6z+?%m|Yk}xn#EM*t3(v%>t4T+5{MIB#jOa+t>?rOh6rtf@jxB=K^_d=m~9e z@?!8=F#S(lN;rOQl6{#-p9EmhrCN+72NI0D`;qj`jjf*66FnsfsIjSw_kjX%o0|#Wy3k5DPG8Y~A*F7( zI&I1+`?&?Y5|Ev!+`4$0qx)PugPdmGwOycc<$3(@ltG>)W3UW;)BqU6?ac!*`eR2H){HM<;P<+Z9Va)!x&2kT(oJ0%Zw_7Uq_h>Lr4S2lUuN_x& zM|D@dd20p3LCq-3TtNdWyQO#0?J292iYtrtu8X7``OWuc^e+y=`CHS5qP=G>|IyD<5@xXmLQ3A+B#z`;bGZblQe#S;h=@;SR{C(*xEn3@~M4BPa{U0%&u^u81Bq zQF^Fn9k;0r^b9X0$aq;oM9b}jYya(J^bjctChdqoKm3Ah`*+3PUwTZ=$a4R_LI(9B zVV#_VJKPBZ)^&bXO5Ebijv@Lm$&cEHk6r7=tp4}!kki!vt1nSLf^t-bm)KZ}1{j~+ zpYh=vcJMOrPe`%fw*nY)e=n`6O6#cM5}?E_&B(g{XB1qRb#zQ0AIKhs_V2gk$I$iJ zjQQ%ob9kRILqAy*n!#p0z9&sDH!OW@&}4l6@2%vZ#kMV#bPgZ>ysh z5432C*kqXiJ@2>q0k5P8W%_THXcfu-2?Lt7{x=-V{|sG2pN9XN3T4;{U_dO|P_jS@ zCnOMb0{)DTI(|XMZMU)L2OK-&g;?QYx&oER_1JOCd;dAYXshSU)>JNkR}< z=7p2yKz~4nH~ZfcqO7+94-U{KS+^k@CVhrXvLC(5pu%n0$Ex!1(jbZnp%7U_#3-q# z_+RHFrft*m8n-g2?er-F-nCW+;Azu~a*Q@1A2%QIY3s&GRP9EAGF3#;>MiL{f2VG7 zyAE~_?ZYk{n6$$^>+~r{3ZQ~t{?m&m^glPXFF$|RjhD4g_Aamel%d%(lKF_l^c_@aC0SdZtP^xgiiZmzXnwN8G`!%+UT|s9wr_x~i$FbV8IoQlU^Ll0nzd#7zY-nc- za(OxSY}SWapY8sAd3UYt6ZZ8SSIUqk@jeN#$^W)sMZciRIe_?FBOuy*&pUusu-4fz zP_PCKwhhC$#RQx9Zs`BKB5AOto(}CzrRoaMbEWNnk>;{`0=};VDLR{Nlt&Ixw0$Pk zA%za@SU8H;vZgP(|2&#N30Zjd{*7;om-TS+)-aL>gJzc~q{l9yV=l&KoUkUE|tyT`s?rM;sS5+t%;U5G^PF43p%Iw4!!j>L5~aR^YlDP*S0e@qV2 z8D)UWsja)(PC^+=KpZJqqx}h9!kBE}2bK37uhs3HSS7mf1J5jbmIRffQ13MDLHM5jFME;r;z5>HoW-xb@sqEluS# zRs{H_VY=kf_Y3sA;)TMTr}+V(u23Kr0TU?g>dn$^l3@S_#i$?r#(NMJ`3{~F10O-X zwHxh3&|XJAn9E+vPOv)0pW?{GY~8H1>YHj1s}`ho#75Mgerrd+;p9>EBpe_C`~*l- zo_HC{r~b>;EWlx0pBWn62bY^j{bNby=&cc~+Pu%_3X{(d$>a!@=#24& zUlW>mQ->4)mFjZZCHA15FCksCLYY}AXw;QfiA7t0wc2<*Bdg@lm7LA211|C0u`8Kx zwv=@kzxNW%3{(zmOU<0r_r6CO4o>sD?8b>2E+-5|41ZsJ{on#{o(*5tx z9k}*x`S47}^m2zTUVvmuF1X(ViIZ2amG&crfAa??C_q|L~x$~3lO zr-Xk6CcWp#na62fpH$X`Tn9Hb$shf$OTB>je9#Nao1c^A^| zj#QnT`3S^BBW?^Gf1wNqVH?M5QL`&lpy!pZGYV)q_W(R6AD;$ZX;hi@8<^Q;qG4Zm zVWt~iCSK; zZhU{JJ4``LwdBU}qe-75!iDZheX}^Mef8U$vd>=oTeBHj)%%Y$UxGhLr_cGWG-zU6r_A0M4wnUj+< zqr2sa#XC)t@{(N)3=0tW;l4h~#(Et^8N9YzC$<*LdxX&ID(F3*`4Ji#uH^A&;#F(+ z#mYJe4<)esX#_W#iK@bD?W}L8!$m=@9F|-(Ou|gh<(@S4$Fk$)p<^5AYS?*V zA5MUpof7FIC*Flu$rAk)vQ4FsEQ4jCD(BlQ7!+I%{)|ecy85ZhsR>p!mel>( zQ`^iB%Ft+k+Y}}2FB}W5zVw7o$FWx}pnOeZfXJX)U8y~A^B7#Ri3=((FW+{5Ae7?o z5189s^|y7sz{uH<*GAH>H%3gxrAaDBd6@4ej7xLzqkGp(8oqqF^6T2QXyKFraVM3O znkb9djH@0FsSG_Bsf~oj!8Fovq3vsAs+Y_T!!CFl!D8obr_=ewv^Bid9fyXqM~=U} zbEs;w|E47u6^JGE^7OXGBm z+_f^=(EA-$jM=H6b?4bSnV8h}bPr_3$i0s3eya8}{Aogm6H^)tekBIRURJB~vr{!B z3HE$RHsqtBdG2tv-p9yM2f+wN?ja@X?ple;+6a!p{WFk1x}>DC4MAH+%zWf$K{WuI zBvR#ZW5=+LVdOypeWeW4h+?lTBwV2#Fi?nkQfH@hU$;{8r47^RCFpWWYqd&fbfVxv z2u(tEA(jv9TAnbj5Cw9$QHHkb17(6GcAE=tbJ>hyOz)`=9ntnrmJ55M?f>O)kQ}?e zps+y<)6{PG&1nM%QMry2ZTRz-!iRP`26vy0br3v@s5$5x?Hxry1c*WpsC)fB{s5fg zQl^`jLzK65Yl#Y z?^;mtaXuAwHLBLWD@joYG|dUOj2PA3I7Hk0kz6P`miGgVe9TM|*-Mj#SqEdi;yLP% zqoe|l$AK8r_-E!Nb}%KpTa@Y&#)%=c^} zKMeT_g}}nrmXJAA+ndXT?`(*pZ*9$zQl4I9LIei~e*$p#z&rcDqZ$?$k1y}I3(csg z%UfUHfJ+Nv;?(@AcAvRA7n=X*DO@T=QV+YoCA7?)aB`P4{0&!??4CDBCV*xaTcS3w zi29m8)`a#fygkBNUgi;1icJ-i6P*2U0CewtIO;WK!=FElxVbVX`!hj~QTHL3j^#sq zybHJut6w6Sg!gC>;$wX=x2bvbF5-3eFeLy*SIA+fp;75zns&?+Y9d`Bh_ChfW$d{Ew z3kNd#P=3mcXFpz9A3#Nk4~RTO6&(1GKowdqR*TG_k*`hmW4p<%o|+S`p>LnGcEgG; zM0)xQ`Lb_+mv$a`SCM5c^o^UlVjO8@hCtJRwZKujzp2(#$0ib7R$Ec zw)V5f7oY)y5W+YqBAO-xkWw!ht@DlFn)ooYutcstVO#j9Am_<`KZqmX8i}dbX)l06fi+mQ^nUnl9uh>_ zh7tg25Wy#HdRpDZhKyF@VvIZ;h{H06bWny|2 zK=ocIPR25tJXtY7FJ)=j?4c|BBFQZq@4h-51@pNZg-lyH_k#r3!cNZ44IpAIv1ww4 z==_*7qTy#MaNQZ?whRF@c~UekvK=t7!9479M*M81ZX$KSCsI~^jTnhYi~x?Uv%A~m zJI|eJBCK4{v*jsYJ7@jxVoq7W^JE9lA?DiGU`0|$fl4|>mNotE-c-*N{(br6?oIxM z;C&{iepgej6VoI`!JXl-I8(?QaQef_^Lp-BndPo!06M$T-AVeXtOdeDNa*D&{*$jxEfrUB zC31&3U;z|%XUDIzrw0!87bBy$aA=&NV0;Kx;1%07zJEVNTU+;^e}wDr4+W(Q>Fp%7 zQ%n-DW=LbahU5E=u^h7JF`i{Db*_La{CyJCc6)y8~{EA1N0^*rxZmY*2+HmcQ)X>r7KvEnp!e-b|xxVot1%a zzIUv2+(mx!Rvl)2W*c>tx%4GiHDN6+=kx<@FPbxVcj3svQu>I@ZZxS)sj?-=Jm?286 zg1d=e*^R2~?8DGBr`QGLH*D?~*>z}kI^n_zqV36}IGX(uW`yR_(=(YN;m3p3cj?8Z zMx((^Rz?iVUpYjQDCIIsN8V??{6fd>=L<_1`S}DW-x~!mncEIydnqHdS<|^0sxI~- zT8We~!!cMh`kvz&gTub#Y|eru8t6_!>>%@rGWYf($fZ-3vg_N=1k~SCzbd$cvu9R| z9p2OK6a3pTCuEXqZYT)TVhHw}V+_Sg z*hT3pIYSiGQ%%J^zq9 z@w?SSHA>#zFL_^N_Yg<75J`fnl@!B%PP1_Oy=YL|#GSA+jygpa)x4Ob5Fpi6W_3$H zqU7pQrQ=VNLh}$nP_8|360VDWiC%?Opl%3`-=gkz>nr|BtAAxqTThFmklZ{G(ddo= zd>&WgI0!YGL8tj~(_^lieE?Pb-4qs|B?`$WMQm2Sl?AK!&(tsG!p=a)g(6=8v{9QK zFI^u^DK5kXJ2*&)82mRW_*8mo0?8KXY*IsDC7qA)GGheJgde)LwqtSGd85{!IFXDw~GDo=}Al_g)fu49G zS>oJxWC{gUfjlm58)gj%a~H`Yv?>~Ggmw*0%cnqF*r{5YA7}kOe*VJFK0s$I%$rT! zr<_m0B%$cp-}+cbt$5ZxvOi(*CGsV5bF27A@dGf~|Jz@pFK`}E|H#N<@{kVKSlOGULf38rbT{rxMTcm zXv+Wc7;~WG5e&ZPDv&Q4P8r7k=U>2@?}3?pVOj}xp>HvCT2ECOLA}aLVHlg zdBE{xJ!rS{(@$7V9oSZ2&ONW#zohSRa&WiKb(mQ~kuG)h$L-)_?DV~dSe;q(cLC8P z**7^S^PHIi%j|k*QS_qNaYVo-tei!-6iqQDgJ=EX2TOkM?=xZ?N@*w8(Z0nNuyh8nJP1&{&){q z@GHr`ghuH?gfYZ=k3Fw7Sx*6>IVEH#yZW{h9SOjFIv#O-ck_>d0Y@N?ZR722(x$f& zxooO~Mx%$OzxVd`etFOI_Yn^SXTS#K2_0{+SR7Dz0dlt|KIjAP_sEFFQ3S)k>B*19 zL;8%OP>IX;V}Q=1~R?vj8Q!??s{1 zUAc-3^aQzaS0f;4gn|h6=TqsT&nXBkttdDPC(wa-aa{DDgTdQMkn8HSvWfxj1OsgP zZ4?MXo5^y{p0tq>VL*N`-r$Qo-}~c-`PFyJao|Qi0~+-TSY+dLbQz!$6%GJiOzE9r zEp!UDj!vg|G72(J2RVoQT2^c<{g@Q%B6!72qYE}!o z&)|3V`0g^%fLXuG%33V5u^a!}m%v()fmuAX4Pn5Vn*bM4^&{;CF5+WRJAdS&X&@7n zsE$OdMQ(^VzaB^~M*AI!^dxd_<9Z^A}mMPKbkFCW9-N2XFn zUrxXSE*BIrI5?ENd&darW!Dz9Ant;wj1bOB{>g|D^cZVZe^{`5VO;Q0<+_(=ZCuK# zN%y@z6KLX&9{<1nz>sdJo_wnXvagmA@m-PFw1IuqjeNVjp%RAuTqo&4apedp?TY z;k~=M_3O!n+W<)Yv~ADx{tgSmwJIuwlZI-e?s=}=ew9XvrJVFo|8)nHOUTfdA3t0^ zF5W$i8h&p&fjBsnVPru|B;wI)%@Xg_mDbDEmF95hCeoJSX@C8fI4fGKi#6B?hem40 zjLN5Hz+we4)jRf%gGDkL%8e_R@u7Y;b4+wi%C1B~PsS z77358);@Q)ByA07Q$!1%Es2)zY)P-=lu;k&7hsF&Ui7|#_7u5H!TmBi5oVSr?Y`Q6 zVn3M=vpz2U3Vmbmwy5zUs8Y3{CP_6s`*!IZ$9mBeAt?6My|0I+sSZ zKZA}W9zLwuSOk2G>%DtCn54)X6)tpHuhO4Omlai1SgfipQn-%iZz6DlMc6?;CyfKL zVO3344DN?G>u((^0`5xRcE_J@$6sU-piR19#{B`2Js3U0gptSQqKi+XFIrNV zf(<$Lz0mnY&H3hbN%83Fut2~qxk|1#d$+lU=D~0uqp^5ho}qJPz~F8a)G^$9h0PNm z6M4+(p>|U1VNs;zXEEC)jEz>LRW&-JtGM;#>S^2WqL?W!&IyYxYGM~HsF8?xQAj)U zloGpu122TgCX#e_eNft;hW|0f6o`%LJoA*CzkuHepTrTE3(*iT`iZQ{ipw$&Loi8^5Z398l9%;=edO0$b;CC{Q`w{i5|;Tl z4W$UfV|{oW{uHz)db~7a*0j+4@QKZVSro)%njTbA41u35xlAQ&iKry`SciUG_i^>w zuDnR#FQA#Upq>n4_sRpX^dzz6WWNDNcpoX|XEg8umtutQbqQkZbf^MP zGH8ci#-e_3&}>%cbQXyYNGKz(3S(dn+!Lvi3jgszDs>EUbf?HYA=)GUlkUtO#mxVu zc^m>P1^QqP#{S*i>;KCat7N%lP>&93T~TFQZ|MD(4In5TqxiY2XX$qQ_HF4`y-r{k z!Xyq5J)R!=gTeWIuge5}QzZe7{W6=I1kf4V! z87@NZ(-B*-zMJ@rvjg5Cpc)Hu&Ju@`&i92vkOOOalbG-~T!(&2t2dAUMeX(3L9F0o7s-ZBMR`~#K0DjYve z-n)J55aQu_Aa@nf_9;cG1*KSoUU{N(`yv`n`@f@mU zGvPuP(fBFlWDDwoDy4f*(K;mj0mtL6w?)4q?aJhLq_9s*NDMC;u+$~KV+~b${H0np zA9o>JN(aH4^)B^*+sP+gIrJrYqjfJBT(bK3%TFWJmdp%l355WNREYu^F$KX6tHRW&|6W1rR$Z*I&0)@&?g*m52@MV;BXdKSuDaF{oEoUVf0E7qCw ztS@78VYe0S{MI_jbYcMa?b%$nh~4Dqy#)!e7ObJ}^uZ96KgFMqWCM2jA=XUxUoaz3 z5y0&FRu1i!2nP0j6F6x0JzebgQIJk^QDkFyGM280wAE=6tr1iMjLJcqypEPQHJs&JTE9 zyTP~|EHnA$4Rkh`PHyg45yu-s-PnqT1*ACYI|&VhV@&W{8^`~2nvFE;)czO^Zra~Y z^RvHO0&=(g|N2GeVJq585Dp)$?3|r-YDNN73idrcSl8n|>uFi+`;$sVWmQ!0^*X(q z1)h-^to4_vjB`22YN)aM1tuMlgV}J?iHGTlO6z$5~M5@{jKv{-%rzt#~Q8a-Q>f1g00x za#4oAzbyepyiR=hsr&DStfHy^@AfC3oRyXJ3oYw!i-F7oy$x

R73`C0MDV>#E;tw5Tnw@lY#|2rzoz1ayatK>9Kb*?^ zlciFPu6<+7b7qN*imJS?FxJjD{-zLW9**JV-T;}ko37pXfy+?h$(g{~JyrAR7JnZJ z5G`5x#wZwh{u%1ofccH4?3@!6ItBlOv_h{?pC*fW1zviMrJaDw1sD5j zM1AxpFhCQd_w;M!Y)+)K+0`aAhSPx5Wt9e&`o?O-Z{U-RA2sk_R8b&&ksP%5ONFKd zR!k_;oF8^s?XEmJ1O(UPok^co9k+s`3VA6~!<~zGZF9<&;WUN7SVnH)CTUVO7Yu2~ zd_wU*2IIDFz9^+-BQM+}q0$kDX8?5R`VaC_t1ETUUuu(o7~$VtD#}hKb}(Cis5@M& zkVJjMDFT?Xz<{p1CBTiYT>HhvlY?Z$RQGtyl11<{tR$gj|hq3 zxOg5TBlK{c*}yPzn=5ZMyntHE&OJ-_ah8uB&G%Ss@^4pOS_2067S>mmthN!f@8Jgm z@H)ol$k&C@nuw>LkH_3qqO{aZPCwxiTwoL+1jk$_R;X75MY_^fLzclE07rG0lqRSO z>iuYg9ov#Je7}DZ^@S~LhEzg{Ev4Ja8%d&K!wjz%`gfwKF_hupE&l^yUU%=x$o7pd zqWQd6u3thqehQ%yw-QdDXO01t3^#omxFz78m`)&GIlllWk;1pPNL!#hcFI&nE&a)? z?Ba7|;ZE8YBo6h^$(vWute27J0kfP*GuAQ|alKi#fSP-fZps(dfV0A69;8G~i%L(JipV_D+yc77*A|138a;l3XL!hoII>mvA{V zO6pR1Sk<{VAVtE;JsV&->58R9*-GyIi5nZ-A4xvCOB<%!M@!|j7Y=A)@63qHG6l!o*+m@CcepmdTg2Q*Q3B1@jcnAr zf4h>K1zV=%zdnGMBVGM}8aT#_fS%m>o$UCGaO#is$4sp-ut#6nV%5nk!JJngUP#(~ z_UuLaQ%ipL3-k=+0P12Su{R<;&U`4MH7+3miR`)9ML+tx!bk@pf=h};)I-|#Oc+5T53&lcC+&uIUR z*{ch9(2rv)J$r<3Uqti4x9>aOi&5Ww0fzVt8|$p;0vChwZ)DYtcRXF(LkhTsFApM& z@MpG)J-1EUHxWdqx}F^^Pi$6Q_f`eN@21AFS6D1|@rkRa=Qp2EHom@t+YREn){D%C zYOIwtN3SenEk38$M~>FJ^|*Y38{$HMx?AkjG54l;`_j0d03xA!zwKG<)Yna09)pFG z{e=p_vX%%F?-a)Q48*=(6N113Kr#?(EojDuBH>|~3%$Dj5jp9xi{M{*bOy4d!KY)n z*j>MI#!{EiXe_A9(Dz#KOajGw;3J#dxRw9lHY_R%g0!r&omk{-(?4&*H02e4HCZ}< z$j4B{lVbL(0D10QgXvM~j_tEz20kXF&349v_P6N6^zU3Lx0SXT0vN4rkgz{42AM+r zU)}3+=NC&H2x(aNOqZh}v>_HjMz$F{3vOBrtVZ*I5m z??n&X5}Tfr`Fyb$L(dIPvHpp~i@R~()gJdYD1>AzSq8UNn}n^Ufi0-=tEEx)zl*G*xmq?YFqmSF0HN=l1osI3j zQy+n2{HQ{%Pd8Fw#(_*{fBSN501X5duR(}0i(}W|?%`@Y5SG!vbp+FPs+A$xiyU*_WkG(f4uzH%ePyBv9zza8h z@LF(h;RC=CQBl!WP#FX2g%_<}UZ*$dfOlS_fXe0uTwrOoz6s%W;)8|KkgOpEbFBW7 zsGQ1La`iFc@QeQ6ObGqtEu!&Q**&m2A4ldu`W7${sC1EMF5Rcq{Y`H`pprYkE9`gO z6|63}!^-!J%acDD-yW%p_F*s`eGW=hx87xmD^~70e^;Pw^iD$B(`lK3Mg3jcZ?}o> zbd{Peacg7E(I>r^N0NLVt^lg$j(JWF)cJuy%{}wi{qOH-e>zS`b<}^#V0t&#!DKE^ z!GKT#U+0>5GQf6=Os>$6?H&3-1+=PWyIx|M&?$t|J_jIf3-onz0gE-XAC9=)d zU8p`9O}5oPI0(H?1yyc5*ifVFHa~U15mC^|m0O4wP+8&!dj#xPxNuhI8WmYblJT~q zMbXwQ^#cg|kPCUf5&_^IG$I(k&Z&2bqW6K6EzAGDsWxR!4i)kzc`aCj1GS`OSgvxiWPink(D@eNn=jYQ4+?eN`MF#6AtoSGv&1*T#N4!3e z0f_EyI^U@*5cs@veE_RN1`)_t94)@|oJI8_AyX$v&_XYQ@yu$>|^s6l+P__^E!{sT+2g{EaR+sv{CW3tM zfblFH|JBul|0c(Bj=G3PK0%}eUNxsNuPhMbYol6xwB8&%z-3{a@`7!AF)%7s-!f&% zP2w^Ub(snlO~QD5<m?+D}sUD=q78Q5%f|x*7*qZdJoyibY6gzM@`R)|MESeFMy- z>>kOkzlFcO1EP@&{3P=Do?s@eJSr$;4cSJm5kYOBEuEf+_9`Z|+2s@XH(Sc5CG^jf|zDZ zxN$*F__(*(XI?@+i>Kn_4nUm@TU)BsuJlwNU^zEPJMBRrZp;b z+sO@YmC0|S0!g9ThH-5vBu`JoUY5+Po6)x95H{D5F(xrvChPAU53fqYOXqLqt6p_m zrDSXjgkgnIa2ZKH91~k&Am>Klhs~zS9+seLhGPq8<4Oi-2qi{?ROv<4(dvL&UfP*m zu;ZdlINI0oaduQlQ=#MV425 zK|6R3b#KBLl#X30vDy~UkYU}1N(^?OGhjFvAxKSm?+v}zFZOl2%o9~9q8c<27|42~ z+n2NcEOY(P*11l0(sW@NRk1w_0ale`6M_Wo*2dsJX?oX53W9w%-eS2ZyT@_)byUcr zLmLg>uFPNW(B6QlD~Wazqq-J&&cc8#;Nd;OQ~BoX@4_1If%LyQa?JeyppN!GIHmfm z7wq$zcAw%IGLR`o^?D^`P!=5_$Z|mZkDUQMpnLJxAqN~QDsQ^O*%NGK`FL|{d@_16 zD;ja$%}o}h8IR~&I`z*azY(+{v;J3WrQ-jXwt+35t%^ zB7R<{0qOGZ{WugggZfoi&GYDr*Izmj`XlMK7F5n6irwjQa|e4xT+^r!2S?4%E-p5I z{mM%~&8Qb;095AnrGF{sgDnzgJ>C5bh|Yn%T*95icLHB*Je*Jdkk6(?-!eh$Ks5Zy z9`d(ffH^3)S*+U8s%T4P?mcUshwv5-Ybm3?xWRmbnna^2bez!3#w={L7a$;sGVFUh zg6Rc(`kcWW6Q$}*l)%pK3UN}1w@T{#}l-fU;XRR`_Z>)mOmtxAgT zur!`OC@7`D8vE&>w*}P=8-K;pXXc#P4b-+_336>nEO-)CynnNM?)@pDRPM~6Oqv0LzNKkZA zlAz(FwbBQyz#(-XRJkv5Nhl!)$p=gcV!!+6x)m@xm~7EG%Q*#C|1~quY>R&=@|XDxcCm=`nZz?dMQQ+p67Da26!+$lSf zegE%n^3O?WI01w^=k6v|F;(i11OcTy;RGbgPv%RR{il49(92@;z0TuLY5ve@q8eGIKggcRG`T+< zPpVCKPj|ITBZI11I#~%|jZW+NEjIL@47}8Q3a1r)%@AxVc$18_GUVXkI1A82e}Pc9 zTwRYJT9*J-md$ZT=7<>kFwM{Rnaw$B8_xi1WcNX_E0rMpjbqiP5TtU#=6=k~%obb4 zx7O*EZXW^6vwWx54hiPL5BGh^az0;bDxd{SR_puO9T)bCLm&Q`f$2TkSlifHSfd(@$ron&$ssi*QxEK+0+hqjWHLDb@;Qveu{I2hZI)PiB{&@)i1&9x z1C|B$SDp<-=q)kRKZV?6u=FBG{yDH^5U)>(wq9rfd!%RkRdV(gs3NB10Mh zX{$m|7#1n&r-6OT$1JKDJw32GXuNDMr%5Jpf1| zqPZd50Z$wf{-NzsM0)?C?GUO!%vuG5orf0byWkWBQSGOF*c)9=PEPmhewN-DDi-;o z_yTD<-*TngT68S3i!c|SCo;(6&(rp?d~*A4nR={Vqu!CA4oujl>KlMOp1B7~AW*e6 z2Xv^W6VnOmu!Oe`8Y>%?tOXa=JPNDlXfh_t@`LcAbX}#anX6qTJ<>vtj$CBPCDfS` z#EQ)@Gb~rprVQQmo$O!c<+Z8p=o_RlS~12zB{pZ=UtOd~8Zz)C+WT5PL$F!1K#JCs z>u4HI)%mXfnP&(Lo{o|LyR8Eh+#;ph#{!X(oV<3Oo0#wzY0cGW$BaBQ%y)s|^O2fn z-1$z81JyS8cS{Kc#n`e}Q(D9=m*a6fCyllVr)mjZ-&2%nGajwTGs*(xT3D4i(l7P@ zBJBK9^Qh5habWHg{~RG00V`pUhr$-+6|B#+=w8ZAMs~t{>~fg4b7`eH8(}xOnJfG8 z*EqtmchQ*Fk_*nQ@Y#(Yb}y_H8=syT8oCjnIvU#baX>unGF&fNGD8GX3-;pM#Px-C z&6K0=%>?Vy5btf)tsWzJ>8uT)msskz?%=gqNxB|D^QJ|)QpBHH+UUcaco6CD=w)ycC<#G4p51oXucgM&Tfg+Wt1q@3em`5Zg z3*RVZ;=r0FW+@z zBiEj;%SC5yCtYQl4KiI@(xOvlEN-<>&0haZNua;K95oOr?Jc6o#(7Z~Yl6XUmCa^D@@-ZNTidwmxBdq!w*tM6ei$`_VoI$Ea%~pl;30TqfZq%GzC& zgSy~H)K^rbFdR#``ZR`{oX4||hCsza+;n0XFY6;f2GQ}oONo*gUQv^FR%X6dMyWLP ztels@n$>CTlSJP9LlQ~)f0Bq)?WCO>88Ae4IT;H-r7NtP9N5dQ@uek%^$=`V&o%mQ z{W|&A@wv~N=B(CC*Ln}#GHv4oWfVI#QTqzxY8O;e6lJxt<=YE2Whh}7XmUU|L_a`& zoDj%Wvd4xf%5p^sKAG3vbb8%u*D`zFLBM7vVId1eQ4_ctqAh!XsW`}b<+v6V$urqh zWhyfty!4+UBR>2m2vzl6Q=3&?&QHu_h8|@Yj6jcY`o(4<{Kuc$pZMU`7vHve5~zes zKAYdn3~W$}Rob6CTGI$!X#I152YIO=fx{gD{BIJg34n0IwzAiFNfr4*9vSVXXlXlT zmxHjm6cx^H*#_VGUx1h+&5vdOXa~ubR#?BH_xkp1Q4}8*F=^eaW98kK46}-MEpM9N zx$BZ^kJhS|!-elo{UY~eToltzVD(eTi+*0V^ylGmMz8Ornt$KB@F1VenNPSkjzGKl zbEI>XJyne}uqV(#u?$7cM68*jLQV+YcuZZiz6>&-KN}7gsvrerf$4t}9G1{EkpL*) z86M+YXFUn&*$q+&m*o&g`OcW^%tg&r6~fq|GrP8t%v_erzr9s`Aj{d_(c$>g!%h6) zdgOTug;UnzAkvohdsA?v2kVXJeIi=sDdvsR5uxGS*2VY&291 z35ieaq9L6YXgR+_V*==Xq@)z{J8xh_e`{#JeB#Tl&G2uv>Es^TIU&B5E$4>-0}ZA!y}n8+5~3jK>Jb6baL+?c=|ql?#hnwG0C<$QVYjyz;!}x@vM-;2D-sL- zxgaSXax3QT=PJwa4fA9fuF$w}jc4Y0*hj-mY8QcPX|MO%I7bemW?F1zly;2_XV<-X zimZke>!|5p0`$OPZ7LnPkXv{~sT$AUQmzBRWPv4g^cN#UNVtS5pe{UOys77YY;53D zcTemv@rRc$`vU{3J0ePTd6YBK*!w*8mV0DY5)evh^rd>Wr>1*)YIZEi$Et{KXfJ>E zp`;#YN;oyYUhh6!QaD1#gt!gCXRPjp6Q#YVSf4 zZy6gLx?KQ60D_EwSM{l{@9XXAE7z{I0wRSH0CZoi!R)Pn&L+Y-ugM8~a*}c`L^zZX zhaX=u&L#@mxqgAQt=#UNJ8b!dg=~P_ z5zRAX3`a$MoB$Mz#bU1^%U##@bykcI0zC!K%C^aUO_c)W2%Q8k91hj@53*M9`t|Gl z>@E)yUu+1!iA=&Hz-7q?mQxX;!oq&%J_%-9EQrF+xLfcAFhX)bXb<5*Qj%~X%c}t5 zj-gf&?QFxM!@6!)-#3P9{3J!1%iL5+01Hli+H5CK;9#AfG}nsNTLw^b^$?H&FMve?z~!n9ICgDIFT+9evE%AXC~q7N zLZi{bA|n1d7!}S-vmtAp>sqmx`S~B&6|M8i9_(hUjyx^!z3?JOPNdp$|-O_Xxb}Udrn0hq?`*e6-=7W zYPQ%9^JHiz8kQ3y+yj7RJFvY1(DbRl)5Ootg$wrg_uG>q@lLvef>JxPJS_%m4u#EE z)FL(9Ko#F+fMhi^1KYxp4r}%@(4P*Zj6grR3?i}P&ks*Bvd-Qw_I=j6zW$rNJ2l^i z-3%*HWEK5TfmA}zes3zh{D~CB?HpDafor1*!ML}FFCjqA6P%u&28&I@)8H}mn0!#; z$8||bG}5N)`B`M)$UcmF6_^ErOr<8Bd2bA1WTEYEk{8otoND$Vawl5*b<2Q@2N8fi zV?qCSZ+0`qOz{T*02LOAM1PKJ0gEPfAT&~T=g{m(?w~9AO z-D-jM1bc^qpzGH6=EFmzi303$P)NwUG7ck4jl= ze?ONm!?q3ucec>WBp%^kRkU7*vIf>hgxH~f?XY_3-ADOxPr<$B##RQzk}ps9awp8yzQRUKiNEntd=_X9p|i}#k$oaGTIqz5rUQr>M1 z5aCa(sArLk`jY@Tu`4JS6D9{Qetl@0lMFz?uXr->#|AZVvqc{99CQkr1(Ua%llV1o zhY8P3L2`Wg;!(^fyaU$O*0Vb#CMMSVO|i7Mw-0f|+a$fXQIe<&#x({D$c(4`O?|!n wvgF&w>ZGQKCKi_k_&-?uG9p67Qv-j*+*WTB)*167gt}rbPH5SIxi~sH^9?vQn%!i%HIZbk90#pg$6Ck_QQvEl6)%>in8 z&0($yQz^s~5w(x0*UDRqlQrbi%b5yLzG!r7`4NZKAtMzsPUC_c!uH)8c`x^r?fpY~ z_Vje+;n)638*ix_n^v-^_QPokr$4gJ%PEg~<(zBJp_aGWtxPUvr@ybC>n@%{(eP1U*F=Gs%t zlrT5HSGSX_e3T!q&)xbU7aZ{C$<P@-utxzNL8P4*~ zn@`3PjBWh+FfZQr;X7f?-&2OuS6YVF5M#H5*i2|HQC+kCbAF9aTUqZ_nR>;Yt{gr7 z*Nz;-v0c9(RAJ=nCjpuBk-^47MVN~R?F5UU=hs#Bih3Pl-0+mMw}P^TK9oqGpJS_w z&7M{?5HB8P+clTlF}ykCmHF3K@4e#46Yb>h@eV&fEVk8L?>D6sUVmP||BAW#&GSrS z)RHMKjdOapuA*4&((k*scN;%g@8aRIlIz{+#b9AkyQSDQPZifJnyt4xSxoorVjcXr z%8VX}G{0Nm9>il`D0%a;B(6@6wU(>jNFNydaHe|fgJJ!O<;S*b&u@Y6S05~YCSEfF z(LKVYR;qIWZhfZb|BO+{KUm`PHBV=}s1n+JdrpG&_U1QY_HN$M=a9tn7+75U?HI()Ry3fpz?XklN>YPT)0hR#-VemB!BB;&~1+$ zUi)t`F`N=@zgh;8AFusY=qi6=+jHJ>wlT2Vgm-C~(bP!unJU7Xx{pPOIrPh5>GMT&Cd<bR@Qe?)Mo{yZ0Z>CInQ zK3hM?_L(qT3wy$uJA0m7$}8ByU5DANb1W961@C?G7y_{=+<>_gA%%$_x%5kt1wFc9 zyywt~Y3muMCx0Z1>S=hZ94eT2{*L044Q)!8nN#u0c!#rnY0`gSD z?w-@$BL1O5vodsl9&LJYiSkw-Xz{kWc4~Fz(FLoKP42y}eNKEft)GjF%dic&;$T6B z)utQ1c@?DfL=>>_oTN%AResHEqn+frlDl z4f@1K5X_0=FyXzk1ytesm8%8#1S9Z}6E5D!t1$CQjBDMcTI-;gJD0)(6FRBROosmo zdPd!_EGLuT(Q&}v=TI|Y-IuoiFiufcecff2-Wz**kFYL7H=#k2qXwh~T9;m==4;ZR zbK``Dsk7>-XZCtc{$>8^jn&BfL!Zy@;}ue~)n{&`_0nU*^(+-{ubgOH_3fjlYSRI* zRIt1gBpJYz9eK-tm1$bU^oBog-~#yc=jJ_F?l*C?$2p}vF*MeH>m2a3PC;#PN-U4o zq-=M$J`SNkul@_g6Q1xD4+GzO+{B*tt(ocdI$>g|m_PXE#68rGIE}g8O3U(|P{-n7 z_1uTa^~2@@`G@Smlv$aaJ8vyf+8ERgU3 zqnmJGM1JavtsnqrZ16?SxjluG?eF`$lh9Zc4Y|yUe5+vK8wDSMEGZI%y+xF<`c21l zIn>^oc8d>B1*DT2)2LqF!;;&4Pl{e9DgoY4dg~^aCr~xvkb;YzON&V$1B}8E|os9pab`L8#wpLp7;k zm#aoHaXNzN+`#8yd(~{{@G%YGH`@;@m#Gu|!w1B985Z<~lzfv)~1e6C)#WY$ZfBK-|wtZr+{qd z)=*Q6JH!v%H?axE1|G2a$LJ9c*pVAMG>HpDaBdC-@ohsjK(fTP1#wNP4GGvID18`L z(-@Zm1c(;Gik;}JJe(RmA)a>e8+B8ThUZlRKyxETClvjMc3Rhgm~v!S23Uo4>?RMG=Q}-kK*Q}5(Uot@xX~MiE^M=U zOv?VqiWEdXmRHLFc%5~J8(AUE?(zgf9o@FM2z)(DZCnAcJ2(zgnFM1*0lBRVx+hpT zGE5XuIau6X!7(gqpMKzE;>({Rz~?}HK}^`0x!>wV;vbl>ypVH`%QcXJ8CmzZj$#4x)DKiM)e~pcdVxMKE1E7HL z0O-VDP=?|`;3tv)OCl5lDTkwbz#x1nn~hyGxE*2H z(b`_Iz04GEs05GCe0N0@d9uZh4tSE2<09ICpYBU79uv231fb(G{M^oj5;Jcqcri}y z*1C>fKbDWV*yq=WTB5Ar44zxtMV_0cW$&&~tz>ET@#{W(lb?U@@(mTY_2#Tq&8F6U*u#O^yN?1qrQzgptsGYCf z6tY@4OruqHJKb*lu?MnMK0LDu*ToIw1YxV6JbxZ@ezUY%-pQ&_IHisjXCwD1{woCo zm+~l_1_hY?0l?OwUr8xUdYXO9)+lMcG*`cjvHktoo8>c{OE?DP!HFAJ5f8x>a#D9_8!0lg1;i&Uo`QIwaqOpvF-By@ZM&gbwO7 z{C9L$FE{#}6)al0%5E33M+V-L@*Z@{r?U;FY>5cB950D<_B}_C zCs30p$oq#4nyAUNCbYx>Y*i9n7iE8nKDEuPH%j?>!gC${hyX#~zt<3*@?19viySZI zFXiOql&}I@M{`j&yLkqMCLNnsna1^wEYqeR1BBJb#zrS$xv($;oy6P2kS~k1r2;q^{=O zWWl*>XNxNk<%oOk@;mr@?<&ro+$H#}P^Ziux*ZyptqXBcfZ)=%-kogv2A?5>_A2WR z;)?<>IE;S#UcIaVQEGMa_||sSr-7wKYV@5DR%@)F%n5+2l)+zm1mwwhc|?tFdZ!b} z1=qv0r-=A{zi)e(Z|R-y)5IATh=>yW^)8~+^Dj*?7My$#rbxPC1Ek!_c)wdc>Godm zkIVM#J!WR+l z%7q$WPhPaR92+4aN*a0#b{-5KTCT2WJ)NmttT%uuS3wz1G)KxyeSpEKBN|Y)e#^eD zmHfzqgCv$xi9c;}dnE?oqe(w`M%M8%CY5@2o;B3!*46Z^pgWEstPHTFD3v)6JLTtZ z2r+s{56RktahnB=(k&1|3s73M%~}@PsW+h`4hwZh=@*PrMK>Kx04JbCOOfkE$B$TG zP`P2vV|A9>&WO;I90Us4!h{0ZpK&SDhHiRqA%koimHS>nkx@9^%9AlJ4=|>oxj;(| zKyms4`lUA?`*AM!lltEg{GS5@Y1se0IpYE_T!~)!adpDaLi}J)cBAtNs*oI5$pW3v zm{R@Y5or!iN&EX(BUv#l&!FNPAyOtVMioslA)eTN`>}>*>j6QaU+qhJd*1i$KW^WP zihq$FK1;8RlX9`>Uq~2;0r9(w%UPJ{Z)x-Tfc!>1zvtgmuAw!s+PCimzB{R_z47(% zUX#{g%=RN5)(9-qH^OZeo_w&=)0+?{&TAf<;`y+X7AXFnlhdWpdtJyzoU3M<`6o(5gP&9B;n*vWsFd-;GTp?B}nd|%yyfDSF-dNJnZR3ADY{Lr!k z+A8a+add&jFc0^OPOrSEKN>x}b=^Vv0*8uZTuaLd&X(En$m0wX*O+qOZ$E}m78jBpg;s#{tnK% zObFm566g1Q8SxT4BkK~)yLNly3RBOMXZ9#E6&QgJGa_G9QLlWh+|2TO*0a0 ztMUGtiL$9fE8R#R{NGq7M0L}BIN5@0kbb)3!}(F3sgN&r_(i)KriPOqOf%=z-kadw z`YFqxx2E@;3L=^@PkMbHwDZ%q!%Wzf8JyVs*iGEYAYt{@IDLb9Ta;jwW-^k=WdZOx zq&kn)&XQVxF9;WKsN4S{T`=^^G>BkXkLNzvpk3&ODJ6ed2IuoCBvidYU8e!~jO^(UwE(8tO#_ zShutI6D%0pT4V+W7d%85UV&%D?~q=-E~l!Mc{z93gkUK4i60QhX2DO;WyQL_GLk72 zGx}M}7x@i>?NVv}5cr1sj2M7noFZG>r7wCm+?c0kGroaq_m~=>eG)qcZu*U8d$_^L zydh=cg(IF-Qo-Y`f_{9R6|5r`#17+`>|mFZDq!w+a>!9W=4aaKK3+WnUlTeb8Xb~x zl_vpqq>>bpg7>(Y=@Ypyd3nU)NeE%m1-sHEd8vivpnED!TdDjPY`6^A4s*JW7exQ2 ziy(f6FIW2Fi=|yXJS@5PW*lGgzdnL9h7{dC)28;3G|~J@F)c+ckKZS< z-{wiwBGS!g$d$Lvm~*P~PgP`G-G$UE7}LhD^C4bpJUu2qTKP6PCq487B2X3`ob& ziJmBKv>_6%4>+%*jz956b}-qgp^PUqcQ0@hxw6&&%zm2YINNe!)Q=Hki%QLwvN!87 zAa6+B#}r*`5J#1N0SdOOY0=T9!nz`*oFW>pxd^f1h=UeP9_RS+6f73IX@?}j4;nEx zAlMy3#&m(A{FFo}imQ%lnEH5opW&%5CI?B(pZ2Wo+g&|f*}r%wbtEh*C~W{7tm6v0 zi?@rJAj=YKS-&6&NyR=MD+J4Ywa#(B?(5{ngT-~~X*FT}Zse&NS}yX2>_4Z(%RS%Q z+w)wINh>KSNvY_EHPoxS_mVgY^^gY8pFunj8QB;l8Pmh!HAV(0Xk?p( zLq5uKmpJol!DGVCl^Jih(5-@H8^K4?YLssppK8F@t{i&s*KT)BQB((Jq&}Z7=+Qs2 z^f_B-G#G;&V>0>HfBAmo=?p&<CPtK- zQj{Q1F1Kpc)ICkCOUM(ffEjGg1D4pkDuu5_(hH6K{%a1H9&iW=X&)ULQ)ud9>%921 zgvDcSB&glSZ%)-sIM3WcIg&Cs0WQ8O#><2*92=K0fZcB6uN)ni)A!EfCfVcH>CR}7 z@wIp=_KI>`ZXC8?lR*RXhI#>*dxezynU7c}nTKp_*tZ9nH-TboG>I1XZS(`fHtZK+X#vU0$K#QQp=Y!kXd?a%Aj z5PlI9Az&RsQoP6DR2VkzQp^c~%RqMU|GiAG`tI_!dDc75ZH0yfJ6D; zXI|J0KxYmORSoCvG^XCEmH7f)?+TSO9Wb!6a@WmG>gv_2XWr4#(MjaxYe+Cam{xT@ zrh;~Qw)I_pC`7}&TUmKS2Wz=mU0p3svFs)aR>4{=cs zV=m3K@#kSz2~a4NMNt%uJ!fbk$6EROqw)iG3Cc``!$f8hJ2%dahbcfZ1TSby`Uxh& z8t6kMF$%~`={a$aVYrl1tQKW4C|bmTnd>^AM%IF0fgm&d*p>eP--ZIIMm2eRG~2;M1mMhVh| zUM1Pt*~&Hc@qDRT9Zsipq@}{@>y-?;+}+))Khk%j7T~*Bql5(u%Hs8Y3{^`&2Jm+C#Y&xsk=e!a2T`i|$UkvBve z3O=ZN?>1HICF`+aIP7&lN`M7;S#HY*OnYF7XC1dv&Q7vJ$klOe^hQ@#rHZ-v#f6@P z*cEevGgae_f-R%C3|95(db^ z7#j3AFYRLRy(Gbw9#XGC2C6)tl}$iC@R$>E{TC-vLR&QY+OB?h7)K457Ij+r<+(Z1 zP8e)m7>7s)Bc&ns;!{d1M|;Zye7gxfX&SmCmKp5d5c#-Jf=F+0%t(d)#gWdAYkR0I zKjOiw;at7^B&*zSnRoU>RD}meMr^R)PAs+s8bFaxufRzBwK%XFG?W1IpmbfU@8g?; z+cdrff3@D2%0RUS%^uq1yZn8OzHHw+rXiwc!I~D$ZFgJq8w>6ZQ?lY~afS|^BQD8; zaDB6~fz%JjOz#-QHBBw*zK@TBfZyKJ(u#_-@83H=i0~&!+x?~lz8Or4WP_9XVs2$q zv@Qoq*$gwwo$N|UO@%@9#WALa38it*UV`2&maiK{#5GkgeU&Ij`%Lf*B-0a6oPpl5-H8(T>@6Rd(Yh6xH3az~y9WDxzf6z*T z&$$dJ)EOWMl{> zG2aq*1uv69)O{c&)yct(2R3QF?g?iN znJ)cE+4L~29=Q!~xC>6&d>^-0!oE@(Ar;iqtKr!^Qy87%&W5Ckp=E$&7C;|>b|Mue#CLUah0gelQ z(?lGIoZ5%{${Qs4;AKWd1rNR5fkk;uVltF^Tiot^k|=v4D+}5UrK$lJ1$R+P-e19P zlmb`rpXkRx8#f@s%ggKd0_YdKjwR63pm`=HJ|pa=uIEk#m%Q%e_)}vWCy7l}iQv7_ z^t+gVN7y>(a(83IfBg7SYE9^^@+_(|io^8@?M;|{{`vFK#8XQ6scTzp{0^h;)ZfWR zyBP4#aBpuT2$NGPaYEBJlrG|{RN zBeDypg?!Sc8)eb&>=xt{%Q!3RFJ&3yhN5~FsHd~HQsJHy3I(~YnT`556nKJ@olmgy zs9E!?1T06lV3>~Vuu^>fenjD($YAg0ytVO4F=4$Zz-bKfKY!08h|bZFs~MdX_7}Us z_OIYXx!)%j+wus`z16EN>w{446zO$lo`kFSt6BCaF)#j5LfepMVO9f$^Tu5^X6EUo z{xkr+nqMQ9M%Onq6m;R^(#p#3h0T?fCTP(~*5~BfzIl0}MEgHl01oQS+5jjRAq)`0 zNHU3V8m;{Ti}YFh2Hw$3R^%g-$$IU^DfuHd9#bUn#xD3?;VNv;@~n^l%HepDI4EN~ z+Cb9Wgw{28Di(|C@VIvQz2J^U=(|CUxO0OFjK_iFO>n6bi{tO~hm{^fj-Vdb!ia+O$Kit zpZY`8WxB_9-V;=>LEfk`8fPkbl0+D#bw1pwBN_=83 zIGC;$q!7z1QlX*V@HwzuKUuI+y^=R$jc&)=q^Sd~+~Ma|GW_Ep6?LNEdau?@{4gsi2ZCFAEC`-)iy=Gdk#X ze(@j-et&K!7Y7DNfJx1yURDF(L4T^Wfm~$$dcI~k&Q`Cc@@c^Kgt!mbb&w!x!vl>6 zKC=0rs@h}VpK{y(1Y8gf`!DY9|M>Sx4lsRJva|j4ztI>y{{q(S=T+bsS3P(o@y|CE z!@qgKe{Xh36?0BsGBPsa6<0VZ_G+z9Qi;RqZ_kUr%)9VW2{3?V7bkCi3i!m?#*C}C zOK?}dUcV}q%>47rKX{LxAG-s001BbiySKkTrtf8GDI(7%;F>u4e*;U^vvkjhCXmMF z%a^fgw`<0>4j$$ctE;R22kv&`4GTTrzI~%wueP=bR26QwHlf@Ep@5E3kO1Go!CgAw z@t5n3MP}`#n?YxoQ?(eb>Er@HB0w{pdm^pAUSM~jr@6{yvG~_b?>#G^q1e0&0I_YL`qi6DtE*k3^g&{Cbe}(e{wm{O+*S(3hF8$Uw|euYsoHI|&=>FA!^ap@ioc{D z|H)~3)E}AzmXHbBU%?=8v!JmOi#Vm`l%48T#$TxOLG#%4$H0nzroGi=E>%Cjx&xv( z3jf%4s+O+*X$JZrV;8fge3f? zXgA6Wj}gc2W{3(xD=MoyS?V!w``Cg^7s?EH$&kMXv$C>kfWrC|l4u7MCWfkZemU_! zK?x_Ash&`plqkCL48PUPcKcz#3R{rsOXz;l@Ndjt!8@-gHEhtzbO;v2V+zm}&bFiX z1Z}H6gXL6!cD41urCfswRtUDpy07u7rbd5Z7iaA-j5GNo{6BHWyEO+lA`@ZC>z}U7IyK+&Q-#hf?S_Is zREV$Cs;#$)&9F#0_9=jgp_uNa`EkB~z=TxspxW0l)<=FU4L{&!Rhmjg#U1Q#vYwn& zdoNHn#N1BmO#-Vl9(03T$1z-P9#zi`loU6HBkVS0-Y0z&2hSQ&X{CwDBq$!=W_8F;P6O&ParwQ!NHSBN=OLh^h@yRu*9X2}{bAVnnJ`N0e&Wy)g!>-L^ zPobp0g3i0xXeD5!=v6yNsrS2+iK}-^J-TofSopbX*xt}1gJV8(JAVHV%0q_p3`!U; zX(TcLvR^YQ%pDxW?V+&c8_t|>T*v4ZlBD3l3PrZN49fzM+_IiqLdQ8k4n5m9EEZwl zaqQoZ|6QDLI3M?f3V<-S|0W6~dW{TBOyuDAp?EwsHI+-05p<6oIDZ}-f~Qo2Nefuy zWY7`hVQ98NhdqTJ)HP(uz6AIjkA<=j;JX56afUW|GKbU~L>ayOg@loD5U6JjRZmc2 z1K6#)7;Z6EvurKG!KyqOF6Yfmz7p75qk-npMQlGS<#%lc~iFDO{pA50t#eOr*N7PjJ$b$~W($H|cJ0SdG| zS2K>l-i70B^3`sz(a#gVW4`XuFKOv$QMQGNIsHjAV0U~Be6x&b}jsM35he=l87o$KwBUTuHVy=^XhZ1f70Iw_JIS%z=#gi1nKIARZ=t!I9K-7R;( zu>zyz>*ohHExKOb!@MGh@To%p=EL^MC(swc`oEBjj%EV^pQPCH&}ew$gmP=8t+3a0 zOKcaW=R4A)8Dj_Lc-cvTNnAiHH1+5Gb@76MAXY$T2X{q<2qydmps?DA|`_QYj7A9b=$TmlmPQAzYF@nF46ZdiQx zna#C)!>YG#Z1C&Qw`9w6M-gSWpm*G&swfnEqcV*{8I0c4;N#_O=y%NuI>tr&yls09 zP%L_IE-XJ^%#H$m*p3!LCEB0R+q$v!OTiN)AC~Q(njPuILLp~5fX&wK-O7kVl+hl& z|A<%gzlIh*Mj2TIp%{F95&M~pV1(eH!2HfGh>#_L1|kL&8>y}ML7^|1Z-@X|Zg~@~ zLC$o56~=>C`9#?Z>f`k-`6VpHQ`XcY4>JSUGVC^|-}?A>A?gx~a#sX-c{^6M`_6rn zeP3s#!qr~3Oz>0i+IhWqcxZWc6@UMFaIC&TKkPE2{@v@+a{Hg|4#jR72SC9iEId5C z_JoYt(bmkD1oW{t8yXq{(C>J}XFK}S%JX3w@wZMKiWy`=;Otul%EUy-q2$XLsm%r* z)Hg5?FzIt}*-bn{176dBUXJyr(4AK?nFvZ<7icf>e(t zH<2Nz$<;gPaq(X&F%VV+v)d5YO;2;}!H{Tq-3z zobjbx=>Bd21QYA(>L9dPbSt|~IdZ~`cAuL=fvCh0rp(|EUDg(-c@@If#A6pS3ATO$ zdBlxN>p&YDo5zx%IS57~v+xc>1<#m4aC}^Uf&x9*>W?6lEjRwq&M724?ka;Rw|S6D zwR3b{^~6h+AAn^e#_yh{-G4Qh{j?IQ#yYj1^$_A>oXJ6uf4JAAA#(-y1|YIyqjHYb z&}Y4@5@Pb4<|1Wgq3p0{<+fndc>zo)B#m%Z5@`SBY4{Ypqp<_l9ZpdLzJ7S;fyaQH z0dV}5ODubb1-4}&018bJo1XJ;T<(-FYiny~=jWGm(aPuDh|BA>WVEwvX^k-1=5NnGSCeED5|IKFy4V9r93eC9W@Tvu+m$oJLw@NrgG}21}Ch#w4oBiWQ6NGw8w+ml2 z?`UA;-QLs>C74#UePR(21?;C^`($b)h5z_*_13LhCZmO~_=xhjz2*=$1&x{rQfwV) zPTc1`#8#uAcW7HZ36bK*-Ub@g*l}Q3>XMqw$Jv4vJzETFd=kfH$slr!^XUvseb*EZ1lL9GVyDfic zsB9Q7+4@X>59t^ACwJH(F|(X%3C;tV@P*n;f6eqyu&{=%fb0_pmwTd51Bpr-9>{&iy_KzJ#3RV0x8V?wb#EIT*11&WE)z>afEcN-`Bx@Z-> zMDJaWrm@A7c5x2ol3izNMpBkzS4V#LzwLH&Psnop#1TFOFvf$K5_3PO@pT)jN& zYb>KSyO#lgEb}UnU;+j+?Z_VFYy1id3PoPK7KT;MwExKhmfF8?d@t~K=WhePwWp2Z zWt<=-@y}0?jQAw>k~YwKsXh9^1$GRt;IqdW*juDKzf(SD(3L;Z3$n!cXuu?GOxW`E zFAgq4Py7)j!ZlkX4Lk7~2AJ0Pl)WJQCEQ#>HyB#3x?cqTonIWRPsDB~*ua#T0_&&4 zM8jcdox&6a7ZDqj4$$BG4Vcaa(h>0pyP)i+2ExBpf=-Hx0);X}LW{ADbqWRGkXPc}B?_6P`ysf-1T68cEdg(szxjSY$BZhY1QDQJyXBuK~)x4GV^I!GX0^ z#fYBU;B*aY5sYit@W9al?L-7>?UmRkRWX$?>B~##%Y)Xda=;rH_J5=)+(MP(L<2!R zzVjO!uEGN+dET(x`jO+`R%2upo{5M@LCS8SWWE>kuf@@FW6(HW{k`x6PL?E(L85(F z%yZ0sV|y;)`_cA!wz&9t_U)j{Y=}mAUp#*rYLTSL`?n2A|m@7_a;J`RUI% z9Mt?gW=Y0m1ta^jWy`2lb2T-WG+4s!QbDqQDbd6qMy6t)Akn*t*ry|@?<|6T&bRKP z>~G!2lzJ2eLp=1rEv}9T8A}tV!`X-%A8?5 zu`5=*S6)+F`;;-RtZP_~&H&tvyByASDhafk0cTU%#-ft0Adq{XE zUe90xCtsYGQNJVR+V6OQqY+BFOE(i_9NJ)KwuZpSLtMM%>d50=s6c1BjVN&!HIBbs zbD=^|VmTtAnf&{)_{`+{3OlbqTi`w$C_bn`_?BZ`I15fU_#A=xdzB02E2!m+Si=eA zTv1lJJg6m2J~rEFX%En%E6q1BiLh*NTEW|5g! zzpK>!E&DmnzvGnA`UDo$oXdkSWXbgd8czK14j^*}OEHUIBuzCAyED7XTs3 zoZxxFsM)v&oQ%msh!3%)m!q~9l|tqh;o?2wKE$-B+rjg_$b}j(zRaeG%!YETC0nS3 z4pU`$cu)^m{K?&i9qlJz%hyX+!8V!t)Z z4g^dhKISDx9&WHgtpy2gp}er`Wj)F42}bE`lp>Yw_?{2MDbT<{e6O9IGE}U|ui22- z+&JMd&K@)|;;EstZokGpWE`LzPeTyb$m? zI$28Ig~JMU_+6W^(_iTFK!4_c*<(4R*$OSwmyVCAr9m=Wc8A{p*z2KqOJ;f)OjxW- zHx!5?#H8&AiuwjQPLpmUGe19HJ3GAFQF)YqxKl-~+)Z7ua^>OXiqM>P=AT#P0l99~Iiu_uRMs zx$&3o>z_Yek^_Cc6|312j)Tv`LJ1!_T68L#+3GJ+&(9M2U>X4O6)z7v&i^!2_O-@4 zpMfA3Bws9-Hh~g`%8lyPCnz&W_9GlPZ_)Am@-7XaJR=I+*`TU){>xZj?_1T7sqVR1 zcc}IBssDouZz0r`_Ak-fRnIeFcefx#?+jG4`Ba5o0=Q^JOa4 zmdnzG7}4r#eIHiz4TdEkp&2qU+V@Y5>vzwU?^zN`9F1YGIp(gNlf4n$Vm5dFXglme zJw(dQ>Kc^4y!yOM1O}vNE6Sh9FwwF^BsUOhI4&U2h!>Tir~Nf(s7(AU<4fy&KA z4Rw!WEkvX8hAIBnVGV}q@@EUbXh3#;67fRNAH%ljo%4(Ts4dx_CI8<^(*Kt;y&O%{ z&Hv=xOanDeKnhIz|2iH`6^1Q0>nLrr8m!R2@?ZZtDnklyGVFj;^}&^9paCY8w#-(H zWw-eCwNZyr^}$o;$TgZz=N>&?F*@;*NruM&{Vr|)|C9xK*ixB=WA$g2y>i75XVO(ggKnbPAR+NLQ;q)uJDXf zX#vM4v|+2&iIgUAJeT-^;(Ta%XZT|1!H|=(>EXYQJ3|Wu-SYPi!%$)|J}fd}tIrXc zOUR{QaY)_gOuqWll%Xf9hQ{As$XQ78H3b0@M)I>7uWud8*CF;3fe@^vXnw_S8dbl5 zIACEe#xZa4s^?hDM1cq0Uy>Tii*UA%^=ObaG+u#>Jy@xLlUh&Tn2rBXIoI*DR$qZu zE$fW>Df#NA_AZ;gAE-f$U~2}VV;8K%3Pwfp3iqJqm!1x4Y@>+#uW0~z)N3^w)Q$+s zw7Q$$q1HeD^=~Hvmr-FVoA;Mwqi|@~NoejI7cC$~r{a~s5`0>F8dPp;x2u>8hO#T) zqnVIouBIScFu|cd?1ovJr$8XkCXB-G!0W@Ng8}e^Gpt}(gO3oPIg$c@CN}+B ze4Zf4e?#>L);+v-UHlVNKRqMoe3!pQ-4<%D>HYRyeDZs0K>=G*Qj+K2&$^J(^SHP_ zQddQSXzKm_{o|cLdOdMjx8m@#uCWTl7iUcrh&)(?6S@X4yBx~@0+i3cRcVzn7~aFt z#NRJfQGt39U6cocv(w_yw%B9`KbNor{L+LPJ!@lVZWJ-=U7}FQ^L^3^3UEmkVr~&>gFtNwy&*K0Ao@KJV);!WYCeA$&9n^xlpa*? z?ZZlafTx;#_{SwmWCHUJLz)+<_bl!w1n7K6+GGE$Lw4RgZm4L58aP)@=-ytw2Y;9O z#&}t{{POMFe&@JWpO1(nPUWAUC|HDKtkiA4vfJ3^5Fy3f`VAi*TyPdsLoE{{+h2)& z>`Wh~Vh>|p=USp|qZ(N~U3k*We^nQjd(Mmq^`$QKVm7NpV&UUUn$rnAz3Z_xWcwo* zW2#ZUsB58?!@i6vdQ73~TJG|-x@zT!-p}EWmzIyHp$^ty3KC(7LX; z|4|Vc5+33+BD0Z{`kSjBW9?qt^N5>$|L{_O=4*IjF#E(*w?H} zZ!($0tdDrS-K(JujDFVo3=$7^YIyK}*}kx(&4k7wZ)1=@~nqUPy*E6pHZ>1%d=VT81B!yF)rfm?d=H3iGB2`e=T4=tRK|k z7ZP4pI;LhNZ8_Vapv5svwKWqW=shcwX*L^pV)p1j4Cg?d291_PJ4q{aKZ{Y@&t>&@ z$z%T+;1`v_C3`-@Yy~4~kTnqM0qodW#lN18iP%IM5ydWnq1&iH?4Lbt5@8S}M9?cF zDPPS#D(KB28P=N%gYSGbc=<4;lLt|UM7_qo(RSCq1p{wl-9s>=1of= z1xv51mvGfnyIe;44Tfj)&v(BmXSc^c=r(p-fCx&Gc&&sij(q4d+Z(KBDN#YqN_aN_ zZ^>i2drqO-hg`BHF23+9?!5fLhG@LvzQXO+VzSDUkcs@a80wT_@BKGG!;p54WZR0X zkoL;P7TML5oya_2(wP#7gc9RGiR#zvLo$qsW@;!va-{HvUXjRn*aWfB7 zgc;8i@|rIH&NvtMB;2URJq(f@zG==ks<|r}$MrZ??9@xhx;(|1sJ(n?GVB(Xz=bRf?Phx|VK8XF!9 zdG8nnWjK_}6(aO!#K{*M+Qs8&~EK)kh} zR2gb;0{|#_gq%RAH27Nux=hWS2PECSp6}o1z?VU*YVEHzyrPuTJUgh2!V|Rh4GhSA zeVW)RkRFCZ@{rzBp`qyCej)|yN*-fh^@sZ3U(;URBhH}~;w)mH4p zmw{})_0dfR2#}Pd=F+~|2rRxS5c^wE0}H2w2zYmN4GkdHDD>3zWb^5YQ@~|WcFh*k zS*RZ#>Z@nWXvJJog8(%qDrFEIupu6Dnw`u_%Jq+}#XV(e&_wQVwx4i(yJn*dH4_CR z^q3)lAuSg?`i<8##w=7I%Hr4DE0#~kI;_81)K{(HHq(0wE$#rsdPtxszR;<&QPTH! zdzVrX2M3S09UM9p-epN?L6*9Gy2Fy4PR{io*kqr8Df^n9*|wPt)%-MYG7<@r8TA8| z6TI?@6>c}woW2aE=6nPs@@oZY-vu!!8aQbaR9SN&`UCGHhyC`Itv~&MGCO zh8%8K7Iy-r+_|3#%1byk(Kz|~#BSbBT8^Cq@Av4CoE5k-XwSW06J`6UuWTDqe6w9~ zFE$z1afj`8pw){h^U4qbUxt2B4svk?2I`(MlBL*H0NuxqWOE0*HSiqb+nz_w85#ZT z=DV4`-*7m9{g!#Z*7eOpm0j-`_7DL4yFke~CRfILH;1FdkHnM7pKm1hF6fpU%EK9LhIr`x#>^`x2rorD#DC zk{F>ViL@x&kVKY{eVZAPrHG;?6+`y2l#(rGA|(5ktYgW(jBPAqmhT?@-rxJa$M?R+ z@g3hk#`Dax+|T{o_jO(Ob)Dxqw@SGTCK_-kO5@0eBbQE6+eg2`<9;oB+QFw>XcEZ4 zzHt`t>LBt-o_^_LqvV`=j=_B9>CWu^dw7jj99>ve`xszoj}3ndtD>lMbg;8U83pYY zpsjY2o)E7?!`Ec&pM&zxC0{{ExRt(mYA=i1PobzC(km1!(!KilihFO-*+*!~>U3CV z$QpX9pV;zdVeIvf)iF9iw#OZ9Da_^`-*!)vs}!+^*S_(ELI<@L zL{aiz7aW-rE@;yH(TvP8SVV9xv1xNgfzSU@(&B&5p8oH%{l8plRGt}&WL6nPp(xDB zPnj->_BaMe*dwsf~wVHkG=fP}AXFaIxUpiBKMgQ(X_9;LP{Gsh8 zcsE2Gzyr@sE|L8AW)8BLvI~gOR{Q_CsU+h`&qy8{2JAcY@2&$Rzh5i_&KMx@5kT#f zx{ZiqJX^>5N99;|KHIQ z7smjhk(rmAutR?F_;!2dh$?}gk zpf31uVP@hK9tF(A0nL@_F;RZYM9Enzi;;5w518(?#xc>)-(IS{NBJNmda%ufS)DJ3 zTtBd3P+Ls94c6REaSSWfMNrOn9Vit5Y+OCmN;+F=Sy^w_d=}Cg@A>A8m_@ywPfDzW zx^vi-GjTDRsL|sqQVIty8eQeGxSQ>wm_=MLAl-E7 zDyOqm!|}=D#jmPd^Y{D8dxyBf7W-SpIk)GMk_-Baxc|PV1OUSP{80d$L0xvtzZ}T} zXRmj58~psdnmuc_akQk9Wq9h0PV4Cv?k}#rqqlcGiC;jk?RGtb+4eI5RBSP_k`I}) zK9c?V^_Y-P+^}kyC=!f<5RU5nN$AJ2oZt?iu`&PY&?!6$r7rIja+CTntL8Ga*rvxP zBVJ5wY(K=OwZZ?^QkLTIALfRr#{gx|GXsmV+SZYP1t#`N%B1^ZH-{iBx7q?YKcSYC zZlDDq;3RfT+yDIC(6$NnAf3xkDMl51P$8`2?|csdZt~gX)C^6WL&dMT344EIS{Y}> zn5diSeIAWTB*J_17Flx^PH@2h3)VV@qo;2A^rRRUs#ch;G#jNr`fAxN&z}&tg93iH z#2)H%L)i>9e7niE!J5IItAa8(o%*EJk$D?#mE4Bua2BueO4-oAww9zE^d@iVkk^c= zlakFv*?wff$r)DvnLVas*Dp+M8*QcC=z>emXBM$+)!+DI&pk{SPv-q=Y`lhT-93DF zV1WOSIS`#*0fDfQ-|W@D*&t>dDU12PHxD$gx%FoZ{Qx6kHNos53_5i4i+le;z*9Le zFRKrBHm+nNga0!mL1)EjQQEn zY5+@k=AbM4%<~_^i1z>@8i~T2&bw`TbeWGIfRet}-|hTOBdZ-JWy2zUAkz1lhKKFc z31C|Bc{B?ZKiPc|7t@J?+>l`d^X6=Zs-e5HH$C?;E$#SbbP$tI_SaGo3q9N1pUkcP zSc8Z4;13@;!bD_(u$|B|>#^OTnF~red>~a;N)|3RY@?mKoo(<1B=4fUc9ydO4>^0g z&7JMjDxh%h1B+I$O10@}ao8jqKVh<%Ksov|5uiOHc07$*Jihbqo0CKTGJ-%bdb5xh zjP37o7Vp^}sogNT!NpD+gsRJWu*&G&8(vur@hO>(*wI${Trn@?KWwn7BkMZ4=_fz#>*N;u+6 zn-Wl$lJPtpdUEuTI;N_Xa(rTXc2?zPha^*~$$8mQ8koXdx8;UHNAQZp)LdWsE=ryJ zAO%EaxG+g7TAmZDBqE=@Vdlu)^K>=nJtU3kSJGtQD-p${hqCCl6-GaYSpZ&CCt)%$ zVIC3R$MBM+tnX7j?dG1Wu>~>7(3W3ZVeyBl|SN?{5){WiS8KB{t!6XnEnEFK<(AexkG-TT^N+D-dT-=BXh*!`}Bnnax7DT=a{U z!p}Te-;@{(`^CZw+29{b_l7}KCGs47mNrv`9p}46Ck<&$5g%V&9E$^N-)pCMj?>(x zPyCj3mx5F|#mqMR?5EZne#lb?ZZWDJASAqw`ySTI9hy(+$1Jc7-lq-TWq2u+i|3foE4|tWldIO`?YGkUQN5_oQx?*) z8xDUEe-;>)^|A1)XfCs2k{aY5SRgfn<_%Nz*o`VCr?Y*Lz$_230gWzaBORHXVu$Qv zTc3cj-%9vya<6gW6{;)j7#9lsg`|twS=(iLi0rwlZQS^nd7`FyfmD1S%hM6;Q%3x2 zhC8jIfIW|0ir1O&gsRv@*t>ac{qWXoQ!h(u;U?b>meu4@@1Aeuhbfk-9=qHIBX|RB zD8@b58uwQ=N>h@1wt6{qyte-I*jvEc3(j142iuuJk3wxe&SlfDTPr!=f)3&O;iZt< zhh<^?!uEZViYKRdwq4Rz?85BboSfaT_}_gV~KCO=?)xK1q5soq(lo`RgDLF4LrYsuftxBL?17aa%)?d zj~`jjoxqNWT62O*jQdu9opdnnJJnr6rIcY_tnn_ScbSy@*kj}I^0L(ZIEH4$v(gXL zszl^qFmBm4ifA|A|B=Y%_X|oLt~N5~cd8sTzW4f*Ucu1HosyB~uMxN_naX`wPp-G- z3Q+HY*J{W1@GrfVPh&AF2<2VcvVu1)8kMpuglyIGbXtc!k7sN}*nQYE(&gDGEXs0lV8krZ!geNEYJA z@tq+Ensr0QTeRQ{`k@t_ha~0ydFKDH#hjkFy!n`g7$~8}w2RD+p{SkdY zc=fpS`yZ$)R&BKL7Er}ndW@v9fTHU*!|DF`g}*Va!svNOC(0b~(53hArswA?*n^@r zXbN6c40wjOfEzM6IOufuZiCqR+S=df(jCSQW&DZX9lE`Qz&^$SzjFw{Qk}(Nv+mJ< z*B%H2u;b^IgEu@nIsHM=>93!&B)sN;35>#KYK}GWt^r`-Xh){e)P;ju74W}i?+ulC zS{i*vj6ZD>jX_$7!f+kWINzoYi51ZrI$5 z=lSsdJ=a)rLHPC^^r;k~g*OF?!J>=gaU@t+z94!+9@8BMvfl%E0=UQy#uZE(&Z7ib z{>Nn=v}$nGvYgd+&f`-^zZ&yJyAr<`|9RD_uMl zQqle$vP{>#-H#PxCBZwS_X}*TJ4SUA^9vG~4PoAEy@xb)9>W|!cbdfBXa)W1k&^*2 z$=}mjs9$;Fx0jtjpGlPhVU$9qjj~$h)&&1KJDXTV^yFd|d(Xv)jd-j6y%~7Fai~TZ zA>2?ur@fBp@}>a`VdcQif0s4MTMBH@J6on}P`|ea5Gx@Fu%toltl2PL^zZruv|(XG zfyjOmw9B}wzyC4wg%V2mAQMa9{^};gR~q!pc$r!xJd-=&rK@IECwYvi3n1F7>XJ!6u$<64ZP74!edtk$6zb)97!li z^lE>t4HrRc3^I(tJZd5ZvEEzUk_;8?1$QT|i*SMiR;cDDwun2vSU`6w52&*oR>Kno zO4~_(tTwJF#G!MDI7HdMpK`yQVZZ&}4{%1I%D_Q*Kc!=OZ;2*T>Igd3HT0M!oq7s- z?8&_S3NGYm31n6Is;?VZ3nqdJBw3awns$q62bYe0Z*y-&7oRUc*LB{fF?%lyKmE>% z(W&x)#sJ+iiP%ClDnN$;0Kd->uLg?Nf5(wuy}Jfv>M(O93K|9-MW!Ay{C6+}p&GFe zGw1;bN~VIqWkUytOog(&e*;%A3@4eFbgmC;eyyIKo(_i=J8|@`5?+}=1mx}QZMei( zXV8ht0G~FEViH7?02rq!S=0Oxcu8>xOg(Onik;{1r)u;vzEB`wY;1dr9Cj0Fa{?CJ zbR2y(d(~*Qu?5|W>fJ(2p?Wu!m^>DaLDF@)B`?%v6BVdUTfJgc8Q6_YX69YCCyeI$ zk?Tn5)1X)h!Zz{aw7;fgSL31W8OoeGA?wVu^~JI`KQ8_IsG2Ct?RB~C1&PKIn0Ua> zcyT?DBnGk@87Dl2A)tW+EJsO)E;@P>~$K*>B)u1OMA|A9qK*r!DGqC(jj`%3((Q52_=&8fHV)vwWb=N3@|5K z8Zj<{$%dA!buLGOgmu7EMattY_Y7t6=Y16BlL;jydQ09Yvx&cWP^BQmwf~FpTwk#f z^AlK;d}e<7)5ss*vJn35n3^ulO9b#Zm9>CFlcAX+n5Cyt_xB|UmrZCqz4!=h$QgG4 zbldC8Dt$^qpx2PDD6_r*+u1WZ&N83T3>1($*ojrNu5LbtdXU5e-_LBvP|BY8h1Aqd9v5kE;*MRjwo@gMI%j z74iz>bTa^RSf}m`ZYharERBF}OnLb!qedo@1Gp1VNB+$JVqWS2IGxRv4GO<4y+vTY zFfE7RlSl9EMGXBa8u9q;DRZU#- zekwABkz79ngQ!cJ$A-$%G*v&&$I&|YD2$D`r4~&R(^g4t*8iujA8Li<8~w(n%DOtuC|*g39bo1g#+F>)E_7`{=c{u3aNP?WF{ zMytx`Uhl2Z9?>cw#!{5&K&l{V2aj+e3H4HFt0I)j6G^R8-fs;a;(xUg!l#zxA!%*p z6lLqr-_xuTEH1gWhMc~!z?y^JH3D>CnGg$b|6wq{H^30p!iyN=tr!)guL+(%rqV}f zTkCL$4(cYY9n8_OHEGT@j76e$1H(Ax)4V8m=}nt+H`sVwQPB>nWW4;Su3($@ut%== zrw@_zB7mm`RHYhs1De{k#rHg1cI%q3!wUQsvk&a{fRxB~e#eT79g;>FAC_k3?zgpY zZ&%3L=7MBIa9zyqFuR(FG{B>Rz<^W+lr^wU`Are&KpsbFWi{JsGriYVt643I(5`PfqCE?VpX7 zf&kg?2^*Kla0viuPVgyy0g}E9##)Qomq)WrV~pG%4<7A(%O4*TV{|)g{@FzH(5_UU z$Ab6g56)d+?G)|cyBuz%I{3w+(Djh>`13sP^h&4bclWO3*KlOGI`t*Ky&&9MV|^h( zA$6iWljr6|Gj}1chZSmPJdf=<+M7Z<=2z!6*%Fde;(Qm{L89~(FFKqjd#V>-@Qm)rYnmb*cWV&$chOs>F@GcVhG@^ksb z%hS?!%U8f^>moG{cnZJV8!3;?ZTkc}hCsxrIJUk8r@so))|e*C(>*(}=R3$iEa>tg z9WabOOM<2XLw0)>ze#c?U&G>u$V-;Rl%0)?TouPf3j>b8KpS0ydY50qnh-%2qio-) z?Gl{WIG$(x4z+$;mU8K{zzwbYL9LqJ_ZMD^9jg+76BcvrxN+iY1B|lF6_=T?>-WxK zCZ!30!)`lU?xUj^37DENsJt8+SPhg#mrggH&>2{DcxyrYPH#)oCgPRDBKAihy@ZI;gwiAPV_`pbaf}Ao zT}6;tpqPv=2sZ{bx-zJC=q%({$`};lz*PDjowr7R5*;0{iL6n9CMGABY<$^+QWgyK z^x#Fkd3Mm7we1#}Tw*CTNUpkgb(ZA+N5B{!ZfRog;c=`h#+3r_!V1MOL^o>= zok21G{OQIgp&m0}2+WBo78^ zNVkhmXXXly(mq@0eoq9l+BeN%yV=KOBT652Mk88q2zR#m&GW1oX2jUFSc%$NzoGV@ zgJIGy7bqWYK?he9N3ncTzuv$itFFL^rJgl`m4MlZk6hv*chA7(TP~dqnYn^rSS@kw zeZbUuun4s3@mXC**2bYvn=V!WCiw&689q7rOT{RS?@rnymrzpdN>bW+8ufEwfzSmu zSfCozR980_%0dAA{k%UXF6)I9Qx4kQC}(z^i#hRP&8%y1=;&8!OPzU-4>ttj=)CbS zaj#JazI!@-LPmZd)tp*ujO24Mv2CasCU0ur<>Kb@5l>Be@M{R}=IVOXU+Mtp5);l` z^qj^Tyj#3>^XJnbOrI+EcR{4*tw5IY2U=z{g-ui3bolS z)MQxI>=jAjfm9af0M`q`xT-y#ObNPVp_7uk(xlRwT2WzHrVY&vRa!=CLqOWfs9Pyg z>t`aRD;q^6Z*6Ub&?W$c|96qY<91FH_uY36Du%uXyZHX|ySG4Jr;-QTy)2 zKm1D7Li6j|l|e9o z9)g#DVfvvNGGALJgI<={$mV_m{%6=cA18b|0K#PEI$hGHF4p|$d7E7o7y|OGT3I{b=lDEryw+6+}C2YufAx-~Qs6&Mh}+HOq|KPFfb0 zQ!v{#`RR+uj$ovIOiAMy|GU;u3H5vJ?(b$#kvH@5YZazKqMP8uJ;$ewGr!NBWG%|s zSU2{&=1Dlp+)}uqJ8E>zCz;~&-eh1$ATrnlK4+Y%Uq-F}G{$cnLcem%!bL$HyLq|b z5eYVa#7{u?YZ}kVQ_%C7avo)ouT@vTljb(jy)7U@+u{e(?7YUV4-IK&_Ku4nc6R>k zeW(jTf_lu~2)K2zBy$k&bR_t7!|l8tO2kypgM;BYHFT>Vw~rV2ROJ_6(=XO$2P0VS z>Cn{+d&Ik9*T@-5K+VKrLzN|%50>aWTnyuMgLEZs2F{zOi(J-9)CrmCsQ_6qR+cQ! zo|v@uXQcf-t*2H$-6vO6>?FSdTYiZ>n^iXP)>3lb*1%&#Ea)mdCax^b!!`yGB#o8* zUoEH)2e1A4=63s*#mP}c9f=01^!yHFnQb}4Ahfqo?{t9luAk3hpP!Zjb6}?DJ?ipc zWIpz85c}=pyQdmgi(1)W#+}moNBUCFaKiF$4f0*XTXufV)qJhddb7bbWU*BjHw$Zd{g>s0)amw^X}nw$VqPE5_&6CwG6$v z#I+Gg&wgB0v*Lo)jtUrauW#OUohS2weU3@UjOb`C$16B+S-&=a`^+h#D>za+Om&-RXFwSi0Tea&ekJ#K@iI%Y-3jQ#g~1- ztj}HsK;NC(R8;uW>k_{od!QN-0qT(;YoO@w&dBT9I+k;exG9lD0gTU2YQ2;eVrhtI zCLL%=wjaDg45$PVKz~UqIrytB?h6>JkJKOsP0>v8P3K4!mRYRRpLctAa=t^pds^r# zFZ}@(eV_dBM8HElL`Nm&R!VGtt)#P=}ysbj_wlt+quJv7~cUp*sml+e4trt@$OC3PU zaIueE?TV>1n>n>{z=PkG@NNCBQ{7K;J%xjXh#JL?5!ZQKW)kSP7=)IivBe~RD_2TPc=a1swZ84cv@7M7F zr@rU3|FQV0^W|<0&2!%B73^uoEK`R=PV?~JDxyTnfoc6Zaqm`(Zj%kH`qlKcCm*aA zZ7xf~hi{LD5G46*NoD4b1oIv8mOj9uoKNqb2y3Sgz3n~r==+WBcEBCPVdp7##*nvJ z4cq)|7%Z~WSp8923CUsRb!?Rv$s8~KlPzt~iz4~?^Jm*Tck23ZL|^R_ZZnOboVVz! z=fc82!MJ|ts>D8r!Z1GCBX&X#YUbg6;(7slAl~%^ofzH>kLNlhfg_%V1U>|kXIRYN z(`Y~rhf5qe>FzLv-E!-qtepc-DQzT`W6P?aN6L~|<3F3ZY+#(Z9i9qM7pt}sr{T_xQW2=%T1b43n*L84 z4k^l0f2e876d~~AY(YInWk>Zz*4x^1O&k?8yBiA?A96C>QIg%i{SVMsN(yg>B*>4k z{G4u#GRScVSt;H`@R!+*{!;#-Fz&dro;~qxGU_qP*D081$MZTK6rGrN~k%v^WM)&?O9A3t1%I!*mgrwlok~b@iHI@Cu z^Me+fiA|y>C`=Rc*+AwhA`iNe1l8!0M|FW8HlBWMk8cUNTCP~HwEpI%mDP8^%ZUQP zIg^Fy=_ydEl17>BInvIcQ^+@h>6<#^etHf&hrb6xb0<~kA@^ESIuU{7YqOv3f0Oal zBX_(2*HoBB0Bwe)wwt`RLk@hyat3h`UM;)0H}0Qn-+V#!|I|CRaW^=p@H(FTvX*e# z0DQQvy1M#TuV++Ng>A;p;#jtTT7|t1{BgR!AHxKmc~`9@lWaqbxD=b4Y-x`~tjd+c z9D7QJEwOhNW8H)I?-9T!M=FY4X}@4f7CtfazB>+fIAUK$5Y+UMaUZCX&s@AB#mz@Z zKPQ54lSS+&*z4ljZb8f8m16udtfi!(AWv>Wh~`4=M|(o=)&kp;hkk&D5^Rb)dAU7} zyC0r|gJLEQ&-Jn&NfS6euKGZB?t_v2-v z47nk%{0V6nH4YnIu~Zm<24*NKcS>_C>FeKuSknl#0_UpiqwnrxVh2l2z5d1*Z{-%9 zF-%lZwA2Y^EjXT47tSmWpO^lhHwAw~#}WkM|9lGqX{@CKA7CC%@fvG@N&%aw1evJ~ z@V!&{k(f?tl<6R}G9;uM<*kq6iXmOZ^y$!9@5}$_X}y*q`|Kg-0qY`;ye(egfuJEj z06 zR+|D%9u?i{vvxEUiNF<~L+>_?VJRS-{u>$Gb82x2yh6(2#(Id{^4+8BgL%d6{4Qp& z?G+{UZ2QJ~mKoT~a+A|5dYnbjm*^5YGIA@de_ln`(4U)+51Z#G(1YNq<*DfRzzp6v z_T$BxP53D6gHuF1KkOyu>yUx_;R9EXl7pN~BfsBzA*ahn2rqECt}$q3_h>=$<}H7J zv1#wVJ|W$=-||x$-l5N?AT8~24Y!+oKeTbm3(1MR;(#zkDXH(AHeNk?kj4r@oc(<*9yL zI>5&MQYa9*IucXe{WG?VEwk(7{y|3g575}!VtTDMJHg?iK9Ar}>tiA~Mc&n%Eip*u z0@i3Hxnp1OzNTi=g)>6kdOuo)bB<+8nc*mh$@7WtEj>@LoZb!Xl3@8HC${AMnMLnU z##kdK`P%gLv*A1*XKPG4LJH5Y$c--QWk#C*&KNSb1GsWY#^J9~PBT}KnN^~rT^n%a zSeU%nBM-r}s>6ft3~zAjbe8j=U!)~meN$sxqgUhP>iT`rV_XYEV8orJOf0=W8D~g- zf0FMI#i2#-T~%X%e0wV?Qn$loXQ&yhUuge!SmzyeS?7*Pn>MSo%6^-t3yA5b*#03Q zBD!d?&*0|0iUKv3jFKbeq)i!2mX8GebkOEtTv8C!5dr<=(Ks6*^@iLWt)(WNe91D} zu-fAxB_JvyU@r)Ao>MS=6h}w&DTSs~JX0xoePIy7Oi$lMw&HHoL0y0NA$usJ4i$si z(r}Q(fF%bD#4Dv8V{Q|`26+HSdo3F-ZPAlH6Y~I=yL=(_9{l;E_R!qq)AJ7c-!@Fc zd7i#wFFhfgdVn!>5v*1e4@V#lM$!|+wQ`>jwZxS z>jCaiaR1*)Z9WPK4blk>KjJ^hci3}dJ};xk-y`eh#{CfBw>?lA&WFtBVi8aySE^uz zoepR86Yo>jMN8PrjI8WzWi72(plU}9oX3{`fFDbneO1=bb=A&4F+2duP*zuuEGyFh zs@-r7KFOFa8tFxJUSA5k3QSNi#*ADjK5ELiwHt1Fq^rxjB)k@a2tU+uOScITp{`-A zU)Rp@KU=z4yb@ciTodvtyxh=GIPo32oBu40Yim=eQ4G38-T&iJNKUO7bgj#|cl2d= zc>Kv*z*YDdUuPbo$ER}+ zxhlbX#d7*=9}Cg@ zrd~Yc4CcPK)Zet#vQ_A9lxg;rK2Un7ZxjSJ99Nocb_B8t8f<^}!Xo*(j-g;w5RJq)?X`#Pg+I#0ggQ*YhTDxnCxHl<%1t}rlemxeFUrH8xtk&rE ztNmVn`4m&EM*zrz`hl%&Goh3ruWr-&ss|CHQlV&dC zex2)HyjEP8_&cuL2>_Kt;nIx$rKIU13nr zl|#y!yrD;dw{lvApk|$!bm4`nt$R(atz!!nBwkgWhR5{2Vwa_C1nqnhy)ITlPYEvp z{EeAZCXnu;jw|Ii-{aPAsIF!~(N}Qxc6Kl{bxg{^P~^kH?^CBw(~e12ZGQNOLy65k z$xnDYNRi6_U3N>ODrhVvA-gr@8{GZ0^x2+_74jvZ+-Ye!Ih$+-QUYYXvv6D8o?@_o zn2LzFQ(A5X$e__c6=Vd&s5gq8cU>>A+TFJ!u$`%R|Iw{q?EnRcsEaUZIVD4ZN3Mo+ zLIQA|r?6*eT0&A%+v?#N_y)NUZT-Q3mmf};I~krgwaO)`SX#v^;kYRwA+c1bzM!E2 zon9T3SbxJRT}+*ypDzWfttd*gx(E2F3eYx#Lk66=_PPyl4;sbi=+UFYpa$|CJaqvQ zFIi`&HI35_5!cev`njs^J`@9Fq;3JJv$UDl>``j$!n>t6d*Vtyhi92zmLi1lY2Wx@ zppqI3GY)CH&4UNLq4Mo^xC1gzuv_hBWE~~}Y3WH%>%Ui_P_&FaPS08hk?J#ltz1k( z$MP)`8`P@7bg09_;w}4T8@-#Fn@7f^7$+wtCjP{H(_HPzyBUU{j`00lot&8PSQsd4 zBM*v)UOXuDYa~P_{Dw1imrNsk_)jdy5J67!)Kc-TNvXbp&GXb5I`VARwVxZa8-vbK zr13V-MWvYkyc?Q7wPqJR;bZ!JsZ%@Jacw?4f!czn3v=xc!CHb;RQj@FCD^3pIQgM_ z1En&0?3KBRCr{+)4X`=w-{f2AAxy(cJw_flBt~DhUGt2Rxz4uThN-ziMeE5x6*jn@p5tvvV#x-QJ zO#fXnZq1RMnsg2WuKso9{_ROKq48FGKB`v>%kT*uUBlvyWe6<5UR7%g&0sSJ!nA%y z;Kf6FU-Hn#2OMhlw~1HYQFxBK!r+v#8*YTQ6Kj>CQ(`Dz$0i?vOHc07&#^wCd+6U2~L*|Z?psvKVSe7OG-umowcEc^7?KAB&| z!9Zq9R2-810+K436k%YozIbqA;#q5CAl+wNS^zzvYsiwu3|+%z`NjX+W;}y~<4J1n VVZp8!;CEx8^Jg#V7wFnP_&?y&aX Date: Sun, 26 Nov 2017 03:11:21 -0800 Subject: [PATCH 153/328] Fixes latejoins (#33096) length() is 0 on null lists. Update job.dm --- code/controllers/subsystem/job.dm | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index c70b7016a4..5cfbeb9414 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -393,10 +393,8 @@ SUBSYSTEM_DEF(job) continue S = sloc break - if(GLOB.jobspawn_overrides[rank]) - var/list/special_spawns = GLOB.jobspawn_overrides[rank] - if(special_spawns.len) - S = pick(special_spawns) + if(length(GLOB.jobspawn_overrides[rank])) + S = pick(GLOB.jobspawn_overrides[rank]) if(S) SendToAtom(H, S, buckle = FALSE) if(!S) //if there isn't a spawnpoint send them to latejoin, if there's no latejoin go yell at your mapper @@ -540,11 +538,9 @@ SUBSYSTEM_DEF(job) M.forceMove(get_turf(A)) /datum/controller/subsystem/job/proc/SendToLateJoin(mob/M, buckle = TRUE) - if(M.mind && M.mind.assigned_role) //We're doing something special today. - var/list/special_spawns = GLOB.jobspawn_overrides[M.mind.assigned_role] - if(special_spawns.len) //just in case someone clears these - SendToAtom(M,pick(special_spawns),FALSE) - return + if(M.mind && M.mind.assigned_role && length(GLOB.jobspawn_overrides[M.mind.assigned_role])) //We're doing something special today. + SendToAtom(M,pick(GLOB.jobspawn_overrides[M.mind.assigned_role]),FALSE) + return if(latejoin_trackers.len) SendToAtom(M, pick(latejoin_trackers), buckle) From 6c553d17a40f155b0386b5b336a9f3ca8c63cdc6 Mon Sep 17 00:00:00 2001 From: Ashe Higgs Date: Sun, 26 Nov 2017 15:53:36 -0500 Subject: [PATCH 155/328] Splits mutations from mutations.dm into a subfolder, /datums/mutations --- code/datums/mutations.dm | 3 + code/datums/mutations/body.dm | 148 +++++++++++++++ code/datums/mutations/chameleon.dm | 30 +++ code/datums/mutations/cold_resistance.dm | 20 ++ code/datums/mutations/hulk.dm | 36 ++++ code/datums/mutations/sight.dm | 74 ++++++++ code/datums/mutations/speech.dm | 231 +++++++++++++++++++++++ code/datums/mutations/telekinesis.dm | 18 ++ tgstation.dme | 7 + 9 files changed, 567 insertions(+) create mode 100644 code/datums/mutations/body.dm create mode 100644 code/datums/mutations/chameleon.dm create mode 100644 code/datums/mutations/cold_resistance.dm create mode 100644 code/datums/mutations/hulk.dm create mode 100644 code/datums/mutations/sight.dm create mode 100644 code/datums/mutations/speech.dm create mode 100644 code/datums/mutations/telekinesis.dm diff --git a/code/datums/mutations.dm b/code/datums/mutations.dm index c19dc2c180..24ccdff244 100644 --- a/code/datums/mutations.dm +++ b/code/datums/mutations.dm @@ -113,6 +113,7 @@ GLOBAL_LIST_EMPTY(mutations_list) /datum/mutation/human/proc/get_spans() return list() +<<<<<<< HEAD /datum/mutation/human/hulk name = "Hulk" @@ -650,6 +651,8 @@ GLOBAL_LIST_EMPTY(mutations_list) owner.LaserEyes(target, mouseparams) +======= +>>>>>>> b6741ca... Splits mutations from mutations.dm into a subfolder, /datums/mutations (#33079) /mob/living/carbon/proc/update_mutations_overlay() return diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm new file mode 100644 index 0000000000..23b91add58 --- /dev/null +++ b/code/datums/mutations/body.dm @@ -0,0 +1,148 @@ +//These mutations change your overall "form" somehow, like size + +//Epilepsy gives a very small chance to have a seizure every life tick, knocking you unconscious. +/datum/mutation/human/epilepsy + name = "Epilepsy" + quality = NEGATIVE + text_gain_indication = "You get a headache." + +/datum/mutation/human/epilepsy/on_life(mob/living/carbon/human/owner) + if(prob(1) && owner.stat == CONSCIOUS) + owner.visible_message("[owner] starts having a seizure!", "You have a seizure!") + owner.Unconscious(200) + owner.Jitter(1000) + addtimer(CALLBACK(src, .proc/jitter_less, owner), 90) + +/datum/mutation/human/epilepsy/proc/jitter_less(mob/living/carbon/human/owner) + if(owner) + owner.jitteriness = 10 + + +//Unstable DNA induces random mutations! +/datum/mutation/human/bad_dna + name = "Unstable DNA" + quality = NEGATIVE + text_gain_indication = "You feel strange." + +/datum/mutation/human/bad_dna/on_acquiring(mob/living/carbon/human/owner) + to_chat(owner, text_gain_indication) + var/mob/new_mob + if(prob(95)) + if(prob(50)) + new_mob = owner.randmutb() + else + new_mob = owner.randmuti() + else + new_mob = owner.randmutg() + if(new_mob && ismob(new_mob)) + owner = new_mob + . = owner + on_losing(owner) + + +//Cough gives you a chronic cough that causes you to drop items. +/datum/mutation/human/cough + name = "Cough" + quality = MINOR_NEGATIVE + text_gain_indication = "You start coughing." + +/datum/mutation/human/cough/on_life(mob/living/carbon/human/owner) + if(prob(5) && owner.stat == CONSCIOUS) + owner.drop_all_held_items() + owner.emote("cough") + + +//Dwarfism shrinks your body and lets you pass tables. +/datum/mutation/human/dwarfism + name = "Dwarfism" + quality = POSITIVE + get_chance = 15 + lowest_value = 256 * 12 + +/datum/mutation/human/dwarfism/on_acquiring(mob/living/carbon/human/owner) + if(..()) + return + owner.resize = 0.8 + owner.update_transform() + owner.pass_flags |= PASSTABLE + owner.visible_message("[owner] suddenly shrinks!", "Everything around you seems to grow..") + +/datum/mutation/human/dwarfism/on_losing(mob/living/carbon/human/owner) + if(..()) + return + owner.resize = 1.25 + owner.update_transform() + owner.pass_flags &= ~PASSTABLE + owner.visible_message("[owner] suddenly grows!", "Everything around you seems to shrink..") + + +//Clumsiness has a very large amount of small drawbacks depending on item. +/datum/mutation/human/clumsy + name = "Clumsiness" + quality = MINOR_NEGATIVE + text_gain_indication = "You feel lightheaded." + +/datum/mutation/human/clumsy/on_acquiring(mob/living/carbon/human/owner) + if(..()) + return + owner.disabilities |= CLUMSY + +/datum/mutation/human/clumsy/on_losing(mob/living/carbon/human/owner) + if(..()) + return + owner.disabilities &= ~CLUMSY + + +//Tourettes causes you to randomly stand in place and shout. +/datum/mutation/human/tourettes + name = "Tourettes Syndrome" + quality = NEGATIVE + text_gain_indication = "You twitch." + +/datum/mutation/human/tourettes/on_life(mob/living/carbon/human/owner) + if(prob(10) && owner.stat == CONSCIOUS) + owner.Stun(200) + switch(rand(1, 3)) + if(1) + owner.emote("twitch") + if(2 to 3) + owner.say("[prob(50) ? ";" : ""][pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS")]") + var/x_offset_old = owner.pixel_x + var/y_offset_old = owner.pixel_y + var/x_offset = owner.pixel_x + rand(-2,2) + var/y_offset = owner.pixel_y + rand(-1,1) + animate(owner, pixel_x = x_offset, pixel_y = y_offset, time = 1) + animate(owner, pixel_x = x_offset_old, pixel_y = y_offset_old, time = 1) + + +//Deafness makes you deaf. +/datum/mutation/human/deaf + name = "Deafness" + quality = NEGATIVE + text_gain_indication = "You can't seem to hear anything." + +/datum/mutation/human/deaf/on_acquiring(mob/living/carbon/human/owner) + if(..()) + return + owner.disabilities |= DEAF + +/datum/mutation/human/deaf/on_losing(mob/living/carbon/human/owner) + if(..()) + return + owner.disabilities &= ~DEAF + + +//Monified turns you into a monkey. +/datum/mutation/human/race + name = "Monkified" + quality = NEGATIVE + time_coeff = 2 + +/datum/mutation/human/race/on_acquiring(mob/living/carbon/human/owner) + if(..()) + return + . = owner.monkeyize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSE) + +/datum/mutation/human/race/on_losing(mob/living/carbon/monkey/owner) + if(owner && istype(owner) && owner.stat != DEAD && (owner.dna.mutations.Remove(src))) + . = owner.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSE) diff --git a/code/datums/mutations/chameleon.dm b/code/datums/mutations/chameleon.dm new file mode 100644 index 0000000000..da10510970 --- /dev/null +++ b/code/datums/mutations/chameleon.dm @@ -0,0 +1,30 @@ +//Chameleon causes the owner to slowly become transparent when not moving. +/datum/mutation/human/chameleon + name = "Chameleon" + quality = POSITIVE + get_chance = 20 + lowest_value = 256 * 12 + text_gain_indication = "You feel one with your surroundings." + text_lose_indication = "You feel oddly exposed." + time_coeff = 5 + +/datum/mutation/human/chameleon/on_acquiring(mob/living/carbon/human/owner) + if(..()) + return + owner.alpha = CHAMELEON_MUTATION_DEFAULT_TRANSPARENCY + +/datum/mutation/human/chameleon/on_life(mob/living/carbon/human/owner) + owner.alpha = max(0, owner.alpha - 25) + +/datum/mutation/human/chameleon/on_move(mob/living/carbon/human/owner) + owner.alpha = CHAMELEON_MUTATION_DEFAULT_TRANSPARENCY + +/datum/mutation/human/chameleon/on_attack_hand(mob/living/carbon/human/owner, atom/target, proximity) + if(proximity) //stops tk from breaking chameleon + owner.alpha = CHAMELEON_MUTATION_DEFAULT_TRANSPARENCY + return + +/datum/mutation/human/chameleon/on_losing(mob/living/carbon/human/owner) + if(..()) + return + owner.alpha = 255 diff --git a/code/datums/mutations/cold_resistance.dm b/code/datums/mutations/cold_resistance.dm new file mode 100644 index 0000000000..6281514e71 --- /dev/null +++ b/code/datums/mutations/cold_resistance.dm @@ -0,0 +1,20 @@ +//Cold Resistance gives your entire body an orange halo, and makes you immune to the effects of vacuum and cold. +/datum/mutation/human/cold_resistance + name = "Cold Resistance" + quality = POSITIVE + get_chance = 25 + lowest_value = 256 * 12 + text_gain_indication = "Your body feels warm!" + time_coeff = 5 + +/datum/mutation/human/cold_resistance/New() + ..() + visual_indicators |= mutable_appearance('icons/effects/genetics.dmi', "fire", -MUTATIONS_LAYER) + +/datum/mutation/human/cold_resistance/get_visual_indicator(mob/living/carbon/human/owner) + return visual_indicators[1] + +/datum/mutation/human/cold_resistance/on_life(mob/living/carbon/human/owner) + if(owner.getFireLoss()) + if(prob(1)) + owner.heal_bodypart_damage(0,1) //Is this really needed? diff --git a/code/datums/mutations/hulk.dm b/code/datums/mutations/hulk.dm new file mode 100644 index 0000000000..9340361930 --- /dev/null +++ b/code/datums/mutations/hulk.dm @@ -0,0 +1,36 @@ +//Hulk turns your skin green, and allows you to punch through walls. +/datum/mutation/human/hulk + name = "Hulk" + quality = POSITIVE + get_chance = 15 + lowest_value = 256 * 12 + text_gain_indication = "Your muscles hurt!" + species_allowed = list("human") //no skeleton/lizard hulk + health_req = 25 + +/datum/mutation/human/hulk/on_acquiring(mob/living/carbon/human/owner) + if(..()) + return + var/status = CANSTUN | CANKNOCKDOWN | CANUNCONSCIOUS | CANPUSH + owner.status_flags &= ~status + owner.update_body_parts() + +/datum/mutation/human/hulk/on_attack_hand(mob/living/carbon/human/owner, atom/target, proximity) + if(proximity) //no telekinetic hulk attack + return target.attack_hulk(owner) + +/datum/mutation/human/hulk/on_life(mob/living/carbon/human/owner) + if(owner.health < 0) + on_losing(owner) + to_chat(owner, "You suddenly feel very weak.") + +/datum/mutation/human/hulk/on_losing(mob/living/carbon/human/owner) + if(..()) + return + owner.status_flags |= CANSTUN | CANKNOCKDOWN | CANUNCONSCIOUS | CANPUSH + owner.update_body_parts() + +/datum/mutation/human/hulk/say_mod(message) + if(message) + message = "[uppertext(replacetext(message, ".", "!"))]!!" + return message diff --git a/code/datums/mutations/sight.dm b/code/datums/mutations/sight.dm new file mode 100644 index 0000000000..dee26166dd --- /dev/null +++ b/code/datums/mutations/sight.dm @@ -0,0 +1,74 @@ +//Nearsightedness restricts your vision by several tiles. +/datum/mutation/human/nearsight + name = "Near Sightness" + quality = MINOR_NEGATIVE + text_gain_indication = "You can't see very well." + +/datum/mutation/human/nearsight/on_acquiring(mob/living/carbon/human/owner) + if(..()) + return + owner.become_nearsighted() + +/datum/mutation/human/nearsight/on_losing(mob/living/carbon/human/owner) + if(..()) + return + owner.cure_nearsighted() + + +//Blind makes you blind. Who knew? +/datum/mutation/human/blind + name = "Blindness" + quality = NEGATIVE + text_gain_indication = "You can't seem to see anything." + +/datum/mutation/human/blind/on_acquiring(mob/living/carbon/human/owner) + if(..()) + return + owner.become_blind() + +/datum/mutation/human/blind/on_losing(mob/living/carbon/human/owner) + if(..()) + return + owner.cure_blind() + + +//X-Ray Vision lets you see through walls. +/datum/mutation/human/x_ray + name = "X Ray Vision" + quality = POSITIVE + get_chance = 25 + lowest_value = 256 * 12 + text_gain_indication = "The walls suddenly disappear!" + time_coeff = 2 + +/datum/mutation/human/x_ray/on_acquiring(mob/living/carbon/human/owner) + if(..()) + return + + owner.update_sight() + +/datum/mutation/human/x_ray/on_losing(mob/living/carbon/human/owner) + if(..()) + return + owner.update_sight() + + +//Laser Eyes lets you shoot lasers from your eyes! +/datum/mutation/human/laser_eyes + name = "Laser Eyes" + quality = POSITIVE + dna_block = NON_SCANNABLE + text_gain_indication = "You feel pressure building up behind your eyes." + layer_used = FRONT_MUTATIONS_LAYER + limb_req = "head" + +/datum/mutation/human/laser_eyes/New() + ..() + visual_indicators |= mutable_appearance('icons/effects/genetics.dmi', "lasereyes", -FRONT_MUTATIONS_LAYER) + +/datum/mutation/human/laser_eyes/get_visual_indicator(mob/living/carbon/human/owner) + return visual_indicators[1] + +/datum/mutation/human/laser_eyes/on_ranged_attack(mob/living/carbon/human/owner, atom/target, mouseparams) + if(owner.a_intent == INTENT_HARM) + owner.LaserEyes(target, mouseparams) diff --git a/code/datums/mutations/speech.dm b/code/datums/mutations/speech.dm new file mode 100644 index 0000000000..2959c73125 --- /dev/null +++ b/code/datums/mutations/speech.dm @@ -0,0 +1,231 @@ +//These are all minor mutations that affect your speech somehow. +//Individual ones aren't commented since their functions should be evident at a glance + +/datum/mutation/human/nervousness + name = "Nervousness" + quality = MINOR_NEGATIVE + text_gain_indication = "You feel nervous." + +/datum/mutation/human/nervousness/on_life(mob/living/carbon/human/owner) + if(prob(10)) + owner.stuttering = max(10, owner.stuttering) + + +/datum/mutation/human/wacky + name = "Wacky" + quality = MINOR_NEGATIVE + text_gain_indication = "You feel an off sensation in your voicebox." + text_lose_indication = "The off sensation passes." + +/datum/mutation/human/wacky/get_spans() + return list(SPAN_SANS) + + +/datum/mutation/human/mute + name = "Mute" + quality = NEGATIVE + text_gain_indication = "You feel unable to express yourself at all." + text_lose_indication = "You feel able to speak freely again." + +/datum/mutation/human/mute/on_acquiring(mob/living/carbon/human/owner) + if(..()) + return + owner.disabilities |= MUTE + +/datum/mutation/human/mute/on_losing(mob/living/carbon/human/owner) + if(..()) + return + owner.disabilities &= ~MUTE + + +/datum/mutation/human/smile + name = "Smile" + quality = MINOR_NEGATIVE + dna_block = NON_SCANNABLE + text_gain_indication = "You feel so happy. Nothing can be wrong with anything. :)" + text_lose_indication = "Everything is terrible again. :(" + +/datum/mutation/human/smile/say_mod(message) + if(message) + message = " [message] " + //Time for a friendly game of SS13 + message = replacetext(message," stupid "," smart ") + message = replacetext(message," retard "," genius ") + message = replacetext(message," unrobust "," robust ") + message = replacetext(message," dumb "," smart ") + message = replacetext(message," awful "," great ") + message = replacetext(message," gay ",pick(" nice "," ok "," alright ")) + message = replacetext(message," horrible "," fun ") + message = replacetext(message," terrible "," terribly fun ") + message = replacetext(message," terrifying "," wonderful ") + message = replacetext(message," gross "," cool ") + message = replacetext(message," disgusting "," amazing ") + message = replacetext(message," loser "," winner ") + message = replacetext(message," useless "," useful ") + message = replacetext(message," oh god "," cheese and crackers ") + message = replacetext(message," jesus "," gee wiz ") + message = replacetext(message," weak "," strong ") + message = replacetext(message," kill "," hug ") + message = replacetext(message," murder "," tease ") + message = replacetext(message," ugly "," beautiful ") + message = replacetext(message," douchbag "," nice guy ") + message = replacetext(message," whore "," lady ") + message = replacetext(message," nerd "," smart guy ") + message = replacetext(message," moron "," fun person ") + message = replacetext(message," IT'S LOOSE "," EVERYTHING IS FINE ") + message = replacetext(message," sex "," hug fight ") + message = replacetext(message," idiot "," genius ") + message = replacetext(message," fat "," thin ") + message = replacetext(message," beer "," water with ice ") + message = replacetext(message," drink "," water ") + message = replacetext(message," feminist "," empowered woman ") + message = replacetext(message," i hate you "," you're mean ") + message = replacetext(message," nigger "," african american ") + message = replacetext(message," jew "," jewish ") + message = replacetext(message," shit "," shiz ") + message = replacetext(message," crap "," poo ") + message = replacetext(message," slut "," tease ") + message = replacetext(message," ass "," butt ") + message = replacetext(message," damn "," dang ") + message = replacetext(message," fuck "," ") + message = replacetext(message," penis "," privates ") + message = replacetext(message," cunt "," privates ") + message = replacetext(message," dick "," jerk ") + message = replacetext(message," vagina "," privates ") + return trim(message) + + +/datum/mutation/human/unintelligable + name = "Unintelligable" + quality = NEGATIVE + text_gain_indication = "You can't seem to form any coherent thoughts!" + text_lose_indication = "Your mind feels more clear." + +/datum/mutation/human/unintelligable/say_mod(message) + if(message) + var/prefix=copytext(message,1,2) + if(prefix == ";") + message = copytext(message,2) + else if(prefix in list(":","#")) + prefix += copytext(message,2,3) + message = copytext(message,3) + else + prefix="" + + var/list/words = splittext(message," ") + var/list/rearranged = list() + for(var/i=1;i<=words.len;i++) + var/cword = pick(words) + words.Remove(cword) + var/suffix = copytext(cword,length(cword)-1,length(cword)) + while(length(cword)>0 && suffix in list(".",",",";","!",":","?")) + cword = copytext(cword,1 ,length(cword)-1) + suffix = copytext(cword,length(cword)-1,length(cword) ) + if(length(cword)) + rearranged += cword + message = "[prefix][uppertext(jointext(rearranged," "))]!!" + return message + + +/datum/mutation/human/swedish + name = "Swedish" + quality = MINOR_NEGATIVE + dna_block = NON_SCANNABLE + text_gain_indication = "You feel Swedish, however that works." + text_lose_indication = "The feeling of Swedishness passes." + +/datum/mutation/human/swedish/say_mod(message) + if(message) + message = replacetext(message,"w","v") + message = replacetext(message,"j","y") + message = replacetext(message,"a",pick("�","�","�","a")) + message = replacetext(message,"bo","bjo") + message = replacetext(message,"o",pick("�","�","o")) + if(prob(30)) + message += " Bork[pick("",", bork",", bork, bork")]!" + return message + + +/datum/mutation/human/chav + name = "Chav" + quality = MINOR_NEGATIVE + dna_block = NON_SCANNABLE + text_gain_indication = "Ye feel like a reet prat like, innit?" + text_lose_indication = "You no longer feel like being rude and sassy." + +/datum/mutation/human/chav/say_mod(message) + if(message) + message = " [message] " + message = replacetext(message," looking at "," gawpin' at ") + message = replacetext(message," great "," bangin' ") + message = replacetext(message," man "," mate ") + message = replacetext(message," friend ",pick(" mate "," bruv "," bledrin ")) + message = replacetext(message," what "," wot ") + message = replacetext(message," drink "," wet ") + message = replacetext(message," get "," giz ") + message = replacetext(message," what "," wot ") + message = replacetext(message," no thanks "," wuddent fukken do one ") + message = replacetext(message," i don't know "," wot mate ") + message = replacetext(message," no "," naw ") + message = replacetext(message," robust "," chin ") + message = replacetext(message," hi "," how what how ") + message = replacetext(message," hello "," sup bruv ") + message = replacetext(message," kill "," bang ") + message = replacetext(message," murder "," bang ") + message = replacetext(message," windows "," windies ") + message = replacetext(message," window "," windy ") + message = replacetext(message," break "," do ") + message = replacetext(message," your "," yer ") + message = replacetext(message," security "," coppers ") + return trim(message) + + +/datum/mutation/human/elvis + name = "Elvis" + quality = MINOR_NEGATIVE + dna_block = NON_SCANNABLE + text_gain_indication = "You feel pretty good, honeydoll." + text_lose_indication = "You feel a little less conversation would be great." + +/datum/mutation/human/elvis/on_life(mob/living/carbon/human/owner) + switch(pick(1,2)) + if(1) + if(prob(15)) + var/list/dancetypes = list("swinging", "fancy", "stylish", "20'th century", "jivin'", "rock and roller", "cool", "salacious", "bashing", "smashing") + var/dancemoves = pick(dancetypes) + owner.visible_message("[owner] busts out some [dancemoves] moves!") + if(2) + if(prob(15)) + owner.visible_message("[owner] [pick("jiggles their hips", "rotates their hips", "gyrates their hips", "taps their foot", "dances to an imaginary song", "jiggles their legs", "snaps their fingers")]!") + +/datum/mutation/human/elvis/say_mod(message) + if(message) + message = " [message] " + message = replacetext(message," i'm not "," I aint ") + message = replacetext(message," girl ",pick(" honey "," baby "," baby doll ")) + message = replacetext(message," man ",pick(" son "," buddy "," brother"," pal "," friendo ")) + message = replacetext(message," out of "," outta ") + message = replacetext(message," thank you "," thank you, thank you very much ") + message = replacetext(message," what are you "," whatcha ") + message = replacetext(message," yes ",pick(" sure", "yea ")) + message = replacetext(message," faggot "," square ") + message = replacetext(message," muh valids "," getting my kicks ") + return trim(message) + + +/datum/mutation/human/stoner + name = "Stoner" + quality = NEGATIVE + dna_block = NON_SCANNABLE + text_gain_indication = "You feel...totally chill, man!" + text_lose_indication = "You feel like you have a better sense of time." + +/datum/mutation/human/stoner/on_acquiring(mob/living/carbon/human/owner) + ..() + owner.grant_language(/datum/language/beachbum) + owner.remove_language(/datum/language/common) + +/datum/mutation/human/stoner/on_losing(mob/living/carbon/human/owner) + ..() + owner.grant_language(/datum/language/common) + owner.remove_language(/datum/language/beachbum) diff --git a/code/datums/mutations/telekinesis.dm b/code/datums/mutations/telekinesis.dm new file mode 100644 index 0000000000..3aa562ee74 --- /dev/null +++ b/code/datums/mutations/telekinesis.dm @@ -0,0 +1,18 @@ +//Telekinesis lets you interact with objects from range, and gives you a light blue halo around your head. +/datum/mutation/human/telekinesis + name = "Telekinesis" + quality = POSITIVE + get_chance = 20 + lowest_value = 256 * 12 + text_gain_indication = "You feel smarter!" + limb_req = "head" + +/datum/mutation/human/telekinesis/New() + ..() + visual_indicators |= mutable_appearance('icons/effects/genetics.dmi', "telekinesishead", -MUTATIONS_LAYER) + +/datum/mutation/human/telekinesis/get_visual_indicator(mob/living/carbon/human/owner) + return visual_indicators[1] + +/datum/mutation/human/telekinesis/on_ranged_attack(mob/living/carbon/human/owner, atom/target) + target.attack_tk(owner) diff --git a/tgstation.dme b/tgstation.dme index e5d267b667..0648584f2e 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -411,6 +411,13 @@ #include "code\datums\martial\plasma_fist.dm" #include "code\datums\martial\sleeping_carp.dm" #include "code\datums\martial\wrestling.dm" +#include "code\datums\mutations\body.dm" +#include "code\datums\mutations\chameleon.dm" +#include "code\datums\mutations\cold_resistance.dm" +#include "code\datums\mutations\hulk.dm" +#include "code\datums\mutations\sight.dm" +#include "code\datums\mutations\speech.dm" +#include "code\datums\mutations\telekinesis.dm" #include "code\datums\ruins\lavaland.dm" #include "code\datums\ruins\space.dm" #include "code\datums\status_effects\buffs.dm" From 4a22fed89df01cb8c762e1ac33a1b78d3cb68fe8 Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Sun, 26 Nov 2017 17:51:54 -0500 Subject: [PATCH 156/328] Cleans up goldcore defines --- code/__DEFINES/misc.dm | 9 ++++++++ code/__HELPERS/icons.dm | 2 +- code/game/gamemodes/blob/blobs/blob_mobs.dm | 4 ++-- .../simple_animal/friendly/butterfly.dm | 2 +- .../mob/living/simple_animal/friendly/cat.dm | 8 +++++-- .../simple_animal/friendly/cockroach.dm | 2 +- .../mob/living/simple_animal/friendly/crab.dm | 10 ++++++--- .../mob/living/simple_animal/friendly/dog.dm | 10 ++++----- .../simple_animal/friendly/farm_animals.dm | 8 +++++-- .../mob/living/simple_animal/friendly/fox.dm | 6 +++++- .../living/simple_animal/friendly/lizard.dm | 4 ++++ .../living/simple_animal/friendly/mouse.dm | 4 ++-- .../living/simple_animal/friendly/penguin.dm | 2 +- .../living/simple_animal/friendly/sloth.dm | 6 +++--- .../mob/living/simple_animal/hostile/alien.dm | 6 +++--- .../mob/living/simple_animal/hostile/bear.dm | 4 ++++ .../mob/living/simple_animal/hostile/bees.dm | 2 +- .../mob/living/simple_animal/hostile/carp.dm | 6 +++--- .../living/simple_animal/hostile/creature.dm | 21 +++++++++++++++++++ .../living/simple_animal/hostile/faithless.dm | 2 +- .../simple_animal/hostile/giant_spider.dm | 14 ++++++------- .../living/simple_animal/hostile/headcrab.dm | 4 ++++ .../living/simple_animal/hostile/hivebot.dm | 2 +- .../simple_animal/hostile/killertomato.dm | 2 +- .../hostile/megafauna/colossus.dm | 2 +- .../mob/living/simple_animal/hostile/mimic.dm | 4 ++-- .../hostile/mining_mobs/basilisk.dm | 2 +- .../hostile/mining_mobs/gutlunch.dm | 2 +- .../simple_animal/hostile/retaliate/frog.dm | 2 +- .../simple_animal/hostile/retaliate/ghost.dm | 2 +- .../living/simple_animal/hostile/skeleton.dm | 6 +++--- .../living/simple_animal/hostile/syndicate.dm | 2 +- .../mob/living/simple_animal/hostile/tree.dm | 2 +- .../simple_animal/hostile/wumborian_fugu.dm | 2 +- .../mob/living/simple_animal/parrot.dm | 8 +++++-- .../mob/living/simple_animal/simple_animal.dm | 2 +- code/modules/reagents/chemistry/recipes.dm | 4 ++-- code/modules/shuttle/special.dm | 2 +- 38 files changed, 122 insertions(+), 60 deletions(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index d83557aaec..1782c7aa62 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -478,3 +478,12 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define SYRINGE_DRAW 0 #define SYRINGE_INJECT 1 +<<<<<<< HEAD +======= +#define RESEARCH_MATERIAL_RECLAMATION_ID "0" + +//gold slime core spawning +#define NO_SPAWN 0 +#define HOSTILE_SPAWN 1 +#define FRIENDLY_SPAWN 2 +>>>>>>> 2abae67... Cleans up goldcore defines (#33090) diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index 99c540ec34..d26e3a4477 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -949,7 +949,7 @@ GLOBAL_LIST_EMPTY(friendly_animal_types) if(!GLOB.friendly_animal_types.len) for(var/T in typesof(/mob/living/simple_animal)) var/mob/living/simple_animal/SA = T - if(initial(SA.gold_core_spawnable) == 2) + if(initial(SA.gold_core_spawnable) == FRIENDLY_SPAWN) GLOB.friendly_animal_types += SA diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index d27c3aa820..5572bbd9d8 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -100,7 +100,7 @@ var/death_cloud_size = 1 //size of cloud produced from a dying spore var/mob/living/carbon/human/oldguy var/is_zombie = 0 - gold_core_spawnable = 1 + gold_core_spawnable = HOSTILE_SPAWN /mob/living/simple_animal/hostile/blob/blobspore/Initialize(mapload, var/obj/structure/blob/factory/linked_node) if(istype(linked_node)) @@ -299,4 +299,4 @@ /mob/living/simple_animal/hostile/blob/blobbernaut/independent independent = TRUE - gold_core_spawnable = 1 + gold_core_spawnable = HOSTILE_SPAWN diff --git a/code/modules/mob/living/simple_animal/friendly/butterfly.dm b/code/modules/mob/living/simple_animal/friendly/butterfly.dm index 9c16c2a924..6a00ca0006 100644 --- a/code/modules/mob/living/simple_animal/friendly/butterfly.dm +++ b/code/modules/mob/living/simple_animal/friendly/butterfly.dm @@ -18,7 +18,7 @@ pass_flags = PASSTABLE | PASSGRILLE | PASSMOB ventcrawler = VENTCRAWLER_ALWAYS mob_size = MOB_SIZE_TINY - gold_core_spawnable = 2 + gold_core_spawnable = FRIENDLY_SPAWN verb_say = "flutters" verb_ask = "flutters inquisitively" verb_exclaim = "flutters intensely" diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index fd03dc2359..f9ddd94f0a 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -28,9 +28,13 @@ response_harm = "kicks" var/turns_since_scan = 0 var/mob/living/simple_animal/mouse/movement_target +<<<<<<< HEAD gold_core_spawnable = 2 devourable = TRUE no_vore = FALSE +======= + gold_core_spawnable = FRIENDLY_SPAWN +>>>>>>> 2abae67... Cleans up goldcore defines (#33090) /mob/living/simple_animal/pet/cat/Initialize() . = ..() @@ -81,7 +85,7 @@ icon_living = "cat" icon_dead = "cat_dead" gender = FEMALE - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN var/list/family = list()//var restored from savefile, has count of each child type var/list/children = list()//Actual mob instances of children var/cats_deployed = 0 @@ -154,7 +158,7 @@ /mob/living/simple_animal/pet/cat/Proc name = "Proc" gender = MALE - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN /mob/living/simple_animal/pet/cat/Life() if(!stat && !buckled && !client) diff --git a/code/modules/mob/living/simple_animal/friendly/cockroach.dm b/code/modules/mob/living/simple_animal/friendly/cockroach.dm index 77c29cd3cf..a6e24f43dd 100644 --- a/code/modules/mob/living/simple_animal/friendly/cockroach.dm +++ b/code/modules/mob/living/simple_animal/friendly/cockroach.dm @@ -18,7 +18,7 @@ speak_emote = list("chitters") density = FALSE ventcrawler = VENTCRAWLER_ALWAYS - gold_core_spawnable = 2 + gold_core_spawnable = FRIENDLY_SPAWN verb_say = "chitters" verb_ask = "chitters inquisitively" verb_exclaim = "chitters loudly" diff --git a/code/modules/mob/living/simple_animal/friendly/crab.dm b/code/modules/mob/living/simple_animal/friendly/crab.dm index 6f5158ac83..99d91b299e 100644 --- a/code/modules/mob/living/simple_animal/friendly/crab.dm +++ b/code/modules/mob/living/simple_animal/friendly/crab.dm @@ -19,8 +19,12 @@ ventcrawler = VENTCRAWLER_ALWAYS var/obj/item/inventory_head var/obj/item/inventory_mask +<<<<<<< HEAD gold_core_spawnable = 2 devourable = TRUE +======= + gold_core_spawnable = FRIENDLY_SPAWN +>>>>>>> 2abae67... Cleans up goldcore defines (#33090) /mob/living/simple_animal/crab/Life() ..() @@ -44,7 +48,7 @@ response_help = "pets" response_disarm = "gently pushes aside" response_harm = "stomps" - gold_core_spawnable = FALSE + gold_core_spawnable = NO_SPAWN /mob/living/simple_animal/crab/evil name = "Evil Crab" @@ -56,7 +60,7 @@ response_help = "pokes" response_disarm = "shoves" response_harm = "stomps" - gold_core_spawnable = TRUE + gold_core_spawnable = HOSTILE_SPAWN /mob/living/simple_animal/crab/kreb name = "Kreb" @@ -68,7 +72,7 @@ response_help = "pets" response_disarm = "gently pushes aside" response_harm = "stomps" - gold_core_spawnable = FALSE + gold_core_spawnable = NO_SPAWN /mob/living/simple_animal/crab/evil/kreb name = "Evil Kreb" diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 2a94052274..770834b0cf 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -31,7 +31,7 @@ var/obj/item/inventory_head var/obj/item/inventory_back var/nofur = 0 //Corgis that have risen past the material plane of existence. - gold_core_spawnable = 2 + gold_core_spawnable = FRIENDLY_SPAWN /mob/living/simple_animal/pet/dog/pug name = "\improper pug" @@ -42,7 +42,7 @@ icon_living = "pug" icon_dead = "pug_dead" butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/pug = 3) - gold_core_spawnable = 2 + gold_core_spawnable = FRIENDLY_SPAWN /mob/living/simple_animal/pet/dog/Initialize() . = ..() @@ -290,7 +290,7 @@ response_help = "pets" response_disarm = "bops" response_harm = "kicks" - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN var/age = 0 var/record_age = 1 var/memory_saved = FALSE @@ -438,7 +438,7 @@ icon_living = "narsian" icon_dead = "narsian_dead" faction = list("dog", "cult") - gold_core_spawnable = FALSE + gold_core_spawnable = NO_SPAWN nofur = TRUE /mob/living/simple_animal/pet/dog/corgi/narsie/Life() @@ -560,7 +560,7 @@ response_harm = "kicks" var/turns_since_scan = 0 var/puppies = 0 - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN //Lisa already has a cute bow! /mob/living/simple_animal/pet/dog/corgi/Lisa/Topic(href, href_list) diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 6fb1c500b2..03d79e98e0 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -117,7 +117,7 @@ health = 50 maxHealth = 50 var/obj/item/udder/udder = null - gold_core_spawnable = 2 + gold_core_spawnable = FRIENDLY_SPAWN blood_volume = BLOOD_VOLUME_NORMAL devourable = TRUE no_vore = FALSE @@ -195,8 +195,12 @@ var/amount_grown = 0 pass_flags = PASSTABLE | PASSGRILLE | PASSMOB mob_size = MOB_SIZE_TINY +<<<<<<< HEAD gold_core_spawnable = 2 devourable = TRUE +======= + gold_core_spawnable = FRIENDLY_SPAWN +>>>>>>> 2abae67... Cleans up goldcore defines (#33090) /mob/living/simple_animal/chick/Initialize() . = ..() @@ -250,7 +254,7 @@ var/list/feedMessages = list("It clucks happily.","It clucks happily.") var/list/layMessage = list("lays an egg.","squats down and croons.","begins making a huge racket.","begins clucking raucously.") var/list/validColors = list("brown","black","white") - gold_core_spawnable = 2 + gold_core_spawnable = FRIENDLY_SPAWN var/static/chicken_count = 0 devourable = TRUE no_vore = FALSE diff --git a/code/modules/mob/living/simple_animal/friendly/fox.dm b/code/modules/mob/living/simple_animal/friendly/fox.dm index e7d6bfbf64..6b06ac7a86 100644 --- a/code/modules/mob/living/simple_animal/friendly/fox.dm +++ b/code/modules/mob/living/simple_animal/friendly/fox.dm @@ -17,6 +17,7 @@ response_help = "pets" response_disarm = "gently pushes aside" response_harm = "kicks" +<<<<<<< HEAD gold_core_spawnable = 2 devourable = TRUE var/mob/living/simple_animal/mouse/movement_target @@ -59,10 +60,13 @@ if(movement_target) stop_automated_movement = 1 walk_to(src,movement_target,0,3) +======= + gold_core_spawnable = FRIENDLY_SPAWN +>>>>>>> 2abae67... Cleans up goldcore defines (#33090) //Captain fox /mob/living/simple_animal/pet/fox/Renault name = "Renault" desc = "Renault, the Captain's trustworthy fox." gender = FEMALE - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN diff --git a/code/modules/mob/living/simple_animal/friendly/lizard.dm b/code/modules/mob/living/simple_animal/friendly/lizard.dm index c4e11cc2bd..e4e1b26225 100644 --- a/code/modules/mob/living/simple_animal/friendly/lizard.dm +++ b/code/modules/mob/living/simple_animal/friendly/lizard.dm @@ -18,8 +18,12 @@ density = FALSE pass_flags = PASSTABLE | PASSMOB mob_size = MOB_SIZE_SMALL +<<<<<<< HEAD gold_core_spawnable = 2 devourable = TRUE +======= + gold_core_spawnable = FRIENDLY_SPAWN +>>>>>>> 2abae67... Cleans up goldcore defines (#33090) obj_damage = 0 environment_smash = ENVIRONMENT_SMASH_NONE var/static/list/edibles = typecacheof(list(/mob/living/simple_animal/butterfly, /mob/living/simple_animal/cockroach)) //list of atoms, however turfs won't affect AI, but will affect consumption. diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 1a7ed0261f..85ec19bfb9 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -22,7 +22,7 @@ pass_flags = PASSTABLE | PASSGRILLE | PASSMOB mob_size = MOB_SIZE_TINY var/body_color //brown, gray and white, leave blank for random - gold_core_spawnable = 2 + gold_core_spawnable = FRIENDLY_SPAWN var/chew_probability = 1 devourable = TRUE @@ -99,7 +99,7 @@ response_help = "pets" response_disarm = "gently pushes aside" response_harm = "splats" - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN /obj/item/reagent_containers/food/snacks/deadmouse name = "dead mouse" diff --git a/code/modules/mob/living/simple_animal/friendly/penguin.dm b/code/modules/mob/living/simple_animal/friendly/penguin.dm index 07515808dd..fe0187fee6 100644 --- a/code/modules/mob/living/simple_animal/friendly/penguin.dm +++ b/code/modules/mob/living/simple_animal/friendly/penguin.dm @@ -23,7 +23,7 @@ icon_living = "penguin" icon_dead = "penguin_dead" butcher_results = list() - gold_core_spawnable = 2 + gold_core_spawnable = FRIENDLY_SPAWN /mob/living/simple_animal/pet/penguin/emperor/shamebrero name = "Shamebrero penguin" diff --git a/code/modules/mob/living/simple_animal/friendly/sloth.dm b/code/modules/mob/living/simple_animal/friendly/sloth.dm index 4d81afdf5e..7519951876 100644 --- a/code/modules/mob/living/simple_animal/friendly/sloth.dm +++ b/code/modules/mob/living/simple_animal/friendly/sloth.dm @@ -14,7 +14,7 @@ response_help = "pets" response_disarm = "gently pushes aside" response_harm = "kicks" - gold_core_spawnable = 2 + gold_core_spawnable = FRIENDLY_SPAWN melee_damage_lower = 18 melee_damage_upper = 18 health = 50 @@ -27,7 +27,7 @@ /mob/living/simple_animal/sloth/paperwork name = "Paperwork" desc = "Cargo's pet sloth. About as useful as the rest of the techs." - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN //Cargo Sloth 2 @@ -39,4 +39,4 @@ icon_dead = "cool_sloth_dead" gender = FEMALE butcher_results = list(/obj/item/toy/spinningtoy = 1) - gold_core_spawnable = 0 \ No newline at end of file + gold_core_spawnable = NO_SPAWN \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index fa4cefd839..2651065b75 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -32,7 +32,7 @@ see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE unique_name = 1 - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN death_sound = 'sound/voice/hiss6.ogg' deathmessage = "lets out a waning guttural screech, green blood bubbling from its maw..." devourable = TRUE @@ -139,7 +139,7 @@ butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/xeno = 10, /obj/item/stack/sheet/animalhide/xeno = 2) mob_size = MOB_SIZE_LARGE - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN /obj/item/projectile/neurotox name = "neurotoxin" @@ -161,7 +161,7 @@ friendly = "caresses" obj_damage = 0 environment_smash = ENVIRONMENT_SMASH_NONE - gold_core_spawnable = 1 + gold_core_spawnable = HOSTILE_SPAWN icon_state = "maid" icon_living = "maid" icon_dead = "maid_dead" diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index ef662c8f5a..2300eb5c7c 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -36,9 +36,13 @@ maxbodytemp = 1500 faction = list("russian") +<<<<<<< HEAD gold_core_spawnable = 1 devourable = TRUE no_vore = FALSE +======= + gold_core_spawnable = HOSTILE_SPAWN +>>>>>>> 2abae67... Cleans up goldcore defines (#33090) //SPACE BEARS! SQUEEEEEEEE~ OW! FUCK! IT BIT MY HAND OFF!! /mob/living/simple_animal/hostile/bear/Hudson diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index 02252254c9..ef2e393a7d 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -37,7 +37,7 @@ pass_flags = PASSTABLE | PASSGRILLE | PASSMOB mob_size = MOB_SIZE_TINY movement_type = FLYING - gold_core_spawnable = 1 + gold_core_spawnable = HOSTILE_SPAWN search_objects = 1 //have to find those plant trays! //Spaceborn beings don't get hurt by space diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index 4be394e2b5..878f7b3019 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -35,7 +35,7 @@ faction = list("carp") movement_type = FLYING pressure_resistance = 200 - gold_core_spawnable = 1 + gold_core_spawnable = HOSTILE_SPAWN /mob/living/simple_animal/hostile/carp/AttackingTarget() . = ..() @@ -47,7 +47,7 @@ icon_state = "holocarp" icon_living = "holocarp" maxbodytemp = INFINITY - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN del_on_death = 1 /mob/living/simple_animal/hostile/carp/megacarp @@ -92,7 +92,7 @@ desc = "A failed Syndicate experiment in weaponized space carp technology, it now serves as a lovable mascot." gender = FEMALE speak_emote = list("squeaks") - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN faction = list("syndicate") AIStatus = AI_OFF diff --git a/code/modules/mob/living/simple_animal/hostile/creature.dm b/code/modules/mob/living/simple_animal/hostile/creature.dm index 50baf1038e..070f076544 100644 --- a/code/modules/mob/living/simple_animal/hostile/creature.dm +++ b/code/modules/mob/living/simple_animal/hostile/creature.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /mob/living/simple_animal/hostile/creature name = "creature" desc = "A sanity-destroying otherthing." @@ -16,3 +17,23 @@ gold_core_spawnable = 1 atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 +======= +/mob/living/simple_animal/hostile/creature + name = "creature" + desc = "A sanity-destroying otherthing." + icon_state = "otherthing" + icon_living = "otherthing" + icon_dead = "otherthing-dead" + health = 80 + maxHealth = 80 + obj_damage = 100 + melee_damage_lower = 25 + melee_damage_upper = 50 + attacktext = "chomps" + attack_sound = 'sound/weapons/bite.ogg' + faction = list("creature") + speak_emote = list("screams") + gold_core_spawnable = HOSTILE_SPAWN + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 +>>>>>>> 2abae67... Cleans up goldcore defines (#33090) diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index 173c8a6b8d..2929e146f1 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -31,7 +31,7 @@ minbodytemp = 0 faction = list("faithless") - gold_core_spawnable = 1 + gold_core_spawnable = HOSTILE_SPAWN /mob/living/simple_animal/hostile/faithless/AttackingTarget() . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 3ea1be6f03..2d18fd3331 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -44,7 +44,7 @@ attacktext = "bites" attack_sound = 'sound/weapons/bite.ogg' unique_name = 1 - gold_core_spawnable = 1 + gold_core_spawnable = HOSTILE_SPAWN see_in_dark = 4 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE var/playable_spider = FALSE @@ -152,7 +152,7 @@ move_to_delay = 4 poison_type = "venom" //all in venom, glass cannon. you bite 5 times and they are DEFINITELY dead, but 40 health and you are extremely obvious. Ambush, maybe? speed = 1 - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN //tarantulas are really tanky, regenerating (maybe), hulky monster but are also extremely slow, so. /mob/living/simple_animal/hostile/poison/giant_spider/tarantula @@ -170,7 +170,7 @@ speed = 7 status_flags = NONE mob_size = MOB_SIZE_LARGE - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN /mob/living/simple_animal/hostile/poison/giant_spider/tarantula/movement_delay() var/turf/T = get_turf(src) @@ -190,7 +190,7 @@ maxHealth = 40 health = 40 var/datum/action/innate/spider/comm/letmetalkpls - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN /mob/living/simple_animal/hostile/poison/giant_spider/nurse/midwife/Initialize() . = ..() @@ -208,7 +208,7 @@ maxbodytemp = 1500 poison_type = "frost_oil" color = rgb(114,228,250) - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN /mob/living/simple_animal/hostile/poison/giant_spider/nurse/ice name = "giant ice spider" @@ -217,7 +217,7 @@ maxbodytemp = 1500 poison_type = "frost_oil" color = rgb(114,228,250) - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN /mob/living/simple_animal/hostile/poison/giant_spider/hunter/ice name = "giant ice spider" @@ -226,7 +226,7 @@ maxbodytemp = 1500 poison_type = "frost_oil" color = rgb(114,228,250) - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN /mob/living/simple_animal/hostile/poison/giant_spider/handle_automated_action() if(!..()) //AIStatus is off diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index f59cf79f22..5b4324623f 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -22,7 +22,11 @@ ventcrawler = VENTCRAWLER_ALWAYS var/datum/mind/origin var/egg_lain = 0 +<<<<<<< HEAD // gold_core_spawnable = 1 //are you sure about this?? +======= + gold_core_spawnable = HOSTILE_SPAWN //are you sure about this?? +>>>>>>> 2abae67... Cleans up goldcore defines (#33090) /mob/living/simple_animal/hostile/headcrab/proc/Infect(mob/living/carbon/victim) var/obj/item/organ/body_egg/changeling_egg/egg = new(victim) diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index 06f2a56a0e..41a08a949c 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -24,7 +24,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 speak_emote = list("states") - gold_core_spawnable = 1 + gold_core_spawnable = HOSTILE_SPAWN del_on_death = 1 loot = list(/obj/effect/decal/cleanable/robot_debris) diff --git a/code/modules/mob/living/simple_animal/hostile/killertomato.dm b/code/modules/mob/living/simple_animal/hostile/killertomato.dm index db1f253645..17658cc7c1 100644 --- a/code/modules/mob/living/simple_animal/hostile/killertomato.dm +++ b/code/modules/mob/living/simple_animal/hostile/killertomato.dm @@ -24,4 +24,4 @@ atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 150 maxbodytemp = 500 - gold_core_spawnable = 1 + gold_core_spawnable = HOSTILE_SPAWN diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 587afef82f..58e3e0837b 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -612,7 +612,7 @@ Difficulty: Very Hard pass_flags = PASSTABLE | PASSGRILLE | PASSMOB ventcrawler = VENTCRAWLER_ALWAYS mob_size = MOB_SIZE_TINY - gold_core_spawnable = TRUE + gold_core_spawnable = HOSTILE_SPAWN verb_say = "warps" verb_ask = "floats inquisitively" verb_exclaim = "zaps" diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index 0c7edd0334..dd96c87371 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -27,7 +27,7 @@ faction = list("mimic") move_to_delay = 9 - gold_core_spawnable = 1 + gold_core_spawnable = HOSTILE_SPAWN del_on_death = 1 // Aggro when you try to open them. Will also pickup loot when spawns and drop it when dies. @@ -101,7 +101,7 @@ GLOBAL_LIST_INIT(protected_objects, list(/obj/structure/table, /obj/structure/ca var/destroy_objects = 0 var/knockdown_people = 0 var/static/mutable_appearance/googly_eyes = mutable_appearance('icons/mob/mob.dmi', "googly_eyes") - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN /mob/living/simple_animal/hostile/mimic/copy/Initialize(mapload, obj/copy, mob/living/creator, destroy_original = 0) . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm index 38022461b7..a9627c7e2d 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm @@ -33,7 +33,7 @@ aggro_vision_range = 9 idle_vision_range = 2 turns_per_move = 5 - gold_core_spawnable = TRUE + gold_core_spawnable = HOSTILE_SPAWN loot = list(/obj/item/ore/diamond{layer = ABOVE_MOB_LAYER}, /obj/item/ore/diamond{layer = ABOVE_MOB_LAYER}) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm index 04282d12fd..ad7edb1716 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm @@ -23,7 +23,7 @@ friendly = "pinches" a_intent = INTENT_HELP ventcrawler = VENTCRAWLER_ALWAYS - gold_core_spawnable = 2 + gold_core_spawnable = FRIENDLY_SPAWN stat_attack = UNCONSCIOUS gender = NEUTER stop_automated_movement = FALSE diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm index 1db0bf1e20..18e07391ba 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm @@ -23,7 +23,7 @@ butcher_results = list(/obj/item/reagent_containers/food/snacks/nugget = 1) pass_flags = PASSTABLE | PASSGRILLE | PASSMOB mob_size = MOB_SIZE_TINY - gold_core_spawnable = 1 + gold_core_spawnable = HOSTILE_SPAWN /mob/living/simple_animal/hostile/retaliate/frog/Initialize() . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/ghost.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/ghost.dm index 6d492a2be0..2d24f847df 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/ghost.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/ghost.dm @@ -29,7 +29,7 @@ maxbodytemp = 1500 movement_type = FLYING pressure_resistance = 300 - gold_core_spawnable = 0 //too spooky for science + gold_core_spawnable = NO_SPAWN //too spooky for science var/ghost_hair_style var/ghost_hair_color var/mutable_appearance/ghost_hair diff --git a/code/modules/mob/living/simple_animal/hostile/skeleton.dm b/code/modules/mob/living/simple_animal/hostile/skeleton.dm index 3a3cfbb27d..5455d17a80 100644 --- a/code/modules/mob/living/simple_animal/hostile/skeleton.dm +++ b/code/modules/mob/living/simple_animal/hostile/skeleton.dm @@ -25,7 +25,7 @@ unsuitable_atmos_damage = 10 robust_searching = 1 stat_attack = UNCONSCIOUS - gold_core_spawnable = 1 + gold_core_spawnable = HOSTILE_SPAWN faction = list("skeleton") see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE @@ -41,7 +41,7 @@ icon_dead = "eskimo_dead" maxHealth = 55 health = 55 - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN melee_damage_lower = 17 melee_damage_upper = 20 deathmessage = "collapses into a pile of bones, its gear falling to the floor!" @@ -60,7 +60,7 @@ maxHealth = 150 health = 150 speed = 2 - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN speak_chance = 1 speak = list("THE GODS WILL IT!","DEUS VULT!","REMOVE KABAB!") force_threshold = 10 //trying to simulate actually having armor diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index a17ec0ff66..af665a4345 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -153,6 +153,6 @@ limb_destroyer = 1 speak_emote = list("states") bubble_icon = "syndibot" - gold_core_spawnable = 1 + gold_core_spawnable = HOSTILE_SPAWN del_on_death = 1 deathmessage = "is smashed into pieces!" diff --git a/code/modules/mob/living/simple_animal/hostile/tree.dm b/code/modules/mob/living/simple_animal/hostile/tree.dm index ced75cb076..3d10bfd121 100644 --- a/code/modules/mob/living/simple_animal/hostile/tree.dm +++ b/code/modules/mob/living/simple_animal/hostile/tree.dm @@ -36,7 +36,7 @@ faction = list("hostile") deathmessage = "is hacked into pieces!" loot = list(/obj/item/stack/sheet/mineral/wood) - gold_core_spawnable = 1 + gold_core_spawnable = HOSTILE_SPAWN del_on_death = 1 /mob/living/simple_animal/hostile/tree/Life() diff --git a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm index 881215e97b..97dd430a12 100644 --- a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm +++ b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm @@ -27,7 +27,7 @@ idle_vision_range = 5 mob_size = MOB_SIZE_SMALL environment_smash = ENVIRONMENT_SMASH_NONE - gold_core_spawnable = TRUE + gold_core_spawnable = HOSTILE_SPAWN var/wumbo = 0 var/inflate_cooldown = 0 loot = list(/obj/item/asteroid/fugu_gland{layer = ABOVE_MOB_LAYER}) diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 641e78a0f3..0bb72ef5cf 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -59,9 +59,13 @@ friendly = "grooms" mob_size = MOB_SIZE_SMALL movement_type = FLYING +<<<<<<< HEAD gold_core_spawnable = 2 devourable = TRUE no_vore = FALSE +======= + gold_core_spawnable = FRIENDLY_SPAWN +>>>>>>> 2abae67... Cleans up goldcore defines (#33090) var/parrot_damage_upper = 10 var/parrot_state = PARROT_WANDER //Hunt for a perch when created @@ -871,7 +875,7 @@ name = "Poly" desc = "Poly the Parrot. An expert on quantum cracker theory." speak = list("Poly wanna cracker!", ":e Check the crystal, you chucklefucks!",":e Wire the solars, you lazy bums!",":e WHO TOOK THE DAMN HARDSUITS?",":e OH GOD ITS ABOUT TO DELAMINATE CALL THE SHUTTLE") - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN speak_chance = 3 var/memory_saved = FALSE var/rounds_survived = 0 @@ -1012,7 +1016,7 @@ emote_hear = list("squawks rustily.", "bawks metallically!") emote_see = list("flutters its metal wings.") faction = list("ratvar") - gold_core_spawnable = FALSE + gold_core_spawnable = NO_SPAWN del_on_death = TRUE death_sound = 'sound/magic/clockwork/anima_fragment_death.ogg' diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index fffc05ccf9..72a1ec84c1 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -63,7 +63,7 @@ //simple_animal access var/obj/item/card/id/access_card = null //innate access uses an internal ID card var/buffed = 0 //In the event that you want to have a buffing effect on the mob, but don't want it to stack with other effects, any outside force that applies a buff to a simple mob should at least set this to 1, so we have something to check against - var/gold_core_spawnable = 0 //if 1 can be spawned by plasma with gold core, 2 are 'friendlies' spawned with blood + var/gold_core_spawnable = NO_SPAWN //If the mob can be spawned with a gold slime core. HOSTILE_SPAWN are spawned with plasma, FRIENDLY_SPAWN are spawned with blood var/mob/living/simple_animal/hostile/spawner/nest diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index aaa070703f..6bcc3412ca 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -29,9 +29,9 @@ for (var/T in typesof(/mob/living/simple_animal)) var/mob/living/simple_animal/SA = T switch(initial(SA.gold_core_spawnable)) - if(1) + if(HOSTILE_SPAWN) chemical_mob_spawn_meancritters += T - if(2) + if(FRIENDLY_SPAWN) chemical_mob_spawn_nicecritters += T var/atom/A = holder.my_atom var/turf/T = get_turf(A) diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm index 6db6e73cff..ea603039bc 100644 --- a/code/modules/shuttle/special.dm +++ b/code/modules/shuttle/special.dm @@ -153,7 +153,7 @@ access_card.access |= ACCESS_CENT_BAR /mob/living/simple_animal/hostile/alien/maid/barmaid - gold_core_spawnable = 0 + gold_core_spawnable = NO_SPAWN name = "Barmaid" desc = "A barmaid, a maiden found in a bar." pass_flags = PASSTABLE From c574b06f902ab5a324de6f95da82b69dcd26051f Mon Sep 17 00:00:00 2001 From: AnturK Date: Sun, 26 Nov 2017 23:53:31 +0100 Subject: [PATCH 157/328] Fixes wizard greentext (#33088) --- code/game/gamemodes/wizard/wizard.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index 4a4be9693a..5302ebd39b 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -99,7 +99,7 @@ wizardwin = 0 count++ - if(wizard.current && wizard.current.stat!=2 && wizardwin) + if(wizard.current && wizardwin) text += "
The wizard was successful!" SSblackbox.record_feedback("tally", "wizard_success", 1, "SUCCESS") else From 5abd1bcdd96d7afad1b2b25c1f3f84788a15a3a4 Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Sat, 25 Nov 2017 16:16:13 -0500 Subject: [PATCH 159/328] Cleans up some qdel(src)'s in Initialize() --- code/game/gamemodes/blob/blobs/core.dm | 2 +- code/game/gamemodes/wizard/spellbook.dm | 2 +- code/game/machinery/launch_pad.dm | 2 +- .../objects/effects/spawners/bombspawner.dm | 39 +++++++++++++++++++ .../objects/effects/spawners/gibspawner.dm | 2 +- .../objects/effects/spawners/structure.dm | 2 +- code/game/objects/items/chrono_eraser.dm | 2 +- code/modules/library/soapstone.dm | 2 +- code/modules/mapping/mapping_helpers.dm | 4 +- code/modules/mining/machine_processing.dm | 2 +- .../carbon/human/species_types/golems.dm | 2 +- code/modules/mob/living/silicon/ai/ai.dm | 3 +- .../mob/living/simple_animal/bot/bot.dm | 2 +- .../mob/living/simple_animal/friendly/dog.dm | 2 +- 14 files changed, 53 insertions(+), 15 deletions(-) diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/game/gamemodes/blob/blobs/core.dm index 91409ac4ed..9412e8582f 100644 --- a/code/game/gamemodes/blob/blobs/core.dm +++ b/code/game/gamemodes/blob/blobs/core.dm @@ -19,7 +19,7 @@ GLOB.poi_list |= src update_icon() //so it atleast appears if(!placed && !overmind) - qdel(src) + return INITIALIZE_HINT_QDEL if(overmind) update_icon() point_rate = new_rate diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 4a407a4ef6..1cf172d3a6 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -902,7 +902,7 @@ var/static/banned_spells = list(/obj/item/spellbook/oneuse/mimery_blockade, /obj/item/spellbook/oneuse/mimery_guns) var/real_type = pick(subtypesof(/obj/item/spellbook/oneuse) - banned_spells) new real_type(loc) - qdel(src) + return INITIALIZE_HINT_QDEL /obj/item/spellbook/oneuse/sacredflame spell = /obj/effect/proc_holder/spell/targeted/sacred_flame diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm index 65f5b946ef..4f4e481905 100644 --- a/code/game/machinery/launch_pad.dm +++ b/code/game/machinery/launch_pad.dm @@ -155,7 +155,7 @@ briefcase = loc else log_game("[src] has been spawned without a briefcase.") - qdel(src) + return INITIALIZE_HINT_QDEL /obj/machinery/launchpad/briefcase/Destroy() QDEL_NULL(briefcase) diff --git a/code/game/objects/effects/spawners/bombspawner.dm b/code/game/objects/effects/spawners/bombspawner.dm index da9eb76101..2a8407ad7a 100644 --- a/code/game/objects/effects/spawners/bombspawner.dm +++ b/code/game/objects/effects/spawners/bombspawner.dm @@ -8,6 +8,7 @@ /obj/effect/spawner/newbomb/Initialize() . = ..() +<<<<<<< HEAD var/obj/item/device/transfer_valve/V = new(src.loc) var/obj/item/tank/internals/plasma/full/PT = new(V) var/obj/item/tank/internals/oxygen/OT = new(V) @@ -44,3 +45,41 @@ assembly_type = /obj/item/device/assembly/signaler +======= + var/obj/item/device/transfer_valve/V = new(src.loc) + var/obj/item/tank/internals/plasma/full/PT = new(V) + var/obj/item/tank/internals/oxygen/OT = new(V) + + PT.air_contents.temperature = btemp1 + T0C + OT.air_contents.temperature = btemp2 + T0C + + V.tank_one = PT + V.tank_two = OT + PT.master = V + OT.master = V + + if(assembly_type) + var/obj/item/device/assembly/A = new assembly_type(V) + V.attached_device = A + A.holder = V + A.toggle_secure() + + V.update_icon() + + return INITIALIZE_HINT_QDEL + +/obj/effect/spawner/newbomb/timer + assembly_type = /obj/item/device/assembly/timer + +/obj/effect/spawner/newbomb/timer/syndicate + btemp1 = 150 + btemp2 = 20 + +/obj/effect/spawner/newbomb/proximity + assembly_type = /obj/item/device/assembly/prox_sensor + +/obj/effect/spawner/newbomb/radio + assembly_type = /obj/item/device/assembly/signaler + + +>>>>>>> 395c0ee... Cleans up some qdel(src)'s in Initialize() diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index 303bcd7f33..43f10dc45e 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -38,7 +38,7 @@ if(directions.len) gib.streak(directions) - qdel(src) + return INITIALIZE_HINT_QDEL diff --git a/code/game/objects/effects/spawners/structure.dm b/code/game/objects/effects/spawners/structure.dm index 285aeeaf8c..f4abff67fb 100644 --- a/code/game/objects/effects/spawners/structure.dm +++ b/code/game/objects/effects/spawners/structure.dm @@ -13,7 +13,7 @@ again. if(spawn_list && spawn_list.len) for(var/I in spawn_list) new I(get_turf(src)) - qdel(src) + return INITIALIZE_HINT_QDEL //normal windows diff --git a/code/game/objects/items/chrono_eraser.dm b/code/game/objects/items/chrono_eraser.dm index d65ef6fc2a..8ac9643c39 100644 --- a/code/game/objects/items/chrono_eraser.dm +++ b/code/game/objects/items/chrono_eraser.dm @@ -62,7 +62,7 @@ TED = loc else //admin must have spawned it TED = new(src.loc) - qdel(src) + return INITIALIZE_HINT_QDEL /obj/item/gun/energy/chrono_gun/update_icon() return diff --git a/code/modules/library/soapstone.dm b/code/modules/library/soapstone.dm index ab78b582a6..cee4665f07 100644 --- a/code/modules/library/soapstone.dm +++ b/code/modules/library/soapstone.dm @@ -136,7 +136,7 @@ if(!good_chisel_message_location(T)) persists = FALSE - qdel(src) + return INITIALIZE_HINT_QDEL /obj/structure/chisel_message/proc/register(mob/user, newmessage) hidden_message = newmessage diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index e70786f80d..a4d3986020 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -15,7 +15,7 @@ for(var/turf/T in get_area_turfs(thearea, z)) if(T.baseturf != T.type) //Don't break indestructible walls and the like T.baseturf = baseturf - qdel(src) + return INITIALIZE_HINT_QDEL /obj/effect/baseturf_helper/asteroid @@ -65,5 +65,5 @@ GLOBAL_LIST_EMPTY(z_is_planet) var/turf/T = get_turf(src) if(!turf_z_is_planet(T)) GLOB.z_is_planet["[T.z]"] = list() - qdel(src) + return INITIALIZE_HINT_QDEL diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 276c030175..757cad5e19 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -18,7 +18,7 @@ if (machine) machine.CONSOLE = src else - qdel(src) + return INITIALIZE_HINT_QDEL /obj/machinery/mineral/processing_unit_console/attack_hand(mob/user) diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index e3d2d5db61..9cb3f21ec0 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -710,7 +710,7 @@ to_chat(cloth_golem, "You start gathering your life energy, preparing to rise again...") addtimer(CALLBACK(src, .proc/revive), revive_time) else - qdel(src) + return INITIALIZE_HINT_QDEL /obj/structure/cloth_pile/Destroy() if(cloth_golem) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 3a5988e09a..0fb044429c 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -88,8 +88,7 @@ . = ..() if(!target_ai) //If there is no player/brain inside. new/obj/structure/AIcore/deactivated(loc) //New empty terminal. - qdel(src)//Delete AI. - return + return INITIALIZE_HINT_QDEL //Delete AI. if(L && istype(L, /datum/ai_laws)) laws = L diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 5d943bc1e5..d4c459e996 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -800,7 +800,7 @@ Pass a positive integer as an argument to override a bot's default speed. . = ..() owner = loc if(!istype(owner)) - qdel(src) + return INITIALIZE_HINT_QDEL /mob/living/simple_animal/bot/proc/topic_denied(mob/user) //Access check proc for bot topics! Remember to place in a bot's individual Topic if desired. if(!user.canUseTopic(src)) diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 2a94052274..95b63c98f5 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -310,7 +310,7 @@ P.gender = MALE P.desc = "It's the HoP's beloved corgi puppy." Write_Memory(FALSE) - qdel(src) + return INITIALIZE_HINT_QDEL else if(age == record_age) icon_state = "old_corgi" icon_living = "old_corgi" From 9538aa645c69eea35ed7f65dcc8d93fdb9ac9083 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 26 Nov 2017 21:20:00 -0500 Subject: [PATCH 160/328] Update bombspawner.dm --- .../objects/effects/spawners/bombspawner.dm | 57 +++---------------- 1 file changed, 9 insertions(+), 48 deletions(-) diff --git a/code/game/objects/effects/spawners/bombspawner.dm b/code/game/objects/effects/spawners/bombspawner.dm index 2a8407ad7a..e376795704 100644 --- a/code/game/objects/effects/spawners/bombspawner.dm +++ b/code/game/objects/effects/spawners/bombspawner.dm @@ -1,51 +1,13 @@ -/obj/effect/spawner/newbomb - name = "bomb" - icon = 'icons/mob/screen_gen.dmi' - icon_state = "x" - var/btemp1 = 1500 - var/btemp2 = 1000 // tank temperatures - var/assembly_type - -/obj/effect/spawner/newbomb/Initialize() +/obj/effect/spawner/newbomb + name = "bomb" + icon = 'icons/mob/screen_gen.dmi' + icon_state = "x" + var/btemp1 = 1500 + var/btemp2 = 1000 // tank temperatures + var/assembly_type + +/obj/effect/spawner/newbomb/Initialize() . = ..() -<<<<<<< HEAD - var/obj/item/device/transfer_valve/V = new(src.loc) - var/obj/item/tank/internals/plasma/full/PT = new(V) - var/obj/item/tank/internals/oxygen/OT = new(V) - - PT.air_contents.temperature = btemp1 + T0C - OT.air_contents.temperature = btemp2 + T0C - - V.tank_one = PT - V.tank_two = OT - PT.master = V - OT.master = V - - if(assembly_type) - var/obj/item/device/assembly/A = new assembly_type(V) - V.attached_device = A - A.holder = V - A.toggle_secure() - - V.update_icon() - - qdel(src) - -/obj/effect/spawner/newbomb/timer - assembly_type = /obj/item/device/assembly/timer - -/obj/effect/spawner/newbomb/timer/syndicate - btemp1 = 150 - btemp2 = 20 - -/obj/effect/spawner/newbomb/proximity - assembly_type = /obj/item/device/assembly/prox_sensor - -/obj/effect/spawner/newbomb/radio - assembly_type = /obj/item/device/assembly/signaler - - -======= var/obj/item/device/transfer_valve/V = new(src.loc) var/obj/item/tank/internals/plasma/full/PT = new(V) var/obj/item/tank/internals/oxygen/OT = new(V) @@ -82,4 +44,3 @@ assembly_type = /obj/item/device/assembly/signaler ->>>>>>> 395c0ee... Cleans up some qdel(src)'s in Initialize() From 59b873137001ffa8bdc01d9d9b809ef9f0475004 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 26 Nov 2017 21:20:54 -0500 Subject: [PATCH 161/328] Update misc.dm --- code/__DEFINES/misc.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 1782c7aa62..7cc2e4537f 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -478,12 +478,8 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define SYRINGE_DRAW 0 #define SYRINGE_INJECT 1 -<<<<<<< HEAD -======= -#define RESEARCH_MATERIAL_RECLAMATION_ID "0" //gold slime core spawning #define NO_SPAWN 0 #define HOSTILE_SPAWN 1 #define FRIENDLY_SPAWN 2 ->>>>>>> 2abae67... Cleans up goldcore defines (#33090) From 4e2db63a33f3387311c04bc107aaf9a9602c7743 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 26 Nov 2017 21:21:28 -0500 Subject: [PATCH 162/328] Update cat.dm --- code/modules/mob/living/simple_animal/friendly/cat.dm | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index f9ddd94f0a..a333f22c38 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -28,13 +28,9 @@ response_harm = "kicks" var/turns_since_scan = 0 var/mob/living/simple_animal/mouse/movement_target -<<<<<<< HEAD - gold_core_spawnable = 2 + gold_core_spawnable = FRIENDLY_SPAWN devourable = TRUE no_vore = FALSE -======= - gold_core_spawnable = FRIENDLY_SPAWN ->>>>>>> 2abae67... Cleans up goldcore defines (#33090) /mob/living/simple_animal/pet/cat/Initialize() . = ..() @@ -286,4 +282,4 @@ ..() if(L.a_intent == INTENT_HARM && L.reagents && !stat) L.reagents.add_reagent("nutriment", 0.4) - L.reagents.add_reagent("vitamin", 0.4) \ No newline at end of file + L.reagents.add_reagent("vitamin", 0.4) From 933b4a7a3a18e7b907310f69c72405b09c6ce104 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 26 Nov 2017 21:21:55 -0500 Subject: [PATCH 163/328] Update crab.dm --- code/modules/mob/living/simple_animal/friendly/crab.dm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/crab.dm b/code/modules/mob/living/simple_animal/friendly/crab.dm index 99d91b299e..35d7d12174 100644 --- a/code/modules/mob/living/simple_animal/friendly/crab.dm +++ b/code/modules/mob/living/simple_animal/friendly/crab.dm @@ -19,12 +19,8 @@ ventcrawler = VENTCRAWLER_ALWAYS var/obj/item/inventory_head var/obj/item/inventory_mask -<<<<<<< HEAD - gold_core_spawnable = 2 - devourable = TRUE -======= gold_core_spawnable = FRIENDLY_SPAWN ->>>>>>> 2abae67... Cleans up goldcore defines (#33090) + devourable = TRUE /mob/living/simple_animal/crab/Life() ..() From eb13f4ee2f7378909421830644edf36a4c7bb6ec Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 26 Nov 2017 21:22:42 -0500 Subject: [PATCH 164/328] Update farm_animals.dm --- .../mob/living/simple_animal/friendly/farm_animals.dm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 03d79e98e0..cbd14bb376 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -195,12 +195,8 @@ var/amount_grown = 0 pass_flags = PASSTABLE | PASSGRILLE | PASSMOB mob_size = MOB_SIZE_TINY -<<<<<<< HEAD - gold_core_spawnable = 2 - devourable = TRUE -======= gold_core_spawnable = FRIENDLY_SPAWN ->>>>>>> 2abae67... Cleans up goldcore defines (#33090) + devourable = TRUE /mob/living/simple_animal/chick/Initialize() . = ..() From e70daa585c65ffbca214afda7dbf9d21b4ce23e4 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 26 Nov 2017 21:23:26 -0500 Subject: [PATCH 165/328] Update fox.dm --- code/modules/mob/living/simple_animal/friendly/fox.dm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/fox.dm b/code/modules/mob/living/simple_animal/friendly/fox.dm index 6b06ac7a86..b9192c1746 100644 --- a/code/modules/mob/living/simple_animal/friendly/fox.dm +++ b/code/modules/mob/living/simple_animal/friendly/fox.dm @@ -17,8 +17,7 @@ response_help = "pets" response_disarm = "gently pushes aside" response_harm = "kicks" -<<<<<<< HEAD - gold_core_spawnable = 2 + gold_core_spawnable = FRIENDLY_SPAWN devourable = TRUE var/mob/living/simple_animal/mouse/movement_target var/turns_since_scan = 0 @@ -60,9 +59,6 @@ if(movement_target) stop_automated_movement = 1 walk_to(src,movement_target,0,3) -======= - gold_core_spawnable = FRIENDLY_SPAWN ->>>>>>> 2abae67... Cleans up goldcore defines (#33090) //Captain fox /mob/living/simple_animal/pet/fox/Renault From c67063beb5b4ec13b8281698ff2d5695e8c5d94e Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 26 Nov 2017 21:23:50 -0500 Subject: [PATCH 166/328] Update lizard.dm --- code/modules/mob/living/simple_animal/friendly/lizard.dm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/lizard.dm b/code/modules/mob/living/simple_animal/friendly/lizard.dm index e4e1b26225..f45e7f7950 100644 --- a/code/modules/mob/living/simple_animal/friendly/lizard.dm +++ b/code/modules/mob/living/simple_animal/friendly/lizard.dm @@ -18,12 +18,8 @@ density = FALSE pass_flags = PASSTABLE | PASSMOB mob_size = MOB_SIZE_SMALL -<<<<<<< HEAD - gold_core_spawnable = 2 - devourable = TRUE -======= gold_core_spawnable = FRIENDLY_SPAWN ->>>>>>> 2abae67... Cleans up goldcore defines (#33090) + devourable = TRUE obj_damage = 0 environment_smash = ENVIRONMENT_SMASH_NONE var/static/list/edibles = typecacheof(list(/mob/living/simple_animal/butterfly, /mob/living/simple_animal/cockroach)) //list of atoms, however turfs won't affect AI, but will affect consumption. From e5e17cf3342040fdb7a0bd205e38afbf046205fa Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 26 Nov 2017 21:24:27 -0500 Subject: [PATCH 167/328] Update bear.dm --- code/modules/mob/living/simple_animal/hostile/bear.dm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index 2300eb5c7c..d63b5d4114 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -36,13 +36,9 @@ maxbodytemp = 1500 faction = list("russian") -<<<<<<< HEAD - gold_core_spawnable = 1 + gold_core_spawnable = HOSTILE_SPAWN devourable = TRUE no_vore = FALSE -======= - gold_core_spawnable = HOSTILE_SPAWN ->>>>>>> 2abae67... Cleans up goldcore defines (#33090) //SPACE BEARS! SQUEEEEEEEE~ OW! FUCK! IT BIT MY HAND OFF!! /mob/living/simple_animal/hostile/bear/Hudson From 90e13d005390da8530a97f4b6f048e70c3994045 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 26 Nov 2017 21:25:13 -0500 Subject: [PATCH 168/328] Update creature.dm --- .../living/simple_animal/hostile/creature.dm | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/creature.dm b/code/modules/mob/living/simple_animal/hostile/creature.dm index 070f076544..12da922fc0 100644 --- a/code/modules/mob/living/simple_animal/hostile/creature.dm +++ b/code/modules/mob/living/simple_animal/hostile/creature.dm @@ -1,23 +1,3 @@ -<<<<<<< HEAD -/mob/living/simple_animal/hostile/creature - name = "creature" - desc = "A sanity-destroying otherthing." - icon_state = "otherthing" - icon_living = "otherthing" - icon_dead = "otherthing-dead" - health = 80 - maxHealth = 80 - obj_damage = 100 - melee_damage_lower = 25 - melee_damage_upper = 50 - attacktext = "chomps" - attack_sound = 'sound/weapons/bite.ogg' - faction = list("creature") - speak_emote = list("screams") - gold_core_spawnable = 1 - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 -======= /mob/living/simple_animal/hostile/creature name = "creature" desc = "A sanity-destroying otherthing." @@ -36,4 +16,3 @@ gold_core_spawnable = HOSTILE_SPAWN atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 ->>>>>>> 2abae67... Cleans up goldcore defines (#33090) From 12cb0a98a4d17627633b8ceedf8a290b7e48e845 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 26 Nov 2017 21:25:51 -0500 Subject: [PATCH 169/328] Update headcrab.dm --- code/modules/mob/living/simple_animal/hostile/headcrab.dm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index 5b4324623f..4e302b3d55 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -22,11 +22,7 @@ ventcrawler = VENTCRAWLER_ALWAYS var/datum/mind/origin var/egg_lain = 0 -<<<<<<< HEAD -// gold_core_spawnable = 1 //are you sure about this?? -======= - gold_core_spawnable = HOSTILE_SPAWN //are you sure about this?? ->>>>>>> 2abae67... Cleans up goldcore defines (#33090) +// gold_core_spawnable = HOSTILE_SPAWN //are you sure about this?? /mob/living/simple_animal/hostile/headcrab/proc/Infect(mob/living/carbon/victim) var/obj/item/organ/body_egg/changeling_egg/egg = new(victim) From d5eef89e132f02b6d03ed45ed4b9eeb0fd0ef8bc Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 26 Nov 2017 21:26:35 -0500 Subject: [PATCH 170/328] Update parrot.dm --- code/modules/mob/living/simple_animal/parrot.dm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 0bb72ef5cf..ffbeb1f503 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -59,13 +59,9 @@ friendly = "grooms" mob_size = MOB_SIZE_SMALL movement_type = FLYING -<<<<<<< HEAD - gold_core_spawnable = 2 + gold_core_spawnable = FRIENDLY_SPAWN devourable = TRUE no_vore = FALSE -======= - gold_core_spawnable = FRIENDLY_SPAWN ->>>>>>> 2abae67... Cleans up goldcore defines (#33090) var/parrot_damage_upper = 10 var/parrot_state = PARROT_WANDER //Hunt for a perch when created From 940f70ff5f6881ac741fceff0ee5977526134d9c Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 26 Nov 2017 21:28:35 -0500 Subject: [PATCH 171/328] Update mutations.dm --- code/datums/mutations.dm | 540 --------------------------------------- 1 file changed, 540 deletions(-) diff --git a/code/datums/mutations.dm b/code/datums/mutations.dm index 24ccdff244..170c0a2a7f 100644 --- a/code/datums/mutations.dm +++ b/code/datums/mutations.dm @@ -113,546 +113,6 @@ GLOBAL_LIST_EMPTY(mutations_list) /datum/mutation/human/proc/get_spans() return list() -<<<<<<< HEAD -/datum/mutation/human/hulk - - name = "Hulk" - quality = POSITIVE - get_chance = 15 - lowest_value = 256 * 12 - text_gain_indication = "Your muscles hurt!" - species_allowed = list("fly") //no skeleton/lizard hulk - health_req = 25 - -/datum/mutation/human/hulk/on_acquiring(mob/living/carbon/human/owner) - if(..()) - return - var/status = CANSTUN | CANKNOCKDOWN | CANUNCONSCIOUS | CANPUSH - owner.status_flags &= ~status - owner.update_body_parts() - -/datum/mutation/human/hulk/on_attack_hand(mob/living/carbon/human/owner, atom/target, proximity) - if(proximity) //no telekinetic hulk attack - return target.attack_hulk(owner) - -/datum/mutation/human/hulk/on_life(mob/living/carbon/human/owner) - if(owner.health < 0) - on_losing(owner) - to_chat(owner, "You suddenly feel very weak.") - -/datum/mutation/human/hulk/on_losing(mob/living/carbon/human/owner) - if(..()) - return - owner.status_flags |= CANSTUN | CANKNOCKDOWN | CANUNCONSCIOUS | CANPUSH - owner.update_body_parts() - -/datum/mutation/human/hulk/say_mod(message) - if(message) - message = "[uppertext(replacetext(message, ".", "!"))]!!" - return message - -/datum/mutation/human/telekinesis - - name = "Telekinesis" - quality = POSITIVE - get_chance = 20 - lowest_value = 256 * 12 - text_gain_indication = "You feel smarter!" - limb_req = "head" - -/datum/mutation/human/telekinesis/New() - ..() - visual_indicators |= mutable_appearance('icons/effects/genetics.dmi', "telekinesishead", -MUTATIONS_LAYER) - -/datum/mutation/human/telekinesis/get_visual_indicator(mob/living/carbon/human/owner) - return visual_indicators[1] - -/datum/mutation/human/telekinesis/on_ranged_attack(mob/living/carbon/human/owner, atom/target) - target.attack_tk(owner) - -/datum/mutation/human/cold_resistance - - name = "Cold Resistance" - quality = POSITIVE - get_chance = 25 - lowest_value = 256 * 12 - text_gain_indication = "Your body feels warm!" - time_coeff = 5 - -/datum/mutation/human/cold_resistance/New() - ..() - visual_indicators |= mutable_appearance('icons/effects/genetics.dmi', "fire", -MUTATIONS_LAYER) - -/datum/mutation/human/cold_resistance/get_visual_indicator(mob/living/carbon/human/owner) - return visual_indicators[1] - -/datum/mutation/human/cold_resistance/on_life(mob/living/carbon/human/owner) - if(owner.getFireLoss()) - if(prob(1)) - owner.heal_bodypart_damage(0,1) //Is this really needed? - -/datum/mutation/human/x_ray - - name = "X Ray Vision" - quality = POSITIVE - get_chance = 25 - lowest_value = 256 * 12 - text_gain_indication = "The walls suddenly disappear!" - time_coeff = 2 - -/datum/mutation/human/x_ray/on_acquiring(mob/living/carbon/human/owner) - if(..()) - return - - owner.update_sight() - -/datum/mutation/human/x_ray/on_losing(mob/living/carbon/human/owner) - if(..()) - return - owner.update_sight() - -/datum/mutation/human/nearsight - - name = "Near Sightness" - quality = MINOR_NEGATIVE - text_gain_indication = "You can't see very well." - -/datum/mutation/human/nearsight/on_acquiring(mob/living/carbon/human/owner) - if(..()) - return - owner.become_nearsighted() - -/datum/mutation/human/nearsight/on_losing(mob/living/carbon/human/owner) - if(..()) - return - owner.cure_nearsighted() - -/datum/mutation/human/epilepsy - - name = "Epilepsy" - quality = NEGATIVE - text_gain_indication = "You get a headache." - -/datum/mutation/human/epilepsy/on_life(mob/living/carbon/human/owner) - if(prob(1) && owner.stat == CONSCIOUS) - owner.visible_message("[owner] starts having a seizure!", "You have a seizure!") - owner.Unconscious(200) - owner.Jitter(1000) - addtimer(CALLBACK(src, .proc/jitter_less, owner), 90) - -/datum/mutation/human/epilepsy/proc/jitter_less(mob/living/carbon/human/owner) - if(owner) - owner.jitteriness = 10 - -/datum/mutation/human/bad_dna - name = "Unstable DNA" - quality = NEGATIVE - text_gain_indication = "You feel strange." - -/datum/mutation/human/bad_dna/on_acquiring(mob/living/carbon/human/owner) - to_chat(owner, text_gain_indication) - var/mob/new_mob - if(prob(95)) - if(prob(50)) - new_mob = owner.randmutb() - else - new_mob = owner.randmuti() - else - new_mob = owner.randmutg() - if(new_mob && ismob(new_mob)) - owner = new_mob - . = owner - on_losing(owner) - -/datum/mutation/human/cough - name = "Cough" - quality = MINOR_NEGATIVE - text_gain_indication = "You start coughing." - -/datum/mutation/human/cough/on_life(mob/living/carbon/human/owner) - if(prob(5) && owner.stat == CONSCIOUS) - owner.drop_all_held_items() - owner.emote("cough") - -/datum/mutation/human/dwarfism - name = "Dwarfism" - quality = POSITIVE - get_chance = 15 - lowest_value = 256 * 12 - -/datum/mutation/human/dwarfism/on_acquiring(mob/living/carbon/human/owner) - if(..()) - return - owner.resize = 0.8 - owner.update_transform() - owner.pass_flags |= PASSTABLE - owner.visible_message("[owner] suddenly shrinks!", "Everything around you seems to grow..") - -/datum/mutation/human/dwarfism/on_losing(mob/living/carbon/human/owner) - if(..()) - return - owner.resize = 1.25 - owner.update_transform() - owner.pass_flags &= ~PASSTABLE - owner.visible_message("[owner] suddenly grows!", "Everything around you seems to shrink..") - -/datum/mutation/human/clumsy - - name = "Clumsiness" - quality = MINOR_NEGATIVE - text_gain_indication = "You feel lightheaded." - -/datum/mutation/human/clumsy/on_acquiring(mob/living/carbon/human/owner) - if(..()) - return - owner.disabilities |= CLUMSY - -/datum/mutation/human/clumsy/on_losing(mob/living/carbon/human/owner) - if(..()) - return - owner.disabilities &= ~CLUMSY - -/datum/mutation/human/tourettes - name = "Tourettes Syndrome" - quality = NEGATIVE - text_gain_indication = "You twitch." - -/datum/mutation/human/tourettes/on_life(mob/living/carbon/human/owner) - if(prob(10) && owner.stat == CONSCIOUS) - owner.Stun(200) - switch(rand(1, 3)) - if(1) - owner.emote("twitch") - if(2 to 3) - owner.say("[prob(50) ? ";" : ""][pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS")]") - var/x_offset_old = owner.pixel_x - var/y_offset_old = owner.pixel_y - var/x_offset = owner.pixel_x + rand(-2,2) - var/y_offset = owner.pixel_y + rand(-1,1) - animate(owner, pixel_x = x_offset, pixel_y = y_offset, time = 1) - animate(owner, pixel_x = x_offset_old, pixel_y = y_offset_old, time = 1) - -/datum/mutation/human/nervousness - name = "Nervousness" - quality = MINOR_NEGATIVE - text_gain_indication = "You feel nervous." - -/datum/mutation/human/nervousness/on_life(mob/living/carbon/human/owner) - if(prob(10)) - owner.stuttering = max(10, owner.stuttering) - -/datum/mutation/human/deaf - name = "Deafness" - quality = NEGATIVE - text_gain_indication = "You can't seem to hear anything." - -/datum/mutation/human/deaf/on_acquiring(mob/living/carbon/human/owner) - if(..()) - return - owner.disabilities |= DEAF - -/datum/mutation/human/deaf/on_losing(mob/living/carbon/human/owner) - if(..()) - return - owner.disabilities &= ~DEAF - -/datum/mutation/human/blind - name = "Blindness" - quality = NEGATIVE - text_gain_indication = "You can't seem to see anything." - -/datum/mutation/human/blind/on_acquiring(mob/living/carbon/human/owner) - if(..()) - return - owner.become_blind() - -/datum/mutation/human/blind/on_losing(mob/living/carbon/human/owner) - if(..()) - return - owner.cure_blind() - - -/datum/mutation/human/race - name = "Monkified" - quality = NEGATIVE - time_coeff = 2 - -/datum/mutation/human/race/on_acquiring(mob/living/carbon/human/owner) - if(owner.has_brain_worms()) - to_chat(owner, "You feel something strongly clinging to your humanity!") - return - if(..()) - return - . = owner.monkeyize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSE) - -/datum/mutation/human/race/on_losing(mob/living/carbon/monkey/owner) - if(owner && istype(owner) && owner.stat != DEAD && (owner.dna.mutations.Remove(src))) - . = owner.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSE) - -/datum/mutation/human/chameleon - name = "Chameleon" - quality = POSITIVE - get_chance = 20 - lowest_value = 256 * 12 - text_gain_indication = "You feel one with your surroundings." - text_lose_indication = "You feel oddly exposed." - time_coeff = 5 - -/datum/mutation/human/chameleon/on_acquiring(mob/living/carbon/human/owner) - if(..()) - return - owner.alpha = CHAMELEON_MUTATION_DEFAULT_TRANSPARENCY - -/datum/mutation/human/chameleon/on_life(mob/living/carbon/human/owner) - owner.alpha = max(0, owner.alpha - 25) - -/datum/mutation/human/chameleon/on_move(mob/living/carbon/human/owner) - owner.alpha = CHAMELEON_MUTATION_DEFAULT_TRANSPARENCY - -/datum/mutation/human/chameleon/on_attack_hand(mob/living/carbon/human/owner, atom/target, proximity) - if(proximity) //stops tk from breaking chameleon - owner.alpha = CHAMELEON_MUTATION_DEFAULT_TRANSPARENCY - return - -/datum/mutation/human/chameleon/on_losing(mob/living/carbon/human/owner) - if(..()) - return - owner.alpha = 255 - -/datum/mutation/human/wacky - name = "Wacky" - quality = MINOR_NEGATIVE - text_gain_indication = "You feel an off sensation in your voicebox." - text_lose_indication = "The off sensation passes." - -/datum/mutation/human/wacky/get_spans() - return list(SPAN_SANS) - -/datum/mutation/human/mute - name = "Mute" - quality = NEGATIVE - text_gain_indication = "You feel unable to express yourself at all." - text_lose_indication = "You feel able to speak freely again." - -/datum/mutation/human/mute/on_acquiring(mob/living/carbon/human/owner) - if(..()) - return - owner.disabilities |= MUTE - -/datum/mutation/human/mute/on_losing(mob/living/carbon/human/owner) - if(..()) - return - owner.disabilities &= ~MUTE - -/datum/mutation/human/smile - name = "Smile" - quality = MINOR_NEGATIVE - dna_block = NON_SCANNABLE - text_gain_indication = "You feel so happy. Nothing can be wrong with anything. :)" - text_lose_indication = "Everything is terrible again. :(" - -/datum/mutation/human/smile/say_mod(message) - if(message) - message = " [message] " - //Time for a friendly game of SS13 - message = replacetext(message," stupid "," smart ") - message = replacetext(message," retard "," genius ") - message = replacetext(message," unrobust "," robust ") - message = replacetext(message," dumb "," smart ") - message = replacetext(message," awful "," great ") - message = replacetext(message," gay ",pick(" nice "," ok "," alright ")) - message = replacetext(message," horrible "," fun ") - message = replacetext(message," terrible "," terribly fun ") - message = replacetext(message," terrifying "," wonderful ") - message = replacetext(message," gross "," cool ") - message = replacetext(message," disgusting "," amazing ") - message = replacetext(message," loser "," winner ") - message = replacetext(message," useless "," useful ") - message = replacetext(message," oh god "," cheese and crackers ") - message = replacetext(message," jesus "," gee wiz ") - message = replacetext(message," weak "," strong ") - message = replacetext(message," kill "," hug ") - message = replacetext(message," murder "," tease ") - message = replacetext(message," ugly "," beautiful ") - message = replacetext(message," douchbag "," nice guy ") - message = replacetext(message," whore "," lady ") - message = replacetext(message," nerd "," smart guy ") - message = replacetext(message," moron "," fun person ") - message = replacetext(message," IT'S LOOSE "," EVERYTHING IS FINE ") - message = replacetext(message," sex "," hug fight ") - message = replacetext(message," idiot "," genius ") - message = replacetext(message," fat "," thin ") - message = replacetext(message," beer "," water with ice ") - message = replacetext(message," drink "," water ") - message = replacetext(message," feminist "," empowered woman ") - message = replacetext(message," i hate you "," you're mean ") - message = replacetext(message," nigger "," african american ") - message = replacetext(message," jew "," jewish ") - message = replacetext(message," shit "," shiz ") - message = replacetext(message," crap "," poo ") - message = replacetext(message," slut "," tease ") - message = replacetext(message," ass "," butt ") - message = replacetext(message," damn "," dang ") - message = replacetext(message," fuck "," ") - message = replacetext(message," penis "," privates ") - message = replacetext(message," cunt "," privates ") - message = replacetext(message," dick "," jerk ") - message = replacetext(message," vagina "," privates ") - return trim(message) - -/datum/mutation/human/unintelligable - name = "Unintelligable" - quality = NEGATIVE - text_gain_indication = "You can't seem to form any coherent thoughts!" - text_lose_indication = "Your mind feels more clear." - -/datum/mutation/human/unintelligable/say_mod(message) - if(message) - var/prefix=copytext(message,1,2) - if(prefix == ";") - message = copytext(message,2) - else if(prefix in list(":","#")) - prefix += copytext(message,2,3) - message = copytext(message,3) - else - prefix="" - - var/list/words = splittext(message," ") - var/list/rearranged = list() - for(var/i=1;i<=words.len;i++) - var/cword = pick(words) - words.Remove(cword) - var/suffix = copytext(cword,length(cword)-1,length(cword)) - while(length(cword)>0 && suffix in list(".",",",";","!",":","?")) - cword = copytext(cword,1 ,length(cword)-1) - suffix = copytext(cword,length(cword)-1,length(cword) ) - if(length(cword)) - rearranged += cword - message = "[prefix][uppertext(jointext(rearranged," "))]!!" - return message - -/datum/mutation/human/swedish - name = "Swedish" - quality = MINOR_NEGATIVE - dna_block = NON_SCANNABLE - text_gain_indication = "You feel Swedish, however that works." - text_lose_indication = "The feeling of Swedishness passes." - -/datum/mutation/human/swedish/say_mod(message) - if(message) - message = replacetext(message,"w","v") - message = replacetext(message,"j","y") - message = replacetext(message,"a",pick("�","�","�","a")) - message = replacetext(message,"bo","bjo") - message = replacetext(message,"o",pick("�","�","o")) - if(prob(30)) - message += " Bork[pick("",", bork",", bork, bork")]!" - return message - -/datum/mutation/human/chav - name = "Chav" - quality = MINOR_NEGATIVE - dna_block = NON_SCANNABLE - text_gain_indication = "Ye feel like a reet prat like, innit?" - text_lose_indication = "You no longer feel like being rude and sassy." - -/datum/mutation/human/chav/say_mod(message) - if(message) - message = " [message] " - message = replacetext(message," looking at "," gawpin' at ") - message = replacetext(message," great "," bangin' ") - message = replacetext(message," man "," mate ") - message = replacetext(message," friend ",pick(" mate "," bruv "," bledrin ")) - message = replacetext(message," what "," wot ") - message = replacetext(message," drink "," wet ") - message = replacetext(message," get "," giz ") - message = replacetext(message," what "," wot ") - message = replacetext(message," no thanks "," wuddent fukken do one ") - message = replacetext(message," i don't know "," wot mate ") - message = replacetext(message," no "," naw ") - message = replacetext(message," robust "," chin ") - message = replacetext(message," hi "," how what how ") - message = replacetext(message," hello "," sup bruv ") - message = replacetext(message," kill "," bang ") - message = replacetext(message," murder "," bang ") - message = replacetext(message," windows "," windies ") - message = replacetext(message," window "," windy ") - message = replacetext(message," break "," do ") - message = replacetext(message," your "," yer ") - message = replacetext(message," security "," coppers ") - return trim(message) - -/datum/mutation/human/elvis - name = "Elvis" - quality = MINOR_NEGATIVE - dna_block = NON_SCANNABLE - text_gain_indication = "You feel pretty good, honeydoll." - text_lose_indication = "You feel a little less conversation would be great." - -/datum/mutation/human/elvis/on_life(mob/living/carbon/human/owner) - switch(pick(1,2)) - if(1) - if(prob(15)) - var/list/dancetypes = list("swinging", "fancy", "stylish", "20'th century", "jivin'", "rock and roller", "cool", "salacious", "bashing", "smashing") - var/dancemoves = pick(dancetypes) - owner.visible_message("[owner] busts out some [dancemoves] moves!") - if(2) - if(prob(15)) - owner.visible_message("[owner] [pick("jiggles their hips", "rotates their hips", "gyrates their hips", "taps their foot", "dances to an imaginary song", "jiggles their legs", "snaps their fingers")]!") - -/datum/mutation/human/elvis/say_mod(message) - if(message) - message = " [message] " - message = replacetext(message," i'm not "," I aint ") - message = replacetext(message," girl ",pick(" honey "," baby "," baby doll ")) - message = replacetext(message," man ",pick(" son "," buddy "," brother"," pal "," friendo ")) - message = replacetext(message," out of "," outta ") - message = replacetext(message," thank you "," thank you, thank you very much ") - message = replacetext(message," what are you "," whatcha ") - message = replacetext(message," yes ",pick(" sure", "yea ")) - message = replacetext(message," faggot "," square ") - message = replacetext(message," muh valids "," getting my kicks ") - return trim(message) - -/datum/mutation/human/stoner - name = "Stoner" - quality = NEGATIVE - dna_block = NON_SCANNABLE - text_gain_indication = "You feel...totally chill, man!" - text_lose_indication = "You feel like you have a better sense of time." - -/datum/mutation/human/stoner/on_acquiring(mob/living/carbon/human/owner) - ..() - owner.grant_language(/datum/language/beachbum) - owner.remove_language(/datum/language/common) - -/datum/mutation/human/stoner/on_losing(mob/living/carbon/human/owner) - ..() - owner.grant_language(/datum/language/common) - owner.remove_language(/datum/language/beachbum) - -/datum/mutation/human/laser_eyes - name = "Laser Eyes" - quality = POSITIVE - dna_block = NON_SCANNABLE - text_gain_indication = "You feel pressure building up behind your eyes." - layer_used = FRONT_MUTATIONS_LAYER - limb_req = "head" - -/datum/mutation/human/laser_eyes/New() - ..() - visual_indicators |= mutable_appearance('icons/effects/genetics.dmi', "lasereyes", -FRONT_MUTATIONS_LAYER) - -/datum/mutation/human/laser_eyes/get_visual_indicator(mob/living/carbon/human/owner) - return visual_indicators[1] - -/datum/mutation/human/laser_eyes/on_ranged_attack(mob/living/carbon/human/owner, atom/target, mouseparams) - if(owner.a_intent == INTENT_HARM) - owner.LaserEyes(target, mouseparams) - - -======= ->>>>>>> b6741ca... Splits mutations from mutations.dm into a subfolder, /datums/mutations (#33079) /mob/living/carbon/proc/update_mutations_overlay() return From 1d50248da3b5955269ac0e0ca5328222d9e9bfbf Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 26 Nov 2017 21:29:20 -0500 Subject: [PATCH 172/328] Update hulk.dm --- code/datums/mutations/hulk.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/mutations/hulk.dm b/code/datums/mutations/hulk.dm index 9340361930..666c910557 100644 --- a/code/datums/mutations/hulk.dm +++ b/code/datums/mutations/hulk.dm @@ -5,7 +5,7 @@ get_chance = 15 lowest_value = 256 * 12 text_gain_indication = "Your muscles hurt!" - species_allowed = list("human") //no skeleton/lizard hulk + species_allowed = list("fly") //no skeleton/lizard hulk health_req = 25 /datum/mutation/human/hulk/on_acquiring(mob/living/carbon/human/owner) From 80d1d03b1d51205651c0e1be558a45af3edb5e4d Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 26 Nov 2017 21:32:24 -0500 Subject: [PATCH 173/328] Update weight.dm --- .../diseases/advance/symptoms/weight.dm | 44 ------------------- 1 file changed, 44 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/weight.dm b/code/datums/diseases/advance/symptoms/weight.dm index c502203f70..7052e90bf7 100644 --- a/code/datums/diseases/advance/symptoms/weight.dm +++ b/code/datums/diseases/advance/symptoms/weight.dm @@ -48,48 +48,4 @@ Bonus else to_chat(M, "[pick("So hungry...", "You'd kill someone for a bite of food...", "Hunger cramps seize you...")]") M.overeatduration = max(M.overeatduration - 100, 0) -<<<<<<< HEAD M.nutrition = max(M.nutrition - 100, 0) - -/* -////////////////////////////////////// - -Weight Even - - Very Noticable. - Decreases resistance. - Decreases stage speed. - Reduced transmittable. - High level. - -Bonus - Causes the weight of the mob to - be even, meaning eating isn't - required anymore. - -////////////////////////////////////// -*/ - -/datum/symptom/weight_even - - name = "Weight Even" - desc = "The virus alters the host's metabolism, making it far more efficient then normal, and synthesizing nutrients from normally unedible sources." - stealth = -3 - resistance = -2 - stage_speed = -2 - transmittable = -2 - level = 4 - symptom_delay_min = 5 - symptom_delay_max = 5 - -/datum/symptom/weight_even/Activate(datum/disease/advance/A) - if(!..()) - return - var/mob/living/M = A.affected_mob - switch(A.stage) - if(4, 5) - M.overeatduration = 0 - M.nutrition = NUTRITION_LEVEL_WELL_FED + 50 -======= - M.nutrition = max(M.nutrition - 100, 0) ->>>>>>> fbe8889... [Super-Ready for review]Reworks healing symptoms into conditional healing symptoms (#32432) From c9f0f4923f6e23dd4e120ff7bc0f560201295721 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 26 Nov 2017 21:34:09 -0500 Subject: [PATCH 174/328] Update rdconsole.dm --- code/modules/research/rdconsole.dm | 8 -------- 1 file changed, 8 deletions(-) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 165a5dc6f6..d79b5d5eb8 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -148,19 +148,11 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/emag_act(mob/user) -<<<<<<< HEAD - if(emagged) - return - playsound(src, "sparks", 75, 1) - emagged = TRUE - to_chat(user, "You disable the security protocols") -======= if(!emagged) to_chat(user, "You disable the security protocols") playsound(src, "sparks", 75, 1) emagged = TRUE return ..() ->>>>>>> 1148c49... fixes emagging (#33065) /obj/machinery/computer/rdconsole/Topic(href, href_list) if(..()) From c9211bca1629827795e175d66bf52d1ec851f697 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 26 Nov 2017 21:36:10 -0500 Subject: [PATCH 175/328] Update multitool.dm --- code/game/objects/items/devices/multitool.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index b38e872ba3..4db8cdaa24 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -160,9 +160,6 @@ desc = "An omni-technological interface." icon = 'icons/obj/abductor.dmi' icon_state = "multitool" -<<<<<<< HEAD toolspeed = 0.1 origin_tech = "magnets=5;engineering=5;abductor=3" -======= toolspeed = 0.1 ->>>>>>> 0d2955e... More integrated circuit fixes and code improvements (#33034) From 61521990e2782593f6a4ffff7b4dc7d02cc6e878 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 26 Nov 2017 21:39:11 -0500 Subject: [PATCH 176/328] Update circuitprinter.dm --- code/modules/research/circuitprinter.dm | 47 ------------------------- 1 file changed, 47 deletions(-) diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index 38c5465aff..ebeb869d9c 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -94,50 +94,3 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). use_power(max(1000, (MINERAL_MATERIAL_AMOUNT * M.last_amount_inserted / 10))) add_overlay("protolathe_[stack_name]") addtimer(CALLBACK(src, /atom/proc/cut_overlay, "protolathe_[stack_name]"), 10) -<<<<<<< HEAD -======= - -/obj/machinery/rnd/circuit_imprinter/proc/user_try_print_id(id) - if((!linked_console && requires_console) || !id) - return FALSE - var/datum/design/D = (linked_console || requires_console)? linked_console.stored_research.researched_designs[id] : get_techweb_design_by_id(id) - if(!istype(D)) - return FALSE - - var/power = 1000 - for(var/M in D.materials) - power += round(D.materials[M] / 5) - power = max(4000, power) - use_power(power) - - var/list/efficient_mats = list() - for(var/MAT in D.materials) - efficient_mats[MAT] = D.materials[MAT]/efficiency_coeff - - if(!materials.has_materials(efficient_mats)) - say("Not enough materials to complete prototype.") - return FALSE - for(var/R in D.reagents_list) - if(!reagents.has_reagent(R, D.reagents_list[R]/efficiency_coeff)) - say("Not enough reagents to complete prototype.") - return FALSE - - busy = TRUE - flick("circuit_imprinter_ani", src) - materials.use_amount(efficient_mats) - for(var/R in D.reagents_list) - reagents.remove_reagent(R, D.reagents_list[R]/efficiency_coeff) - - var/P = D.build_path - addtimer(CALLBACK(src, .proc/reset_busy), 16) - addtimer(CALLBACK(src, .proc/do_print, P, efficient_mats, D.dangerous_construction), 16) - return TRUE - -/obj/machinery/rnd/circuit_imprinter/proc/do_print(path, list/matlist, notify_admins) - if(notify_admins && usr) - investigate_log("[key_name(usr)] built [path] at a circuit imprinter.", INVESTIGATE_RESEARCH) - message_admins("[ADMIN_LOOKUPFLW(usr)] has built [path] at a circuit imprinter.") - var/obj/item/I = new path(get_turf(src)) - I.materials = matlist.Copy() - SSblackbox.record_feedback("nested_tally", "circuit_printed", 1, list("[type]", "[path]")) ->>>>>>> b09b1c3... A few investigate_log and message_admin fixes (#32993) From 90691c68d0a90b772ead4cca471ab0c4bad00325 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 26 Nov 2017 21:39:40 -0500 Subject: [PATCH 177/328] Update rdconsole.dm --- code/modules/research/rdconsole.dm | 39 ------------------------------ 1 file changed, 39 deletions(-) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 6506a55a31..b98a75e6fd 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -133,45 +133,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, . = ..() updateUsrDialog() -<<<<<<< HEAD -======= -/obj/machinery/computer/rdconsole/proc/research_node(id, mob/user) - if(!stored_research.available_nodes[id] || stored_research.researched_nodes[id]) - say("Node unlock failed: Either already researched or not available!") - return FALSE - var/datum/techweb_node/TN = SSresearch.techweb_nodes[id] - if(!istype(TN)) - say("Node unlock failed: Unknown error.") - return FALSE - var/price = TN.get_price(stored_research) - if(stored_research.research_points >= price) - investigate_log("[key_name(user)] researched [id]([price]) on techweb id [stored_research.id].", INVESTIGATE_RESEARCH) - if(stored_research == SSresearch.science_tech) - SSblackbox.record_feedback("associative", "science_techweb_unlock", 1, list("id" = "[id]", "price" = "[price]", "time" = "[SQLtime()]")) - if(stored_research.research_node(SSresearch.techweb_nodes[id])) - say("Sucessfully researched [TN.display_name].") - var/logname = "Unknown" - if(isAI(user)) - logname = "AI: [user.name]" - if(iscarbon(user)) - var/obj/item/card/id/idcard = user.get_active_held_item() - if(istype(idcard)) - logname = "User: [idcard.registered_name]" - if(ishuman(user)) - var/mob/living/carbon/human/H = user - var/obj/item/I = H.wear_id - if(istype(I)) - var/obj/item/card/id/ID = I.GetID() - if(istype(ID)) - logname = "User: [ID.registered_name]" - stored_research.research_logs += "[logname] researched node id [id] for [price] points." - return TRUE - else - say("Failed to research node: Internal database error!") - return FALSE - say("Not enough research points...") - return FALSE ->>>>>>> b09b1c3... A few investigate_log and message_admin fixes (#32993) /obj/machinery/computer/rdconsole/on_deconstruction() if(linked_destroy) From 424ba669f1fbccf54f475c5f76bb15e2dac58ed6 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 26 Nov 2017 21:40:14 -0500 Subject: [PATCH 178/328] Update protolathe.dm --- code/modules/research/protolathe.dm | 57 ----------------------------- 1 file changed, 57 deletions(-) diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index e67982d21b..9df4946ed2 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -95,60 +95,3 @@ Note: Must be placed west/left of and R&D console to function. use_power(max(1000, (MINERAL_MATERIAL_AMOUNT * M.last_amount_inserted / 10))) add_overlay("protolathe_[stack_name]") addtimer(CALLBACK(src, /atom/proc/cut_overlay, "protolathe_[stack_name]"), 10) -<<<<<<< HEAD -======= - -/obj/machinery/rnd/protolathe/proc/user_try_print_id(id, amount) - if((!istype(linked_console) && requires_console) || !id) - return FALSE - if(istext(amount)) - amount = text2num(amount) - if(isnull(amount)) - amount = 1 - var/datum/design/D = (linked_console || requires_console)? linked_console.stored_research.researched_designs[id] : get_techweb_design_by_id(id) - if(!istype(D)) - return FALSE - if(D.make_reagents.len) - return FALSE - - var/power = 1000 - amount = Clamp(amount, 1, 10) - for(var/M in D.materials) - power += round(D.materials[M] * amount / 5) - power = max(3000, power) - use_power(power) - - var/list/efficient_mats = list() - for(var/MAT in D.materials) - efficient_mats[MAT] = D.materials[MAT]*efficiency_coeff - - if(!materials.has_materials(efficient_mats, amount)) - say("Not enough materials to complete prototype[amount > 1? "s" : ""].") - return FALSE - for(var/R in D.reagents_list) - if(!reagents.has_reagent(R, D.reagents_list[R]*efficiency_coeff)) - say("Not enough reagents to complete prototype[amount > 1? "s" : ""].") - return FALSE - - materials.use_amount(efficient_mats, amount) - for(var/R in D.reagents_list) - reagents.remove_reagent(R, D.reagents_list[R]*efficiency_coeff) - - busy = TRUE - flick("protolathe_n", src) - var/timecoeff = efficiency_coeff * D.lathe_time_factor - - addtimer(CALLBACK(src, .proc/reset_busy), (32 * timecoeff * amount) ** 0.8) - addtimer(CALLBACK(src, .proc/do_print, D.build_path, amount, efficient_mats, D.dangerous_construction), (32 * timecoeff * amount) ** 0.8) - return TRUE - -/obj/machinery/rnd/protolathe/proc/do_print(path, amount, list/matlist, notify_admins) - if(notify_admins && usr) - investigate_log("[key_name(usr)] built [amount] of [path] at a protolathe.", INVESTIGATE_RESEARCH) - message_admins("[ADMIN_LOOKUPFLW(usr)] has built [amount] of [path] at a protolathe") - for(var/i in 1 to amount) - var/obj/item/I = new path(get_turf(src)) - if(!istype(I, /obj/item/stack/sheet) && !istype(I, /obj/item/ore/bluespace_crystal)) - I.materials = matlist.Copy() - SSblackbox.record_feedback("nested_tally", "item_printed", amount, list("[type]", "[path]")) ->>>>>>> b09b1c3... A few investigate_log and message_admin fixes (#32993) From b4b94ee55720a66bf5cadbc705020d15ec4ddd80 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 26 Nov 2017 20:45:43 -0600 Subject: [PATCH 179/328] Automatic changelog generation for PR #4053 [ci skip] --- html/changelogs/AutoChangeLog-pr-4053.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4053.yml diff --git a/html/changelogs/AutoChangeLog-pr-4053.yml b/html/changelogs/AutoChangeLog-pr-4053.yml new file mode 100644 index 0000000000..9f749a63a5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4053.yml @@ -0,0 +1,6 @@ +author: "Toriate" +delete-after: True +changes: + - rscadd: "Added recolourable clothes" + - tweak: "jumpsuits in mixed wardrobe replaced with recolourable clothes" + - imageadd: "greyscaled clothing sprites for colourable clothes" From e21f84f00bc87cbba2cb19dc58b3b34b0f46ce71 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 26 Nov 2017 23:17:53 -0600 Subject: [PATCH 180/328] Automatic changelog generation for PR #4136 [ci skip] --- html/changelogs/AutoChangeLog-pr-4136.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4136.yml diff --git a/html/changelogs/AutoChangeLog-pr-4136.yml b/html/changelogs/AutoChangeLog-pr-4136.yml new file mode 100644 index 0000000000..0737b28919 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4136.yml @@ -0,0 +1,5 @@ +author: "ACCount" +delete-after: True +changes: + - rscadd: "New integrated circuit components: list constructors/deconstructors. Useful for building lists and taking them apart." + - bugfix: "Fixed multiple bugs in integrated circuits UIs, improved overall usability." From f685f4bd1afab33c593d26a7ef969c1e3c2889a9 Mon Sep 17 00:00:00 2001 From: vuonojenmustaturska Date: Mon, 27 Nov 2017 13:29:43 +0200 Subject: [PATCH 181/328] Removes one source of decal/cleanable qdel failures (#33083) * remove one source of qdel memes * pls * A housekeeping thing for the ignore list, also removes effectively unused var * whoops --- .../mob/living/simple_animal/bot/bot.dm | 89 ++++++++++--------- 1 file changed, 47 insertions(+), 42 deletions(-) diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index d4c459e996..d5c839ffe6 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -1,5 +1,3 @@ -//Defines for bots are now found in code\__DEFINES\bots.dm - // AI (i.e. game AI, not the AI player) controlled bots /mob/living/simple_animal/bot icon = 'icons/mob/aibots.dmi' @@ -85,6 +83,8 @@ "Waiting for clear path", "Calculating navigation path", "Pinging beacon network", "Unable to reach destination") //This holds text for what the bot is mode doing, reported on the remote bot control interface. + var/ignorelistcleanuptimer = 1 // This ticks up every automated action, at 300 we clean the ignore list + hud_possible = list(DIAG_STAT_HUD, DIAG_BOT_HUD, DIAG_HUD) //Diagnostic HUD views /mob/living/simple_animal/bot/proc/get_mode() @@ -102,12 +102,12 @@ /mob/living/simple_animal/bot/proc/turn_on() if(stat) - return 0 + return FALSE on = TRUE set_light(initial(light_range)) update_icon() diag_hud_set_botstat() - return 1 + return TRUE /mob/living/simple_animal/bot/proc/turn_off() on = FALSE @@ -157,7 +157,7 @@ return ..() /mob/living/simple_animal/bot/bee_friendly() - return 1 + return TRUE /mob/living/simple_animal/bot/death(gibbed) explode() @@ -213,6 +213,15 @@ set background = BACKGROUND_ENABLED diag_hud_set_botmode() + if (ignorelistcleanuptimer % 300 == 0) // Every 300 actions, clean up the ignore list from old junk + for(var/ref in ignore_list) + var/atom/referredatom = locate(ref) + if (!referredatom || !istype(referredatom) || QDELETED(referredatom)) + ignore_list -= ref + ignorelistcleanuptimer = 1 + else + ignorelistcleanuptimer++ + if(!on || client) return @@ -223,7 +232,7 @@ if(BOT_SUMMON) //Called by PDA bot_summon() return - return 1 //Successful completion. Used to prevent child process() continuing if this one is ended early. + return TRUE //Successful completion. Used to prevent child process() continuing if this one is ended early. /mob/living/simple_animal/bot/attack_hand(mob/living/carbon/human/H) @@ -330,7 +339,7 @@ /mob/living/simple_animal/bot/radio(message, message_mode, list/spans, language) . = ..() if(. != 0) - return . + return switch(message_mode) if(MODE_HEADSET) @@ -344,7 +353,6 @@ if(message_mode in GLOB.radiochannels) Radio.talk_into(src, message, message_mode, spans, language) return REDUCE_RANGE - return 0 //Generalized behavior code, override where needed! @@ -386,15 +394,15 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r /mob/living/simple_animal/bot/proc/checkscan(scan, scan_type, old_target) if(!istype(scan, scan_type)) //Check that the thing we found is the type we want! - return 0 //If not, keep searching! - if( (scan in ignore_list) || (scan == old_target) ) //Filter for blacklisted elements, usually unreachable or previously processed oness - return 0 + return FALSE //If not, keep searching! + if( (REF(scan) in ignore_list) || (scan == old_target) ) //Filter for blacklisted elements, usually unreachable or previously processed oness + return FALSE var/scan_result = process_scan(scan) //Some bots may require additional processing when a result is selected. if(scan_result) return scan_result else - return 0 //The current element failed assessment, move on to the next. + return FALSE //The current element failed assessment, move on to the next. return /mob/living/simple_animal/bot/proc/check_bot(targ) @@ -402,7 +410,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r if(T) for(var/C in T.contents) if(istype(C,type) && (C != src)) //Is there another bot there already? If so, let's skip it so we dont all atack on top of eachother. - return 1 //Let's abort if we find a bot so we dont have to keep rechecking + return TRUE //Let's abort if we find a bot so we dont have to keep rechecking //When the scan finds a target, run bot specific processing to select it for the next step. Empty by default. /mob/living/simple_animal/bot/proc/process_scan(scan_target) @@ -411,27 +419,26 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r /mob/living/simple_animal/bot/proc/add_to_ignore(subject) if(ignore_list.len < 50) //This will help keep track of them, so the bot is always trying to reach a blocked spot. - ignore_list |= subject - else if(ignore_list.len >= subject) //If the list is full, insert newest, delete oldest. - ignore_list -= ignore_list[1] - ignore_list |= subject + ignore_list += REF(subject) + else //If the list is full, insert newest, delete oldest. + ignore_list.Cut(1,2) + ignore_list += REF(subject) /* Movement proc for stepping a bot through a path generated through A-star. Pass a positive integer as an argument to override a bot's default speed. */ /mob/living/simple_animal/bot/proc/bot_move(dest, move_speed) - if(!dest || !path || path.len == 0) //A-star failed or a path/destination was not set. path = list() - return 0 + return FALSE dest = get_turf(dest) //We must always compare turfs, so get the turf of the dest var if dest was originally something else. var/turf/last_node = get_turf(path[path.len]) //This is the turf at the end of the path, it should be equal to dest. if(get_turf(src) == dest) //We have arrived, no need to move again. - return 1 + return TRUE else if(dest != last_node) //The path should lead us to our given destination. If this is not true, we must stop. path = list() - return 0 + return FALSE var/step_count = move_speed ? move_speed : base_speed //If a value is passed into move_speed, use that instead of the default speed var. if(step_count >= 1 && tries < BOT_STEP_MAX_RETRIES) @@ -439,25 +446,25 @@ Pass a positive integer as an argument to override a bot's default speed. spawn(BOT_STEP_DELAY*step_number) bot_step(dest) else - return 0 - return 1 + return FALSE + return TRUE /mob/living/simple_animal/bot/proc/bot_step(dest) //Step,increase tries if failed if(!path) - return 0 + return FALSE if(path.len > 1) step_towards(src, path[1]) if(get_turf(src) == path[1]) //Successful move - path -= path[1] + path.Cut(1,2) tries = 0 else tries++ - return 0 + return FALSE else if(path.len == 1) step_to(src, dest) path = list() - return 1 + return TRUE /mob/living/simple_animal/bot/proc/check_bot_access() @@ -571,9 +578,8 @@ Pass a positive integer as an argument to override a bot's default speed. return else if(path.len > 0 && patrol_target) // valid path - var/turf/next = path[1] - if(next == loc) - path -= next + if(path[1] == loc) + path.Cut(1,2) return @@ -608,7 +614,7 @@ Pass a positive integer as an argument to override a bot's default speed. destination = new_destination //We now know the name of where we want to go. patrol_target = NB.loc //Get its location and set it as the target. next_destination = NB.codes["next_patrol"] //Also get the name of the next beacon in line. - return 1 + return TRUE /mob/living/simple_animal/bot/proc/find_nearest_beacon() for(var/obj/machinery/navbeacon/NB in GLOB.navbeacons["[z]"]) @@ -630,7 +636,7 @@ Pass a positive integer as an argument to override a bot's default speed. //PDA control. Some bots, especially MULEs, may have more parameters. /mob/living/simple_animal/bot/proc/bot_control(command, mob/user, turf/user_turf, list/user_access = list()) if(!on || emagged == 2 || remote_disabled) //Emagged bots do not respect anyone's authority! Bots with their remote controls off cannot get commands. - return 1 //ACCESS DENIED + return TRUE //ACCESS DENIED if(client) bot_control_message(command,user,user_turf,user_access) // process control input @@ -705,9 +711,8 @@ Pass a positive integer as an argument to override a bot's default speed. return else if(path.len > 0 && summon_target) //Proper path acquired! - var/turf/next = path[1] - if(next == loc) - path -= next + if(path[1] == loc) + path.Cut(1,2) return var/moved = bot_move(summon_target, 3) // Move attempt @@ -749,11 +754,11 @@ Pass a positive integer as an argument to override a bot's default speed. if(href_list["close"])// HUE HUE if(usr in users) users.Remove(usr) - return 1 + return TRUE if(topic_denied(usr)) to_chat(usr, "[src]'s interface is not responding!") - return 1 + return TRUE add_fingerprint(usr) if((href_list["power"]) && (bot_core.allowed(usr) || !locked)) @@ -804,14 +809,14 @@ Pass a positive integer as an argument to override a bot's default speed. /mob/living/simple_animal/bot/proc/topic_denied(mob/user) //Access check proc for bot topics! Remember to place in a bot's individual Topic if desired. if(!user.canUseTopic(src)) - return 1 + return TRUE // 0 for access, 1 for denied. if(emagged == 2) //An emagged bot cannot be controlled by humans, silicons can if one hacked it. if(!hacked) //Manually emagged by a human - access denied to all. - return 1 + return TRUE else if(!issilicon(user) && !IsAdminGhost(user)) //Bot is hacked, so only silicons and admins are allowed access. - return 1 - return 0 + return TRUE + return FALSE /mob/living/simple_animal/bot/proc/hack(mob/user) var/hack @@ -857,7 +862,7 @@ Pass a positive integer as an argument to override a bot's default speed. faction = user.faction.Copy() language_holder = paicard.pai.language_holder.copy(src) add_logs(user, paicard.pai, "uploaded to [bot_name],") - return 1 + return TRUE else to_chat(user, "[card] is inactive.") else From 2d0f8d9482f391e28eb5ce3d03646f24a3cd6191 Mon Sep 17 00:00:00 2001 From: uraniummeltdown Date: Mon, 27 Nov 2017 16:16:34 +0400 Subject: [PATCH 183/328] Stack Recipe Lists (#33081) * ports baycode stack_recipe_list comfy and office chairs use stack recipe lists * removed some src. and made list_recipes() into interact() * /datum/browser for stack menus * revert unnecessary edit --- .../items/stacks/sheets/sheet_types.dm | 14 ++- code/game/objects/items/stacks/stack.dm | 101 +++++++++++------- 2 files changed, 76 insertions(+), 39 deletions(-) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 5eb85379b7..e78ba6b719 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -18,14 +18,24 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ new/datum/stack_recipe("stool", /obj/structure/chair/stool, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bar stool", /obj/structure/chair/stool/bar, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("chair", /obj/structure/chair, one_per_turf = TRUE, on_floor = TRUE), \ - new/datum/stack_recipe("swivel chair", /obj/structure/chair/office/dark, 5, one_per_turf = TRUE, on_floor = TRUE), \ - new/datum/stack_recipe("comfy chair", /obj/structure/chair/comfy/beige, 2, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = TRUE, on_floor = TRUE), \ new /datum/stack_recipe("sofa (middle)", /obj/structure/chair/sofa, one_per_turf = TRUE, on_floor = TRUE), \ new /datum/stack_recipe("sofa (left)", /obj/structure/chair/sofa/left, one_per_turf = TRUE, on_floor = TRUE), \ new /datum/stack_recipe("sofa (right)", /obj/structure/chair/sofa/right, one_per_turf = TRUE, on_floor = TRUE), \ new /datum/stack_recipe("sofa (corner)", /obj/structure/chair/sofa/corner, one_per_turf = TRUE, on_floor = TRUE), \ null, \ + new/datum/stack_recipe_list("office chairs", list( \ + new/datum/stack_recipe("dark office chair", /obj/structure/chair/office/dark, 5, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("light office chair", /obj/structure/chair/office/light, 5, one_per_turf = TRUE, on_floor = TRUE), \ + )), \ + new/datum/stack_recipe_list("comfy chairs", list( \ + new/datum/stack_recipe("beige comfy chair", /obj/structure/chair/comfy/beige, 2, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("black comfy chair", /obj/structure/chair/comfy/black, 2, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("brown comfy chair", /obj/structure/chair/comfy/brown, 2, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("lime comfy chair", /obj/structure/chair/comfy/lime, 2, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("teal comfy chair", /obj/structure/chair/comfy/teal, 2, one_per_turf = TRUE, on_floor = TRUE), \ + )), \ + null, \ new/datum/stack_recipe("rack parts", /obj/item/rack_parts), \ new/datum/stack_recipe("closet", /obj/structure/closet, 2, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ null, \ diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index b1cb00acab..fca7b6be13 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -1,7 +1,8 @@ /* Stack type objects! * Contains: * Stacks - * Recipe datum + * Recipe datum + * Recipe list datum */ /* @@ -88,58 +89,76 @@ /obj/item/stack/attack_self(mob/user) interact(user) -/obj/item/stack/interact(mob/user) +/obj/item/stack/interact(mob/user, recipes_sublist) if (!recipes) return if (!src || get_amount() <= 0) user << browse(null, "window=stack") - return user.set_machine(src) //for correct work of onclose - var/t1 = text("Constructions from []Amount Left: []
", src, get_amount()) - for(var/i=1;i<=recipes.len,i++) - var/datum/stack_recipe/R = recipes[i] - if (isnull(R)) + var/list/recipe_list = recipes + if (recipes_sublist && recipe_list[recipes_sublist] && istype(recipe_list[recipes_sublist], /datum/stack_recipe_list)) + var/datum/stack_recipe_list/srl = recipe_list[recipes_sublist] + recipe_list = srl.recipes + var/t1 = "Amount Left: [amount]
" + for(var/i in 1 to length(recipe_list)) + var/E = recipe_list[i] + if (isnull(E)) t1 += "


" continue - if (i>1 && !isnull(recipes[i-1])) + if (i>1 && !isnull(recipe_list[i-1])) t1+="
" - var/max_multiplier = round(get_amount() / R.req_amount) - var/title as text - var/can_build = 1 - can_build = can_build && (max_multiplier>0) - if (R.res_amount>1) - title+= "[R.res_amount]x [R.title]\s" - else - title+= "[R.title]" - title+= " ([R.req_amount] [singular_name]\s)" - if (can_build) - t1 += text("[] ", i, title) - else - t1 += text("[]", title) - continue - if (R.max_res_amount>1 && max_multiplier>1) - max_multiplier = min(max_multiplier, round(R.max_res_amount/R.res_amount)) - t1 += " |" - var/list/multipliers = list(5,10,25) - for (var/n in multipliers) - if (max_multiplier>=n) - t1 += " [n*R.res_amount]x" - if (!(max_multiplier in multipliers)) - t1 += " [max_multiplier*R.res_amount]x" - t1 += "
" - user << browse(t1, "window=stack") + if (istype(E, /datum/stack_recipe_list)) + var/datum/stack_recipe_list/srl = E + t1 += "[srl.title]" + + if (istype(E, /datum/stack_recipe)) + var/datum/stack_recipe/R = E + var/max_multiplier = round(get_amount() / R.req_amount) + var/title as text + var/can_build = 1 + can_build = can_build && (max_multiplier>0) + + if (R.res_amount>1) + title+= "[R.res_amount]x [R.title]\s" + else + title+= "[R.title]" + title+= " ([R.req_amount] [singular_name]\s)" + if (can_build) + t1 += text("[title] ") + else + t1 += text("[]", title) + continue + if (R.max_res_amount>1 && max_multiplier>1) + max_multiplier = min(max_multiplier, round(R.max_res_amount/R.res_amount)) + t1 += " |" + var/list/multipliers = list(5,10,25) + for (var/n in multipliers) + if (max_multiplier>=n) + t1 += " [n*R.res_amount]x" + if (!(max_multiplier in multipliers)) + t1 += " [max_multiplier*R.res_amount]x" + + var/datum/browser/popup = new(user, "stack", name, 400, 400) + popup.set_content(t1) + popup.open(0) onclose(user, "stack") /obj/item/stack/Topic(href, href_list) ..() if (usr.restrained() || usr.stat || usr.get_active_held_item() != src) return + if (href_list["sublist"] && !href_list["make"]) + interact(usr, text2num(href_list["sublist"])) if (href_list["make"]) if (get_amount() < 1) qdel(src) //Never should happen - var/datum/stack_recipe/R = recipes[text2num(href_list["make"])] + var/list/recipes_list = recipes + if (href_list["sublist"]) + var/datum/stack_recipe_list/srl = recipes_list[text2num(href_list["sublist"])] + recipes_list = srl.recipes + var/datum/stack_recipe/R = recipes_list[text2num(href_list["make"])] var/multiplier = text2num(href_list["multiplier"]) if (!multiplier ||(multiplier <= 0)) //href protection return @@ -187,9 +206,6 @@ qdel(I) //BubbleWrap END - if (src && usr.machine==src) //do not reopen closed window - addtimer(CALLBACK(src, /atom/.proc/interact, usr), 0) - /obj/item/stack/proc/building_checks(datum/stack_recipe/R, multiplier) if (get_amount() < R.req_amount*multiplier) if (R.req_amount*multiplier>1) @@ -345,3 +361,14 @@ src.one_per_turf = one_per_turf src.on_floor = on_floor src.window_checks = window_checks + +/* + * Recipe list datum + */ +/datum/stack_recipe_list + var/title = "ERROR" + var/list/recipes + +/datum/stack_recipe_list/New(title, recipes) + src.title = title + src.recipes = recipes From 5b45f66677144b3f9cb9bec8e47eb5a16b8307da Mon Sep 17 00:00:00 2001 From: Leo Date: Mon, 27 Nov 2017 12:19:28 -0200 Subject: [PATCH 185/328] Merge pull request #33099 from jughu/Powercreep-till-the-end Allows toolbelts to carry geiger counters --- code/game/objects/items/storage/belt.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 848010d68f..f461e51555 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -37,6 +37,7 @@ /obj/item/stack/cable_coil, /obj/item/device/t_scanner, /obj/item/device/analyzer, + /obj/item/device/geiger_counter, /obj/item/extinguisher/mini, /obj/item/device/radio, /obj/item/clothing/gloves From 00f7be5c3626a2429928de4e3e8ef29162a19dbf Mon Sep 17 00:00:00 2001 From: Leo Date: Mon, 27 Nov 2017 12:25:28 -0200 Subject: [PATCH 187/328] Merge pull request #33072 from AnturK/ibelievedinyoukornowlook Fixes non-advanced diseases vaccines. --- code/controllers/subsystem/disease.dm | 9 ++++++++- code/datums/diseases/_disease.dm | 7 ++++--- code/datums/diseases/advance/advance.dm | 9 --------- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/code/controllers/subsystem/disease.dm b/code/controllers/subsystem/disease.dm index 327ba95196..48676bc51e 100644 --- a/code/controllers/subsystem/disease.dm +++ b/code/controllers/subsystem/disease.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(disease) name = "Disease" - flags = SS_NO_FIRE | SS_NO_INIT + flags = SS_NO_FIRE var/list/active_diseases = list() //List of Active disease in all mobs; purely for quick referencing. var/list/diseases @@ -12,6 +12,13 @@ SUBSYSTEM_DEF(disease) if(!diseases) diseases = subtypesof(/datum/disease) +/datum/controller/subsystem/disease/Initialize(timeofday) + var/list/all_common_diseases = diseases - typesof(/datum/disease/advance) + for(var/common_disease_type in all_common_diseases) + var/datum/disease/prototype = new common_disease_type() + archive_diseases[prototype.GetDiseaseID()] = prototype + ..() + /datum/controller/subsystem/disease/stat_entry(msg) ..("P:[active_diseases.len]") diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 69da2ab96d..3110eb3967 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -101,8 +101,9 @@ /datum/disease/proc/cure(add_resistance = TRUE) if(affected_mob) if(disease_flags & CAN_RESIST) - if(add_resistance && !(type in affected_mob.resistances)) - affected_mob.resistances += type + var/id = GetDiseaseID() + if(add_resistance && !(id in affected_mob.resistances)) + affected_mob.resistances += id remove_virus() qdel(src) @@ -119,7 +120,7 @@ /datum/disease/proc/GetDiseaseID() - return type + return "[type]" //don't use this proc directly. this should only ever be called by cure() /datum/disease/proc/remove_virus() diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index bbe98ff18d..0c1058a287 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -95,15 +95,6 @@ return 0 return 1 -// To add special resistances. -/datum/disease/advance/cure(resistance=1) - if(affected_mob) - var/id = "[GetDiseaseID()]" - if(resistance && !(id in affected_mob.resistances)) - affected_mob.resistances[id] = id - remove_virus() - qdel(src) //delete the datum to stop it processing - // Returns the advance disease with a different reference memory. /datum/disease/advance/Copy(process = 0) return new /datum/disease/advance(process, src, 1) From e9f307af8e52e9a0b5eabb0b2858b9eca8c71ab1 Mon Sep 17 00:00:00 2001 From: Cruix Date: Mon, 27 Nov 2017 11:46:35 -0600 Subject: [PATCH 189/328] Fixed a rare custom shuttle docker client crash (#33086) --- code/modules/shuttle/navigation_computer.dm | 37 ++++++++++----------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm index 27ef7eec33..dd27d40e91 100644 --- a/code/modules/shuttle/navigation_computer.dm +++ b/code/modules/shuttle/navigation_computer.dm @@ -47,13 +47,12 @@ if(T.z != origin.z) continue var/image/I = image('icons/effects/alphacolors.dmi', origin, "red") + var/x_off = T.x - origin.x + var/y_off = T.y - origin.y + I.loc = locate(origin.x + x_off, origin.y + y_off, origin.z) //we have to set this after creating the image because it might be null, and images created in nullspace are immutable. I.layer = ABOVE_NORMAL_TURF_LAYER I.plane = 0 I.mouse_opacity = 0 - var/x_off = T.x - origin.x - var/y_off = T.y - origin.y - I.pixel_x = x_off * 32 - I.pixel_y = y_off * 32 the_eye.placement_images[I] = list(x_off, y_off) /obj/machinery/computer/camera_advanced/shuttle_docker/give_eye_control(mob/user) @@ -95,12 +94,13 @@ the_eye.placed_images = list() for(var/V in the_eye.placement_images) - var/turf/T = locate(eyeobj.x + the_eye.placement_images[V][1], eyeobj.y + the_eye.placement_images[V][2], eyeobj.z) - var/image/I = image('icons/effects/alphacolors.dmi', T, "blue") - I.layer = ABOVE_OPEN_TURF_LAYER - I.plane = 0 - I.mouse_opacity = 0 - the_eye.placed_images += I + var/image/I = V + var/image/newI = image('icons/effects/alphacolors.dmi', the_eye.loc, "blue") + newI.loc = I.loc //It is highly unlikely that any landing spot including a null tile will get this far, but better safe than sorry + newI.layer = ABOVE_OPEN_TURF_LAYER + newI.plane = 0 + newI.mouse_opacity = 0 + the_eye.placed_images += newI if(current_user && current_user.client) current_user.client.images += the_eye.placed_images @@ -116,8 +116,7 @@ var/Tmp = coords[1] coords[1] = coords[2] coords[2] = -Tmp - pic.pixel_x = coords[1] * 32 - pic.pixel_y = coords[2] * 32 + pic.loc = locate(the_eye.x + coords[1], the_eye.y + coords[2], the_eye.z) var/Tmp = x_offset x_offset = y_offset y_offset = -Tmp @@ -134,21 +133,21 @@ var/list/image_cache = the_eye.placement_images for(var/i in 1 to image_cache.len) var/image/I = image_cache[i] - I.loc = eyeturf var/list/coords = image_cache[I] var/turf/T = locate(eyeturf.x + coords[1], eyeturf.y + coords[2], eyeturf.z) + I.loc = T if(checkLandingTurf(T, overlappers)) I.icon_state = "green" else I.icon_state = "red" . = FALSE -/obj/machinery/computer/camera_advanced/shuttle_docker/proc/checkLandingTurf(turf/T, list/overlappers) - // Too close to the map edge is never allowed - if(!T || T.x == 1 || T.y == 1 || T.x == world.maxx || T.y == world.maxy) +/obj/machinery/computer/camera_advanced/shuttle_docker/proc/checkLandingTurf(turf/T, list/overlappers) + // Too close to the map edge is never allowed + if(!T || T.x == 1 || T.y == 1 || T.x == world.maxx || T.y == world.maxy) return FALSE - // If it's one of our shuttle areas assume it's ok to be there - if(shuttle_port.shuttle_areas[T.loc]) + // If it's one of our shuttle areas assume it's ok to be there + if(shuttle_port.shuttle_areas[T.loc]) return TRUE // Checking for overlapping dock boundaries for(var/i in 1 to overlappers.len) @@ -160,7 +159,7 @@ var/list/ys = overlap[2] if(xs["[T.x]"] && ys["[T.y]"]) return FALSE - if(space_turfs_only && !isspaceturf(T)) + if(space_turfs_only && !isspaceturf(T)) return FALSE return TRUE From dc2aa374307e616a4d80b838dda315dc78615c95 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 27 Nov 2017 14:38:27 -0600 Subject: [PATCH 191/328] Automatic changelog generation for PR #4143 [ci skip] --- html/changelogs/AutoChangeLog-pr-4143.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4143.yml diff --git a/html/changelogs/AutoChangeLog-pr-4143.yml b/html/changelogs/AutoChangeLog-pr-4143.yml new file mode 100644 index 0000000000..dc1f281cec --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4143.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - code_imp: "rejiggered botcode a little bit" From 044341743081979543e8f3bfd0af8c68b602f830 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 27 Nov 2017 14:39:05 -0600 Subject: [PATCH 192/328] Automatic changelog generation for PR #4144 [ci skip] --- html/changelogs/AutoChangeLog-pr-4144.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4144.yml diff --git a/html/changelogs/AutoChangeLog-pr-4144.yml b/html/changelogs/AutoChangeLog-pr-4144.yml new file mode 100644 index 0000000000..bcefc8437a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4144.yml @@ -0,0 +1,5 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "You can make many different types of office and comfy chairs with metal" + - tweak: "Stack menus use /datum/browser" From a52f5a425b1d9b9ba2fea4a0f525c98df09f4cbe Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 27 Nov 2017 14:39:38 -0600 Subject: [PATCH 193/328] Automatic changelog generation for PR #4145 [ci skip] --- html/changelogs/AutoChangeLog-pr-4145.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4145.yml diff --git a/html/changelogs/AutoChangeLog-pr-4145.yml b/html/changelogs/AutoChangeLog-pr-4145.yml new file mode 100644 index 0000000000..c7b269b20f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4145.yml @@ -0,0 +1,4 @@ +author: "improvedname" +delete-after: True +changes: + - tweak: "toolbelts can now carry geiger counters" From cd7cbc7f5953d345a5a75e586b695772c6eae617 Mon Sep 17 00:00:00 2001 From: JJRcop Date: Tue, 28 Nov 2017 07:19:55 -0500 Subject: [PATCH 194/328] Fixes VV Make Space Ninja verb (#32982) --- code/datums/datumvars.dm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index c609e63f0f..2984987103 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -748,6 +748,28 @@ src.give_disease(M) href_list["datumrefresh"] = href_list["give_spell"] + else if(href_list["ninja"]) + if(!check_rights(R_FUN)) + return + + var/mob/living/carbon/human/M = locate(href_list["ninja"]) in GLOB.carbon_list + if(!istype(M)) + to_chat(usr, "This can only be used on instances of type /mob") + return + + if(tgalert(usr, "Are you sure you want to make [M] into a ninja?", "Confirmation", "Yes", "No") == "No") + return + + if(!M.mind) + M.mind_initialize() + + var/datum/antagonist/ninja/hiyah = M.mind.has_antag_datum(/datum/antagonist/ninja) + if(!hiyah) + hiyah = add_ninja(M) + if(hiyah) + hiyah.equip_space_ninja() + href_list["datumrefresh"] = href_list["ninja"] + else if(href_list["gib"]) if(!check_rights(R_FUN)) return From f089b9ca2dfadc4c7ab17aed04a955f9158af526 Mon Sep 17 00:00:00 2001 From: ACCount Date: Tue, 28 Nov 2017 15:19:08 +0300 Subject: [PATCH 196/328] Removes mass-spectrometers --- _maps/RandomRuins/SpaceRuins/deepstorage.dmm | 2 -- _maps/map_files/BoxStation/BoxStation.dmm | 1 - _maps/map_files/MetaStation/MetaStation.dmm | 1 - _maps/shuttles/whiteship_meta.dmm | 1 - code/game/objects/items/devices/scanners.dm | 5 +++-- .../structures/crates_lockers/closets/secure/security.dm | 1 - code/modules/research/designs/medical_designs.dm | 3 +++ 7 files changed, 6 insertions(+), 8 deletions(-) diff --git a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm index ab39bb14df..a5b3c5b9c7 100644 --- a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm +++ b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm @@ -1488,8 +1488,6 @@ /area/ruin/space/has_grav/deepstorage/armory) "db" = ( /obj/structure/table, -/obj/item/device/mass_spectrometer/adv, -/obj/item/device/mass_spectrometer/adv, /obj/item/device/healthanalyzer, /obj/item/device/healthanalyzer, /obj/item/stack/medical/gauze, diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 39fa8179cd..b630c327cf 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -56944,7 +56944,6 @@ desc = "A thin layer of dust coating the floor."; name = "dust" }, -/obj/item/device/mass_spectrometer, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "Qnn" = ( diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 34757316a1..f0f8fa160c 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -74121,7 +74121,6 @@ desc = "A thin layer of dust coating the floor."; name = "dust" }, -/obj/item/device/mass_spectrometer, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "cXL" = ( diff --git a/_maps/shuttles/whiteship_meta.dmm b/_maps/shuttles/whiteship_meta.dmm index 4ac62717c0..96f6e7e3b4 100644 --- a/_maps/shuttles/whiteship_meta.dmm +++ b/_maps/shuttles/whiteship_meta.dmm @@ -1134,7 +1134,6 @@ desc = "A thin layer of dust coating the floor."; name = "dust" }, -/obj/item/device/mass_spectrometer, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "bW" = ( diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index bc99a28eea..a9ab066744 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -2,10 +2,8 @@ /* CONTAINS: T-RAY -DETECTIVE SCANNER HEALTH ANALYZER GAS ANALYZER -MASS SPECTROMETER */ /obj/item/device/t_scanner @@ -395,6 +393,7 @@ MASS SPECTROMETER to_chat(user, "Temperature: [round(environment.temperature-T0C)] °C") +<<<<<<< HEAD /obj/item/device/mass_spectrometer desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample." name = "mass-spectrometer" @@ -458,6 +457,8 @@ MASS SPECTROMETER details = 1 origin_tech = "magnets=4;biotech=3;plasmatech=3" +======= +>>>>>>> 81fb344... Removes mass-spectrometers (#32965) /obj/item/device/slime_scanner name = "slime scanner" desc = "A device that analyzes a slime's internal composition and measures its stats." diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 04e624a46b..3cb3edb8c2 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -188,7 +188,6 @@ new /obj/item/clothing/suit/armor/vest/det_suit(src) new /obj/item/storage/belt/holster/full(src) new /obj/item/pinpointer/crew(src) - new /obj/item/device/mass_spectrometer(src) /obj/structure/closet/secure_closet/injection name = "lethal injections" diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 89767a1c55..80bf47cc14 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -2,6 +2,7 @@ ////////////Medical Tools//////////////// ///////////////////////////////////////// +<<<<<<< HEAD /datum/design/mass_spectrometer name = "Mass-Spectrometer" @@ -23,6 +24,8 @@ build_path = /obj/item/device/mass_spectrometer/adv category = list("Medical Designs") +======= +>>>>>>> 81fb344... Removes mass-spectrometers (#32965) /datum/design/mmi name = "Man-Machine Interface" desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity." From 0ad637388faa3e35106c192fbac6de00e2fbd2ec Mon Sep 17 00:00:00 2001 From: ACCount Date: Tue, 28 Nov 2017 11:41:09 +0300 Subject: [PATCH 197/328] Removes "machine prototypes" --- code/modules/cargo/packs.dm | 9 --------- icons/obj/machineprototype.dmi | Bin 418 -> 0 bytes tgstation.dme | 1 - 3 files changed, 10 deletions(-) delete mode 100644 icons/obj/machineprototype.dmi diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 4269de6069..e8c155ae81 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -937,15 +937,6 @@ crate_type = /obj/structure/closet/crate/secure/science dangerous = TRUE - -/datum/supply_pack/science/research - name = "Machine Prototype Crate" - cost = 8000 - access = ACCESS_RESEARCH - contains = list(/obj/item/device/machineprototype) - crate_name = "machine prototype crate" - crate_type = /obj/structure/closet/crate/secure/science - /datum/supply_pack/science/tablets name = "Tablet Crate" cost = 5000 diff --git a/icons/obj/machineprototype.dmi b/icons/obj/machineprototype.dmi deleted file mode 100644 index f5312bdba60f67ecb1774505c91d53e3c22747fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 418 zcmV;T0bTxyP)|^ZP@w@^KfCsurE(2R+fOaZeACd=IDWyT-c9(RJlMYt6oIyFHD8rFo zEx=fjQyt1&E|MV>kgMvHwtz}&t*s!>6WH;oeh96ZCk0aS`M>{;CjhfJk8qyossI20 M07*qoM6N<$f*k3rVgLXD diff --git a/tgstation.dme b/tgstation.dme index 8de56a59ed..34227a9a18 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -904,7 +904,6 @@ #include "code\game\objects\items\devices\instruments.dm" #include "code\game\objects\items\devices\laserpointer.dm" #include "code\game\objects\items\devices\lightreplacer.dm" -#include "code\game\objects\items\devices\machineprototype.dm" #include "code\game\objects\items\devices\megaphone.dm" #include "code\game\objects\items\devices\multitool.dm" #include "code\game\objects\items\devices\paicard.dm" From b15481c7cd2cf55be2087b5d0123788db2b376c2 Mon Sep 17 00:00:00 2001 From: ACCount Date: Tue, 28 Nov 2017 11:39:46 +0300 Subject: [PATCH 198/328] Removes some unused sprite files (#33121) * Removes two unused sprite files * Removes two more sprites --- code/game/gamemodes/wizard/artefact.dm | 2 +- icons/effects/effects.dmi | Bin 868030 -> 864549 bytes icons/obj/atmospherics/pipes/large.dmi | Bin 8198 -> 0 bytes icons/obj/biomass.dmi | Bin 7246 -> 0 bytes icons/obj/tubing.dmi | Bin 1730 -> 0 bytes icons/obj/virology.dmi | Bin 1907 -> 0 bytes 6 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 icons/obj/atmospherics/pipes/large.dmi delete mode 100644 icons/obj/biomass.dmi delete mode 100644 icons/obj/tubing.dmi delete mode 100644 icons/obj/virology.dmi diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index cd50f52d5f..a3ef293698 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -33,7 +33,7 @@ /obj/effect/rend name = "tear in the fabric of reality" desc = "You should run now." - icon = 'icons/obj/biomass.dmi' + icon = 'icons/effects/effects.dmi' icon_state = "rift" density = TRUE anchored = TRUE diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index cb4b8f659e0b71fd05f1e641a561e22056ece3d2..9771e9bc06ae7e047f4b04db13c730c17340fb93 100644 GIT binary patch delta 711537 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�cuYqcB($5o9rK<(3>Y57Hb( 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

_=f2 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%0AXOi$kU3(aovo(HIB6D2az2 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 z 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℞;7Z7M8sf-!cI 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
sfHY;%zzO$Ia&Xs9@ue;vfG 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ℜ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 wA~m&sHkBn> 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≪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 delta 715045 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

U;&bL+xJJQ0&pPiM7)+D?Q<+_tfac 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%0ADi$PT_#$;T5uc@slSfQ>2MUro(1ma%uq61a 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 z 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 z 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%0D|dmyFDg(Qc`-a zzpyET#df}PeMEBOSDbvho>i!(ZNw^5@@|}{Jt+oRqvbpa_VxW@Trdi>MAdABVO;Q@ zYgL)9<6FKkyp;?!E{m|?-m_fLC8fpIuvn+96(>cfw!y)4xi0E`{kn}$KM#*W>%0&Lj19Ob3e)De6mER(b2s@CfhNzo_qmy+^~} z#dy+SizDux{Dlgp2xkS+dCk0Sa=@kTq7Uap5H2ZAmo!`yDz28k4`)1fSBimncjthe zx2!s-q}#Mzn4)2>GEuNXDO;Q%hc&!BCwcuBz!2B^h}F%Y;s^Q^W;%)nVZ@Rd<=*7m zWgbl@C|YL3;9r3`HUk@DTm6P*@15yxBw(gxLGrRBpdmTZWqS4s?=SnqJple`rt-3C zbej^Im_=NQn*qSkV=x>aO#kZ`=J~BC#Q;9n>^j>^KAzEAQhrHGOFB0L-{ZAfM1bc0 z{vM3D*%_P`g?TAsy_ab>bp?2ucs1JVV-iwm%s8^JKl)gWqdQw3am9Q$p6zTLHs=wh z4CM+}uzL(%kgtoISp8WmyT2AEd3WE2{IG(J^8Qex6$01|M$9AL?wphN@tIKhPS>|V3zjXrxxXxjA z6EDH)N8i+=;``Ivl9mvVQ>#kSX{?dN@?k+=dYb2)(QC|0okv8MUwCr@j@Nty)H$F| zs}-bLb1T&3=q3l`7MEqP`1*%5R79yC%M0Sa&o~4hlsty@S9|?OSFTE63j4OuS`ajA zr0}Of(LJhjpk;*~-*ce8{HRp3(5t%-dh-!(srfJ0Ig^L0t4h`@7m60sZ77DAhh~vo z?rrk#{nn(@R83Jb{j+qt$__TD6@719xS#EMIr(YCe*uE(0&Cvf=`=*O=a|#XBeYJ*nWIyO6w#G@h`CZG{98Sqev2-l!nUkB zM?LjpD+6#J;ePC;>g+mL5QOudP<}j2QZ@*@C)Ac)iLAVB$-L-uvO*zL0IN+c z%p$^4jr`{>EfU|{Hg%oePt02d>W8eaOpPHc%a;g>+>vbl0fr2eS`4i*ylMAHP~sBG z_#1q1WTM4^Rlmm!@$EHLk_Z!i#XJmsvk-+oJO&J8?JgA4!n(g@!E`|N(erNegW2*dS~Jhi5qK7MucCYY}$tkhMB#j?QPjFU?;Nr6feir4BVqGxEW0fwPxxIE*KG0Z=+xaP^2abJiGqkxw4WWF)0ZN3F(kN-%~uo7yD@W z)E%VbidCIOs#V0++iW#Vm*#4~2krUl1T&>&{#;06?WKzr@avQ=^+eawqP!Sjw2{33 zR`IvLn4H8>D?l~&a1WY|VEu~I^U9kz%z88Q_i8gGn!OLRk_XmoV`*;}1J8zb90+?I zP<|sEyXLp#w=I%heE()g08Xur{Rn12GI|ojy zCa5{$FGjHw@FEl*i&S)C2wUn&<*Ug&v56A{F5Y=ApVh*+#d8{3D>-UH;jn^{X52Zs|k78tZBOYDF~P$F+I z&sGC!ZB!$a%S7mn0M(aL6d@^oC$E(j6={mGcdWRq9o~&slTlDSkwCl+uL22Su@e?Y z&aC?S(#L~$qB2JCo1a3N3KbDet&XxJZ6x68xvNaOo`d)-~jX3(eO3)DD zT=d<_-=jiU!VGRA#6C&EBzLG`*G?5_KD_Ch>@q<&QOB>I8QJ5rIfU69Lm!D#PN*U! z6Ekk|6!zEFd+Kw{PKwi?q?swJKm~Kr^XdQ5^c7H1wcpotNOyO4h;(;%h$1B|-F@lq zknZjf>F$zNP^7!N2l%e<@B1&9wQ#tMcg>vVoPGA*=Xq9UBoqE2xZ2sYJ(PM{y7||f zoSx6J{bw6mS0m7FftwgW^L=5j5n~cIc}jLRYVSgYmX9r>_}8wZLtjpW;J^@gm(IfR ze!K~N&z~g$BUkV<)1%PsQb|oSG-x&pyi&o_BEH3aY{sOOfpUw!FeY5Vd61G0m-=!U zOvk-ub(hC2K>Dzj|B7UG0O&&dz)blZlY5rPbn0KR>Nk|u^Zk65jRrRTZXTjr49AsjVfDn{xE z;;4Hp)@cj?0+y1ycOM`eo!2qz^(~3HBvRh?sN<*8?_&t zEf_exd_KnmqKp&Z^~(9v5=lDTuglbbY-l2sKn&O@VjJf^7m>)Qxl)MOg9|X!Vdo{- z&AqfFbfJ0CKbBSEVQ9csn+hFw{;;Q-Sz$&YcpY%Az}?m^*?j48k>-r| z1Rcd%c=E27N7MgZZVD?G*fR> zE_mn}tf<6&yePg1nI`z_gG?RnJy-_VwcYyj-v;9k?sj_O^Em4)j$*HZ-CMV@sS;tofhI}BM{yL zV05r=a2zwx&5J9R23BhBVe4BcnMcldtPm&~ex^?ac$2O zNEteOC4Yh|&|8K;e8J5-phm~X4|Uj(CHBqb*bY&3BE}|uGwTB;>llikq15zf&+{6C(Tewm6VkB{egxylgB1<6%B&V< zzt`&vqN>?;6C?IPuL1x&GV^&*`pqn@OG13>`%cwW)~=%93=R}z% zog*$;pGt}!9 zsO%hO5=~ie#t2!=o$+Fh$wiFeSp39Bx0)qOC(I})m^nN=Ob!$2AYg5t=e@!=TRXu( z5OdZ5g&}Q*ZZqj6@X`Et>O@~zUg1mUs(o$48L&pPw|f5t?pfjzg#aER9QW?Eb28T1 z$C|AqOYw1gnqMrrJ_fFvQQ!UVc~7Hk3I{)Qluh4H)q8#UBCDVm)x z(g|7YKEZfb?NR}XM;m7yD|QPIneXS@E|%ibHXJW~>wKmj_j6!mhkbox-+qf@&tGGS z1ZW!lA6QoLr$d|JhVT8&6EQ-#baicsy3?IL2p zylP2pR7yK{gArCUuw4hTP`J@nS>EXQ5md(Se)hV-iU9E*Lhc6G7?MV5?1Tq#X$d*Q1*jSa~({Rxy zN+F&sxPaZl*oLba(0(87+Od8SBmi=ti?`-R6VOE<i%%PH9v;dm8sc{uVyvrtt*W&smi6}+)zHx3d3WR6R1v}T5_f@T zkNFmH@8x=!X&S|LEf=2&~CJb_Aju*n z5O};kz;9$$)uvUP96U5qn$sQM(+Cw70e>f;17w2U{$>8wv3XXV{4-(0v0gj$+%uWgI#RQ#xfP7nI4u3^ij3+lgFif6V zE+Kx7q`^Lbw^>t#lYYIwHFubA0LvGJF`mQkw3pweWM76XBCGgY0pAOXg(A@&(;lDV zE0GD26-XkGjIwO@U=@TwS7#5+O{1SOjp;` zL=5nM+hq+C118I1v`0nnBbIJjup4xB8>e8Lc=qZmPu`4603rnmVlsPry3s>{rVSE= z6i{T4km$?*v$wP3v_C`D^OPDTzmD&olFj9Jfe!aORq5F)I>g+_2w=!_91&Z3?yKY9 zsNU1(^(oXty63;LkZ{*Q7(z4n(c`2iFsX8Ny4+et8t`~^3TA8{>zd`O?VYQg*pBgz zAqF+EuRn6-pS|whoRmycq(S02T*SQYs3WLHwZg&fdF?&wC@e<-j<#lRN_9LCC0Z%#2CFx)WQ-SmSz#fsQ|g)T@`M3tVArD6Xt zCNrptj7FNOmB9plqHc3E{cM{>jpM6$APq2%`J_%36z4WK0Mm=M`8uYuz!^-Tr6y3b zFdqiMifru9%!>=m3oKjjMNq-5$gqD{>(uUiC~;M72U*%Y(y@p4EGzUNd{~KBstUOp zirxkzOM+BZxoM+UhQ!1b(txvAgg`AujI0NEe)vEGk?xf4R_>HplNGs8E({ekRiJ?* z6OWN;8gq{ipK~<9vLk?Q(RQLVzBX&(CgfBAG2d}@Ce=WN`q}2RV%#clW5rkiP!K6s#Y)qIPwhg+Abo z(3e$ON^f9}XErI6@#gQCD}f>4297@Y+?|>a#}F9`y-4GME%fg?e?){6=qoRUsJlD6 z-^Y>Jj=!#|doFQXB5dwe75N^|vnMRky(&U2JJ&jzIamQ$rAZ+D2_7|_y_GDk_BGbwkE(#O9`l@#voSSr z=_mRcEa7Lvn#RXhpIhTgjEC4u_uUP$H|RR`>PT<^udcToAZkmX)UTXkM%!PX>v1=H zdHI>p&B-^Bc;MF`XHwu+)fBB@P&Hz>9o%Wb`vg`mr6Oo64g8sZ7nve_WICG8YRRC5TbBf)?t%bi$kvjXI@C8z zJfbf-;s!xvqm%iW&iHi*?6Aao=?_#)D(>G3gv)4a$-n)cExo4Srbh37ZnSPBib46X3oXJ2{t=txR*#8heQHRG}n9t*X08DDMxe!tUj5WD+d z*<7?ZxXun4zC0M9TIca;+$h6cm~n=y8fa@pL~6V4b789xGa!4%?7@1#)Md$g6=q6O zN7%*EZb%rvs6U>kyG9#h*_APH9wfuj&&nWDg){@MvqZCj$vmosunZ~-m;-Q!Of;nP zG~zHbKNUt^-%DqKY~gcmun7vMj9xAahggZw$jle;r}$DNm*3`TV;K9#BERIcLe!%v z*0f$Yd>6r=HKIAjAFZM|Z7yW=DO9jz*}55zMkJI|cx z8hMIh0neh#m%E`29r<2owNz5hcghS{KBtzQ?=Fr&qM-UhHcvJuFwVEX@FC``k(?H7 z_CU<<7DYY#)QWn~aG1`H-W95@GpSxUND3~jOx@kTwEDJuzs4DAJ&k^Oc-kSO{U;Rl zq(K@)^rq8ST)Nu6`#gk*M#Y?p{{7$OkedS^kC*55?kxM1A7SW*)9JuEdV{q?k*6** z-)l=mkc`WyV$1-hdjg<5RYF}byfO^U*UaZw^Owt%BgMzz@jI!{FIF4otS%}wB~$av z6PSy)jWaEzG$M2vNsYwZWlaTZdQzaz=I;kYyWbZOzoFDi_#;E~eUS(789Js!NO5u0 zO(GXmNORcRk|_mi1;CB60wT#?Zmej5{j@dURJIh5m!f^KmNGV3<3@>eRC-m$yK2EK9_*6I>}9=K?0p}C?PeZ zHAe>81jf*r{q3n!BeN6qcM(YNRLm+{I#SEk`x^h$8F2ruq%_I@JqHz%}ZgG$UqD;?VU=La|>DhBZH{0 zjTscDc#ER|LwR1vaD2q;bgwGb5~(((p#0FwoH5-k0SP8mnbVW8r3n^L?ZuR2Or)ix zd7Fp>HS@U`2;ty0=RPAmhZDyZ;L*TAN3}Mz!LmcBGIRexcU8t0je(;IN-zFU`*0x? zhe#!{vXZktm(bs_)bM+Q+%xeHBJZsk!*E2JUqJl+IzzA+A(e1#`KDDA)%)^Hv;mTW zWcb8=Kki`UDQ>w}J9W>swV1!r5iyRfx4P)}0S-|1AW; z4p*{v^->S_dJJ*8ZcnMOu;i?v0V4wIxuJJLf=ARU?fktgrPl*>5gZ^#dj#?7k6~y9 zT@Wj|%;W8|R>j}Hrw$LxI;TM*z?DF)mMP&93~Sj(HRs=2pH@>{U2RW7?vQTB(e(xh zTL0c-XOzgtW6i(RTJ`tnqEPuoPRTcLm7KEZN1fxRm&-JN5yvAN$7(fb#Tat%QtNb z0Qf5!B7>0=%}y%TU-TA{r;XYrb2oqpW0kVR<<+P3b52+cHTj)kz*llHgtj`DlyT9( ztt&gXZ9g#Z|I7qg%8-V{)K85h*V*qKW6GoOPXV_aM^MI@;0i7W#QXWiT=q>B{GKc5Bycr5v9!$J0!K6}sp+Mvs$0<< zC<2%cA=Nyp7?gQpovAzM0&c$gqn%pLj6&~6AMXj3Q-9#jc1YhlZv0a~lNS{*P(Uhc zP5vhYdGgJdLIfeXh@qT%#%L|*^88*x8Sd}6ubg4X{MG^^;)8m@7n1uZ1&w9rcWZ!FmLIdIPRe02iJS zl!`Afn{Q&qd4rc(gl`f+mr6Hbo5Ft=WjpJD!(TjMPCPxCkx; zbTQ2k=#rIsd4#??&wv=-SKAFQedIHZXmv$?+*T3Cg_Afvf2TLfJU3lEMe*mMk@T&$ z_Gc#rRO*^%uY@IUCPsQYm;Wxa->xl0cb5{51@rU%9&lTGb*TfHoMSiGcbQvv0OCKL zQpq2lf_~6NLLcu|-9z)fCd`qsW~aGXc9owlEsvaa>v9*tz{LAc)e$8-e1Oc9?$Z2t zOGVd?y9NB;;g9{+hoTzMmEQM)B^kBTbB`Ar(L)mDj3K2yDNLaed zOHxz!0yf&1?~9)ry=;nb$zrTDflFm)iK&>3;Kr=e z!=H8ryMcI8_bpP{bXW)5`}i9JHjiEz4*R?6g8*LlYSA3{csoSbeWn&7l#-J$lI`vI1-K&waR;t}T5*SluX>ybwczzW7ydiV)D;;9 z&?F#(ICR`AgQB2J6`4JU=}N@@M~Mw6JV^)~{o14WiUYO^K{z z!@UMdB|WfkI7~Tg3yWb`siZ30pyrm7j69@3R-)|mMDhGBv)?6Y6j@`C0Hj4hz9zWy z@cH(@dL1F!iYE1-S;Ur?fjd-}I3e+1Ff{nh=Gb5Cpw-)Y*H68ouOvfaz>8afmIq>xOK)Y9`P z1W=G}xO^5)X52tY%81H!JSLS;Bg85m=W<0t)Al?Ys7ZPlr*hx0CK5nf|8SA}m4D8< z#3VX0g^=i>Nw%`yB?K2Jos|$WmMlfdKWFT4o=g9Pv`w2Ft;2oC)ZL3DVmwTJQA_+e z(NlNptWWGP(!=jwPUNB%kZ&7Qu{~ny25^Oxk9VVdzoC& z6{&1Ka>ahcjN9ZDLXs{p-?3)qEG8Hm6-7;Zwryx&LuFA;t$Z5WVdDWG*hk!ovH5ToK#Y z__7{tVX2+6@3}FL7B9KElPO4!p&b8=3Ppte9c`a8IkH44|9oMIVS)0ikp2cAZk zGZWgVCnKUcaw)E z=#LL|R0sf*nB&UoJeNtPa@liC`rrgRQm-Y6BnT(zI2WeFZOM+qk>-MR(|ed!ECxK= zmE7;~{Zec}+fFavU9DlYk2WzGaY@HQE;D*|0a%NVbl)&Xg*n0P zSzi8?hUEYPXzVfjrD?zv&eavzFva$AT}Pd!t|NSpD$IkeO4N2~a?q{>O&#$me7R)L zZvBMD*JRX~{W~drxQy$p43iL60Me%8Ec-sPQap8mZ7W1~EW4IwxR*hC=7jOTl%BRM*%3rnOlzcU%$7G~NF^&RgU*5>kP6_h9~~effis00j3l zO&F9;oo#AWde3-S{_`_}e&-tBrwZgE>heeD2VIWJ^74Q~LB*2kQG<LAeS_~FBczZ5};QTa*P*^|ntj75(3-hHU>524W^o!K>)3m>Os-EUB@GV=5f zE`$Z-{Wl8pvj-Z0-Pc013{DQ0BH^83xIaohVGon|xgI{bo`1;VAyvHnOb07Rhn(St zYBSK5;bJTzE9=i>WsYcJVhchUgb%c?{1BVvZo=4$c!VC!(ESrZkI;NL4?_)88fbbL zs+8{2)1^U*fTX^6PX2e!ckX)eyyH#{Wxd*Jf(aoAo*k&bAcd;^TK$MxKywK|0$yV80>Lrh%84k(O0V#;;37P}h*{H}tEg@v4S!&lLpMWmdv zjy&(;aKmYU_3SsAr0Arwu=;pzko=m^mc}{x)oPz4xqzHA~DH z--IW`=CK~jL~LK25L^^Y1W$NCG~Ew6aS_k&K>y90(TnU5DE)cH^|DgWE4Z3dO zj4M0~Y)xT6l#;AfuN9PNMa(aY7G9e(CZMl72K*EA=|MIKE0wHg?JL#wz^)g7;(0`{ z$+5$#T9U}TnJ)eIyFwyuu|PRL8s&QhPdw7~qI6Y3dGj||gBmIYq$-N~)lZ9jznC-b zVrfwiz}Wpc4w}-9%(3j?W3@l&Pna~mcf@l1f>cmOW=@d9pD~P)+T8E9*=0Vhct;8h z;e>-%{s8ay*jOCom=M9+-Easb1AT<>Lf_si3UnL{!aG*y3?m~x+Va(bMJY1{8D!p!%ulI+r~)y1nfmaW6gThJ z+yS5X$>Ta3>E%{=N$=+mK1?wt+Nn z+m#*+*74nWbMqB2idziFP9jm$2o%YOyqup-x|Z&oZEdy-?pm0eDk5#M&9#>QnyQmk zzp&>l54F_3src|?fd^zmZ7Fl>6qUTz%r;jt4%C-LO+h6b2UO#ABRRfB|9)}D zFVmeeWrDY*%G4IL`htsD$nY&d#8y`_pft7>mbrW|?Ew(CMsXu52+^1#4~Ub-57VuW zSJ<9awrh}SA_HxV24bJ1K*bg7=Rvn_XW5~^!Rody>G7TzQV6KzUzojsD(f0~N04ZW19TcT_;K<3bw#jaIjS{6U_>sfzHw12(*0I+c|9MH)8s`*Cinero z$0jDOSipS@6H*{-`uh6PGBSzD$y;{w0OZFix%&bmJNxa|hAEM|NkaoEG_kq!6`5ja zQBv3KU#Es2K~Rgw$^BHY+Q#5soqN_&?OI&0cPS1*A%DsSG47vf(6(0aBK$dQd@Z(t z2&lhrQB-e+HT3!YDRjTL>{Rao=<_r3o4jJavVG!nocwmY+Va_rUR~;NTJ#S1ojVox z^MLfBc=>cHzQCpPcWpwJ+%9|B zA)rYeB+?ViGfiUxOOJ3=04~`CbC693Uzf{cO5tzLTOv6-AsVKq8n9HF=iPiVk=7cY z!d+*;5lBScRgR|=Z4bV!f%^9TF~7_UQcB0|YQ4{8Iw+06@Cpu*tby#tD;ZGn{EzXAH)4CyMet~y zCg)8akZcq<@h7NZ+*HapNuBfnJG25Dbdauo%l~AIl_!Ay?YU*1|1Htdtm@nF`;gR4 zn(oD^L(xg}!8X#E9vs+Ov+*i;QwU=QvH>E z=T_wZoR0wEA_yKkw~mluSO2npT=*HjFalSPGOd?-J4Ug`GR~*~giCUMFp=*jRaCGl z5!A4;VSZ~lb^SG3S5ID1)jhn~dk9CO*KM8Cb!>ZHsIQiFVltg87^Kz|8yUvxGT%~& zquQ@xqis?AP`%%Q@wD%FeHQ7GSIs{YlvdmyvdrT&QA&RQc4-rPSzY=uLZOD= zs=m1u?{``?oebq|r`A2(B|=m_LPqKje=5wm<@Zlar%-N#E@J1iVTyYreb;ls3sjes&~a`}#C+pODLvMrk^oCR&IK7vBfZL{DWA3>?-@5hybB3P2^fDV?Bt{8clAnVh z!!*0u^0a1#Q%gaIs7&w0+l#{4i=*9$*Pt~tp$+3DR-hk;;t%`=nkVf`!NW}6#bXQu&Aa~@ zE*e6lK9P;`Db)O{XFx9Jx~k`L+I=Bu*(!Nn;c~Gy<)x!;Y(h`kJvXX92QJp|qGA5J z+PX#v0VqGTx3@Ds$3HQ>f<8r`2o9Ta5&b!QHp-J2tuFGnQEcE9_^j_|wpu~2T65QR zC7(mgBRK!H5Wxvm^9uB{>6PPnRWbl}GY#MO1fg;(4RZau6~qyL)CE0RcW9#|7jhD^oLedU}6qc7f#wQjDkw06Y ztk*P8b&TtQ{2U^{Tdc1qM_v^3dE%6{-P-S#dyy$8CLm%vFSzYR~Ay#^bE{(qu}j<%6DN6p9)@AtEKiLLT|E$cmhf}Zyc zg@d@FFC}Y`I?!PGSDr`p!wgQGOp^?J@Rh?Hc>c8OOjw{iJ0?f+#BVY(NhEMmrh{E@ z%w$7N&}moA1dCpC^$pMK)7*0Z#2n3#gZ%WbPC5~eko=CYa%~Ij$H@IKSGD7t}DN0B{yX67F{<5kZ?2D_Cn8QsG zSz%5grasd*emcD(J!g2``BPE_ta60yd5u{yBFo|)$omDCYHGtG$Y`&DX(KBXYYO`W zB8!3K$ul!D1Dg~-E*9V28q`(8t^yyU9LP1?$nnkf>&{d?Ni6d9YVm#Md;c?q0k#i_ z!Ag=+<)Y7K+p*Z@u2q5`C29DNu9F#=s*q7NDBcsBn_YFUQcv{Z=l4!6=xYUy*M(8@ z<~$6v(b_$GFL>h7G7LNK7A8NO7uCszo{1cw1t^KMT279Kh2jd`!d`Izt78}QJ^ zGPG=lxT9<;swUs^28tkZ_ii=CRty=TB`8|jr9fQ1S($)pe?LFRN|O^iR)-s7GtJ-g zUp#@Mgdgw_$CEO=IRM8st~a%4RK-_Fc|B=U+2mf9;7})cvDi}l7}b{W#hx>v#&-R_ z0R!7BCuT!);Ae^<&W#p##VKgekVb(zRQkX1TUHZIpU`Ut!*V5QSi5dRCRk*O+wrL@ z1`86tRB)Kp$Z)~E=g*ZnA*9%h7;;L%+(X>=M&@v$6i5ot%Na0VR;s(jl*8p9x&zts z+XudX4*H}dZ0@&jGq_9kV#}!i^1ORzk}eSXaJA>t)~khu`~y~2ijVlu`mKjt_|egF zc(22=-QSLJHrSts%snt1 z44&`_^Rl6BBy}C_>qT`zG*$WprmN>-VXyUJGd zfw!^?y6;pe$>5@vZf#JlOT1%nV$Q4+zBb|IuVZ9Yjw()RBDC+XjFOypLV4 zJ_7X%G|vzx72JJ~ssU(qQC^=0Rs2)%blLwIpU6_w^Sho==gMqF+y;aeG?9fNHkpU z-h`}&Z!u;o0^qPxydq%&hj(`LA9shmpwKSJ1XnNxEUuo`wJZRWj3nWao4k9MRbG&a zfV(k3{U^8oQx`WSXg7*d-i2016gdQV8x)9Kq#9qp#b==qow00hv9h z0$pX6Z0?F7L4eySVb!=wgV!~!pHJLRq8VmMV=%~xA`$td@K{9wl*o*Y$RezP_0175 zjS98AaBx^jVE{^yp*|$gkc*Nz#aTj}labcUi2iNHr0D#UuA4vL>Ot85HG#Z;Z$KEB zbk))O>C&$HQ-AfUdzwWS_wa(T%U=x5$bYo;#&!MLi+kp_fZ#XUWZIrL#k;SAW#?^M zLENPGsSWS5={fYMXl7jFAc>V`lAlMBY+2qp^ntKc6QE-Q_bSzVUmT%6L>smglx73> zVHTBqtL(Jc({@Go>QZ+p7oN~+-MnJkMwHA zG0>{Zp3)-Iu7BWQK82*Np*S_`x$qtv{9Qr2=hl$!t}i>|fRczdcFM-t>K6kJs37ia zG$LppCa+*_2+uhlln{Gn`VY#i3QGrsgWgCCzMYi$RuNPt#sR5bdm>{=SxR`wA#U4x z0r8(xl=1p+iGJrAF46JCWczEwl@uN4z_-{IUwh`Hm1@_I>C@kmC1?2oU4Y}5aq`IoA@!30{wi;647$|e$&W9vN9}RTCl)L1ZVNwu7Fc`z zxb3=I&C;pTHOZvEJyiTvt^e&=P)A2+d3q%gan-JzXrzo}p*cn8Yn9T~Q<}$4Pt|R|(XZ_`lWgGMm)hkSYVPCk#kfEh zyxKJ8S*lR+vj>OMQ8n+B$QIA{?KF&3VaV2LC^SgN*0SBo-!e*3J&k814puI6coNZGr>lp4`~JjsU4SgSMhS5J6MFBWj-u@e6VLkI94 zeD6Go=NyS`RlV_BY})iRE$80K9G!|r9hy@OA=hgXiQ<#ZOFnAVa%||P>BHMpsz6u_ z^98ByxKr3Tw(l1u0d%;ioKS+zT{hN2Q1|v|$?<<0VzyHUlq@1_OnRvD;ai)6qCLV> z{?AKb5dceL`vh!aeoPU3W## zwc&6i*^T}xN{7#++;eRTWbgR1|LyaXABXSzuf?BkzP1U@7PzC5WxlmU@9OHR_B*UI zp0^gYMX#x;fpT?qHP*)mpEg^xFMLUWO&4@yKKfNdlMIY;y6jG#EHc@2F5P8bqD!e= z_ykyPD{Lut=9&I&Q?Gox*C~Q5Y~J##T9gzc@8x#;EHFsxSMK&}Kf(G0VjoMD@fz=v z7-utNV&MGjhSQSc{;KNyuIKFc8pakR&*CNelvA|nx#zXmp>lZZw&)=K)$~~uC;izQ zQSA1e<14_C7V&M0Uk~0{svLpBJPUDO@RXAN_0Y>g_)2-~F_mFTRHZFGU3El^w_Z5$ zbFIpS=Tt||>qqKwBWLwbMpNBSyt9xjg7oKw`Om-Va@>a74l@(&{a2O-omO&O^E{Cv z_ZAyjQSL;~*VAvy_OiX&1t+PjgngNHrhA6ws$+pO3#|~l)Xzy_-VEHtYzXWm-^pNo zOJrDq(#k(AB93O*fse-1O59QbNy zKJ|nQiHqz*reqv&>P@B(Q^3bag$idNd=bOITiKpJ>tay6MlEM$I)?vIrhx?YEim-V zZIu)Fq&)*EFel{e1=sx6(&yGYmFJSXhsyNAwo_PDj-OmUF@PQ#XUXvFu)|NQtx=!Q zH+Zw4d!SS$OZ2?;?#X_Hv-DrWr*sGiY+(qLL5phWzpV986^&lff*9RPz5ugG^S9jt zV{^uScgw>Bqa?=b^FFU54|lAuQ-sF;fa9Nv!|gzcm+d_33vWYc$^R zq8~)|t{RP4r@oo{Bb4%J&d*MGVTgTb^e;I(-un4iL-Z$;wEC>&y~8)0yj8`g!lC7d zGV?j%lPj$A-J!rQXHU=RH(y?bZ@(~qI-<^K&>&af);usby@RUb`{{fM+e1G8;tJf% z%2n}o8iw8GP7s?Y|?IAQDBnKihN1#f49gZ{d{GiEG6{ z`e-qVG|3L#GoC;zS7`+W)#}RP@b}l?aUm7LI);L5oSRlI{4Kod8=}DY?FWbP%m1ez>%UH z@hTCGQ-Wv}BOTr|;7Lk0pVr>8qZeR3*B(XMmaU+TXR1w5N)=aD#92Nb904e^n934| zhG81iS4*?+5y0!ct0$l_Q#Qslym{{{05X1}R#7v!?i-W6SP6k{Vs02UKLg*g2^LKZ z;+9sZsjrKbs9fB%>7#+y_4LpASk8FkHxFQW>`wVBLDU=`BkmsV_r?l=9i1qUMQQBL z#43%i+?m)1jNXl{Z8mCvae!Hd$EVCGqo{rbeDN$%gjFdp?sqhnjgW}~#qdOXs^W(0 zNm&9@!OS~1($@leNAB~=k<_xn0)?3S4gSwH?LZnc{{=e@f9bS|de{mTO#O6xNqZUPeUh{l<oGlCZgxHDA&U6Ig!Pt4Fbekme1b9y(^-TDfcH0tci?A#d4Qrwp=c4jMmx;Fq zV1;r&^C+uvac}km)p0Iw--Cy^tuVn5T<}hnqRj`w9A-!aQIUEQT6~ef)E$ZBI4GIRG4>1$!^ewQ6fZ8k zwr>VT58kjmrC+SBvR;|{G`##2CYl+W2;GO-Xc%0gZU9PPcfEA4CfkJ2~|0E zl<5jHv}Y-~;eyTiyl{q7Vkr~Ia8f!~RB#03%k(M+a#C>G`!8O-`12dFW77*XEVK^8 zw92!yPbUf>Eqno?FB%YY1JsKzq-X%q3hs^(Z0wM@uO5gXB@)ElNk}<1iV+}-^2Iu3HU8TG3;Ow{I4|SCr{33(j1Cmv6d4PX7XfI) zg_+;OiU_|AShdo~_=fr{B}Ce`k;czy2qy9>@=*~bWsSEmb8L6>p3LQ|5p+Rx@m7L} zJeshRY~sRf1IP(&V`Us*8P5EMgn>7ekNO1F+z`b4p{}+#G*vj3Y|&k(kw17bEwh8a z9>gP~GR_Sj7#*~Ft*L10-+>qfKpj7Sksx|`@0uFK4Y@J=RUfu@7|fjw-DHn{}ml!CcCCrM#&3$j)JyW-Nc8n|_tt1C?|AkAS{?)C%`s>|S zNGM+F8Ux`Uj|et1g)4lZoze^rpOu##Q`{=XGY^9Z`T=E2adwF0Yj|aF<^!q(kuLa+ z<-O|EDVf8Czq2&|3{b?hyvl$NpVDVU@Lm5bLB#t8=T(J@=G;I%Y~*h;7vsQfJ}L#; zUldX_QsKjnqSd>>xvv{q?_L(`pIEHB4f9og)|;68##Id#k2TEmWFA?OR#e$#{$KWzdIJ7n{MR|;3}q@Z8{-TxgPs4RZkeC ztUwp)P-Z?Y&1BL2mhrzlq7%c?)oBtOBQe|zXrs}~EPv+ll97s2{uos7h}B*gY^ISi_j4&bqdSb*II*yO4QeG@6M04ZEV8>4fR}kS`=U zd9RtR4%;*VkQ|>}%3?h1W%CESy>Ww!xJ8YWl3QWeop68JcToy`Xk0N#Y9RG&dXstD zSU;Mu@3A=+Hxnu@XM$anr$}#{SQPqJnm8PX11-nMFE2sHm=*^sWdHg^Wc0=n zwi(PsEV$N%Dgi>n0dG|d%;b^8Zp41p=M<_nEdXVH&7R`6|Q}hX4>N`vTiFL~YygsF5+eje_kh!*lv55s`cl(N-#s&fiP8h8AZ z(oIhA^3j2hz1%rInT(?e`dlHdYq5dSKZ;$VUa|Kb)95}ms3i2(l!{@#8RDVsFKq$Ur|0!_;h zg(xss@yCrQBpSplm2b_|e{zxK12`OuP0pi_30UcmT<1XLe~@5x@VE~B+er;`=Hd{c zC#THz5pq~%V=*v>jR?m+Ze@y({?|-?X2knAv|9L`GV~ID(V0Z(4M#qo%B36hRCvtC z)zroo&W0vvcFI(`lhGtAo%imTIzN>KNC#=5Rm4Tqzl=N^ByFI>bF1)d_xjP+&nkWY zIMRTp%_?`80lq`j@aQ%B`YutO>MdK?Zy>}UVinvQsR@7|NzSn2fp`4Le+84T1u=fI zxf?JbHQA{9y-9`6gwKTe5*zwm#pK{ks`mS?-ULas{Uts8e%Z&D(Yp_@gCIb` zS@-m+EVmq#86*nn~nMt-t@&AbW%Ah)$u3OyQ-QC^Y<>2ld+&ySuu!Fl> zu%N*qNPr}`TaX|T+(IBgAUNE4-m0%|)%-g$)3SH3wf5?s$}6gt*53$FR5r4FjU+Ia zpdVSg{hD^&$Y8lofUOf%-vF&d{M@5_6rs?aa60^6{>e(HV)iiq?FTf`D_0`crdopJ5B5kpEGois>QQP*z3ZyP+_23--#xqOuM zM;+3AXUBveM`5zc#Oum>PmjYlEsyiuy$S3dXw`kODlcto zB@kZ}$NttFG62Tjy_@-qmFBl<>vt1bl_Hz?-&dyStM7mONiN4S0mF@M>t0x@n?ZwD zp1hQzqLy_MZ*=TN;4XPdW8~)T&LQWXelGL%9{VLiXPk2w@ane^KV_5(aW=g2ni z@PN|z{ewPI7H}`%ZnRyeB~Ic}SE00-%QI={*cYyb zAl@e)z1a3Y(R#n!SU$*Nd`3M$ylUNObQ18ss6~vSDo*Z*B+mkxYf;b}XZ&`zm5Kw+^4K*??5MN-K$v=I*YyXIar>uhr$aWHI zO9{T|xmjw{TD&~Hb--Q8MlPz^by;2jyvCmb;)2DL1H4KG6)UeIq~`__*%{&;)U=Zp zBu&bx-$G@l;{M7>mYR`g8L?M>qN?}P4ZOrO{4?-+-HQ`a!aX2q)8+2Jj~*!7`Cx7u z0lQAeN;EHLS5-k&&YR&6l+uI)3@WnZ0zY}&%;le^8SEi5AOF?K#0Zov z5Sz&SF|N?b!8OYepGKWb#lvyr$h|M5Hy-eMxqP?0AaPCSM?RAIhoRr^C$#t`4UfcX z`_5~B#{Wb<5*OemImp3EJf`!*dHr$r_YF60?q>ULQ7NO~7p9X|z8^-A4PZ0Q-iCBP z9Wj-B$6qL*R-FX1LwwSQz-Ko9v=mI3dP0V`^~HM?ujAs*R@+23d~%}B(XM*pWOhb? z__$LD^`Riey*x`{7ul043)w%_BUerQC(AgcH;Llh%3S5UkNw!I&csaIe%9HI(whBW znXIhQ`o6V2zj>R&(nS{j57^yfZ&C~hgxfFAV{eo}J!^6$cxAT8pz5@_w70)Rq=AUf z`xV&!l#2wr4+3F8`n$rb8tiyM)j(cM_x7RoKT1yxc2D_wH^foK)qIkW8FZFHKk7q6 z(&s&G(XaC4URdN&;C#*ia}i-hF(Sm!XFZMPuIO94)yyH&%^1?TYK!$TCxBa52Itq zkT#wplfJx!Mj!w+ri1O-PW-DVV3ewZh~$G|3G4J<>%Y3k2x;}sEwvA(@zkOu;#9#d z+i<K+p%ww%HT-XaOl-VW2v%e%-I=)J!5lP>Hc4L6GmhBnzfMWcOzutUbN1ub?fmuT zV3#EOHIF|t@Y&S0)1z4xaR*?RU%e#f;_!PXvUY?*K3wWyMh=X5r+m}s#URbuww*wW zh2zN$l8z{D+ZxHhzr9bqM6T9lBD=)uxX$yV;3ucl`K>ebKubmJ4AlC503m5Sp^YXp zp^pI|&lvV1HF$nZ8PYbB_7K~z_F6sI6DIaD87b<3^b>2Ubz=&n!oD`D@JK8{P>q@J zr|(%>T*nW2u!cl_edmPsT}r34qrPzcCaR|*zME~jB@kg@_*XWqkQe)UM=*FZF|*QI zio!bp;q;vBN$dg#)$z761HXr`JpFo44IjwaJ_HfjU*_^Br7K|f^d@IGl4DTUKP_i}pu-gUWIB8>mnmOP=)A?9{9PmY`;zu+ zi%>IZ+bs333whf36-Q49<*oln0T*?c87tnth$ZEc(wh|_t3TBY+zYjAM2H>?ns$9( z2)P2N>K+v!Z_`8dN8FJ1N^VOi0%hwyv-`2-IAx{ExI7Bo(DYKz>HXxKQYPoW-{6{I zj6d!jWqNWTPfZqjpSNR|KGg1hgc{xIx(1;xuIJ;=oCq^n9miY#{n}@d?B8G1 zRi+5BLOsQDsc&$(W{R~0fNa02#4pK1_p-2+H;hj$SZ&-!kY8Q91pN0@azm<~XP(~p z`&02MZRv6W2NO<09-X=Gzh^K=Olx+AC2(s%GZ{6L*jUH|N*ofh9MCA6osuCPWh`7X zt`zsJ*oVp@CG(?4Cmp-yID3mqMuYB-SAuo(`KQW~u_$6zh7mu~fZ<>EKdc6Z9ff{2 zRIC(MfdJILrLC35&mclOFQ7~=dEKXKainB3GvBE19QT_~U04dO`Qfy(7hQO_?@F`F zyh|>GPEoeC?y-_BVbqF(|y1)!c-tOBxH}kLv z??;vI&fkR&yb3@%`Q%q*4R^jYz-I;7O~z_H?rGb>0;bM?fX$g=QkA95$8Ep6rk8-L zvlB?2vE%eUz}V+3yg)85IY8uaaiX4={V@shIPEkcb%ua*3OHgR{E7$aLs0vS*3Sb$ znS^DI^1bQJrglFf`OZ~ap1cIx+il}Do&qxhB9=GbE(Gl>z+4L!or=B2hc!wo^ISpU z5ul+N9uy@fm?yITtdpBxVD%WE+CM>(m(8d}dvav|<`jOHwKB8NV+)z+tGK;h9$7fH zg{e06(uF~~dY)&aQaLm=3ZBUUNx^xt0cAd4v|;6OKX&Ii^q&Cgni}s3o?MaXA3O_C z*daUQUl;uI;xb=aj%7nsQCpq*1Vnv@{2kjN{ z*q>d+bo^3OuwtM|spuiEI35=hA(EGMLk<4jXE5`>PJ9e;_#|awMF(8YQ*6v|bA6^) zb+br;moU@Tjr#)+G9udOJEEjM*oVtl#N;wozpV+1(y%j;T?KrRWibv4J)dBh%d7&kl!PCbt!r34lJb^&SI9b(eVLkjs40tb^DW>U<1KP4OUghqt1 zltSrf3M^Ar~{?gmWL61OA##c zst_i!6o&Iq_=yc+X&;S-z5ePs`|tcU-D4@-!{J#5q+!a1fA=fjv(c(n7k+TUImt&?X)^3jH?qlvVj~NV_G!#T47r-pui+z48nsov~OPg zlUgQhSy=oK(m+c?{^R!#smh->>MzQ^q%!G@xWQA64B|jWY5iVn;DM7CT&&}VYOW0jq^jt)uO|_B>ATaxfmvI6* zcpU{6xIIfFv*VZN#;H*IsRR%{(gyzc0pirvQF4!y ztukcJmNZ0OFAjCWef-^0enAB*4j>{t<=LIsZ9&tBxQ-rAlREgobGL~dmppl#;cOFU zIn{a{6x+)Pv8X#!ja-i23mkR~d*ncPh{AV z`0JpNM{N?P_kn8s0w@78`;LB8;L-C%narq43H^Fb)A?9mkD^kPs%*)VamVZ)V7^N%%B`!rpx>h_V+i;M_PHytf zmG|c1!0?}xHck0QS90)dHBw@G)qjHgvWUTt%in*FkG&sSn=I!}PdbFmusc+!iGN~IGqBJ#;`~;{Gi|pS~TzK`Vf}) z@PV$MhqV=W<?~qdiJotElVwMV1HW*FJd>W zo`;0+ZAqewlzS#c-6>FfR+NKFkXN6=y9?O8vro&Jj%%3L8olS5B+bHlqB1Oc{k4QB zgnvtDtFdyWzBTPVpZ_=0yCB|96N!sb(uzJvMTF_(2qUsx5_S-e!i{0J5YNV!cwLu;PMA-z+6;Hw+<$-ouNvueSO1VT z)ToKS?qz#nppydMZ@4%fx~Qa=Aj(sl$XixmO~k+I>pb(4Kdh3yu8!e<0V#emCJ-_?gu zmGpNnyO`H4kA|BjbuW;l0?yHdTbFCuM}1jJ5)OzcpWXOMrvXVtbosVhBuENl;=)6t z={a0$vJxYQG_i#tEJlu(~A5bXA9gs#IoZ}xx`{4DzA11!mi9yFpV#-a*!0cK-b*nN&k-# znE^zws0SbNM#9Lt@$1E--ZxWadO|F96>EflJa3?tEB z6-~{>b0~=jOF~o5cZaD<3pPI&w&{xb2r7`id3>nA+~>B?oa~zkW-ysgkzM!k%aT$> z-g`Bb_>!qmG#(an2a)=MgqW+{Zy~ei*EjW)82S<;@OuN8N(#R>(;;qZ+%~hw+E#_M zUw}ikk2t0?>awe;8yEDAb3AeNaOedwGJ7w`=D&879&?5TW6}zX<}az0z)Kna=2;0F zQrySi7vhJog7`V&Yg;C1x*(>xDMgpJbAnwKvj*;PfJl?=I;@)S6C9UdshAsye@nAH z$14aUpn&`2QJ&rz(Bbz$XDb92o2{jnfRB=6q-*~F^E_z(R~v19LM<4>51X|+3j(p_ z6GaV($7-_Bs}i8BykY)@kE4Yq6U;%mMU`3B6H$|_Y1}=MClZ4Yu*+7(mkVk%1!gF(cciKwZ2Zn%rh8o0~YinElwMp;(ll$r{iOk)WOzVwXPxJTAYtU-%A*? zeRhhA=u6?d91>TL#m;=TLioJ{^s+sBu7ncF?gEzCFSEUKalJPR5Vi?jnqJM+r7c`T z;;M!f9%IX*H>~*e7$`dDOz^0&OyjG$RsEq#jEKCNH(hneg_`beW|x9dM8zz zOe!q(LY1=U39#^>(`By>H$5}6(c{$ct6@){p~Icsai^MeX(!N?RRXNpwDwv0g)1b* zAR~coPC0|Ve(1kDzsz%8Ula1{zsMWx{P!nWSlRU2GH;c#n)(ydIZ)Qr(y&AEmFp*-~$HMmZ z?2gC!Mo|Vud=d>kP91+#OPsDpH*O4qb?On)$$>G5j-;-_!R|0dvBIbDErM+y=aXpl6h=p2fEw*gC-JWje$mLXti_!ls@M+T-~;g|Uyo9|G|U$O=ffDN+a?Vmo2I9vK^=Ls|}T=FPh?*pT_ zN#5u#-&>%@=g2i%e2jP?3vGi8OVR zqG$1+_~U%JGVaWOGkrZnryvT-D8*ET)ps7qzGs471R#Ht0q4=W}{D@FKYbLepe0 zK~i0EcFS7MV?rF4*ElOBo7nx69MdZ>G_++!vWl0+XI`26V0bk zVi`A(9ojha2fd*09gAE{d4k@c4zU@X;oBFl-FHN~O}Z?2CNSF;4wj8mF;5aR53w)4 z<-{p12&pv26;R$-fR4F!nS4}xpu571LYHJ{jDuV=VmdTxv&w}pVUxqrKV!{{P zEUfNAhj=YN3#9ufmi45{^Ir9?2G~=X|JDzo0hZrA7rOo%bj5@e_s-mY!cUD2{#%X( zbJrNxid%u%SJ@OB{;(N^cB`K*logT<_B#JMqNrR2n7TJt0Ww4;GA0e);Q;-~5q#E9 znNCjgq(>s6j;Nt^k9lPq@j_Sj?_8w2iYCkI9TrI~b3BdfYKgyMGJ1UE)lza$zu(3B zUCex{TUUABj9kD{Sc9aP9e?EFYFnllzWgYzAj&hf5#aH+tIbbO^ktoQ@_f<^%RwZ=A+Y-M0tAiVL1r4ECbiZ#1kxvCk;0 zpCzeUcNoJX#P`mS-omh1x8?504qK8u3(jx>%Y~@ZRDh|=8I8y#xIXaPg_O2+@eKA6 zNlksL6v=@##)+VeTl%@~t2DX4&XbKk23{B=;^K=8;7gfH#^O$-FoiqPU#U8%5h=7U z>X;QUs2(Imh`jcXOm)N<#4EOL-Nl@K)DK(SiI~q_4s#|lpkyjqn=qNtA|JLaxXi#4{ zkxp+Sy|N(3=BMQGL)JRvn)KeEuyo4`;o!|lH5nE$+sCfw!89ODK;(4k{Rn#k;EuGX z8s>9kU+0@fR6L)+b1f$z^vUTssIUL-SxdbS0`^ZfpCm7#rrL7f*byP}NU0$F(L@Y` zO}maLll!9ZO|HcqNqs6|0p$TF_VPb`JWoSdY4-;gmxj4If0@WC2(jOgJz*_P@>yBx z4tdalRyNRs)(7HIqbxK~5kPEBl6~81I*;j~-UeGuY(4F@p^zoMp-dj}9E;9sgag72 zO4p@rx*E!{czw32lM*4@e37rbra*iXR}Twtb_}@qvs2#<_ZP%Hwz_c*ntFMCDYhXX zy@dBk>^G=Rz^kRDeN~kJ?*AxcohKJWEGYKtYI_F{8qsKafApv^k=2xv`+M`xaf4Qo z;-qy}8op=EtG2Vh&eQI)?I?<1{hJlOJN>7L7N_rh;-Vt0yDVYFVFeRoytyeTvcBQ^ z?8gn*bB~opZVO9=&7Yln@9eWC#rzsiMIHG`_3=X%N!*bGHwp;*a;1zGYzr=N=zH}Q z=_2+jQ(%{Y#5vpOpv?rX-_R4ZB3Gp~O()LFD%`wq=XBRc^V@dg=K$O5qw^r+m(g_N z#kRnq)8N&+|0*O1dWN#-)k$A!S_up=zFR%wK`BFYl3zdFbd=&)SC^%N+UQ5o3k)-Y z#;wzkUGYoRKf;+mU0-MY1R|Lj&oGMkCiS%_wO>PQWv5)3G?S+HrQKrBKt!)8g9olK zmS8IGOC4@@we<$T9V)_^F)THSR7|AF=(Y=@!MU|BJe3WUp&1;=*G41B7*`$dcbzN@xp6s+=gSQuouTfMpgWZYV*GL zwEY$Q)?64|7m8yrxPz!RKbls?YWKx|FWr*mL#%Q$YuPJQgK|fdV>%7o!0%OL^t5(G zxSzXsfx)t}j_rYQ2b@t@S*X*(2-j2{tJ!(UWTwnIQ+L|qFTh@AhJF>!Fton(`0ZIV z*W>|J{f1E6EJg2loV0t^$|;PAH}&`5Ca(I9Ub72NN}hHmHG!V~Bz4}ZM4A#?A8#0g z;_q~flQ9hz8Z+&sSOE%BM|CYEYa2Jq4v%_YK#NCl=;wH-=w8_-5~71TNFl`a!BXFs z^n4DxtNiMO?+CvQRDKX5oJwGy{zChP^JT$VWi608!Jxg0U6jLDPGmFpUV z^*a?JVn#7 z;N%o!iYp1Ohx%=kA2Dh{j>OXNTudJ7KFw%4wx(>9mlb`JHk7eZ*Q|{+h`W3F{U)fN z$ual&v$xSVBO)S}I5AzN?V2zh%GXHjXon*!L^L!8_w2WjzP=<^@}TSP=Argz z@XQCSp}k;duTSCLn{)N=es0nlg;T2#0S9wj_v`yJw1PjDtPYzbo@x%m=loSxgF1Fh z=r?qJ2tL~^e5xQbgsF2o+Mx{?Fmwn*C}oD!xR?l#SFu{{P9oJ%U1G$k5(kty{~p_k zhp_l=)6ep_LgNgj#t{h#)^!=IawZ%xD%D3l;aN!vq3K-pJEJImg*hh&RkaU!^YE^L#fheBZ4S#c`+4=-+IFXO8%zENS76x|{<~2V(?i z`P$OXvG+u9+(Md>A^7?YJ5v^hcwBHQ%l!r6of_v~8JQV(Rha8jeXOJMVz+i6jSDb%S@Mf3U@N1|s5izG7p>OCigV1kn zBaia?ky@~p9#8o^gE)I+uy<&q-@iw7l`xhUztkC_#k5!0aOVyx{GG<5RJlOT8?extUrdO0Rf^cHYtm)g|OHGx&#$scp%umDlT*w_!XxO5bnK30UM9 z@i+W$PDDR$$5O6lInRyxT51B#rQ`h6PgE*}->t}1T%33;Zn3QzP5EXTOigpt1m{=| ze1)dPv29IYufrLn5Z4a%OZqyGqjcO~=sdqvAZmjycS>IQqWzeA9py-tfAQygl!f_x zvsa(f7HKPD5V8d&e=;n^lzn}+9((WZkcp*rb>Mu$TQQD85c>P^$0jE5WwEtn$=YgW z(h)tSHP2IOQiX>mAp)mXzhk%N)R(CP&X4e;q%p z$+vN5P?ac3LD1i4dtd*QCnPhlxZkwT^KUHacO*ojJ|z5-Z(+W9^z*RW;xZ4sQ} zm@z$RWL|a37cFBkR-*vDH`DC43h5tvA5MfM$sM0sid!2H(mQ-r%EHC}Nbeusr;pxT zjYP1+iWcmh5nfw9R8m2?cRlRHYd>}sWIM}b+hHm%q6N1Weh6rbo_Dj!D_i=+p&EQT zsoB{FNKtMAsZXEFj8Icr)3o#6M0_sAdqcGaQE>~um}fgFwEYICKTJFS;8{77IeUFd zD_gK&zlxcoGuFAMkYRI9cn!ZSy4j@xjMA=Vsm_k+SZZ?ka@WI^R9ms=EXfFU6jJT& zx4~&~DKRR6@BcKNjzKegM})`ro-ZAIlFYINo~#IlE8nBCpxg21{L_p3Oe#VmwQYL2 z43d&}SV%4m!(@QbB}6bqZi_K`T0JqreX?X2rI4HZg;(U|)b&rw3wWLXOM8LyDO zVqslxbK=G=HE_U)5g($zdFL%gg*~i=Bhfjfw z=`xGs?|c-}r6uEsUz#;a36{9_VyA!E)h%Hm;05Y;Z~=`?1F(mk2kebY!0w5+EgB`a z5@x2S+kwDu<URLyTPn(psn< zXv;ch)CH#{H(6fN=^_7BBqN-plLR?`8rI^W+q;1a z-ghMMack#F!UUEC>jPyfD^L7aFR1IcBskPgLbJ_l^B2anaZESm zZm{0E6qo?KZQ8!O-d6-uxf2=C1PpP%6gwzX7u}KUqUT&-w0Q&R8z=eL6iRN9G;e@6 zJdStyUvML+cMR_ediF+DbP@80(V-#>I|^R4eVgF(&nvq?}C?6dTX_&C?AD{dM~;u za@aEE;h1-EGWwpj#AIg>z!GgS=6kH&HZcwG6eON-Y+x(-FNM_}V-8aNk! zOE8SDss2r&edDzCSQnvI{wSa@4s`Op&@u+($s0Bhks40k!1LfnwJxPCeZMtE z%h68!?YF%mjTEsxW}~NjL4W`Tg{rD4uuj*~Bj-?b>|CNnW~eSGSIC7x1kh&QnT^%y z@?pRGD)#Naj+DczcDKkF6Gr&*T)X3~`-Y$nIpZ65V>NS))dT%A4Q9t`)xCd|1g=ZO zG#n)JDj?O5!ZwMzu4j@zqES5+CDdnEa@X?o-W`6&{4(UX)Vn9QLzmUwq4)YMhe_^} z4;E&Ta?sdU%WP06K~-Wb03I+VG!sknuzz#qohU_!bxBa`PMb%&EJKeP0@D+*Ge~bx zI>!2={qn;qhQ4C_`BmQ8A9x(?BYxl7h{AJ%8jVa568v&>(TD?oA%C%GWGWj%Hd?hK zeyH7*go_i7slnU!`4u#tFK3phwss}ZL$L6o7tu38ByWCBK#=ba+!%kV1vHtiOnqoc z9)ZPAEt_25Z*jp);9Rmv`toj*aq5wNe{-lD_5qFPUOY!A#uK=V4s-S8zQc`Vtr*9d z5%{GkUafobRgToz-DGmQ(|ej*N~Qzd?~^1Y$GsU1!n^o^nV`QA8ILuLt)BBmr80vg zU$|{G`a?43Xl^xtschv_|7UG_;F14S>JED9@0W9pb(zG-Q@z7Hfp+3cNH^Lw?X}AL z-(zxSEZFn@!QBiqhxH5MvrlK=3o|IWzltP1avC)u4E>$?bjsVzjEH)5LF~u)`FYzZqQf=k z8jWafr8%EKJUB1#gNNhKi_Pu^0cq;hEZKDT$+V9b`3v^OsY&R3lmGN1QR0GOn4K05 zxSU`G2dLG+$Cdw%baX(6phUJ~6e?bj#kjCK)L*Rl{@?d^HmxQe8L>1L-QPaaLUltb zM}(-k-saw=2etp+2qclrmF;z@%=f~n(ul$cxi?eJ(cUrF*A^`C(;s%KM!zC0eX(}_ z|5+RyGqUq5*Nsh$tuocNJ|`;|Vmd&B^dr>_gAmWsS?;vBXL-J&cAEPnViYy_<-zrP zoujq}QXd4$keqavvV8Wg&CM~pXrYcgRB!&e#W4j5v$QgluD?Q#eufj73-+Yox>ebe z_nlX6<^^{BQn+#FmUfW^%gj?lui{F%L7+z#Wp1xp)6Qj3u4&~{Z_D-V0{CX!i3%KI zUm3Cs&Ka}o3Q7i}kXlzE`l&I&7lpMMY*28!a|0F;sIW%b>a+ z+2nTX<;v7yY;V?zw7GlE0X^r9W%x3BYi14BI7TU{K^1Ux1jLgdP<=%^y=t{2?jE1j z23S3Nm&hvH1CixTWI}h_tu$Q`(;`B@Or;hFO@qdCtqaM zez5d&l)wj+D04zKXv`%>;vGMxB0JwG+}%&9=f`0SHSvnE8PKNV zPQqgyqtJ;Ak-+npI7SWRjXm%f(nlN$OnC4T{L&2FOA{HV_tG2m?^^R09>J+96J8Oh z`F?;YH2@0TVpPb%Iq(DX2k7}YZ%roE)8%8^ejDZcwIlnGzdp;35`%+z5z_vK9fd7x z%xR0r(oE$CiLsg;HCfHmSGZJ1($dI$9}-<7DV~^LSs1{bJCa+2+}$^PYw4fm{c}UX zLJH$uJUEsowdho*)g0ne5WxY#FVL_0Z`EK_G|>)J^5+Qb?}!SV)F%18q62gUOQ!jH zyTJAhljJ`$er(40P$wshtT9slI%DK95>_$C@SIn?b<>c888-6y*BJ1Y5V*^OFX+4e zOxk@+iUIW5ZvYDKC2GAYNKx)S&X?a83cmNRhP`r8NIwm3SdHKeO#63jSyW+OH0Z6< zx}P}vc)%4Ym2Jol7u|O?t!xFy)68sh*FpLnvrp%tb7Aj5<$(-%=T z)qOG_`SCM@D?un1!s|_O{9vhOX6KLW0`=VBM?BdaOIUVLfg$tDs#fHwezIk$vPGVc zdv>QHg$wo#Hy1zQd(`?)*VA2X)}&j)r^PIAc=^Qr8$F;UcY53`yXN}lWL4x0fW{#R zm03Q$wdq?myzR*=AzaPE+%a$Ws|f4>k+foI&C}_$d&v1%r?ip~ zEYm6>T{3vt_6XS=yB;-;FRtJrypKw3*%ise0nm=2la&?;GnFXydoiK+pQ)bNJNR76 zi}^*u`J0(#cZV$8%9H7>pH!X%L5TU!>&5y*x6D7aZy|N*MqJxgDCf+P3`@zw@Ac?) zlBglAFd7^N4OWr^Mw-VMo_;P->3-&ihNBlSw@uw`q+Skh90CrBu6gG?2R^ZH z6Us)1=oG>}slY@?O7C0lr5_}p9JHTkWtY8gzPD^L-J2?lqJEi`uUZ=;Lfj)8u2NA* ze+umWBLl8VZ^L%EnwhI9{{+F&EQ2vUttad5jNTU!P&xj%Hkvl1w7cAndbq)GVg`B7RgAJ0octiFPxNMbSRX@8*0_Gf0v%akV{6ojP zG$S?T;Imx~`w;6ou3CU$rs2>!c!$6tay+6V1P`{g7^H6L+IPfY`aWR>5uvqe$#bJxCZd(Tb7unLo(mbmsVC1BAqxlqioSDj_71EcezJUz(MV zJp}6+bdPP|NoiU;osG#2hdjB4RFQDu$JP~KR9=rW`)VGo ztEuuZdTaV|HnX@))8ND{=ICEXgX}#%yUL@ffK}!sk44kYVEZe`G%m0@AQx;FA}Li^(z##9mr2a>p%8oewwE+>_D!G zM!^4vcjQ_Lbi^+hVZ0-*Ooh`5O7FPSCSC>lE=t{WFFu^7bhXG_e@&z)y&|2DP|w$$);INb=Z$ z#eGYRuE=>O3jZteA>hZv(=YgBN8-8ug!ET(;Bb6h3Gv4=n}KbTfSF$kB7vli@Xj9X zTo^eY81}6_c~UrJnn!I~9j@_9c|qO>qPX*iV&jJef`h%Tj_`6e;Hudx*LSxKu8l8j z-GN`~HQ9{oN>~4MmlwdOE!UO*@9KlYuD%>1{ z=)m{tZlGJ_(q%$5HUg*kZia=%9-md8B|iP!JCg7hKZvM1K(Jrt1fIfB@lw|E^p-0N zoS~$idtW3ej#cRjoHCpa?8+b^t)yru-A9L?x%W+ZSI+V{cv#jnC^4x?v`dBWe?9$@ zZD!Wt0W!l!beK$RIjE`<8J0W_>v89|69C*rNGTD$Ib4bO7g@ox@y@F6-=0AU#zy0) zjq)Z~r)Etf=`?N2v(%VG*EUOpq;lueN_l8Krp_zO^su4=MZ$1wbm=_!+s1#y>qFn` zV`++o`7Q(Jfv^q9-52os#{WFtxu+VHJhl!5cyMCY>yK!j-!U8~jF=nR67&%mNyhX; zI5Ei_-=r)se-F-_Sk-VKdEcQn+8lh@97_`x;Jx9K7#JV0>zoB|M#oHK$dqMFvc))K zPE(a>?QGCY*XCk}6TuLKK&rvzwK)HS*M9ru-}MWaee6;{nU_|)AvE+gvAm6qei#N2 z?z9N~)0%j*{0m6DRJ|(?sH9QYvPTsYI6{yxnzYRc&NuK{n(OtYHim+6yMCg}7nSnY zNAQlXJ<0JYthQn7#F&lg82EG&spD6NRpc)qAYV&k{A#!A4@eqO7#u}Nn^i}{y}&@$ zziNn2f0*$pA24Ja#&h&T%dvUY$|VgHF{A@owqiM%7|MWDJuAka&1wNQ&97*(+^Kw#6g7j+l==)UQKp&H<{twqyU9LUHQ&vDsEJk z-*(8T>YhEp5~PFkhZ-&k$*zZrJP5La(fKDu22d=Ygvz({a{h zPFwHF4+{Sc>y*bI1uz!)^ec{@KSdZkcwOM$CKwZa=Rw{l%c!L=e2Jjlc`*b#tcJWF zzLB_Z^yP2~%Nic*6EjK*B`vyi*Qo049G0R3`K!wj4`e@!uG-c+%hO(_0g&1AirGAj z&-drLe>T$mwHiwh>OnlfV?8otn}c0N&IF;P=Bg+Z2UQPX^FQ6?3I5Ya=bk^Pyp)FvSoQKpJqY4yO8xNszx8dNgSvTu#M7jr4<`Pf1navHw{#7zUbCq9fuHF3{ZY(U zYp?zRg13nUPA)aSVBr+J=lIWltkY^oZP_5Cy9&R)Q4yJ#E)KjPfNp#+?XxPaw&KB_ zA}1zguK8g05{-xUj_7kIt`|xq=F;!V_?WQp*uH!5nWKHYJbwx!452TZh+E7;9k)M6 zli@xiM{Ey0G{8!HzW?O;TC9GWm=(SVw0T7yx;oMqhm@!Xicx+RIq=7lVaS>M zBKJp_-kb(W$Tqhl0SL7r*@OcX^-WCi?VM|=6jWK6%7E4!l~8tmEimKXm;759Z%_FY zX7l*lm7446Nl5V|@bdALJZ?zz_%MNr@P)c2^^PjJj7{rGa4K|e$t%N`+Z7ZGGSLC) zz}rvJyl{WTyXr@T41V`JXP77?i{HK4!jz-z`dJ}IKfQ+T=qH;ZNjx0c0uGYr`9W

$=VNf=jw5@oes+cc@9-zZnqPxgQ&6-FU7LWqKlC;zEUW!dF-)fA zgo1_YS*48er|plS7Uw)bW@+K7uHR*nu~A!*lxf{0lUOrDLMu6URtS0({pn|xt)6Gf zMRSSq>&}O{E*0y-O`cDe%o3dO=5`${P;|!6cpnbz`@QnUEcI&t?>9}{9LmP8S=gRw zBL4!vB8th>5#8)6yT5!p^EcvFHwt{U{ifyu?>(@&cZj|kW3y)PG$ezJd(tC9ZrOjm zUadZaFrIe?ehss;A5;ELul1W3vH{+!A-oJfMplWWlR%QnK%zq^3uD#^90PT1QmV1ulqy4-5=kBP4)&Q-UX` zfx7ETtF{ovK@k@va%^z>gSBD#d`?+tfQh;{qr^q%dOB;vo_Fd9Gf=1%Vcc*pg+oI_ z<8A4bnSor5;qT7$wS?qkjwVfX-fXu+01$N-xl(aOqI7i&YtC;n6mN}v$c$hNdcJs^ z)aHKS$O#k^uHDLaKwmdR@f};;*p$j%5Pn7msjzISW?_x*gwIydSUE*xfm_3YF4;)Sld9y(M{kkJ~Cct~RL?#GFSxLv4d zm;-;Za15?=M-FPn~&Pa z4oBA?E8eL0o+W5wU2*T9Y3OO+^Xl`(s9y=J3b9;4aW zspYO&f1BlXKWC#e2L($0N&USO*7CWD{2GW1sA-|}B%Y&ocEQt8*|IF_v5%PhdREHx zGZi=p0iJp%1`zwXzZWhol5svi*&cHlswh612?y{nWMF6UW{ZBOFAcQV^y$-=;WES- z*(}TzysoAE2&En&0J;liA4^PpJIvVRPFf{4M8R`lp<8Ze1F)}{?euVA@ne1^=3NJ} zFTW#R>^-s)e}{iCBUlMrIS{d@1@Q)XNPa!S7mUUnc*mUIc;8|Xc^dac^R6I#_cJ+J zM0sq^j*nWc;#&+t?VAPivg^v*f6{p%xM6Q*m}Xa~V&(3)Y!-bq{@8%)=eQ_2LrVhG zr&9%YdlEu2mbeLmPd@qeA2b7(NMcQ=IXG7LkJq+0S%OKBG~=?5>F+0R99fg%mGdpn z&AA9RPo7_os%`0*K4IUI=&$-@q zdK<{r@qcxtuyR=3r<4W7q`Q!ikj1~;XuP}N3-9U=*kgI_!qV=eKqHQG>aT1I3C`-E z)db&SEhDfd$Ar!7MVP8U4jo>fh-e`7Cd#E4(u8kZKPW99F50@`QerKrzgroMB*n9L zBy0x}I>4gYTr1IB%RV>$zM&io#2|zx7 z)xck*#Y%5F_&E*#y6*}QzgOhL3lAIdw30HGiEc)53>&O|T>8Pt+Mgw*|-mwzBzP>@C|2{W;dwcte17fK^p6RoWEIA{QpbG%Y#y@SY zj(GMW^O+%zvfZ`86g|9O$l}#>s*sO#W~eIzcY2T8)n%OFYP>g(RkU|-U^u7Bd5Y6l z>Nk(Bp!eVK{JPb@8NSNP-w^m6k1*Ml+VjJvRK=QuWK?jM_e-Y9%SUXx+#w;s{nXr7 zny_DWKc5@uHx>TA#3U}Aa;nU+tE8KaULgl~ez$IAjW(XMkGf~MkIHcIsqz|~vhGm_ zME*Syhw)wfLJlTU_pK_h{BoV(1Z7>EDqwx)wT80ATBjbm)^R;oXk}h4PYEnh@*j@X zOU2`s^o*Kk@o5JjG!4fpdHlxR7hVof9CA41D%or?G+tNN|>Ty9c&k#Kq~vdG_y z;w{cJ5IFJyyy7yWV$uH|72}QPZmAV5sMUM*0WIGfgezlg?_%qHq z8#)*$4S2;V{`t78^u}_OTUoo+@}IGKrB{ z{7!H~7<=kmD#>5aHu&fP&E6@UB;%W?@5qa%=oLttO9|jtaV@fE8RG8CD}Lx}F_iii z{e7Q}sK4RR@9bbv{_uNJOs4SSX2udRIY+3A5M^>f8}`v zVXNrMf#^ivxl=T4`Xs%$sQf2t+tf+I_p5F;I3prEAd!y&_NUz1IGmKJ_pBU_Uq!{F ztQfOuufUa+E*^`R4qSmzynwa2&naUd+JtIQwQjE+6-!&z(88sW<8oM0sRbN-ooo#h zS*B5*7+K@e)QBTv>X;0Cu(VfgzUOJrz$O4yPDlh+hCosbAMj@uPZ+Xmn=2R8=vib6dXgxaHWKjX96N|GFFhmUx?j643(!V!~YE#kkupl%MpMnQ5AMs9MMHnJB%OQaHHZ z;aLasv}X$@Wz0oisAk@}eY?}*iAGS}&7|KiJshO1YQFCdxW&V&z9JDBXPP+2#EvAy zJ*xfcd6+kBE#u0L(!{eRc$kt)&A>!Cwe`|INLVnu&^WNJX9T=^`r2%G*R$L&kVZhC zy%s-va#Y89;n#R&J!v+tu~Rf^@;o(#*Eadd0;b0JcJO$p|BRyt(vhiPy6y7}K}>x`8bdcItk z>Zg?ii3Ee{e;g?++B4ktTQ(Z0F2POI5x{))-@ zD#**28u(=*KqpR_Q=aUvYf9crJAVtz_@kg;~_#tyuF86BQjA}gs%+J&DUi(MUVuDGmL)r@w=x+YhPREZ` zv9ym8vX5JqC&e57AY@F6#Df}wOx?ZNa*Qw$F8gCf5Tri^?c+G6xxGI&mT}n+K}}u= zvgb>U6B&|zcW!uiym`YZF8-~yj2Gm@&1c4GwR-nU!-oVVyUHN+&V`Ui`&$~yvBwGm zL+#G~NY1Sb%K7Tjv17-~mEkwac_k%LB)(hiW(EG)AK5v)@t60D%|Q=LPtDHCoK4cRb%@aKnwu_T0uh9x zcsx-L6$$l-yl6`wQyrW!IAdRdi_tRJVE=&?tr4fW*n-Oi1a?F z1P^LI^5WV1vovML11vx-&`gYrIjXo7bqm-@F0Z(`;u^5-G2a7fUL8!u0}5tfu;L-F zm1=f>K}$=_=OUZc)q8^9-!3#*iw&CR0w)Fdte-zetw5Died{B)YaThl=sV$T6D(cC(HD1TpJe zRa8<2oysaJ)ini8k2#^xQ%Yk5H^X+ zAKYaW+t8V>COW6RUoPZKYTY|-A~^F5T(vLqMazE{s;l$$-d%bth_U|%6%{fQ#M=y0 z;@g}DO}E}QnM!v(?TuQTZ*xyG5^TcfT&ChKi4c0~o)G$H3R!OUo^HUZv&4~x; z&`mwDrkmM(Ls~(V+%IGbrpYFJ&n{92YCNy3mt>ScVd0FoRO>WH+s2FDFqOoV6wZfiY{g||4pq+Y=S+lx zLOelZiCs#xUna}PTh2Bz3yg6=@4lv*3R?+TY~SHu-?}O*`(mH2$hArf*c!a=FYG~B z%nH#5{(d%o*58Lv19cbTDeW`acOsd7`|YMXor?;!Oh`PdMNe7RTdy7Tujuf@V{a_m zy%qxfUi4G4?HIT@Uw2@0BLXaj;PZeGvw~n?O^&#W{H5Xqa$_I z6wx3SacSwVY!UGQ{8J1>qh>uqIq9isxqe;A$B#0#-dwjLGa2&v`bX;w_Kx5zK_>pH zplC3YuIAj^6jmT^#^!KH9zqB?30im%;G(d ze}?ZcKY8_K%PnsH%s<*L%sCS|L8$06w4SbTIdvCXZ9&P=^J)9^BQI|2i7Ml)+W1Cv zxtH1&dgtDow;z@i14>>rSwxZ10NZ z>68LQsdpk~kOI`diBJ19raV2CbkWpekNb06tWEXb*AxMZwtY3ZQyH}cVjuv8gXWe|C6IB z+pyXh{><_@4!c@+kL$ud6aNrfD0T4XG!V&e_ZIdEj~{b>Q{MZ%QXl!E>H5%VWVxp5 z@4ATTJ-n+cx~>!$+#YR2_r$H1n3S~p4pmGpw}s;(=sjC&?U3t-ewpZ8?ypo=UVp&e z+>iL*0Rl0Sq|y5IAfpmYbnp4MvT}xgMp*)Rb-}6RjR0&mxW;*lIy+SjSf^6()a4CP zuCgHS-mt5zli%*&?P^PdbTlBBzewipPqRpL>JOiP91XC#3fPaY*~WCgnLlUR!Jmh5Z^c_8ldibPI4X;W?X(mHXe7MH| z6DS4Y9>pE-QQl>I2}o(qq)0;psHM6-CvbpV?lxK}G_t{{3;IVC{j_v@V9&s&2ya(` zEX8%0iQ{b_!goE=-JsB3p}DCb=imG`$&fJhpo$$miHjCb zi5A%*Fv%wGYL6v}1EnBNro+?x&#dI_c^Q+)ZaOEW_D{^%eiDKE2{Rl$Yd0ivGlM(k z*IHY-B+hybUcPo^?O^>enPx{T=1VAZMc!@kgfctf)%0O&&#YD-+Agfw3&CeK)Rd}B za7jul`K3F51igi8jej-<1kDNHWtW-(=g6&L{=72WnIZ1+k3j1&{Sin@Z9)jT0PIb0 zNdV}?dJk70WnxRfl)ce@hxXN(fb4RQB{Hu?4RdCWg8I>b7{naR&|$6)3ssTKGEH?p zv+UEHDw4|$ahd%x>GCEfIZAY;J8P0&ztT0wv<}m15@JM^rr1I(>!uP=Fg!$3)lJhj} zG$|4tEsK~m!b&rS00P)mJ6&Eu^<@&9=$2Gar#OHjKB3u@@L|m-kfNc^*5NOa?hb>2 zNFP(LT5D{q{j;C&W#N+2$C00-Hm}Hx-KS-0E=_v;!<4+1JA6qnW?@>u2q{Jk`j78% zH759{G#`E+29jMqs;w~$E7Qm;#%=!X2`8!a z@7#!{p#`>G-}wrcbJf=bCe22h`oskyD10e|T6}-02>C)Cp`a zu=>EZ`NLDns%Dy{PL)O^=Lu!YO*~X)7xHJ){<9$6`xw5hs%T)+4 z64&)3$}i2L&qm~!f`6)NH#sAo^~Ny6|MVn%U=!X6u1ulQ^84AJw=o=cC#osV&LV;q z!g=Ieiqa2~!3Av~z(E@9-g_TexoL}5Pa_?Gh+_{-Wv?jxt}c47)w?w-eC&Q6*T|jo z5okQPwVAPsU)TlpvVQpDaa3pH1XrL_0Op!nl|N-*ZERVjUUsn`HOhz6ruH20t3eP& zar=oFI+?6#V{ogA7(aV?gfdZCW*D9{_)wGh2PtC;KdD^D{(NK4+V4B)azvE7L|-!C zuRUxupa_wFLHWYvbeS1gGuO>^jU{XwP@RNB$C&2z5(nmd%!F4uryTb0aYX?eMK&8J z=!}EQs#AUX${Z-}=RyILK66Kf+zD|nR9hY7R|gw|!F$cQt&?p$6}V%0Ct3KOxZrNY z3q%%X78)o8oE|wzOeit?zV!KG^e4!sijlP;2>WNk-)Cua#W~RXmFfXUSkGHP(iC$G z$QMpj`(JtI8;X4dMEJI>#Z4x&)tSEsy2F1M0=tA=e{MgCI6wHcAtP;B?pKIH6iAQx&~U3FOcRsP%N1<~ zs8w^lI>>@(@8Kq;#yH?5N2XO)##9aD)V@8ARtox^xK?;^+O^^FdPmjAg6gUD(nu7z zHDc}NuYj~3wG#{)71|C>E2YPm@zmRUvEAD8zV zxd+Ex@SPmYs!f1yxxQuU`^>4LYSO9Mq}rm(7`jYbhQ!_7_nzzaTVI*UvRIHhvgbpu zB@0ih7%1o8GiM2+!fjs|R(frv!~(z% zOxdhzKAA_Hn+wv;G+MHm818wUl1&77F+bRYGX%Xt!l~p^YiOz5lXC|39B`xXuLVYP zr*|XsS?h^srp#GNDBl&blintGmFR$a?Y;o)^0E{_TGPLLs2?b@`w`V&D1owLzX`MH z{|*%c+zk!(!n4kITCu8y@;U079+7i%`hdHYG}r9Z!)&?&Y>{8}j&8~VeC`?Buo?kw z*qO#iwfxJM3VG9ekx`LKawekbw}fxH0a%5<_Wiq)TN$#8TJe;TM(o4JGUb?FFr!(4+K#Tt`| zffa+^r@`KQIKcgiV_q+q(@fC*q6J$BOpVU|mE9(9C7B8L@4QW2+pcuhkHEP2A~P!t}9x`qWe7ivfG( z8G|J3GJNF0NFp7`oQQhepNUoAEJOr|upJD*9`_Tzzj6xx$NvyGzO|&#-o(wxm-f+T z@7IC9J(f6DG4DAIL3{jR#vl+9u1~2Qp555mns>~uwINiWxjmipqt_UVwib1ov*0mM zW@RurXvX8*YYUui>pu5c4+b#)lP^ySx<<4<_qnSFF;8o5*tIa)x?YF$7{v6f+l+P5 zH$gz~l}kpZRh!v=#!~o8hQ+TSiF;#q)AFUJL%&3Wqf|4^&<(D96^`g7ORH9$KU&SISM_bO}{BzJ6GuVa`F z3$?|j-veUi8X|FUnn!6zcUH>>9dq$SMNoeBm-@wcXWfMYFtPUF_5m3^y8v5Y$m z=vhz_+0oe|DD{FlzBz}c5}P|R`?6}#=H@Pwv3>0`ZL))S$JFtDuEA7u;Vg&aCqu?n z&u_&XcBWvs%E>-bMI-(4-|K6_;tUn@$_Jf~zf3vIg1@wH^8@X26h;GI`bpYN!!uJU zV1|gZX;3CP>zVGR!c zdTpiii=(6IsXBWjdNpBZh6cSUli-tBv9J>N>5NY=CbP=Gbw`(_lFrcM@CG1&GcQrP zVVAjAS?;~Jl>$ACv-~C=(BKl_T>fN1#QMi|i@i&T)uR1g`-*oCmReuo$|9}|?1;%8 zvK2$Zjf~_YDDG+%s8D5U-BZ|_e2FJ~sX0;7*Oa$5{_g8_upgPiRs|B7YbEND?)s-xpdd5Y(~=KChG%_b1A;JnSA_1KW#Mi9$>tg z2HSgUeX;U^*=;6rrD*axdT-o*>MDkVVjAHPizMUDNy6}9Z29EeSNVI>hZVas` zPc3yigl%J;NG!+fYBwby$-nwhIMZpcqGEV|fB(_E@1=n;amQENdp(`Te0RJTd~0S} z{UO)i0E!DF(Ce&eZ6y7lXV(Nhm+?^>^pI0#zsuvuv1`M#VdGqzymvV0W?^MDClTs6 zUoSB{eSoLPKa*4kw}oP1x*BZD?$)DK+X!dZJx7Spyv=&+sR!Tzjz0+W@)A{(y)yXH zT;Kv&OYsj)c7izo4Uw5ADLb_z5u{7^Z`5nu$&CtO23EQOm_x-llFb$f40BUlL|&8_Y5!}LG>N4 zxs(M&QMV~5HUKP8n|Q})l*;jvKVmimF`lO+0X}2|khwRu$McM~iXXC>0A1Q{6;T$J zVy^ppEJ+#+gkiG${!)O3GNn>~DyKFLodW|@vw826KJ6Uy3;-8+2nYTZ<`Gc(k0zLq zQ>$P!H!D=Fub6Fg-)dsanEZq4Wm4RX`x^_DvdJ?t7B`!MB23HS0JHPbjD+ zR#7pQo}gU}9$?Op^G;81HW&CCoxruY&7J1lva%2~3C&E6b^L+0hK8ws@%&`%(u4nu zw!v>*srmY>K$L4|uj94RPW&&)l~WBU3nRf;C0I5qU{_2le9+uwPTMR?lka8!IU6&dr-QbGUCyX2u1B?9oNsw?#xmh*^QSG*IqfTKyjQ z0Kglz4y(%Fa(nzHGXFK&5j58fZA;ujw4G!NnTNkpdCmH~P#*7PW|pc(S@vGN9xpZT zi{Lx&hpdKPs2dmz9?JLwJKVcwa7=Sc0N{Xp$~1dWI0XxTn)!d<1U~_8S-QFH0o<5I z_#(4Dcj5;(%;D1=;u^Z>JKy-Ihpe9F77%8t0>$OhG}C{!1b`*_LyQ##9T>vl{U_&$ zOW+Q;x!U^*tj{&Z2ncg2h#vqW0(F{oluhWdy-T`9&~6gEYiB^$`t#>#TgTGS&|ADJ z$9d7V+Bsk<`Hm|j_(%2%)r(t~(RY|J73d$?-@iYagtt|mLM$u<{jR*?k#&~N+^{+mY%FKjOvLa0(JNhX`qCgj(SK6S%f*@A2q1<@mSULZJb6x zQ7rvKLsWSX=RO*g!ILK-2SnDkSgPZ+VMLGFvA%Iu8+a7%HpoYu(^NnxZ}Omynxsxd zL`5;DAdMbCTQijzpZ>eh6(vZU2FAvZd~6eNuP|i@+n~K{jJg>CXog$2m?XXh(grVN zpgGm@-R&NNj>lbrxW5H(en&=X;y>+8Qw*0xwdqi~1_tjHo(9Rfywe3n5fKizeWuhMm8Wu1gYm2t_Z9sovOW0HYl+{Y~DjIt!fl!reJebZq^@cASH4ZR>0d&`booZpZs3|4Zxq~G4I8kRUr5^+dPp< zVo!qCM3#Z^5H52n{9qTVmP-ru^<}ni%9E`IgHu#%u%+5ur>|YRtb&_S6@LBziSA{5 z?YM^-pNE7N;4PP#`t$Af9g2ePG|#t}b`ib8=)fS7#^MRS!Mb#lyn(tgjGKONd!FTF zS$!NXsZY+urAs&+B9hX4-{58$*;QsDz`VJ+U7%7^|J~oRAVKfL4=MbHyPC`Y(E>>X zw*Mg>qF*vX$NSyWhxTfE;0wWf#qQ6H1An8sBGNMpxhUn_k(rq33JJ`L4%a*J7RBAG zpV)HBqa4T3fLz2QWBwY1S4GKRewI|ju{p<)+vzjK_aIAN4FBkjv_YVh zwB-+royFk?+1;xnwBfk^79u%FN*wIW{rc@qm77gHefO4%RQr>U6H(m9WURI@FbUu6fP9zo)M(F59Pr=HjXxE90c{u~cRk}U%| zt%iCg4fYh z`DSRVyaOF(hO6Fj{wxgDSRF8_^f@j1x^Itmpp$9^=JJ)JxuhVi5v5&78MLxFx>6hC zy4HJ3jV*PPkqbGW2i^7AV=^1uDb={OunTtT0FGd9!kW@0d=;;w$((otzqe}s6sako@KBymcD9%!h zfTL1hvGd8zyF`^o>XJ7A7N+#&q%$!Eg`=<`@MnOjS~IVsK6bHw>p%~_*sr#G1;GO9 zu$xA>lti-8{!QLhJma$)&lP;>Kv!pn_Gd5AvL1nIO@=?A;5}nNt)_)K3K4pbKfAs9 zX!v^=E~26`ki0^O3)t}nxNBX?Bkk30!em-Ne&V#x+1R|3AB5>zIh1DS|8IkPVRwvL zd*hgR0=`$s>;bp|pL?NzAk)PG_vZm$!-2l{@stCUmDOT7k=N$r0qeik1A9=r7|*AF z6!ybo;_Trt4nW73_q6z)(0eTM>HT`S)N8}>PmmG8V?k33sAXC(T|02o)4MXmX4nSy zkye4ryd%WWJ^Vty13nFhqbeG3)+aAbKI18?kkw7)kPvb_2nO@})r|l8#|&8L%_da$ zL}?Yg?a-sEoi}I_T1F5Lv7oR}tUhL{?fr}i?o`a!z7D0PMMWtQBprBlW(h0P%b4>g zt+{a(hu~_RHi_vwH-FN#?{9THa>e6&#kaL_ZJabJYEbo@ZQU=g^7{emD9`b()TaGCXZ&PG{QnF0Trj-Bj zMo!N54Gr}%^OXYIrxF1HvSN!*)8!3B-BItzqfc6p~To3M<0nsSP@4S;b6Jriqpe00O%QJ|wm`LKK| z_L?RGUmx+u8#jCL0hba6W02m-m4&F*xQ&?%L`FWU*rski?pzhA55F(w`MS>U4XckF zP2{-AYF_S(fy$IS%#@KgxQW9+nF{I>X0)TSNa5QdJk%tt05-wBpFq&1!jejXl1-Py zOV!&^UcZyFl+b0ZH&*zkEC7Mleon5gK_vuyO26l2u`!SgT&-E-x~7Kq?fD()i2IETJQ1^IkWUV#RrObSqn9`=bK^EY? zB8~ULgwl7TKuh%qI+UHCVq|K6Qk`b=FCL}67;8o_gu=!WB zSy)A)u)eIVv4u)k_2LtakqI!dm|M}cJ8kb=zHBI@w!pv-IJ4j!rzWZ|1ef)0Ld$Xn ztheBQP{1{`_jb!a0UR~Eg!38=TmZ0q+t(CQeK&#?a!{bwzRo>F z9}{x=dciZGlCSNM)szvD`DS}O3FM*kK~^T6hZpqjbVshzTq2`{7jkfwGp&9%W-nv6 zdG%b5)yzYM3>>XyviUQ5sAp(l{ZJa-$i=dey*`*mkEPFg-nP~Zdf(zBq+4mk!NwMQ zFkjP8n;foL_{-6sI$jnlu5L{9SBO0_{}y02YfN9U6B83Z*PsIKC&Rg&B;Yf-0#?bDg< z86TH1@I3y3@5$z^ItD|Lv42*2QYjda54DD;#R`r$ZP=cRz*At;XCR+a+yGDIOsg}$ zz(zrikCWQAsdCai#?C)2HDqy_>66KmC2x!(s|#@X%k1fc%DzLdp%vefzIIM*#ZSnv z4>>j0Lkqb$o27$1u@ZX`X!p}MZ>k5kc24>Zn#vbf8q*$gD)v!Q*(?vPQ&kAGbdUex zk$w>OR2av|?qPNI+TMI+-gEC!4e_%}i=PKU4X6sxjc+pE{0KY7HUsj8Ix=;GiF2{P zXpA@ZsnyV(;zy4FE5BYgF_(Lrst48Rl-^_3VRm5NX(nn;9Rh?|uiXOR29?FKC#SJd zn`#`Fptp|%xXeC&WZwArlKp!_+Vqi(Zs8X20C?^cSEhvls1?o+z*5aeN7nV}RXSg& z9$r#UW#9MgDXu`uEZGP4RSW=xjJ)14CD?COuhQ9U9^aVWZ627OMwOgsBP&TrfW%}e zsdPZ*9$l=(*Vs)xo^KxDBH(gNEPuL1QYDPwt?ceT@fqicI{ipRFkLx)@U7A>dqxB7 zyrS?>elN3N_j#Qvq~@+kv5jWcSCJ%#*U}o;e#-BV8;X3Vg2FwDJ8-B-z2DiY}Edq;lVH45C}U`8({O@idwaYIc>olOC&!Qe9VxAPSKjn<#aj%y-m z`yoyhcyq1R6vIN#v9N#W>5qjh`IWxfnY#}HZ2w7H9!aJ*hVUsYGCB0@WpP6?)JUFdUj*>YHK}I}#-wdr& zJx73XQVgOF>b>Dgx9WtB=Zm^ID}TR7>9|Lr>pTe_-abF)E0jEiyqv9;zIY=uhSE~E$+?bc_e!^`}L79C2CGMio z;wGVnQG(LLoSWM_0IVbl_$zLt?^(gy(|SCyZ`?^ zSeO5Juw)=LWL**Ac0tYqVzRZHIr0rHMAnL|xlW+BUawt~%Kf~NSBeS-nb`~|yC(bB zZPolU`(Ml|k=hFYX;Pt4HCG4_30vNevaiwH7T<^YE6vkXmEP+;0)FS%7o@9`+aUFD z{=2&{Evfo+G`i#0G;qLXIj^gyq58RCP=7A~Ks5y<>hlS{MK497-g%0A0% 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 Vg52A89K`^>l;l)p%caeN{}+-%q-X#D From 9c93d8ef4c53a7987386934e469b4acb65992c7f Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 26 Nov 2017 18:59:45 -0800 Subject: [PATCH 203/328] fixes ricochets not resetting range --- code/modules/projectiles/projectile.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index a45b713b85..a01db82752 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -177,6 +177,7 @@ ricochets++ if(A.handle_ricochet(src)) ignore_source_check = TRUE + range = initial(range) return FALSE if(firer && !ignore_source_check) if(A == firer || (A == firer.loc && ismecha(A))) //cannot shoot yourself or your mech From cfb7749903ee9725019badc32b129a53ef839e74 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Mon, 27 Nov 2017 17:53:50 -0500 Subject: [PATCH 205/328] Merge pull request #33109 from ShizCalev/camera-teleport Cancels camera view on teleport --- code/datums/helper_datums/teleport.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index 5d04d1c7c0..c030bd4c2a 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -119,6 +119,9 @@ playSpecials(destturf,effectout,soundout) if(ismegafauna(teleatom)) message_admins("[teleatom] [ADMIN_FLW(teleatom)] has teleported from [ADMIN_COORDJMP(curturf)] to [ADMIN_COORDJMP(destturf)].") + if(ismob(teleatom)) + var/mob/M = teleatom + M.cancel_camera() return 1 /datum/teleport/proc/teleport() From 89d3e37e1a8f02833bf97ca47620d651a845274d Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Mon, 27 Nov 2017 17:52:02 -0500 Subject: [PATCH 207/328] Merge pull request #33140 from Wad67/master Check door for (welded) upon closing --- code/game/machinery/doors/door.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index e446670105..30ae436289 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -255,12 +255,15 @@ return 1 if(operating) return + if(welded) + return if(safe) for(var/atom/movable/M in get_turf(src)) if(M.density && M != src) //something is blocking the door if(autoclose) addtimer(CALLBACK(src, .proc/autoclose), 60) return + operating = TRUE do_animate("closing") From 87c16e39394caed9c048ca2524428a0323b64a76 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Mon, 27 Nov 2017 17:50:46 -0500 Subject: [PATCH 209/328] Merge pull request #33112 from AnturK/devilfix Fixes devilstuff --- code/game/gamemodes/devil/game_mode.dm | 2 +- code/modules/admin/admin.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/devil/game_mode.dm b/code/game/gamemodes/devil/game_mode.dm index 722c1f525e..957e261933 100644 --- a/code/game/gamemodes/devil/game_mode.dm +++ b/code/game/gamemodes/devil/game_mode.dm @@ -23,7 +23,7 @@ for(var/D in devils) var/datum/mind/devil = D text += printplayer(devil) - text += printdevilinfo(devil) + text += printdevilinfo(devil.current) text += printobjectives(devil) text += "
" text += "
" diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index d2eebf48a7..22365c4584 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -713,7 +713,7 @@ /datum/admins/proc/output_devil_info(mob/living/M) if(is_devil(M)) - to_chat(usr, SSticker.mode.printdevilinfo(M.mind)) + to_chat(usr, SSticker.mode.printdevilinfo(M)) else to_chat(usr, "[M] is not a devil.") From ad135a57a39186922cd65577e2233867dc18706a Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Tue, 28 Nov 2017 17:02:29 -0800 Subject: [PATCH 211/328] Makes the sloth an actual sloth --- code/modules/mob/living/simple_animal/friendly/sloth.dm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/friendly/sloth.dm b/code/modules/mob/living/simple_animal/friendly/sloth.dm index 7519951876..8baf500bda 100644 --- a/code/modules/mob/living/simple_animal/friendly/sloth.dm +++ b/code/modules/mob/living/simple_animal/friendly/sloth.dm @@ -19,8 +19,13 @@ melee_damage_upper = 18 health = 50 maxHealth = 50 +<<<<<<< HEAD speed = 2 devourable = TRUE +======= + speed = 10 + glide_size = 2 +>>>>>>> 01ad14d... Makes the sloth an actual sloth (#33131) //Cargo Sloth @@ -39,4 +44,4 @@ icon_dead = "cool_sloth_dead" gender = FEMALE butcher_results = list(/obj/item/toy/spinningtoy = 1) - gold_core_spawnable = NO_SPAWN \ No newline at end of file + gold_core_spawnable = NO_SPAWN From 48c66093fc1df1553ec2f07eec570af6d0316e6f Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Tue, 28 Nov 2017 20:01:29 -0500 Subject: [PATCH 212/328] Fixes big band music crate (#33138) --- code/game/objects/structures/musician.dm | 2 ++ code/modules/cargo/packs.dm | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm index 8d62168f7c..1265594eff 100644 --- a/code/game/objects/structures/musician.dm +++ b/code/game/objects/structures/musician.dm @@ -328,6 +328,8 @@ density = TRUE var/datum/song/song +/obj/structure/piano/unanchored + anchored = FALSE /obj/structure/piano/New() ..() diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 4269de6069..05a6f20807 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1596,7 +1596,7 @@ /obj/item/device/instrument/trombone, /obj/item/device/instrument/recorder, /obj/item/device/instrument/harmonica, - /obj/structure/piano) + /obj/structure/piano/unanchored) name = "Big band instrument collection" cost = 5000 crate_name = "Big band musical instruments collection" From 47e0943c9c3fb11be8bf9437fada4a62c922d0e7 Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Tue, 28 Nov 2017 20:03:28 -0500 Subject: [PATCH 214/328] Fixes twohanded weapons showing outdated icons (#33127) --- code/game/objects/items/twohanded.dm | 2 ++ icons/mob/back.dmi | Bin 93358 -> 86834 bytes 2 files changed, 2 insertions(+) diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index 19ccee75ae..debb25f093 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -41,6 +41,8 @@ else //something wrong name = "[initial(name)]" update_icon() + if(user.get_item_by_slot(slot_back) == src) + user.update_inv_back() if(show_message) if(iscyborg(user)) to_chat(user, "You free up your module.") diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index 064fedb3df037e591229c51fbe09c4167b627dda..14c0ddc470e730c6891f28f329f78462b3e08c30 100644 GIT binary patch literal 86834 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 z zV)x@Yp5(7Os|Q?8kk0!`D&IGk`I}cif9Q7j=%oU2@Wj9EIl`v-URwSwDcuWlxb!1| z`!}x#p1)}9Q<22c88tl*4;qIBpbLieuj-Rf6BC%N)A;@RftmUWlSR1nT8l+Un|Q}U9tZ&*RKJWen!{3{qCyw3xcgn2d;#A3v4!+RsRb6(+;Avh8lfb z(ar%!TlXCtzIRT4EELCss<#nQ9RQ$%B_J!Q^Ehi-1PwEb-TrgsMDh+u>zJr<=HSyz zzuocB!OW1*SqRe@=9l%^p@#hK*T{0MZ0IZ&9;kLmezAm%Yx!XPgZX?L51X4 z(WdA8utJ1p(okMu!RiHyud~)jZ}eQP0a$UZEAE&0#Z?5-pmU%}nsDDUae<5LOvo(@ z!gFG$c`?qXZGg%5$Y}jRB459+5xDw_4ssGW`dC$+B#hiyP@yKuEdp-mL&>#T>b*qeZt^o5U&zD0HAt7<$#;t!oq!oGx>TOI`=C94v zSB`z@2Hr7$pCXX?XdhF)+qYghpg4S0MKTo7BzOYVXQ-cp_v{=b{Zh@PoB!0)qE4hq z6c$c?;)n48Z@cyQ^|MB)H_dVI4bx4>BJ(ebk0C8)rNv{CiihokG8lfk(9t1s0qDio zs_rI0Q1)p+&5ygH45I3eL=7de$rF1EkA()h|Cu#Tx2d|Ih$CV3YtOy~@6W)fcW|md zMX`gNy(D3?%Y=-rpLgq#f4)7@878;aBT{%geEfJH-`3F);A-$<>yXWAH_P+-68OCY zoJSP%M&rctx>^eF7Fr|5Q-eg)oH{f8H}1HaLv}&`xB*gifd396ANMI*e)}1$-lbs! zEy%f1+Wq?-70sM&tL96L0qV6M`~PAA04K$_(`f_@3K?MS=8(0+J5V*sgJTw1PL5NMMh$G<9_^2YgX#*uXo;L&TIb| zmz9ex8{p40f3YS@_w1B-vyq96}bWVV#1&9RQKjbHHi&gK&a_4DDh|)r{*(}PrufGOdqJ94U`t07I z0`E-(gP`&SGm7XQ6v`-cLhaGe9IJ8TP;647;PBr^_FaGoaEj|*ltK~4a0R)l?3+# zeO9&F67=$`JL)&9N0EyGr3{d=liAI-K9OMi6t8{@>m)+=fll^!u`FX+lI?%yje(Xv zRKDi%^5x6OD6Su62h&ORV)Ory%l204Ge`&jyyN$Q8z5_atfYa2Bo-!-5uuu^g4hM< zwuz(bJx$!qWOAiu#U<_gJMtav?S6JTfY69*w;aFpb-G)xCk`3w2RNL7C-CQHh3ERS zTT9kzxLZa(^)AiN$L5lUH_-w8*#i1fip@o@@HY#Qzq|Kpbs6jrDP9%5BIRv5^{6+k z?(gyVef`J6TI-}#3|df=bTHr~-xCwV!;bDhj{?08g_5kF?;%!|Ke)hUpD_Ff!u?;< zW0Y0Fzp54}lifdby%hB&Lrp?IG+=HhfJ$89;jwT;w)#jaCqvuX7ZOuf>7?Zf!D!gX z@cLN)&R_H@n~E?DNDHriAqsZ7O1qGa3h;W-{RA^ebE>rHGMjAS2Hi;JmqRnD`7O+S zHC)g;6`U6ryJH03;Kr)fKLJ8T+&(Sb8d;-#@R!~UoglwT@7WyYuc>gdC4+qlo!#6P z7a`5!e6Xq<`W{DdHX}|NlK;i`cTtPi`^t~MI4=~UZrtnewl^v&HOjdVT~{+|c(#2C z2?4l=fq>BIQ1Q}^M64j3NjdPw+q&+1b>*_1hVTnTC2U!Mi07_B7$@RYy&LKvplMH6 zSJ#p2f^?pd#09dG$G>E>V39E@vqNE>B@O}rPaFc_lJ!*jI`{67G%msgFQydgy({Or z7UGJ)G0z2K?}DYpJ;b+fN|Al=#KVi)o9Q)xO2>npgA4U@#kotu-y1CmL5&Yf!{Fp5FvmM1s&i zOLT5-taB~>B|8}lL@5pAjdDL^%=A4uU_0r2Ks7UTNct0uRQuZlXMuk6a?4x_k#%*# zz?>$sB!fYK&bV}7b7%k=NmdCA3~Xt=88(_yYA~q4O>9S2`P*il4+af@N|1E2@C=p_ zXorwAA1oR3Sz($RG`;x~Ca~uA(W0e!?~S*iN$^ZfpT$iv55B>YKAtZ`jwV(N)@Gt& zo~7=5zeh(;@10(u{+^%Z$M$1$RMULSmx!S5Rdj<`etBd2q+cbsRBm=g;U^=9bY3JA z!!w4WZzNCM^{k4+SNeg5OudsB0)#iv=e~ZrU+fF!cwj~eeHGUe=qeN;-IWY&jiBpj z@Y=k0$CVB#?syheclaTKgL!A#X6+i@A7G8%I76xT}H=x8T-Fl9qIa!N&jn|c_{n2J(qw%>`3m2 zH_KJ~nYdpcpo@)(QSpw9xKbFLY*tY?4S&iTGKrYyLexj%v{_07#?YS1e&ai^@f zl9a`9s<>xp7tz6xbqS|Fh(gb4GMXjO0=2_tYlus^TU0S`x#MZ zoiT6UPLUJISphTVsJAFX_G>GW+mc#3)@!>Rqc>{*V(hXl?fasra?*iQzsH&0AmL}iRqtNVY^^?BBM z?8vTcgamRp9t@S7qN3jSP=S42jrOyt>){!PT$0oFsEy~2s{_50h_lod)R{Lk&(W)? ziAtdYG>x*eRZgYSvHXYvsRuXePRot8}yO-%m^EO{Btw_tkBNRE3UY}qE4`dHp+-)L%kwjYANo;5{;zzAB2oyG}G5!!}ume zmAAt$a*0h=K5qB6@9cdLPI~;?xu0acb-;DIifC7Rmnn=PG8I^cDe`_5sE!K}dSkb= zGi~Ep<{jkYIW-vxzQSthKN?hwwzdeSHx!My?&6P}K8_tuev~qhKeG4O!%jN4S$kxw z+Ngb&c9+(n6n(gLQt{2%QDhrzu2{V%?tHGV8r89?>NmDBv}*Na)>Idh0BlL%XT6bP zRH%(F)dN~d-5!#odYKa#oGw529xS+jhXr|kY@PebOAEuqZzC#Bo@h-7rUTjj{v8>=TQMJzP_VYk;&w9nP+;{I? zc16XPf+BlV$7wN57TEWz^PJ$cn(cyD(vN zABk<*mXJ7{h@5>N;LybKVaP_MpQru%4>?uM{wq3WqmRyau46~d&;F|XRrAv0|L{pn zmH2)f$hf2P#62}#@Hfq9vNmi!%Dw=42$;Eu4dtfd&O&4wm4pHB%+R^rSW$nzFkUQC ze|a|n^{fqTS4$5nq03Hy3i=!VfjkbVf!+p`Z~Tg8);rg$;|^=>bldVBQ)9d~kx>fM zJXL1#aSmI*zn=2Gx;$-4z6z|sOOVdHuLFcnp6%-RruRMsx5*{?QDVynj4~dC0cQl8 z*bKzHMtGb!43hc~9XmMG9W$5Hy{k`~R@8fr9{JPxB0KQ|x3cv%lOUQBC%zcHh2Aeo zC(ZlU{OJfS-dGn2mIn@H<#IrI;}t$pW|Ra=)4shw@`bHenog9l zXD*Ju9-cQT3B6JA{raBs1QAMz)7cHi^8h*#*eSVk#T6-PIJM)5##_ zgTWHmWf^8wRecY4vc=_@Zvz6FL9Sl3s;ZtPtNQ$dtVUAj^bl><(cZP|O0Jv7 zXu)V&=9uHz0c4#hZ`@9k?mLo}d(=MzvK!(?PuF)%lsb9LL~Y5G@oUjvW4dR0+#6(F za2Y9;W-@L<86PWy8ZSZb(8ZR^zVl!2N5AvlZrfqjDf8ep^_^+~-+aHC$*IeqM!j+C z`-Xc*NHE&-MC$yCHbtko1te#OwL{ljlzJ8U(SI36ovB+xNU{RZ&qZB&A1*Z=SL%3{ zokU=5XJ*@bP1)TKCLX=CxvQF>m>em#D4w0F{(_Ln72fz7<)e?vn{p))6%x2CmH+L9 z;d4e$@z6>V(Hd*@na@e#^J?a(!=I?? zk15~ueq@j9ni`-@`SL{NnaGZ#szk!?jdA~l-gPl)j}2>?=v!>L|*dasCSEkhHdm;FV6N?&Y>2@V!2|9ogE|(oHK- zAHyp>L;7Nl{P7PTd`4NnttIZz-jl2@fA?XN#=PLL`ed`Tte2ndt^T5uhmNtIFCr~Z zMdsQfniktUg5;)cf5JDXjRGeGHH8Q(X-Rz}<{l0(x8sTXdA)6Gu?woUu}!gJbudoh zt)XK5BB}sS23v8?anmV_gN=!+9glm;P-`~Q`tt1ddOSu9Uy`ft5N;g2B7_`qma@Bjc@M3f`R9=d*`E}T{Sxr|k5^(n zT*m8yohJMjv6+%g_(qNG68DtdMk9OLX8)SRnJ0^gjotmZ#t4x=Xv|klqY~C;M`flV z$xTrWE(XQwPC^ZyJg4Z=$`Q&h z92CVYeMWXrdlx|=()IW_7YN+f|DBEjLmhD6s7{aFt&$A&nI-(#8@IEN+8Q}Ikv*9= zJaEdBs?G@LpC_uUo6UD5g6j+0PRb0@SFHD5luGaQnB78p&3$Gc2sCrrn(;s$a4yH6 zZk*>BFKsCVD)+=Uf9fhHtUgRUa$}o;(mpY0+&i4bRhz#=%r?#$HcZ9+!Yz4*cg(i( z4=VP*bB%xg)o062snTza3(M9l^X%P`TZu8v`yak@oLCP3j^OYkH{s>&+wJ24#~kiK z#lgbeQ$4AHO+JVZwKsDR2`Uk)0<70X^&{c}}==>DZ zj^3%8!ioX@yA>JJiJUZIfmy@QOxIAPirUthxNYx>HQIr|dP$@|sEMdRq4k(sF;k!QK;M`|i4WXEqRQ z7v>l@cGtMBz@4{*cKjI^cM><-dbcMRcl0*Nxt;lBT{&;S5#EVuLt6DZViXf+F~4dlM(KjWl-5z#&YAlju=me2qVXIuU{#Kabp~ zxV4B+g|)xIyfb_qY*;Kv!M6#s^)cxfgXW@1&R^G{-ko5hKh>SK(`kIktlreS=Yy89 zdNiXrx;judd0kRFV08ed|1ddK+UogZA!6-M&?q?}sL-z>w!sFgREZ&n=HuNQ9(@zUG@xM!(Uz25G{*0&{rhmHFvNm*V z<<@YvCF6J3q~<};>09NJFw=ac<)>LCoEz3^Gyg`s5S$;7t?iHkx=M1TWQ@t8Cr79) zs`|ofrjYOV`nTS;5m(zO(nVtB1cm12 zuAx0F>nHv)BQ`up2T0h$9Y5Agk@;`%cuF1a^ui;Fepm>SfP>~K+$naE-9mPUPjpZC zByiotV^3*Yw=R(HiiZ|r5{!c>xh?yo4JD2gWUJLmQZwxdH|;CtN=LT=4Qo{pYZP(}VvWXvx##&Iv&tTUajIEW7t7E$ zvT`}Hn|UrQgLY2Ozx{{xIZTRDXLOvjj;XIF95R=8A@JpkuDuY%=AQ!JxjcV&WO3w= zX6Dg38d6JiVVzWxE9RK_bO)DGD~Vkiv@Z@(a&}RIj3}>( zF8HAzHe#m7ZC1K-vD>m_ln|VM8r zRw?M0yS;C#i#;y9MlUcJ+u9s+E0SzUV~?fOf4s_YO{vYP8bf@|JYMC|LVnyd-gFCI z`kF?dw#@QMJl!!1Ql3nCs4oF)ne^CCdf61^MJ4ik_q)Z587;BB-(r<Sncto|Ii{u^f=kSp#mN7-Pyn*go}GQ52~p8L~m_t3{p%(#b8*F~IXX zdH-_tMa>5bBl*RHjTg)M(O(T{>kWHh{L?06b8}vM2|g?DW7<peb}Tp4-T+y^g0^n>2D3EVvG z$EHv*JN!*KkO$*N^7&yJNtFtQ|5OrY3x{2V=*NcXS&P{H-gvb`>}M+dvg`Nu;;}=8 z)=yl8{p21uLI1G@olF$$OYHdMc0MY_ZTsGOXF$p#(b}q7bllW+M%L?mecGj-!(h&c z^7zOU($Y7KX3$c=hgkbKr74>Sjr@3U{!KPD9nAWh0$BoN6XRSV93T@%403eMAH!za zut{Aa&$NhLXqn8O^Qq0=XnOop?3iYrH|x|y?h1k8{c)O9zh50}$>yDs%rb73rVX~x z#l=H{?hPW-L+cUGAtkdj!QX#$@0<=RUU-NvT`m?-X_iF(?wB3Fd9CbKAGZNqLR4D*9E<+uLsWE=UFMn(nxAx!?y@+x zxUOn?^9B=wDQ7RMle^(bZ%mM4E-HkovORxPcfRFtj= zil`uSjxihbvndJ1d+c|rEd+oKpHNr9at5u@;V8HW7Qf};n8vg`2T3HXA1?F)@1CiSa zj)Yj4eU_TB8LrlRrRZqdOGQf45t{~r9K?3zjr9ih2iM*E-p6BL!6Ha(ii>L;OMCj) zmj&l7Ur;c!M?;p5cq~o`$LQQ|l{M%0SwTdrXoy-zXm*ErvHShCEYLRo5@X1lt@dx8G` zx|puZT0tCbMkCxt5XlwX{*vqcn_mE+xo6}icmHGVp&@n+mO%lN|f^DDP5&YxKBm+_0BfU<`ak~2f}XjXIk9% zN*>0aiPDgdZ;dlIo*ppV&)Gf_ariBLPA>Pum%{6eS>8-tV^?9u@8ma?Mk6Zt+CQ1&hRzj z1LfvD%Y}-UTGbA6*17$a(M^t93DWx*qxnr7@a$ezjF2_%3JBH6`ap&P0T zs6SzP9r(W0YLOA>L_cw>)8N7hi}iz(b_+SOd-zI}udaM;nWo}{-7%)ItUp~wAc6C8 zH=}qW9vCy^oLeV^3%^Cqu=1c462>KxULFKuZ)MRPhASm~s&{+&aP_A1G2aH-k`lwT6v+TL|y&j1kAT;$SYf(O*~$iDxcyg%}(4$Gd z*G!n}6F#buwGhf)yZ4dsSF`c|^Y3^-k5B#KV&8`s#ech*=?m%n7b{%{abQywkBcxa zxpg&GLu>iq`BH9Xwy*z1m4pj;RBm?XYr@DtzkLr0@4Rr?k^FKSn0@o=yFE2tC~;-a z^OH1Y8JTBc7jINf98&+cEkIf7yx)n^UM{|iY56V|`W+-q1uV3poRSnr5QiKIz0}!O z3J-tr;lo)?Oel!r6a%*AdwqZKslNv8nMWHp5$rIEbiwxIGlF>GF<^uOS{R8|n;13o z?Qz}&DHc9dM(Z1 z0U!@jbg|ClGe&wV76`%Ga_KOBj<<+dx$C;j>TfnS{aBo8f0L%rb^FtPEIcX5Nb z>q2H$oY}phr;B=1S<9!Nlz1{aNYfvoGMiIb+gG4I-Pu&xhVcr@(T*Bov6NLS$*L>% zH>%XUf-VbLcmqs4&fS(AkG=d*mt9=0sOXQ|k1RO`fxAxvDY`E^6?v>S+-V!6@xwLL zE+9b<**5N^(-@9jD0A+XvlWyDnM&eT!k_VjKW-3l#XLGWS0Mpz@p}T-;qQ1SW&J<~ zyZW*b#6mm&v18W`xjiQ&xFHd9uT-cN6sP6AO3Kdk_yG|MTks7fa4o-!Jawgsn0z33 zJzLMf-U)&cVkz#J(El+w*xr{ROZ!y`=M+}b83$AqX^BEMctSZKISYKZh5l){Vkb>R z9g^yMJ%X;$)!Wj6KKC5TluQ>oKz^7QyB3TMkSf`-baAOK@k?2%PeMtZwQ=T zvTPo+e-K$-a}UTBzAFx_3hqC{Kzq|{Q40!KX<;8bZz-e#Q)>(BP%PIBm(}Qwmi6kQ4I|Z zTBdq>ds8|gLfdMg0jC2gKDArCNuviE3Ley?-WuZmiA;3V4DJA9x8=+~7SxxmGQxvG zdq8YRmVxFUQsUB2X0}9DrY@V+H3Cl*5J7dwvU<%OI6M7xqJn95ItXx-e?Goq+7twF zg9yf{Ad=!RFo)S4;X06plmcQ$M37U~xq*Hoo6OMv+ur1sLwk_9&5L^Wi0?M@n;>g< zt*v8e2_X2TXMZ8Z_Sp^}Zj|+@e*@(ggiw+)E76EmxsP!rUzy8}&hJCJYKgYHpk7iOaa zdqaoeVTV{bW=3s+WrCQX?nV(6tU)-l%{LWbl@QZRFo9nEHR@rXjjSz}`|BSs_^Gli z4|y>vuMOxElLP?rJDYi3!mjv}E3;SK$tlLEryZ>DJAmRvKD(@Yx8=a<#wj<-n|>+6 z!j30L!w{9$WiNbbyY|9vY#;4ueFB!*0(L5d%0^h|F1jo&aI2U+!C8-05yYx6BD{7m-dTbbIe5xJP0%Wmb| zK{3zkC+W*5dfPn9-x_Ed0E#(jJe)i5tRr*&4X7+p zqi*I)%F34AX5t`x@EK+0pW{*8zYRu4uE-s?BJj4l!qaxha|zN}Kw>04TcgtY(PBpB zWuwkrNJRazp&dS2`~RCTaj*hLmP2B)vPNCF%8ClNOy>~ek{8Jxt=e_Rjvh^F3Tu1H zxJwna&&JP$l}FvHlewU#W+Qh{5HU%Zf*MP9+$+L<(YAkg(adDvj6|U&i+G&I*-~E{ zQEy36?`-_Bm-a_r;;qxPgxE~#q`EEh>@KI?tK!rbh|vN{y3r8HH?9^%qNs^I2}lm_ zYY_8PGvx4T7~{Nh*qvdYzPA@gz@c05?~U+lpBq=g{&s;5Kx~YE=+lN|HBrS!M2w44 z?U{%1eI$G_dXrfOWDbNrq`R)Ak!+M*lqzf$e5V1xLo(*Wzmke$KDz%B0REbGkF08MBhmHdKY2=z;!#rn`{}E47zkkR0dsrDK<_u@ zS#Cz=*zxb~>pR|Den9nDs#vN=)z=@H4PGZNx=`DDq(|znylZjoum}YkW zempSvR|RQPdxQA7oG*>R3=OAkq;1;M%IT(s>y-BQ7xayOjxO2xlR5bAxQgJ>XI&4S zR+XlA8i9%{vM4DjDc?LVemYD@91GnZh2U|=k?1OOL>0&r`hqzE_!PU?gOM|;k?sk< zbTBnVFEkkpmRrUMuR6&~svDJ{694wp0nfdV=!v}tE&HOjret3q-~NsOdbIc9e3EB% z1x5dtqW&*q1Z0$b3y-!igK#tg7alTsq<47*QJH+7>K&kRD2=p5Mkno2P;%9)y9jsQ zXLS7vbjtRNzsG^WSBcr%QT=0_gxyKv7UHOkM0M;R#ws8AM_GQGAzKEr@Ftg)psQMM zaQdOi!#|ntR(hNpfnr3)uX!n$$->0_mGhZ-8Yv8%k2%fDvKPPZQa}CLN9T;zpLd6V z4wFa;QC#gX%1Ev+jQyV2u<=SUlB7T5hRnYr?%yC7xZf`0+(h4AEvqsFWBpZ97fmwg z$ztStsuFq|v+|~UR3E;@dn6Cb`Br<@Sb{~55Xpp}7aTt%3!%Rmv?b@QvN3RjQd&WI z)a?1yX++rTYb0cEf=F?*Z zOQXOoJt{uFwCX+x)cFYs8VdN1R?f$S+AK-K-kOZSJfeJN6)P#t+wxg&~cRWa5+)&v1E&fn7?k0{$!ZdO7CQKu3iR zd48xdp497Tbr*pnRGh(WnA*JfWJ@mjLMrYgDW1f8a$sRPa4aZCf5a3?Jp3>O4~3Rb$ZOcKJm%P2_nVZe044aiZvtykz;3gP32XhRM}MFSlJ zGb_>lw&djH^A+bkAu-X>GzZhXyu8HJk>AytFxXlw79{J7v2OqogKFVXfq{@OY>I*ueS^`9^hfris1-h)<6ou7D(X!Y?U~` zOHMUg2>Q(+s?o+&La$91TOUA=sw27FHMU0jEhLyzwK_@Ma2nT3^}wZU4Dn1Q^Gk-+ z6~eXOp}`HC=f0uqk~zjm1UwxCKZ4S1-E0g^FgmL80Dfw-hOR+EQ}o<9W(H~1cyLRt zyEU8lcrDM)!S#oLeWz7Ba=DP!Dt;w3*40b%ORXfl1#NBTL=M-^Jy1Np`=%Jh1Dd`P zdD{sSntrla1c_$Bd%9a=p_{Z80p>72_uuayF|_Foh>j3AHO!I3_DIyRuE0M%pY0L7 zZ*aMMtMvdD?U(Xy1;kW{%h@r(j2LE|ty$rMsTl<)Xt?ZS;!p<{FrS@yc@M!8rO| zLy*Oi5>@lsIfNj6Kf6MESHjw@J4MbG7Yd&VZxNjd1JMc};969b=d__T5Ty_Zkl=M& z!ViEXv8dY;x9`nvaX7W(_zy&Jr~*-m>3dTzZBf)7v@({Ii`tBQpo3J;{(NvreWUx@ z;&_cTu!{^2Q)u|E#Is1c<;ot5;>mTNKss3UQOWq0x$(=69p5Z#1{e|%Ba9y!D>#UO zdXQBZ&)#J;;$-QO8DW)xzRb4JcB90#K!iPKjC)iybD7hEdDyIe`2>-MFlb-O|B5jF zAko03^w6Q3sykbq>-X&Px-2UgyW88(kJb&o0ggT9UD+@RyGn|4IpsH~I3yBn)0d+r z2ngw6CFp$JjJ!*!rH(4$ZUNV(4Ba8bu7Tap>csV|fX#trH}>cfdQNhI!s;^yb9CO` zGKX(y4EN4-G^ohRFtxp7E#q4XkJp-K@(*3l|2At1kl?{&W?Hby)ZSa=4=V;b4CWRV zFTo(`?74HI00%>IdP(@Gd1cfPPeWEoB=ct>FtUa1MUL$aCZLZ zo0~rKm;D})Z*`JbQav~HHNDFpoITfk7LZObz(>>Qe5KVzEYx^zW0)@YS$h_bWDuY+ z1ZQ%Ixo5*P`&*)FWvG?QBp5ZzC1q#F;Uk3D>O>AZ^z5(MA6{n;ZQYOkl0esz*52f; zfkFRZ6J7I$sL@SS&uo0NOMOsT{*;MP>ae>K$9Esj=~qZGNN89XBj9JlvwpXAGXaCs zq{Ku+*Rkdrv2*9Za9peR7oZadX))G}mptD1Sq4xa0}|~JnH>iLC%lw*#kNrItr2Wa z8uAu*=9LQh*|5JLpfF421rjV+oRDdPhK-Ur{IXExB#19ICH$k<^#`OcB%oJmpaw95 zy-rOP$oXv;cg0P?8m7i2`S>KTEBz$UAq1z+xmx~;=Dptn)^Mr;h8zx=YRMbkx3myglh(>?&dQbp84V>lH$=IF`xhp9xt?BJu z?wnuk)C8>H8}T1q7hoOCp;;3`zzA@W^_>tNrJ&G4(lK3K-^Py^(0<34C*b}4xqzhg zipu$*)0VyZr}1m-0H_a|AR5M+LmGbVYpg4y^S<=MsJ5x~{ecpfF3B%7K+UJlm3<=m zis-$@bhpi+K1~A^WyijeDpjB2a=7Prkkp=NW{V-PKTUVxlc0;W3Yzu=AI~t-5VGV9 zVNxw#spMXCXjY*@%J_2#uNFf7sCJeBWT#Z8G>Vi6WuCHbLsBSsM<;UA_-pPxcX53b zbb5>^5p-IBN#%Xg1WH(X?;9% znHzvQCaQkb>?3<7htif=1SZ0@-xd(!+D^@NUp>$GTQ4UT#Cfm%&Ay}X#E8RQ|2!sF zZdk^Y0$;MW{f_rKX)U}o(bNcaOj1|ElxoCPlqfeEi)p>F}rg9x4yWnGs-&^2-!akucs-b!3Fo^_M&4-o1NY ztJ?a=_qKB}aBa!scAOCK*FW&P@q>JIv~&t8<_G_EI+4Z@6vP&id_}yF{dC?-VTJILV7B?6vY; z-RM88FCVMqiK)|cbvse{(*N!ch?A33G~fh_*3L*yJm-lVBg*cJo<5Ru@;d;H??eN9 zd^X33Q%9RICE0sefbw)v(CuL;CXdwX-gALqP+3b+=G%2s0J^5Szxqk; zF&#igSnf7<#Uok7P=Nu^(Z++Xb*+CB;1+=O6sVhoX#2Fk`hj}vW3jVm(<|;jvopw4 zz@+Ly@TgOGnwO}0(S^T|4%RZ(*8Id%HfCwGnYTOQ*4oY$gh9l=w)Tbd?S zR^N57p7^U+_?LdcpNh7%ucVy%yE~4gB=iZKl@b)N)mUIns<37yqKd?C+>$^(zV5KQ zk_nP&MUZ6{COX6Fr+oOEFVm~__ZYk|M__Y->=>wfK~VfiN#oF~^iv202LRrqW~rDX zI)|W({4IDR%a_!~CMF=%-S%*4uMW?7ZXKv>&hFprUK1MOWV3d_jWb-kkl9tUpNiP$ z-JWqQTsROW@}0;HjRgjVmiGKz3%SG8!YHYKWgUrFq1ro%K7M(33|RFrGVmDOplEoWq3)vWTf{n_b9l#> zYBNCGI;+|&qh^vrzSVfbmVZ{U9dZwN?<@I@5Q*jEgI%ImyYM23xPs^T``g_CjT^UjnbhTgKq_>{BN$Utf-fS z=k0sH^Fcm}sJkftlUD>5H%8#9r;`L-ylD#k$zTs?{yq{Ys`r8m=KA|-UBhW%A~8p# zn?(kQxq!aDn$~dDc z)foI*Q%OAO%n+%U7hHU*wUFY|bhCX0XVL1mkFcIH)g%i$lU>1JvW>*jK~iDE3ky{) z3HvbcEpjiOfNj(BG;sof4U#CBAa3P)Fo*sN0zAtR`f{<&sf{qal|xt$Vz~b9z8yA;DEu4x7^5Q)$sznfNSSwSm^4?}gU5h&#)gz4fqdWTe8plwu5HMG|- zBtMfGr6R^dIofeOFbmt+Qc z18n)t&%011P>i1qqmnctBdAtfQ?Sd7XTX+^u;GKG- zU`<6_I{pPl*Hg3lz!)KhVwj+u6b0F`@U1%)heYp|vxTQ~tM`>t0L_dcLTum}YZ2mV zGbQriR0~Ok5x31&Xq%WK@{bdP|Ls(GdRCWU{d+42QC zvS`rCm-+qMw~(!K1|2sF`WF!y)w{*1&By{YRa}W<7@BVIl>Y1MTt=lPN>2j)^o}RuR~dPv?{|M8 zoO2*a9#u@amXHGVeIBc#0Qgx<1{m0u5c+EVSZE8o*VQ4|pSzHwhKQpP1hatShKxhF z&nvi1`>0zdsCGjtDV2mw6#Mi|s;InFTykihd(xg8xQ@iv<=|LS? zQ(=<8wat7V7qGIm*JKvB`r59W|LgGgSYrVr>PDCSY(o<33QO|svmbBWLK z@*-D(=~FD)Y2wL123sUaXV$n>leVw)$(=gk4KyN$TWSuu^<~11gmEnupPz>2S@F$5 z^M8-rmfxG9@en5Qz7GYBiM2Wm^aatAo41@=diW1c|LjC4j9!4-o zYW_L#y5tBa{$CdQ|IG};ad=L4`91UOTOrFi!eC-R`sq>Czlh;(m@NZvU8vq&e4XH~ z*852XD&BWRSwvG*)Q)ys!ORqUtYJ6A*|Gngi$Hn>(uD%i!uSGHz8#IpyzcgK|oIxrqY99zZgp3JRu;mE~$4O-n3iB?pR!&lW}>?I9P{ zCZ7A$#}^$o4^O{hU$9BoPDm+J<*K<)V3-;kJ@s#BHAxV@>Jz&N_a==8MFs)~WKLOa z^&7^BJzPHZ6xd@@S+O>;T)5wR{Oy` zhK>S!fXT+EU2UFVY=cabK?NURxLv8H9zAoL6(>YTu&2rXcN3_awZqUk=JjgtOJCh* zEu(<$h%e}uHw~Ksh&Jc>;>Wq^B#Rec>2`M>3;VV-*#vW+7px%QM;IUg)uBF)5#mzN z9HTZ$$G||JcBhb+=Wcw%Qo5cam=U)f^G(oidKA=C;y>x!(WjNx{33wKH}|4biL+72 z#-r-;U^&G>&ypk?E-D_dWn4~UtIO#M9n3hc_%(Z&Zfb<_gr6| zjWad0vhGhh6S-absR$rKGh4F<|M~vnUT*n}Ni`Rl?N!8BA+?)55=|=3DAb?D$qf_7 z$GHx)Q-k|wV_L)XN5{X1drH?I33ZMf=Zp*WJcYaOC$baZ_fF=WQOShK*9SC!2n!+K zQfAzy6@AH?A=iCdZAe;}n4zM6=VBtjyB0Yt4(vSdPH|oZ$nCbhKu+C&$M+rPKjVoX zRhvt8(9u{~Tcq)6!QxQ2wyxda382Y4l#RC*mc@H^X5X(I9zGcD)@w8J2ywQdWEQ3M z(kj3iBj`Fx6soA-^sOtBah)<38yLYglYP4)e)MBQmM+eb_$9YnePYt+r$aZgYDrfQi% zMUeY$9g#_JZKqZr650s?^r(VFV%09>b}XL=w$#S8dn>PW)a*X|V{Ma(&goL_YfyiI z!4t8E{=)MmJYX;j0+4nix29$~=GIm5+Q0?q2|nURNRZ0tX*z2aWcXgtErQZz)X9Kq zrAD`hZwe+~hxONpBum{-jUFt_5d@wmXQ0howL45}<|JSyx&Bvcw`6BRE*YBHx4&BN zxgbOxpDbx+fe203@Lp<$eiEzRFMe(XLaft4vQk`)$|!N~ub7#{z4oY=x_2fM+HjI& znX6I9-|>DD%0qisY7Ia7jR7kP5VwjoDA*+Br#Z);SLv+Bg%zYzZ~1BKGB#ftsc^&M zDCP*gayeGgk#CnY?T_HznY7%JVv)?Dhjanm-qirzNzS`K9k?ijf3!mzo`)UcR=;y6 zx;DU^?LV}Ek(<8_dcf7r2(&A`KD3#p|6>h8AMT7lxg}*3Ux?Cl;y9LVpAz9FC$Z#N z1%fiW4LoIlA>NqaoyQ~)Un{k-|Jqf-WQT$e6kNm3RQBt zQr7gai5?yax93RfoyZnQG42n$<5AO~T~l09O(ZTHgp?JWpI%X(Ayao&q18p3@w0mi z=Ea|f*gk&buV!xGD4LkQb8z=n`OL96v{p@7`tffkc>M;&bPjIqc2d&EpgOmCc3GTW zJuKjKO?HaAaI+yvsioI0Q&|O5cq!KJ1Y04mB$mGZ@$PbhPdQX-yE7zb%J(r2g;-Qe zyN2@|sHtnh?PqPN3g-ve6qc4M0QP><8H|R7MaDgw2n8iGs|EEu%Isb0pM>!WLp*eW z*~`o8n=1jmeQz=?ka9r008`}KGJJ8F3nQN+7m$#9_T&@ip{)>{tB1$V6WlImv+NRF z!;0{Og-E*no$x0ty?oq5^<5kbq7s1RY^D&eY$_T~ zp8D2D5v%KggBZt^${sodvjsw4jaI?}5B|?{I}?OIh{gN#{Jgi|?f$274<>?Cb2h2+ za&ivKfwOnYXE$ndq|Re!>)IcGxB8G&DQpp=O%~6im_a>sij+HNH@=PFh_~0vL-Mzu z|Cw-bZOk++N!cDa)Cp+Cb*-#2R~xnl;jU3rP{Jkm+HDlut;ZuVE6Lw4=||)$f}48yWx zSbf^@M+4JuQ@jfiR~>GV(|CC9HT5G<!B++EdJIqbKI$khzaOsFfLskx%o-Gn z^V0^bpbLJlbTJgYw6;AG*MgtL%UL%k$5bU_6O%X$Mau=TVp1jj)a2Fim+IiqyySpG zmdry0=4t5=v;m)sX~iCB|LTKRpPE!aRQ}uv|+^OSv~SecH=KMMC1U^@fBBvUMRMU_vuf-C}RUg*)Yj%uzT3=i*od%tCN?I|GHDYJ^w*Sy@S0+rMA5ko^d0 zw(CC`efAckM zJPvn(T7C8;#SDkWdHj^0hYLO>?yChOwwnrK-j%Q!l~!ty^Lam6yDM3IFOF%tl%a2b z1HZOrRwOnpCYGQwer3+Q`$~z@envD}DCMmG+~b~sUZY4U7Yx;pxL5wl@yF%;jm;)Xnni9>5{QBSEc>#!?ELus!b*8*MrU<86FTfnebR+IH>T+5uiZ#>H}|EvZ5{N#Vi@0jQChj5sJ_7Bs6 z@!Zu~7?_O$Su89lF!Zg2ddA%@`qbh7p1b3APe4CjVajuqT{ZYFf^n=n`hKC}poQd< zl9G~~552+9^qwyN_-@{(!W$<5<=Fy{Q1V+$av=>)uVDYl9bS@!gO4gkSTk(E&nzS`e$-R=@=GU5NZyx?@B0@xyS8AvFJSy+p z;G>rEITOupD}!^;fRobft?663pvw)vypUn}kdT`OcjUzgmk~0uKRsBG-6Dx@{etd5 zYa0D#qLCmxV#5?!mx{=0SDP9nN1dH)AarYTDjZx+lt%7)g!~X%t2@x1cwY+oaNCSE z5=%E%&QB0U$35`VV2f({fm0tra8jl@iPOGcmiGR1WI4Nt4CCNQ0Q?ShmP^@0Z3^0 z^D*c@oB!Sa5o5fLgF>mH?XKm|+M7-xFB=Z56Fhak;c1U@sC2!O-Ey=1y!gcI`0-EH zbP!0W+fCrJ0u~EVW8hOgxOpX;fwmiFQXp`hw$U;XUPR~MeU!GHu7c;7mR4B!4rT`- zkn0c&S4eSjF~+`lB%QnbrdsvmxTFuTk$Ee3<~kOyzU$+hgM-$*>9-s5>-yP0udwP~ zqdnxFPQ$yR($eOG4g?_DQudw+OO=L|ZW`q-Ci^ZJSNIj~2;r--wf?JFO zuJ8+ez9N+tN)Jx9OneC8noc^S`3bpGTUv2t^1)>WQ0jBZ#qLuT#1qm5F`Kk!r1x}- z%B=bO*YPQQv&Loa5yQVA@Ro+eMMoK4D(q4*Q(y@&Fp69vZ;GV>|tUid8)cJ4RV&Te(zHw9ME%V-& zr>A5To%Vom(b9hK%i(DH-_Ntj_j|#{CBRw(meB318FbqrxR~4TJ9b0B#1>dsS;aZt z%3&Gn1q5lkGQs`-yh+!~zCmb(y`K7(?(HK@k^g$>i=i@1wXk@rNw2@B PU8Sv|uU>l7_WAz+sD|Tp literal 93358 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 i?b|AUFtpLc+7<77;Dj#-PP(TW7QCRL6WB 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૔-Q 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 Date: Tue, 28 Nov 2017 17:05:30 -0800 Subject: [PATCH 216/328] Update artefact.dm (#33129) Beep Beep more hard to get suicides are fun! --- code/game/gamemodes/wizard/artefact.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index cd50f52d5f..e94226128b 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -306,6 +306,11 @@ var/area/A = get_area(src) to_chat(victim, "You feel a dark presence from [A.name]") +/obj/item/voodoo/suicide_act(mob/living/carbon/user) + user.visible_message("[user] links the voodoo doll to themself and sits on it, infinitely crushing themself! It looks like [user.p_theyre()] trying to commit suicide!") + user.gib() + return(BRUTELOSS) + /obj/item/voodoo/fire_act(exposed_temperature, exposed_volume) if(target) target.adjust_fire_stacks(20) @@ -313,7 +318,6 @@ GiveHint(target,1) return ..() - //Provides a decent heal, need to pump every 6 seconds /obj/item/organ/heart/cursed/wizard pump_delay = 60 From 4ff2063a4a595af85d8d5e6bd124af3dd62dfdbb Mon Sep 17 00:00:00 2001 From: deathride58 Date: Tue, 28 Nov 2017 22:19:08 -0500 Subject: [PATCH 218/328] Update sloth.dm --- code/modules/mob/living/simple_animal/friendly/sloth.dm | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/sloth.dm b/code/modules/mob/living/simple_animal/friendly/sloth.dm index 8baf500bda..6f19632e88 100644 --- a/code/modules/mob/living/simple_animal/friendly/sloth.dm +++ b/code/modules/mob/living/simple_animal/friendly/sloth.dm @@ -19,14 +19,9 @@ melee_damage_upper = 18 health = 50 maxHealth = 50 -<<<<<<< HEAD - speed = 2 - devourable = TRUE -======= speed = 10 glide_size = 2 ->>>>>>> 01ad14d... Makes the sloth an actual sloth (#33131) - + devourable = TRUE //Cargo Sloth /mob/living/simple_animal/sloth/paperwork From 41c5e634a67be223aa85015c11994ba84968ffcf Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 28 Nov 2017 21:19:49 -0600 Subject: [PATCH 219/328] Automatic changelog generation for PR #4149 [ci skip] --- html/changelogs/AutoChangeLog-pr-4149.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4149.yml diff --git a/html/changelogs/AutoChangeLog-pr-4149.yml b/html/changelogs/AutoChangeLog-pr-4149.yml new file mode 100644 index 0000000000..909fc3e1b9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4149.yml @@ -0,0 +1,4 @@ +author: "JJRcop" +delete-after: True +changes: + - admin: "Fixed the Make space ninja verb." From 507c862c7cb801b0925903753d7c7097aa0ae125 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Tue, 28 Nov 2017 22:24:00 -0500 Subject: [PATCH 220/328] Update hud.dm --- code/modules/clothing/glasses/hud.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 93e2fa5254..762f1e53b0 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -62,12 +62,8 @@ name = "diagnostic HUD" desc = "A heads-up display capable of analyzing the integrity and status of robotics and exosuits." icon_state = "diagnostichud" -<<<<<<< HEAD origin_tech = "magnets=2;engineering=2" - hud_type = DATA_HUD_DIAGNOSTIC -======= hud_type = DATA_HUD_DIAGNOSTIC_BASIC ->>>>>>> 069f909... Added bot path data huds (#32967) glass_colour_type = /datum/client_colour/glass_colour/lightorange /obj/item/clothing/glasses/hud/diagnostic/night From a850dbf56d6eda2ba134c24a7c18aea4056cb9b8 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 28 Nov 2017 21:28:07 -0600 Subject: [PATCH 221/328] Automatic changelog generation for PR #4162 [ci skip] --- html/changelogs/AutoChangeLog-pr-4162.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4162.yml diff --git a/html/changelogs/AutoChangeLog-pr-4162.yml b/html/changelogs/AutoChangeLog-pr-4162.yml new file mode 100644 index 0000000000..be4968592e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4162.yml @@ -0,0 +1,5 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - tweak: "The sloth no longer suspiciously moves fast when gliding between tiles." + - balance: "The sloth's movespeed when inhabited by a player has been lowered from once every 1/5 of a second to once every second." From 9458087cfafeee3708220d8de3fe1bf6678fa61b Mon Sep 17 00:00:00 2001 From: deathride58 Date: Tue, 28 Nov 2017 22:31:54 -0500 Subject: [PATCH 222/328] Update scanners.dm --- code/game/objects/items/devices/scanners.dm | 67 --------------------- 1 file changed, 67 deletions(-) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index a9ab066744..a5dbb71924 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -392,73 +392,6 @@ GAS ANALYZER to_chat(user, "[env_gases[id][GAS_META][META_GAS_NAME]]: [round(gas_concentration*100, 0.01)] %") to_chat(user, "Temperature: [round(environment.temperature-T0C)] °C") - -<<<<<<< HEAD -/obj/item/device/mass_spectrometer - desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample." - name = "mass-spectrometer" - icon_state = "spectrometer" - item_state = "analyzer" - lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - w_class = WEIGHT_CLASS_SMALL - flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT - container_type = OPENCONTAINER_1 - throwforce = 0 - throw_speed = 3 - throw_range = 7 - materials = list(MAT_METAL=150, MAT_GLASS=100) - origin_tech = "magnets=2;biotech=1;plasmatech=2" - var/details = 0 - -/obj/item/device/mass_spectrometer/New() - ..() - create_reagents(5) - -/obj/item/device/mass_spectrometer/on_reagent_change(changetype) - if(reagents.total_volume) - icon_state = initial(icon_state) + "_s" - else - icon_state = initial(icon_state) - -/obj/item/device/mass_spectrometer/attack_self(mob/user) - if (user.stat || user.eye_blind) - return - if (!user.IsAdvancedToolUser()) - to_chat(user, "You don't have the dexterity to do this!") - return - if(reagents.total_volume) - var/list/blood_traces = list() - for(var/datum/reagent/R in reagents.reagent_list) - if(R.id != "blood") - reagents.clear_reagents() - to_chat(user, "The sample was contaminated! Please insert another sample.") - return - else - blood_traces = params2list(R.data["trace_chem"]) - break - var/dat = "Trace Chemicals Found:" - if(!blood_traces.len) - dat += "
None" - else - for(var/R in blood_traces) - dat += "
[GLOB.chemical_reagents_list[R]]" - if(details) - dat += " ([blood_traces[R]] units)" - dat += "
" - to_chat(user, dat) - reagents.clear_reagents() - - -/obj/item/device/mass_spectrometer/adv - name = "advanced mass-spectrometer" - icon_state = "adv_spectrometer" - details = 1 - origin_tech = "magnets=4;biotech=3;plasmatech=3" - -======= ->>>>>>> 81fb344... Removes mass-spectrometers (#32965) /obj/item/device/slime_scanner name = "slime scanner" desc = "A device that analyzes a slime's internal composition and measures its stats." From e06b368fdbb8109e6dda29c8467d66518d6b6975 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Tue, 28 Nov 2017 22:32:23 -0500 Subject: [PATCH 223/328] Update medical_designs.dm --- .../research/designs/medical_designs.dm | 26 +------------------ 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 80bf47cc14..a0a7d02858 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -2,30 +2,6 @@ ////////////Medical Tools//////////////// ///////////////////////////////////////// -<<<<<<< HEAD - -/datum/design/mass_spectrometer - name = "Mass-Spectrometer" - desc = "A device for analyzing chemicals in the blood." - id = "mass_spectrometer" - req_tech = list("magnets" = 2, "plasmatech" = 2) - build_type = PROTOLATHE - materials = list(MAT_METAL = 300, MAT_GLASS = 100) - build_path = /obj/item/device/mass_spectrometer - category = list("Medical Designs") - -/datum/design/adv_mass_spectrometer - name = "Advanced Mass-Spectrometer" - desc = "A device for analyzing chemicals in the blood and their quantities." - id = "adv_mass_spectrometer" - req_tech = list("biotech" = 3, "magnets" = 4, "plasmatech" = 3) - build_type = PROTOLATHE - materials = list(MAT_METAL = 500, MAT_GLASS = 200) - build_path = /obj/item/device/mass_spectrometer/adv - category = list("Medical Designs") - -======= ->>>>>>> 81fb344... Removes mass-spectrometers (#32965) /datum/design/mmi name = "Man-Machine Interface" desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity." @@ -452,4 +428,4 @@ build_type = PROTOLATHE materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 500) build_path = /obj/item/organ/lungs/cybernetic/upgraded - category = list("Medical Designs") \ No newline at end of file + category = list("Medical Designs") From 008588bd91aae80180d1b7ded3368049193b85d6 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 29 Nov 2017 22:34:29 -0600 Subject: [PATCH 224/328] Automatic changelog generation for PR #4155 [ci skip] --- html/changelogs/AutoChangeLog-pr-4155.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4155.yml diff --git a/html/changelogs/AutoChangeLog-pr-4155.yml b/html/changelogs/AutoChangeLog-pr-4155.yml new file mode 100644 index 0000000000..0f762fae2e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4155.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "AI and observer diagnostic huds will now show the astar path of all bots, and Pai bots will be given a visible path to follow when called by the AI." From dc57555410d10ae3b9d0bc5760503ddf0dda3d7a Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 29 Nov 2017 22:43:54 -0600 Subject: [PATCH 225/328] Automatic changelog generation for PR #4133 [ci skip] --- html/changelogs/AutoChangeLog-pr-4133.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4133.yml diff --git a/html/changelogs/AutoChangeLog-pr-4133.yml b/html/changelogs/AutoChangeLog-pr-4133.yml new file mode 100644 index 0000000000..2b50fbd4ea --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4133.yml @@ -0,0 +1,14 @@ +author: "XDTM" +delete-after: True +changes: + - balance: "Viruses' healing symptoms have been reworked!" + - rscdel: "All existing healing symptoms have been removed in favour of new ones." + - rscdel: "Weight Even and Weight Gain have been removed, so hunger can be used for balancing in symptoms." + - rscadd: "Starlight Condensation heals toxin damage if you're in space using starlight as a catalyst. Being up to two tiles away also works, as long as you can still see it, but slower." + - rscadd: "Toxolysis (level 7) rapidly cleanses all chemicals from the body, with no exception." + - rscadd: "Cellular Molding heals brute damage depending on your body temperature: the higher the temperature, the faster the healing. Requires above-average temperature to activate, and the speed heavily increases while on fire." + - rscadd: "Regenerative Coma (level 8) causes the virus to send you into a deep coma when you are heavily damaged (>70 brute+burn damage). While you are unconscious, either from the virus or from other sources, the virus will heal both brute and burn damage fairly quickly. Sleeping also works, but at reduced speed." + - rscadd: "Tissue Hydration heals burn damage if you are wet (negative fire stacks) or if you have water in your bloodstream." + - rscadd: "Plasma Fixation (level 8) stabilizes temperature and heals burns while plasma is in your body or while standing in a plasma cloud. Does not protect from the poisoning effects of plasma." + - rscadd: "Radioactive Resonance gives a mild constant brute and burn healing while irradiated. The healing becomes more intense if you reach higher levels of radiation, but is still less than the alternatives." + - rscadd: "Metabolic Boost (level 7) doubles the rate at which you process chemicals, good and bad, but also increases hunger tenfold." From 0b3bfdea89d31c190faed1dcf26e4775bbbcff26 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 29 Nov 2017 22:45:15 -0600 Subject: [PATCH 226/328] Automatic changelog generation for PR #4150 [ci skip] --- html/changelogs/AutoChangeLog-pr-4150.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4150.yml diff --git a/html/changelogs/AutoChangeLog-pr-4150.yml b/html/changelogs/AutoChangeLog-pr-4150.yml new file mode 100644 index 0000000000..943af018e5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4150.yml @@ -0,0 +1,4 @@ +author: "ACCount" +delete-after: True +changes: + - rscdel: "Mass-spectrometers are removed. Would anyone notice if not for this changelog entry?" From f26f54772adcf0eeb2b915c8120a47d4896b2fae Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 29 Nov 2017 22:46:27 -0600 Subject: [PATCH 227/328] Automatic changelog generation for PR #4152 [ci skip] --- html/changelogs/AutoChangeLog-pr-4152.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4152.yml diff --git a/html/changelogs/AutoChangeLog-pr-4152.yml b/html/changelogs/AutoChangeLog-pr-4152.yml new file mode 100644 index 0000000000..df1b1cd09f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4152.yml @@ -0,0 +1,4 @@ +author: "ACCount" +delete-after: True +changes: + - rscdel: "\"Machine prototype\" is removed from the game." From 4b25b45701617f99448381dc5b82377b6770e01c Mon Sep 17 00:00:00 2001 From: LetterJay Date: Thu, 30 Nov 2017 07:49:42 -0600 Subject: [PATCH 228/328] donation --- code/citadel/custom_loadout/custom_items.dm | 9 +++++++++ icons/obj/custom.dmi | Bin 6886 -> 8689 bytes 2 files changed, 9 insertions(+) diff --git a/code/citadel/custom_loadout/custom_items.dm b/code/citadel/custom_loadout/custom_items.dm index 44f672e653..a3ea6f4cfa 100644 --- a/code/citadel/custom_loadout/custom_items.dm +++ b/code/citadel/custom_loadout/custom_items.dm @@ -104,6 +104,15 @@ resistance_flags = FLAMMABLE squeak_override = list('sound/misc/server-ready.ogg'= 1) +/obj/item/clothing/neck/cloak/festive + name = "Celebratory Cloak of Morozko" + desc = " It probably will protect from snow, charcoal or elves." + icon = 'icons/obj/custom.dmi' + icon_state = "festive" + item_state = "festive" + w_class = WEIGHT_CLASS_SMALL + body_parts_covered = CHEST|GROIN|LEGS|ARMS + /*Zigfie*/ diff --git a/icons/obj/custom.dmi b/icons/obj/custom.dmi index cca6f3fa7931bb731e98edf230b9a30cd6d2936e..844fcbf72f383e62c68c0d39ed6de39614b9a129 100644 GIT binary patch literal 8689 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 bd&1enV9YU3!9(niD*#wkTcu9fI^ur-Z3T2i From 6d8d9802d474ba07a090d5a0e3f7d500c0b188e4 Mon Sep 17 00:00:00 2001 From: Leo Date: Thu, 30 Nov 2017 18:42:52 -0200 Subject: [PATCH 229/328] Merge pull request #33153 from AnturK/adv_cam_cleanup Fixes some advanced camera issues --- code/game/machinery/computer/camera_advanced.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index bf772a157f..c8850975f1 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -43,6 +43,7 @@ for(var/V in actions) var/datum/action/A = V A.Remove(user) + actions.Cut() if(user.client) user.reset_perspective(null) eyeobj.RemoveImages() @@ -62,6 +63,7 @@ current_user.unset_machine() if(eyeobj) qdel(eyeobj) + QDEL_LIST(actions) return ..() /obj/machinery/computer/camera_advanced/on_unset_machine(mob/M) From d19c41cf645f07ad8a098d9c6af0d2309a2a38d0 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Thu, 30 Nov 2017 01:55:33 -0500 Subject: [PATCH 231/328] Do this (#33149) --- code/game/atoms.dm | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 5f074e44f3..6c467bc53b 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -421,22 +421,6 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons) /atom/proc/wash_cream() return 1 -/atom/proc/get_global_map_pos() - if(!islist(GLOB.global_map) || isemptylist(GLOB.global_map)) - return - var/cur_x = null - var/cur_y = null - var/list/y_arr = null - for(cur_x=1,cur_x<=GLOB.global_map.len,cur_x++) - y_arr = GLOB.global_map[cur_x] - cur_y = y_arr.Find(src.z) - if(cur_y) - break - if(cur_x && cur_y) - return list("x"=cur_x,"y"=cur_y) - else - return 0 - /atom/proc/isinspace() if(isspaceturf(get_turf(src))) return 1 @@ -634,4 +618,4 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons) return /atom/proc/wirecutter_act(mob/user, obj/item/tool) - return \ No newline at end of file + return From 9601136df294379530ac8b671d94c74a70ce6ea0 Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Wed, 29 Nov 2017 21:58:56 -0500 Subject: [PATCH 233/328] sm soundtweak (#33154) --- code/datums/looping_sounds/machinery_sounds.dm | 2 +- code/modules/power/supermatter/supermatter.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/looping_sounds/machinery_sounds.dm b/code/datums/looping_sounds/machinery_sounds.dm index 4e93daba0d..a3f510f0dd 100644 --- a/code/datums/looping_sounds/machinery_sounds.dm +++ b/code/datums/looping_sounds/machinery_sounds.dm @@ -10,7 +10,7 @@ /datum/looping_sound/supermatter mid_sounds = list('sound/machines/sm/supermatter1.ogg'=1,'sound/machines/sm/supermatter2.ogg'=1,'sound/machines/sm/supermatter3.ogg'=1) - mid_length = 6 + mid_length = 10 volume = 1 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index de67f837f4..02cc80291e 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -258,7 +258,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) return //Yeah just stop. if(power) - soundloop.volume = min(50, (round(power, 50)/50)+1) // 5 +1 volume per 20 power. 2500 power is max + soundloop.volume = min(40, (round(power/100)/50)+1) // 5 +1 volume per 20 power. 2500 power is max //Ok, get the air from the turf var/datum/gas_mixture/env = T.return_air() From a0cdca9e7c568a003dc755857dc21ddd70efaffb Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Thu, 30 Nov 2017 02:55:45 +0000 Subject: [PATCH 235/328] Fix turbine computer showing broken --- code/modules/power/turbine.dm | 14 +++++++++----- tgui/src/interfaces/turbine_computer.ract | 18 +++++++++--------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index ac664894de..8b88193e21 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -344,10 +344,10 @@ /obj/machinery/computer/turbine_computer/ui_data(mob/user) var/list/data = list() - data["working"] = (compressor.starter && compressor && compressor.turbine && !compressor.stat && !compressor.turbine.stat) data["connected"] = (compressor && compressor.turbine) ? TRUE : FALSE - data["compressor_broke"] = (!compressor || compressor.stat) ? TRUE : FALSE - data["turbine_broke"] = (!compressor || compressor.turbine.stat) ? TRUE : FALSE + data["compressor_broke"] = (!compressor || (compressor.stat & BROKEN)) ? TRUE : FALSE + data["turbine_broke"] = (!compressor || !compressor.turbine || (compressor.turbine.stat & BROKEN)) ? TRUE : FALSE + data["broken"] = (data["compressor_broke"] || data["turbine_broke"]) data["online"] = compressor.starter data["power"] = DisplayPower(compressor.turbine.lastgen) @@ -360,9 +360,13 @@ if(..()) return switch(action) - if("power") + if("power-on") if(compressor && compressor.turbine) - compressor.starter = !compressor.starter + compressor.starter = TRUE + . = TRUE + if("power-off") + if(compressor && compressor.turbine) + compressor.starter = FALSE . = TRUE if("reconnect") locate_machinery() diff --git a/tgui/src/interfaces/turbine_computer.ract b/tgui/src/interfaces/turbine_computer.ract index 0e24823b39..325c5b4581 100644 --- a/tgui/src/interfaces/turbine_computer.ract +++ b/tgui/src/interfaces/turbine_computer.ract @@ -13,20 +13,20 @@ component.exports = {
- Reconnect + Reconnect
- {{#if data.working}} - {{data.online && !(data.compressor_broke || data.turbine_broke) ? "Online" : "Offline"}} - {{else}} + {{#if data.broken}} Broken + {{else}} + {{data.online && !(data.compressor_broke || data.turbine_broke) ? "Online" : "Offline"}} {{/if}}
- On - Off + On + Off
{{#if data.compressor_broke}}
@@ -40,12 +40,12 @@ component.exports = {
- {{data.working ? data.rpm : "--"}} RPM + {{data.broken ? "--" : data.rpm}} RPM - {{data.working ? data.temp : "--"}} K + {{data.broken ? "--" : data.temp}} K - {{data.working ? data.power : "--"}} + {{data.broken ? "--" : data.power}} From 56969e25411babf9505065f1b42d50c72efa507d Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 30 Nov 2017 20:16:31 -0500 Subject: [PATCH 236/328] Moderate Damage Examination (#33008) Ok so the last one only worked on carbons who weren't humans, woops. See: #32707 :cl: Robustin tweak: Damage examinations now include a "moderate" classification. Before minor was <30 and severe was anything 30 or above. Now minor is <25, moderate is 25 to <50, and severe is 50+. /:cl: --- code/modules/mob/living/carbon/human/examine.dm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 6f3dca3ed7..2dc4236652 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -188,24 +188,30 @@ msg += "[t_He] [p_do()]n't seem all there.\n" if(temp) - if(temp < 30) + if(temp < 25) msg += "[t_He] [t_has] minor bruising.\n" + else if(temp < 50) + msg += "[t_He] [t_has] moderate bruising!\n" else msg += "[t_He] [t_has] severe bruising!\n" temp = getFireLoss() if(temp) - if(temp < 30) + if(temp < 25) msg += "[t_He] [t_has] minor burns.\n" + else if (temp < 50) + msg += "[t_He] [t_has] moderate burns!\n" else msg += "[t_He] [t_has] severe burns!\n" temp = getCloneLoss() if(temp) - if(temp < 30) + if(temp < 25) msg += "[t_He] [t_has] minor cellular damage.\n" + else if(temp < 50) + msg += "[t_He] [t_has] moderate cellular damage!\n" else - msg += "[t_He] [t_has] severe cellular damage.\n" + msg += "[t_He] [t_has] severe cellular damage!\n" if(fire_stacks > 0) From 6949c2e2a5d64654b08b0e4f6003a544fc2d77b1 Mon Sep 17 00:00:00 2001 From: oranges Date: Fri, 1 Dec 2017 14:22:14 +1300 Subject: [PATCH 238/328] Merge pull request #33120 from QualityVan/glasses Makes glasses handle both nearsightedness and eye damage --- code/modules/mob/living/carbon/human/inventory.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 71c5dedc26..4f41c2d40c 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -103,6 +103,7 @@ update_tint() if(G.vision_correction) clear_fullscreen("nearsighted") + clear_fullscreen("eye_damage") if(G.vision_flags || G.darkness_view || G.invis_override || G.invis_view || !isnull(G.lighting_alpha)) update_sight() update_inv_glasses() @@ -188,6 +189,7 @@ if(G.vision_correction) if(disabilities & NEARSIGHT) overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1) + adjust_eye_damage(0) if(G.vision_flags || G.darkness_view || G.invis_override || G.invis_view || !isnull(G.lighting_alpha)) update_sight() if(!QDELETED(src)) From 194513040ca76399fcef7fb3d476106a396651c0 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 30 Nov 2017 20:02:23 -0600 Subject: [PATCH 240/328] Automatic changelog generation for PR #4170 [ci skip] --- html/changelogs/AutoChangeLog-pr-4170.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4170.yml diff --git a/html/changelogs/AutoChangeLog-pr-4170.yml b/html/changelogs/AutoChangeLog-pr-4170.yml new file mode 100644 index 0000000000..f54be6c190 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4170.yml @@ -0,0 +1,4 @@ +author: "ninjanomnom" +delete-after: True +changes: + - tweak: "Reduced the max volume of sm by 1/5th and made the upper bounds only play mid delamination." From a3a87bdb3ff2ab2aebc15cc298d92356aa31e4b9 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 30 Nov 2017 20:02:55 -0600 Subject: [PATCH 241/328] Automatic changelog generation for PR #4172 [ci skip] --- html/changelogs/AutoChangeLog-pr-4172.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4172.yml diff --git a/html/changelogs/AutoChangeLog-pr-4172.yml b/html/changelogs/AutoChangeLog-pr-4172.yml new file mode 100644 index 0000000000..a2dac53175 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4172.yml @@ -0,0 +1,4 @@ +author: "Robustin" +delete-after: True +changes: + - tweak: "Damage examinations now include a \"moderate\" classification. Before minor was <30 and severe was anything 30 or above. Now minor is <25, moderate is 25 to <50, and severe is 50+." From 1cfff9477c9410947473fdd6f200854861c6c95d Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Fri, 1 Dec 2017 09:20:25 -0500 Subject: [PATCH 242/328] Cyberboss vs LICENSE round 27 (#33174) * Cyberboss vs LICENSE round 27 * Update license name in README.md --- OLD_LICENSE-GPLv3.txt => GPLv3.txt | 0 README.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename OLD_LICENSE-GPLv3.txt => GPLv3.txt (100%) diff --git a/OLD_LICENSE-GPLv3.txt b/GPLv3.txt similarity index 100% rename from OLD_LICENSE-GPLv3.txt rename to GPLv3.txt diff --git a/README.md b/README.md index 618f805f94..183f88472c 100644 --- a/README.md +++ b/README.md @@ -140,7 +140,7 @@ All code after [commit 333c566b88108de218d882840e61928a9b759d8f on 2014/31/12 at All code before [commit 333c566b88108de218d882840e61928a9b759d8f on 2014/31/12 at 4:38 PM PST](https://github.com/tgstation/tgstation/commit/333c566b88108de218d882840e61928a9b759d8f) is licensed under [GNU GPL v3](https://www.gnu.org/licenses/gpl-3.0.html). (Including tools unless their readme specifies otherwise.) -See LICENSE and OLD_LICENSE-GPLv3.txt for more details. +See LICENSE and GPLv3.txt for more details. tgui clientside is licensed as a subproject under the MIT license. Font Awesome font files, used by tgui, are licensed under the SIL Open Font License v1.1 From 19bd0b8486d168b228aab10a6116c9dd1025d537 Mon Sep 17 00:00:00 2001 From: uraniummeltdown Date: Fri, 1 Dec 2017 18:46:13 +0400 Subject: [PATCH 244/328] new cult construct shell sprite (#33171) --- icons/obj/wizard.dmi | Bin 15684 -> 16883 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/wizard.dmi b/icons/obj/wizard.dmi index 7ee9d04498c356e693036a370b8b6ecce78c8758..28b00d8707c1893fc8be10a247960ab963aa8903 100644 GIT binary patch literal 16883 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 Sd+_aO;EkNBY`L^a(EkC8Zb0Gy From 786c26fa974e6faf5982282c5499b499939af54e Mon Sep 17 00:00:00 2001 From: Robustin Date: Fri, 1 Dec 2017 12:57:54 -0500 Subject: [PATCH 246/328] Ratvar will now bitchslap BOH babies (#33159) * Singuloproofing Reebe * Message reformatted * Inconsistent Indentification * user is now living so we can knock them down --- code/game/objects/items/storage/backpack.dm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index a867b7568c..9a94ab6297 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -70,8 +70,13 @@ playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) return 0 -/obj/item/storage/backpack/holding/handle_item_insertion(obj/item/W, prevent_warning = 0, mob/user) +/obj/item/storage/backpack/holding/handle_item_insertion(obj/item/W, prevent_warning = 0, mob/living/user) if((istype(W, /obj/item/storage/backpack/holding) || count_by_type(W.GetAllContents(), /obj/item/storage/backpack/holding))) + var/turf/loccheck = get_turf(src) + if(loccheck.z == ZLEVEL_CITYOFCOGS) + user.visible_message("An unseen force knocks [user] to the ground!", "\"I think not!\"") + user.Knockdown(60) + return var/safety = alert(user, "Doing this will have extremely dire consequences for the station and its crew. Be sure you know what you're doing.", "Put in [name]?", "Proceed", "Abort") if(safety == "Abort" || !in_range(src, user) || !src || !W || user.incapacitated()) return From b8e754500c381eb1505c530b5527041c0cc0ce1a Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Fri, 1 Dec 2017 14:09:25 -0500 Subject: [PATCH 248/328] Bitflag returns from component signals (#33186) * For more useful returns from sendsignal * removes a needless else/indentation * cleanup --- code/__DEFINES/components.dm | 6 +++ code/_onclick/item_attack.dm | 4 +- code/datums/components/README.md | 1 + code/datums/components/_component.dm | 15 ++++---- code/datums/components/archaeology.dm | 39 ++++++++++---------- code/datums/components/infective.dm | 2 +- code/datums/components/material_container.dm | 6 +-- code/datums/components/paintable.dm | 4 +- code/datums/components/slippery.dm | 2 +- code/datums/components/spooky.dm | 2 +- 10 files changed, 45 insertions(+), 36 deletions(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index ddf3deb4a3..72b12ab988 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -10,6 +10,11 @@ #define COMPONENT_DUPE_ALLOWED 1 //duplicates allowed #define COMPONENT_DUPE_UNIQUE 2 //new component is deleted +// Signal return value flags +// The other defines are under the signal they're used in + +#define COMPONENT_ACTIVATED 1 // call parent.ComponentActivated(comp) and component.AfterComponentActivated() + // All signals. Format: // When the signal is called: (signal arguments) @@ -23,6 +28,7 @@ // /atom signals #define COMSIG_PARENT_ATTACKBY "atom_attackby" //from base of atom/attackby(): (/obj/item, /mob/living, params) + #define COMPONENT_NO_AFTERATTACK 2 //Return this in response if you don't want afterattack to be called #define COMSIG_ATOM_HULK_ATTACK "hulk_attack" //from base of atom/attack_hulk(): (/mob/living/carbon/human) #define COMSIG_PARENT_EXAMINE "atom_examine" //from base of atom/examine(): (/mob) #define COMSIG_ATOM_ENTERED "atom_entered" //from base of atom/Entered(): (/atom/movable, /atom) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index acdccba3df..56cd1d8e4c 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -34,7 +34,9 @@ // No comment /atom/proc/attackby(obj/item/W, mob/user, params) - return SendSignal(COMSIG_PARENT_ATTACKBY, W, user, params) + if(SendSignal(COMSIG_PARENT_ATTACKBY, W, user, params) & COMPONENT_NO_AFTERATTACK) + return TRUE + return FALSE /obj/attackby(obj/item/I, mob/living/user, params) return ..() || (can_be_hit && I.attack_obj(src, user)) diff --git a/code/datums/components/README.md b/code/datums/components/README.md index 11cbf1858d..476d820bc2 100644 --- a/code/datums/components/README.md +++ b/code/datums/components/README.md @@ -78,6 +78,7 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo 1. `/datum/proc/SendSignal(signal, ...)` (public, final) * Call to send a signal to the components of the target datum * Extra arguments are to be specified in the signal definition + * Returns a bitflag with signal specific information assembled from all activated components 1. `/datum/component/New(datum/parent, ...)` (private, final) * Runs internal setup for the component * Extra arguments are passed to `Initialize()` diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 4fb71acf84..39980b4f9d 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -164,24 +164,24 @@ /datum/proc/SendSignal(sigtype, ...) var/list/comps = datum_components if(!comps) - return FALSE + return NONE var/list/arguments = args.Copy() arguments.Cut(1, 2) var/target = comps[/datum/component] if(!length(target)) var/datum/component/C = target if(!C.enabled) - return FALSE + return NONE var/list/sps = C.signal_procs var/datum/callback/CB = LAZYACCESS(sps, sigtype) if(!CB) - return FALSE + return NONE . = CB.InvokeAsync(arglist(arguments)) - if(.) + if(. & COMPONENT_ACTIVATED) ComponentActivated(C) C.AfterComponentActivated() else - . = FALSE + . = NONE for(var/I in target) var/datum/component/C = I if(!C.enabled) @@ -190,10 +190,11 @@ var/datum/callback/CB = LAZYACCESS(sps, sigtype) if(!CB) continue - if(CB.InvokeAsync(arglist(arguments))) + var/retval = CB.InvokeAsync(arglist(arguments)) + . |= retval + if(retval & COMPONENT_ACTIVATED) ComponentActivated(C) C.AfterComponentActivated() - . = TRUE /datum/proc/ComponentActivated(datum/component/C) set waitfor = FALSE diff --git a/code/datums/components/archaeology.dm b/code/datums/components/archaeology.dm index ac4e3c107c..05a56952b6 100644 --- a/code/datums/components/archaeology.dm +++ b/code/datums/components/archaeology.dm @@ -20,27 +20,26 @@ /datum/component/archaeology/proc/Dig(obj/item/W, mob/living/user) if(dug) to_chat(user, "Looks like someone has dug here already.") - return FALSE - else - var/digging_speed - if (istype(W, /obj/item/shovel)) - var/obj/item/shovel/S = W - digging_speed = S.digspeed - else if (istype(W, /obj/item/pickaxe)) - var/obj/item/pickaxe/P = W - digging_speed = P.digspeed + return + + var/digging_speed + if (istype(W, /obj/item/shovel)) + var/obj/item/shovel/S = W + digging_speed = S.digspeed + else if (istype(W, /obj/item/pickaxe)) + var/obj/item/pickaxe/P = W + digging_speed = P.digspeed + + if (digging_speed && isturf(user.loc)) + to_chat(user, "You start digging...") + playsound(parent, 'sound/effects/shovel_dig.ogg', 50, 1) - if (digging_speed && isturf(user.loc)) - to_chat(user, "You start digging...") - playsound(parent, 'sound/effects/shovel_dig.ogg', 50, 1) - - if(do_after(user, digging_speed, target = parent)) - to_chat(user, "You dig a hole.") - gets_dug() - dug = TRUE - SSblackbox.record_feedback("tally", "pick_used_mining", 1, W.type) - return TRUE - return FALSE + if(do_after(user, digging_speed, target = parent)) + to_chat(user, "You dig a hole.") + gets_dug() + dug = TRUE + SSblackbox.record_feedback("tally", "pick_used_mining", 1, W.type) + return COMPONENT_NO_AFTERATTACK /datum/component/archaeology/proc/gets_dug() if(dug) diff --git a/code/datums/components/infective.dm b/code/datums/components/infective.dm index cedede6b04..5b2232b8a9 100644 --- a/code/datums/components/infective.dm +++ b/code/datums/components/infective.dm @@ -10,4 +10,4 @@ if(istype(victim)) for(var/datum/disease/D in diseases) victim.ContactContractDisease(D, "feet") - return TRUE \ No newline at end of file + return COMPONENT_ACTIVATED \ No newline at end of file diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm index c6acb7d78d..ec9ac1d1e6 100644 --- a/code/datums/components/material_container.dm +++ b/code/datums/components/material_container.dm @@ -53,11 +53,11 @@ /datum/component/material_container/proc/OnAttackBy(obj/item/I, mob/living/user) var/list/tc = allowed_typecache if(user.a_intent == INTENT_HARM) - return FALSE + return if((I.flags_2 & (HOLOGRAM_2 | NO_MAT_REDEMPTION_2)) || (tc && !is_type_in_typecache(I, tc))) to_chat(user, "[parent] won't accept [I]!") - return FALSE - . = TRUE + return + . = COMPONENT_ACTIVATED | COMPONENT_NO_AFTERATTACK last_insert_success = FALSE var/datum/callback/pc = precondition if(pc && !pc.Invoke()) diff --git a/code/datums/components/paintable.dm b/code/datums/components/paintable.dm index 2ea94334d0..01e81d27c0 100644 --- a/code/datums/components/paintable.dm +++ b/code/datums/components/paintable.dm @@ -14,8 +14,8 @@ /datum/component/spraycan_paintable/proc/Repaint(obj/item/toy/crayon/spraycan/spraycan, mob/living/user) if(!istype(spraycan) || user.a_intent == INTENT_HARM) - return FALSE - . = TRUE + return + . = COMPONENT_NO_AFTERATTACK if(spraycan.is_capped) to_chat(user, "Take the cap off first!") return diff --git a/code/datums/components/slippery.dm b/code/datums/components/slippery.dm index 573bb81d11..c174ba5ecb 100644 --- a/code/datums/components/slippery.dm +++ b/code/datums/components/slippery.dm @@ -12,7 +12,7 @@ var/mob/victim = AM if(istype(victim) && !victim.is_flying() && victim.slip(intensity, parent, lube_flags)) slip_victim = victim - return TRUE + return COMPONENT_ACTIVATED /datum/component/slippery/AfterComponentActivated() slip_victim = null diff --git a/code/datums/components/spooky.dm b/code/datums/components/spooky.dm index 966baf7c4a..3f3b0341ee 100644 --- a/code/datums/components/spooky.dm +++ b/code/datums/components/spooky.dm @@ -19,7 +19,7 @@ if(ishuman(C)) var/mob/living/carbon/human/H = C if(istype(H.dna.species, /datum/species/skeleton)) - return ..() //undeads are unaffected by the spook-pocalypse. + return //undeads are unaffected by the spook-pocalypse. if(istype(H.dna.species, /datum/species/zombie)) H.adjustStaminaLoss(25) H.Knockdown(15) //zombies can't resist the doot From ee8ca86e3abf1c2f85731de5b7afe69d423693e1 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sat, 2 Dec 2017 09:46:48 -0500 Subject: [PATCH 250/328] Merge pull request #33192 from Robustin/SavioroftheUniverse Fixes terrible Flash logic --- code/modules/assembly/flash.dm | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index 3a36b4cdd0..a55016e2dd 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -71,15 +71,12 @@ return 1 /obj/item/device/assembly/flash/proc/try_use_flash(mob/user = null) - flash_recharge(10) - if(crit_fail) return 0 - playsound(src.loc, 'sound/weapons/flash.ogg', 100, 1) - update_icon(1) times_used++ - + flash_recharge(10) + update_icon(1) if(user && !clown_check(user)) return 0 @@ -107,11 +104,9 @@ /obj/item/device/assembly/flash/attack(mob/living/M, mob/user) if(!try_use_flash(user)) return 0 - if(iscarbon(M)) flash_carbon(M, user, 5, 1) return 1 - else if(issilicon(M)) var/mob/living/silicon/robot/R = M add_logs(user, R, "flashed", src) From 65dbabab89408346474a49760fe41ce85a59e0ff Mon Sep 17 00:00:00 2001 From: FrozenGuy5 <31222036+praisenarsie@users.noreply.github.com> Date: Sat, 2 Dec 2017 14:43:46 +0000 Subject: [PATCH 252/328] Prevents the PA wires from being EMP'd (#33199) * returns emp_act * jordie for code owner --- code/datums/wires/particle_accelerator.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/datums/wires/particle_accelerator.dm b/code/datums/wires/particle_accelerator.dm index d38147f1ec..4bf49dd814 100644 --- a/code/datums/wires/particle_accelerator.dm +++ b/code/datums/wires/particle_accelerator.dm @@ -42,4 +42,7 @@ if(WIRE_LIMIT) C.strength_upper_limit = (mend ? 2 : 3) if(C.strength_upper_limit < C.strength) - C.remove_strength() \ No newline at end of file + C.remove_strength() + +/datum/wires/particle_accelerator/control_box/emp_pulse() // to prevent singulo from pulsing wires + return \ No newline at end of file From 4489843fd6710647339cb50622fd7284303f5d8d Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sat, 2 Dec 2017 09:42:37 -0500 Subject: [PATCH 254/328] Merge pull request #33191 from vuonojenmustaturska/bombmemes Fixes a division by zero in humans' ex_act() --- code/modules/mob/living/carbon/human/human_defense.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index a1e60f8820..a96052a37e 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -361,10 +361,11 @@ /mob/living/carbon/human/ex_act(severity, target, origin) - if(origin && istype(origin, /datum/spacevine_mutation) && isvineimmune(src)) return ..() + if (!severity) + return var/b_loss = 0 var/f_loss = 0 var/bomb_armor = getarmor(null, "bomb") From 7be54897b2fbc0279de36221cad8d7099b62c6fd Mon Sep 17 00:00:00 2001 From: CosmicScientist Date: Sat, 2 Dec 2017 11:48:59 +0000 Subject: [PATCH 256/328] Plushie relationships! --- code/game/objects/items/plushes.dm | 302 ++++++++++++++++++++++++++++- 1 file changed, 300 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index f2fd53403a..29e3b59d3f 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -9,13 +9,91 @@ var/list/squeak_override //Weighted list; If you want your plush to have different squeak sounds use this var/stuffed = TRUE //If the plushie has stuffing in it var/obj/item/grenade/grenade //You can remove the stuffing from a plushie and add a grenade to it for *nefarious uses* + //--love ~<3-- + gender = NEUTER + var/obj/item/toy/plush/lover + var/obj/item/toy/plush/partner + var/obj/item/toy/plush/plush_child + var/obj/item/toy/plush/paternal_parent //who initiated creation + var/obj/item/toy/plush/maternal_parent //who owns, see love() + var/list/scorned = list() //who the plush hates + var/list/scorned_by = list() //who hates the plush, to remove external references on Destroy() + var/heartbroken = FALSE + var/vowbroken = FALSE + var/young = FALSE + var/mood_message + var/list/love_message + var/list/partner_message + var/list/heartbroken_message + var/list/vowbroken_message + var/list/parent_message + var/normal_desc + //--end of love :'(-- /obj/item/toy/plush/Initialize() . = ..() AddComponent(/datum/component/squeak, squeak_override) + //have we decided if Pinocchio goes in the blue or pink aisle yet? + if(gender == NEUTER) + if(prob(50)) + gender = FEMALE + else + gender = MALE + + love_message = list("\n[src] is so happy, \he could rip a seam!") + partner_message = list("\n[src] has a ring on \his finger! It says bound to my dear [partner].") + heartbroken_message = list("\n[src] looks so sad.") + vowbroken_message = list("\n[src] lost \his ring...") + parent_message = list("\n[src] can't remember what sleep is.") + + normal_desc = desc + /obj/item/toy/plush/Destroy() QDEL_NULL(grenade) + + //inform next of kin and... acquaintances + if(partner) + partner.bad_news(src) + partner = null + lover = null + else if(lover) + lover.bad_news(src) + lover = null + + if(paternal_parent) + paternal_parent.bad_news(src) + paternal_parent = null + + if(maternal_parent) + maternal_parent.bad_news(src) + maternal_parent = null + + if(plush_child) + plush_child.bad_news(src) + plush_child = null + + var/i + var/obj/item/toy/plush/P + for(i=1, i<=scorned.len, i++) + P = scorned[i] + P.bad_news(src) + scorned = null + + for(i=1, i<=scorned_by.len, i++) + P = scorned_by[i] + P.bad_news(src) + scorned_by = null + + //null remaining lists + squeak_override = null + + love_message = null + partner_message = null + heartbroken_message = null + vowbroken_message = null + parent_message = null + return ..() /obj/item/toy/plush/handle_atom_del(atom/A) @@ -66,8 +144,221 @@ var/turf/T = get_turf(user) log_game("[key_name(user)] added a grenade ([I.name]) to [src] at [COORD(T)].") return + if(istype(I, /obj/item/toy/plush)) + love(I, user) + return return ..() +/obj/item/toy/plush/proc/love(obj/item/toy/plush/Kisser, mob/living/user) //~<3 + var/chance = 100 //to steal a kiss, surely there's a 100% chance no-one would reject a plush such as I? + var/concern = 20 //perhaps something might cloud true love with doubt + var/loyalty = 30 //why should another get between us? + var/duty = 50 //conquering another's is what I live for + + //we are not catholic + if(young == TRUE || Kisser.young == TRUE) + user.show_message("[src] plays tag with [Kisser].", 1, + "They're happy.", 0) + Kisser.cheer_up() + cheer_up() + + //never again + else if(Kisser in scorned) + //message, visible, alternate message, neither visible nor audible + user.show_message("[src] rejects the advances of [Kisser]!", 1, + "That didn't feel like it worked.", 0) + else if(src in Kisser.scorned) + user.show_message("[Kisser] realises who [src] is and turns away.", 1, + "That didn't feel like it worked.", 0) + + //first comes love + else if(Kisser.lover != src && Kisser.partner != src) //cannot be lovers or married + if(Kisser.lover) //if the initiator has a lover + Kisser.lover.heartbreak(Kisser) //the old lover can get over the kiss-and-run whilst the kisser has some fun + chance -= concern //one heart already broken, what does another mean? + if(lover) //if the recipient has a lover + chance -= loyalty //mustn't... but those lips + if(partner) //if the recipient has a partner + chance -= duty //do we mate for life? + + if(prob(chance)) //did we bag a date? + user.visible_message("[user] makes [Kisser] kiss [src]!", + "You make [Kisser] kiss [src]!") + if(lover) //who cares for the past, we live in the present + lover.heartbreak(src) + new_lover(Kisser) + Kisser.new_lover(src) + else + user.show_message("[src] rejects the advances of [Kisser], maybe next time?", 1, + "That didn't feel like it worked, this time.", 0) + + //then comes marriage + else if(Kisser.lover == src && Kisser.partner != src) //need to be lovers (assumes loving is a two way street) but not married (also assumes similar) + user.visible_message("[user] pronounces [Kisser] and [src] married! D'aw.", + "You pronounce [Kisser] and [src] married!") + new_partner(Kisser) + Kisser.new_partner(src) + + //then comes a baby in a baby's carriage, or an adoption in an adoption's orphanage + else if(Kisser.partner == src && !plush_child) //the one advancing does not take ownership of the child and we have a one child policy in the toyshop + user.visible_message("[user] is going to break [Kisser] and [src] by bashing them like that.", + "[Kisser] passionately embraces [src] in your hands. Look away you perv!") + plop(Kisser) + user.visible_message("Something drops at the feet of [user].", + "The miracle of oh god did that just come out of [src]?!") + + //then comes protection, or abstinence if we are catholic + else if(Kisser.partner == src && plush_child) + user.visible_message("[user] makes [Kisser] nuzzle [src]!", + "You make [Kisser] nuzzle [src]!") + + //then oh fuck something unexpected happened + else + user.show_message("[Kisser] and [src] don't know what to do with one another.", 0) + +/obj/item/toy/plush/proc/heartbreak(obj/item/toy/plush/Brutus) + if(lover != Brutus) + to_chat(world, "lover != Brutus") + return //why are we considering someone we don't love? + + scorned.Add(Brutus) + Brutus.scorned_by(src) + + lover = null + Brutus.lover = null //feeling's mutual + + heartbroken = TRUE + mood_message = pick(heartbroken_message) + + if(partner == Brutus) //oh dear... + partner = null + Brutus.partner = null //it'd be weird otherwise + vowbroken = TRUE + mood_message = pick(vowbroken_message) + + update_desc() + +/obj/item/toy/plush/proc/scorned_by(obj/item/toy/plush/Outmoded) + scorned_by.Add(Outmoded) + +/obj/item/toy/plush/proc/new_lover(obj/item/toy/plush/Juliet) + if(lover == Juliet) + return //nice try + lover = Juliet + + cheer_up() + lover.cheer_up() + + mood_message = pick(love_message) + update_desc() + + if(partner) //who? + partner = null //more like who cares + +/obj/item/toy/plush/proc/new_partner(obj/item/toy/plush/Apple_of_my_eye) + if(partner == Apple_of_my_eye) + return //double marriage is just insecurity + if(lover != Apple_of_my_eye) + return //union not born out of love will falter + + partner = Apple_of_my_eye + + heal_memories() + partner.heal_memories() + + mood_message = pick(partner_message) + update_desc() + +/obj/item/toy/plush/proc/plop(obj/item/toy/plush/Daddy) + if(partner != Daddy) + return //we do not have bastards in our toyshop + + if(prob(50)) //it has my eyes + plush_child = new type(get_turf(loc)) + else //it has your eyes + plush_child = new Daddy.type(get_turf(loc)) + + plush_child.make_young(src, Daddy) + +/obj/item/toy/plush/proc/make_young(obj/item/toy/plush/Mama, obj/item/toy/plush/Dada) + if(Mama == Dada) + return //cloning is reserved for plants and spacemen + + maternal_parent = Mama + paternal_parent = Dada + young = TRUE + name = "[Mama] Jr" //Icelandic naming convention pending + normal_desc = "[src] is a little baby of [maternal_parent] and [paternal_parent]!" //original desc won't be used so the child can have moods + update_desc() + + Mama.mood_message = pick(Mama.parent_message) + Mama.update_desc() + Dada.mood_message = pick(Dada.parent_message) + Dada.update_desc() + +/obj/item/toy/plush/proc/bad_news(obj/item/toy/plush/Deceased) //cotton to cotton, sawdust to sawdust + var/is_that_letter_for_me = FALSE + if(partner == Deceased) //covers marriage + is_that_letter_for_me = TRUE + partner = null + lover = null + else if(lover == Deceased) //covers lovers + is_that_letter_for_me = TRUE + lover = null + + //covers children + if(maternal_parent == Deceased) + is_that_letter_for_me = TRUE + maternal_parent = null + + if(paternal_parent == Deceased) + is_that_letter_for_me = TRUE + paternal_parent = null + + //covers parents + if(plush_child == Deceased) + is_that_letter_for_me = TRUE + plush_child = null + + //covers bad memories + if(Deceased in scorned) + scorned.Remove(Deceased) + cheer_up() //what cold button eyes you have + + if(Deceased in scorned_by) + scorned_by.Remove(Deceased) + + //all references to the departed should be cleaned up by now + + if(is_that_letter_for_me) + heartbroken = TRUE + mood_message = pick(heartbroken_message) + update_desc() + +/obj/item/toy/plush/proc/cheer_up() //it'll be all right + if(!heartbroken) + return //you cannot make smile what is already + if(vowbroken) + return //it's a pretty big deal + + heartbroken = !heartbroken + + if(mood_message in heartbroken_message) + mood_message = null + update_desc() + +/obj/item/toy/plush/proc/heal_memories() //time fixes all wounds + if(!vowbroken) + vowbroken = !vowbroken + if(mood_message in vowbroken_message) + mood_message = null + cheer_up() + +/obj/item/toy/plush/proc/update_desc() + desc = normal_desc + if(mood_message) + desc += mood_message + /obj/item/toy/plush/carpplushie name = "space carp plushie" desc = "An adorable stuffed toy that resembles a space carp." @@ -88,6 +379,7 @@ desc = "An adorable plushie of the clockwork justiciar himself with new and improved spring arm action." icon_state = "plushvar" var/obj/item/toy/plush/narplush/clash_target + gender = MALE //he's a boy, right? /obj/item/toy/plush/plushvar/Moved() . = ..() @@ -173,6 +465,7 @@ desc = "A small stuffed doll of the elder god nar'sie. Who thought this was a good children's toy?" icon_state = "narplush" var/clashing + gender = FEMALE //it's canon if the toy is /obj/item/toy/plush/narplush/Moved() . = ..() @@ -198,7 +491,7 @@ /obj/item/toy/plush/nukeplushie name = "operative plushie" - desc = "An stuffed toy that resembles a syndicate nuclear operative. The tag claims operatives to be purely fictitious." + desc = "A stuffed toy that resembles a syndicate nuclear operative. The tag claims operatives to be purely fictitious." icon_state = "plushie_nuke" item_state = "plushie_nuke" attack_verb = list("shot", "nuked", "detonated") @@ -210,4 +503,9 @@ icon_state = "plushie_slime" item_state = "plushie_slime" attack_verb = list("blorbled", "slimed", "absorbed") - squeak_override = list('sound/effects/blobattack.ogg' = 1) \ No newline at end of file +<<<<<<< HEAD + squeak_override = list('sound/effects/blobattack.ogg' = 1) +======= + squeak_override = list('sound/effects/blobattack.ogg' = 1) + gender = FEMALE //given all the jokes and drawings, I'm not sure the xenobiologists would make a slimeboy +>>>>>>> 502905f... Plushie relationships! (#33184) From 18c01d88c5cbf721ea5eacaf921f69fe16c4b8c0 Mon Sep 17 00:00:00 2001 From: AnturK Date: Fri, 1 Dec 2017 08:25:25 +0100 Subject: [PATCH 257/328] Fixes syndieborg spawner --- code/game/gamemodes/antag_spawner.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm index 2a1a196b0e..7456b8f5eb 100644 --- a/code/game/gamemodes/antag_spawner.dm +++ b/code/game/gamemodes/antag_spawner.dm @@ -127,7 +127,7 @@ return used = TRUE var/mob/dead/observer/theghost = pick(nuke_candidates) - spawn_antag(theghost.client, get_turf(src), "syndieborg") + spawn_antag(theghost.client, get_turf(src), "syndieborg", user) do_sparks(4, TRUE, src) qdel(src) else From 9f9582ba5e7506297e0f5c1fee8ea087faaf77e5 Mon Sep 17 00:00:00 2001 From: vuonojenmustaturska Date: Sat, 2 Dec 2017 02:14:32 +0200 Subject: [PATCH 259/328] Clean up some loc assignments (#33157) --- code/game/mecha/mecha.dm | 2 +- code/game/objects/effects/anomalies.dm | 2 +- code/game/objects/effects/step_triggers.dm | 12 +++++------- code/modules/mining/fulton.dm | 6 +++--- code/modules/mob/living/bloodcrawl.dm | 2 +- code/modules/mob/living/living.dm | 2 +- code/modules/mob/living/living_defines.dm | 2 +- 7 files changed, 13 insertions(+), 15 deletions(-) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 34b1eed312..10d4638eb0 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -1042,4 +1042,4 @@ GLOBAL_VAR_INIT(year_integer, text2num(year)) // = 2013??? /obj/mecha/update_remote_sight(mob/living/user) if(occupant_sight_flags) if(user == occupant) - user.sight |= occupant_sight_flags + user.sight |= occupant_sight_flags \ No newline at end of file diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index 340322e5be..20155a7046 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -228,7 +228,7 @@ var/turf/newloc = locate(A.x + x_distance, A.y + y_distance, TO.z) // calculate the new place if(!A.Move(newloc) && newloc) // if the atom, for some reason, can't move, FORCE them to move! :) We try Move() first to invoke any movement-related checks the atom needs to perform after moving - A.loc = newloc + A.forceMove(newloc) spawn() if(ismob(A) && !(A in flashers)) // don't flash if we're already doing an effect diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index bfed048eff..3e0848130d 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -117,9 +117,8 @@ /obj/effect/step_trigger/teleporter/Trigger(atom/movable/A) if(teleport_x && teleport_y && teleport_z) - A.x = teleport_x - A.y = teleport_y - A.z = teleport_z + var/turf/T = locate(teleport_x, teleport_y, teleport_z) + A.forceMove(T) /* Random teleporter, teleports atoms to locations ranging from teleport_x - teleport_x_offset, etc */ @@ -132,9 +131,9 @@ if(teleport_x && teleport_y && teleport_z) if(teleport_x_offset && teleport_y_offset && teleport_z_offset) - A.x = rand(teleport_x, teleport_x_offset) - A.y = rand(teleport_y, teleport_y_offset) - A.z = rand(teleport_z, teleport_z_offset) + var/turf/T = locate(rand(teleport_x, teleport_x_offset), rand(teleport_y, teleport_y_offset), rand(teleport_z, teleport_z_offset)) + if (T) + A.forceMove(T) /* Fancy teleporter, creates sparks and smokes when used */ @@ -198,4 +197,3 @@ if(happens_once) qdel(src) - diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm index 743e84aca4..f23270e92a 100644 --- a/code/modules/mining/fulton.dm +++ b/code/modules/mining/fulton.dm @@ -80,7 +80,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) A.density = FALSE var/obj/effect/extraction_holder/holder_obj = new(A.loc) holder_obj.appearance = A.appearance - A.loc = holder_obj + A.forceMove(holder_obj) balloon2 = mutable_appearance('icons/obj/fulton_balloon.dmi', "fulton_expand") balloon2.pixel_y = 10 balloon2.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM @@ -113,7 +113,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) var/list/flooring_near_beacon = list() for(var/turf/open/floor in orange(1, beacon)) flooring_near_beacon += floor - holder_obj.loc = pick(flooring_near_beacon) + holder_obj.forceMove(pick(flooring_near_beacon)) animate(holder_obj, pixel_z = 10, time = 50) sleep(50) animate(holder_obj, pixel_z = 15, time = 10) @@ -131,7 +131,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) A.density = initial(A.density) animate(holder_obj, pixel_z = 0, time = 5) sleep(5) - A.loc = holder_obj.loc + A.forceMove(holder_obj.loc) qdel(holder_obj) if(uses_left <= 0) qdel(src) diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index b749bcda91..0052cf923d 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -160,7 +160,7 @@ return if(!B) return - src.loc = B.loc + forceMove(B.loc) src.client.eye = src src.visible_message("[src] rises out of the pool of blood!") exit_blood_effect(B) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 5abe664328..5a58c67c6b 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1022,4 +1022,4 @@ /mob/living/proc/add_abilities_to_panel() for(var/obj/effect/proc_holder/A in abilities) - statpanel("[A.panel]",A.get_panel_text(),A) + statpanel("[A.panel]",A.get_panel_text(),A) \ No newline at end of file diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 36b8c62cca..ff3ebadf15 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -78,4 +78,4 @@ var/last_words //used for database logging - var/list/obj/effect/proc_holder/abilities = list() + var/list/obj/effect/proc_holder/abilities = list() \ No newline at end of file From fd8e0ebabf748498b198df220a5d33df89d8b3a4 Mon Sep 17 00:00:00 2001 From: Leo Date: Fri, 1 Dec 2017 22:01:38 -0200 Subject: [PATCH 261/328] Cleans up the README --- README.md | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 618f805f94..d057e4352d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,12 @@ +<<<<<<< HEAD ##Citadel Station 13
Based and maintained from /tg/station.
+======= +[![Build Status](https://travis-ci.org/tgstation/tgstation.png)](https://travis-ci.org/tgstation/tgstation) [![Krihelimeter](https://www.krihelinator.xyz/badge/tgstation/tgstation)](https://www.krihelinator.xyz) +[![Percentage of issues still open](https://isitmaintained.com/badge/open/tgstation/tgstation.svg)](https://isitmaintained.com/project/tgstation/tgstation "Percentage of issues still open") [![Average time to resolve an issue](https://isitmaintained.com/badge/resolution/tgstation/tgstation.svg)](https://isitmaintained.com/project/tgstation/tgstation "Average time to resolve an issue") ![Coverage](https://img.shields.io/badge/coverage---2%25-red.svg) +[![forthebadge](https://forthebadge.com/images/badges/built-with-resentment.svg)](https://forthebadge.com) [![forthebadge](https://forthebadge.com/images/badges/contains-technical-debt.svg)](https://forthebadge.com) [![forinfinityandbyond](https://user-images.githubusercontent.com/5211576/29499758-4efff304-85e6-11e7-8267-62919c3688a9.gif)](https://www.reddit.com/r/SS13/comments/5oplxp/what_is_the_main_problem_with_byond_as_an_engine/dclbu1a) +>>>>>>> c47dde9... Merge pull request #33172 from praisenarsie/patch-12 [![Build Status](https://api.travis-ci.org/Citadel-Station-13/Citadel-Station-13.png)](https://travis-ci.org/Citadel-Station-13/Citadel-Station-13) [![Krihelimeter](http://www.krihelinator.xyz/badge/Citadel-Station-13/Citadel-Station-13)](http://www.krihelinator.xyz) @@ -32,12 +38,12 @@ hassle if you want to make any changes at all, so it's not recommended.) ## INSTALLATION -First-time installation should be fairly straightforward. First, you'll need -BYOND installed. You can get it from http://www.byond.com/. Once you've done -that, extract the game files to wherever you want to keep them. This is a +First-time installation should be fairly straightforward. First, you'll need +BYOND installed. You can get it from http://www.byond.com/. Once you've done +that, extract the game files to wherever you want to keep them. This is a sourcecode-only release, so the next step is to compile the server files. Open tgstation.dme by double-clicking it, open the Build menu, and click -compile. This'll take a little while, and if everything's done right you'll get +compile. This'll take a little while, and if everything's done right you'll get a message like this: ``` @@ -49,17 +55,17 @@ If you see any errors or warnings, something has gone wrong - possibly a corrupt download or the files extracted wrong. If problems persist, ask for assistance in irc://irc.rizon.net/coderbus -Once that's done, open up the config folder. You'll want to edit config.txt to +Once that's done, open up the config folder. You'll want to edit config.txt to set the probabilities for different gamemodes in Secret and to set your server location so that all your players don't get disconnected at the end of each -round. It's recommended you don't turn on the gamemodes with probability 0, +round. It's recommended you don't turn on the gamemodes with probability 0, except Extended, as they have various issues and aren't currently being tested, -so they may have unknown and bizarre bugs. Extended is essentially no mode, and +so they may have unknown and bizarre bugs. Extended is essentially no mode, and isn't in the Secret rotation by default as it's just not very fun. You'll also want to edit config/admins.txt to remove the default admins and add -your own. "Game Master" is the highest level of access, and probably the one -you'll want to use for now. You can set up your own ranks and find out more in +your own. "Game Master" is the highest level of access, and probably the one +you'll want to use for now. You can set up your own ranks and find out more in config/admin_ranks.txt The format is @@ -71,8 +77,8 @@ byondkey = Rank where the admin rank must be properly capitalised. Finally, to start the server, run Dream Daemon and enter the path to your -compiled tgstation.dmb file. Make sure to set the port to the one you -specified in the config.txt, and set the Security box to 'Safe'. Then press GO +compiled tgstation.dmb file. Make sure to set the port to the one you +specified in the config.txt, and set the Security box to 'Safe'. Then press GO and the server should start up and be ready to join. It is also recommended that you set up the SQL backend (see below). @@ -106,7 +112,7 @@ https://github.com/tgstation/tgstation-server All maps have their own code file that is in the base of the _maps directory. Maps are loaded dynamically when the game starts. Follow this guideline when adding your own map, to your fork, for easy compatibility. -The map that will be loaded for the upcoming round is determined by reading data/next_map.json, which is a copy of the json files found in the _maps tree. If this file does not exist, the default map from config/maps.txt will be loaded. Failing that, tgstation2 will be loaded. If you want to set a specific map to load next round you can use the Change Map verb in game before restarting the server or copy a json from _maps to data/next_map.json before starting the server. Also, for debugging purposes, ticking a corresponding map's code file in Dream Maker will force that map to load every round. +The map that will be loaded for the upcoming round is determined by reading data/next_map.json, which is a copy of the json files found in the _maps tree. If this file does not exist, the default map from config/maps.txt will be loaded. Failing that, BoxStation will be loaded. If you want to set a specific map to load next round you can use the Change Map verb in game before restarting the server or copy a json from _maps to data/next_map.json before starting the server. Also, for debugging purposes, ticking a corresponding map's code file in Dream Maker will force that map to load every round. If you are hosting a server, and want randomly picked maps to be played each round, you can enable map rotation in [config.txt](config/config.txt) and then set the maps to be picked in the [maps.txt](config/maps.txt) file. From f016daa833d694ef5d0053d8465a9138ee2c135b Mon Sep 17 00:00:00 2001 From: Leo Date: Fri, 1 Dec 2017 22:00:46 -0200 Subject: [PATCH 262/328] Merge pull request #33179 from nicbn/removesmices Removes the mob mouse from maintenance from maps --- _maps/map_files/BoxStation/BoxStation.dmm | 1 - _maps/map_files/PubbyStation/PubbyStation.dmm | 3 --- 2 files changed, 4 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index b630c327cf..5c99a5cbcc 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -44126,7 +44126,6 @@ /area/maintenance/aft) "cdM" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/mob/living/simple_animal/mouse, /turf/open/floor/plating, /area/maintenance/aft) "cdN" = ( diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index fab27c788f..7b2b7dbea1 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -5716,7 +5716,6 @@ /turf/open/floor/plating, /area/maintenance/department/security/brig) "apA" = ( -/mob/living/simple_animal/mouse/gray, /turf/open/floor/plating{ icon_state = "platingdmg3" }, @@ -14612,7 +14611,6 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "aKo" = ( -/mob/living/simple_animal/mouse/gray, /turf/open/floor/plating{ burnt = 1; icon_state = "panelscorched" @@ -24725,7 +24723,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/mob/living/simple_animal/mouse/gray, /turf/open/floor/plating, /area/maintenance/department/cargo) "biB" = ( From 4723a1813bf25b536bba50c947423c7caa39e18f Mon Sep 17 00:00:00 2001 From: Leo Date: Fri, 1 Dec 2017 21:56:45 -0200 Subject: [PATCH 264/328] Merge pull request #33180 from praisenarsie/patch-13 cardboard no longer can damage you --- code/game/objects/items/stacks/sheets/sheet_types.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index e78ba6b719..88bccfe204 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -256,6 +256,8 @@ GLOBAL_LIST_INIT(cardboard_recipes, list ( \ icon_state = "sheet-card" origin_tech = "materials=1" resistance_flags = FLAMMABLE + force = 0 + throwforce = 0 merge_type = /obj/item/stack/sheet/cardboard novariants = TRUE From 8017aac116166cc38ee5eff9c1ba22a2bb180b9f Mon Sep 17 00:00:00 2001 From: BeeSting12 Date: Fri, 1 Dec 2017 18:54:31 -0500 Subject: [PATCH 266/328] Fixes spelling error in opened cryogenic pods. (#33189) --- code/game/objects/structures/showcase.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/objects/structures/showcase.dm b/code/game/objects/structures/showcase.dm index 4d1c60acf8..85a557a657 100644 --- a/code/game/objects/structures/showcase.dm +++ b/code/game/objects/structures/showcase.dm @@ -40,14 +40,14 @@ icon_state = "pod_g" /obj/structure/showcase/machinery/oldpod - name = "damaged cyrogenic pod" - desc = "A damaged cyrogenic pod long since lost to time, including its former occupant..." + name = "damaged cryogenic pod" + desc = "A damaged cryogenic pod long since lost to time, including its former occupant..." icon = 'icons/obj/cryogenic2.dmi' icon_state = "sleeper-open" /obj/structure/showcase/machinery/oldpod/used - name = "opened cyrogenic pod" - desc = "Cyrogenic pod that has recently discharged its occupand. The pod appears non-functional." + name = "opened cryogenic pod" + desc = "A cryogenic pod that has recently discharged its occupant. The pod appears non-functional." /obj/structure/showcase/cyborg/old name = "Cyborg Statue" From ae5221371fe2918e1bde485524b35fc7fa4edbbf Mon Sep 17 00:00:00 2001 From: ExcessiveUseOfCobblestone <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com> Date: Sat, 2 Dec 2017 18:46:14 -0500 Subject: [PATCH 268/328] Revolutionaries can now see deconversion message regardless of status (#33202) --- code/datums/antagonists/revolution.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/datums/antagonists/revolution.dm b/code/datums/antagonists/revolution.dm index fc501a55a7..9db86bdf08 100644 --- a/code/datums/antagonists/revolution.dm +++ b/code/datums/antagonists/revolution.dm @@ -134,11 +134,11 @@ /datum/antagonist/rev/farewell() if(ishuman(owner.current)) - owner.current.visible_message("[owner.current] looks like they just remembered their real allegiance!", \ - "You are no longer a brainwashed revolutionary! Your memory is hazy from the time you were a rebel...the only thing you remember is the name of the one who brainwashed you...") + owner.current.visible_message("[owner.current] looks like they just remembered their real allegiance!") + to_chat(owner, "You are no longer a brainwashed revolutionary! Your memory is hazy from the time you were a rebel...the only thing you remember is the name of the one who brainwashed you...") else if(issilicon(owner.current)) - owner.current.visible_message("The frame beeps contentedly, purging the hostile memory engram from the MMI before initalizing it.", \ - "The frame's firmware detects and deletes your neural reprogramming! You remember nothing but the name of the one who flashed you.") + owner.current.visible_message("The frame beeps contentedly, purging the hostile memory engram from the MMI before initalizing it.") + to_chat(owner, "The frame's firmware detects and deletes your neural reprogramming! You remember nothing but the name of the one who flashed you.") /datum/antagonist/rev/proc/remove_revolutionary(borged, deconverter) log_attack("[owner.current] (Key: [key_name(owner.current)]) has been deconverted from the revolution by [deconverter] (Key: [key_name(deconverter)])!") From 03b7839e41bb55af993c79ca153405eef65e9426 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 3 Dec 2017 06:07:20 -0600 Subject: [PATCH 270/328] donation fix --- code/citadel/custom_loadout/custom_items.dm | 15 +++++++++++++-- icons/obj/custom.dmi | Bin 8689 -> 10283 bytes 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/code/citadel/custom_loadout/custom_items.dm b/code/citadel/custom_loadout/custom_items.dm index a3ea6f4cfa..529a643347 100644 --- a/code/citadel/custom_loadout/custom_items.dm +++ b/code/citadel/custom_loadout/custom_items.dm @@ -108,8 +108,8 @@ name = "Celebratory Cloak of Morozko" desc = " It probably will protect from snow, charcoal or elves." icon = 'icons/obj/custom.dmi' - icon_state = "festive" - item_state = "festive" + icon_state = "festive-w" + item_state = "festive-i" w_class = WEIGHT_CLASS_SMALL body_parts_covered = CHEST|GROIN|LEGS|ARMS @@ -206,4 +206,15 @@ item_state = "pink" +/*Fractious*/ + +/obj/item/clothing/suit/vermillion + name = "vermillion clothing" + desc = "Some clothing." + icon_state = "vermillion-w" + item_state = "vermillion-i" + body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS + icon = 'icons/obj/custom.dmi' + + diff --git a/icons/obj/custom.dmi b/icons/obj/custom.dmi index 844fcbf72f383e62c68c0d39ed6de39614b9a129..8fe4c9619bacae64792286085a67264517aa74a4 100644 GIT binary patch literal 10283 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 literal 8689 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 z Date: Sun, 3 Dec 2017 06:09:42 -0600 Subject: [PATCH 271/328] tgui --- tgui/assets/tgui.css | 2 +- tgui/assets/tgui.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tgui/assets/tgui.css b/tgui/assets/tgui.css index ffe61666b9..256b53c106 100644 --- a/tgui/assets/tgui.css +++ b/tgui/assets/tgui.css @@ -1 +1 @@ -@charset "utf-8";body,html{box-sizing:border-box;height:100%;margin:0}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff;background-color:#2a2a2a;background-image:linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff2a2a2a",endColorstr="#ff202020",GradientType=0)}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4{display:inline-block;margin:0;padding:6px 0}h1{font-size:18px}h2{font-size:16px}h3{font-size:14px}h4{font-size:12px}body.clockwork{background:linear-gradient(180deg,#b18b25 0,#5f380e);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffb18b25",endColorstr="#ff5f380e",GradientType=0)}body.clockwork .normal{color:#b18b25}body.clockwork .good{color:#cfba47}body.clockwork .average{color:#896b19}body.clockwork .bad{color:#5f380e}body.clockwork .highlight{color:#b18b25}body.clockwork main{display:block;margin-top:32px;padding:2px 6px 0}body.clockwork hr{height:2px;background-color:#b18b25;border:none}body.clockwork .hidden{display:none}body.clockwork .bar .barText,body.clockwork span.button{color:#b18b25;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.clockwork .bold{font-weight:700}body.clockwork .italic{font-style:italic}body.clockwork [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.clockwork div[data-tooltip],body.clockwork span[data-tooltip]{position:relative}body.clockwork div[data-tooltip]:after,body.clockwork span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #170800;background-color:#2d1400}body.clockwork div[data-tooltip]:hover:after,body.clockwork span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.clockwork div[data-tooltip].tooltip-top:after,body.clockwork span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.clockwork div[data-tooltip].tooltip-top:hover:after,body.clockwork span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.clockwork div[data-tooltip].tooltip-bottom:after,body.clockwork span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.clockwork div[data-tooltip].tooltip-bottom:hover:after,body.clockwork span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.clockwork div[data-tooltip].tooltip-left:after,body.clockwork span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-left:hover:after,body.clockwork span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-right:after,body.clockwork span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-right:hover:after,body.clockwork span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.clockwork .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #170800;background:#2d1400}body.clockwork .bar .barText{position:absolute;top:0;right:3px}body.clockwork .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#b18b25}body.clockwork .bar .barFill.good{background-color:#cfba47}body.clockwork .bar .barFill.average{background-color:#896b19}body.clockwork .bar .barFill.bad{background-color:#5f380e}body.clockwork span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #170800}body.clockwork span.button .fa{padding-right:2px}body.clockwork span.button.normal{transition:background-color .5s;background-color:#5f380e}body.clockwork span.button.normal.active:focus,body.clockwork span.button.normal.active:hover{transition:background-color .25s;background-color:#704211;outline:0}body.clockwork span.button.disabled{transition:background-color .5s;background-color:#2d1400}body.clockwork span.button.disabled.active:focus,body.clockwork span.button.disabled.active:hover{transition:background-color .25s;background-color:#441e00;outline:0}body.clockwork span.button.selected{transition:background-color .5s;background-color:#cfba47}body.clockwork span.button.selected.active:focus,body.clockwork span.button.selected.active:hover{transition:background-color .25s;background-color:#d1bd50;outline:0}body.clockwork span.button.toggle{transition:background-color .5s;background-color:#cfba47}body.clockwork span.button.toggle.active:focus,body.clockwork span.button.toggle.active:hover{transition:background-color .25s;background-color:#d1bd50;outline:0}body.clockwork span.button.caution{transition:background-color .5s;background-color:#be6209}body.clockwork span.button.caution.active:focus,body.clockwork span.button.caution.active:hover{transition:background-color .25s;background-color:#cd6a0a;outline:0}body.clockwork span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.clockwork span.button.danger.active:focus,body.clockwork span.button.danger.active:hover{transition:background-color .25s;background-color:#abaf00;outline:0}body.clockwork span.button.gridable{width:125px;margin:2px 0}body.clockwork span.button.gridable.center{text-align:center;width:75px}body.clockwork span.button+span:not(.button),body.clockwork span:not(.button)+span.button{margin-left:5px}body.clockwork div.display{width:100%;padding:4px;margin:6px 0;background-color:#2d1400;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#e62d1400,endColorStr=#e62d1400)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#e62d1400,endColorStr=#e62d1400);background-color:rgba(45,20,0,.9);box-shadow:inset 0 0 5px rgba(0,0,0,.3)}body.clockwork div.display.tabular{padding:0;margin:0}body.clockwork div.display header,body.clockwork div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#cfba47;border-bottom:2px solid #b18b25}body.clockwork div.display header .buttonRight,body.clockwork div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.clockwork div.display article,body.clockwork div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.clockwork input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#b18b25;background-color:#cfba47;border:1px solid #272727}body.clockwork input.number{width:35px}body.clockwork input::-webkit-input-placeholder{color:#999}body.clockwork input:-ms-input-placeholder{color:#999}body.clockwork input::placeholder{color:#999}body.clockwork input::-ms-clear{display:none}body.clockwork svg.linegraph{overflow:hidden}body.clockwork div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#2d1400;font-weight:700;font-style:italic;background-color:#000;background-image:repeating-linear-gradient(-45deg,#000,#000 10px,#170800 0,#170800 20px)}body.clockwork div.notice .label{color:#2d1400}body.clockwork div.notice .content:only-of-type{padding:0}body.clockwork div.notice hr{background-color:#896b19}body.clockwork div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #5f380e;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.clockwork section .cell,body.clockwork section .content,body.clockwork section .label,body.clockwork section .line,body.nanotrasen section .cell,body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .cell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.clockwork section{display:table-row;width:100%}body.clockwork section:not(:first-child){padding-top:4px}body.clockwork section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.clockwork section .label{width:1%;padding-right:32px;white-space:nowrap;color:#b18b25}body.clockwork section .content:not(:last-child){padding-right:16px}body.clockwork section .line{width:100%}body.clockwork section .cell:not(:first-child){text-align:center;padding-top:0}body.clockwork section .cell span.button{width:75px}body.clockwork section:not(:last-child){padding-right:4px}body.clockwork div.subdisplay{width:100%;margin:0}body.clockwork header.titlebar .close,body.clockwork header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#cfba47}body.clockwork header.titlebar .close:hover,body.clockwork header.titlebar .minimize:hover{color:#d1bd50}body.clockwork header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#5f380e;border-bottom:1px solid #170800;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.clockwork header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.clockwork header.titlebar .title{position:absolute;top:6px;left:46px;color:#cfba47;font-size:16px;white-space:nowrap}body.clockwork header.titlebar .minimize{position:absolute;top:6px;right:46px}body.clockwork header.titlebar .close{position:absolute;top:4px;right:12px}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgNDI1IDIwMCIgb3BhY2l0eT0iLjMzIj4NCiAgPHBhdGggZD0ibSAxNzguMDAzOTksMC4wMzg2OSAtNzEuMjAzOTMsMCBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTYuNzYxMzQsNi4wMjU1NSBsIDAsMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM0LDYuMDI1NTQgbCA1My4xMDcyLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xMDEuNTQ0MDE4IDcyLjIxNjI4LDEwNC42OTkzOTggYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDUuNzYwMTUsMi44NzAxNiBsIDczLjU1NDg3LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xODcuODcxNDcgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM1LC02LjAyNTU1IGwgLTU0LjcxNjQ0LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTMzLDYuMDI1NTUgbCAwLDEwMi42MTkzNSBMIDE4My43NjQxMywyLjkwODg2IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNS43NjAxNCwtMi44NzAxNyB6IiAvPg0KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPg0KICA8cGF0aCBkPSJtIDQyMC4xNTUzNSwxNzcuODkxMTkgYSAxMy40MTIwMzgsMTIuNTAxODQyIDAgMCAxIC04LjYzMjk1LDIyLjA2OTUxIGwgLTY2LjExODMyLDAgYSA1LjM2NDgxNTIsNS4wMDA3MzcgMCAwIDEgLTUuMzY0ODIsLTUuMDAwNzQgbCAwLC03OS44NzkzMSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff2a2a2a",endColorstr="#ff202020",GradientType=0)}body.nanotrasen .normal{color:#40628a}body.nanotrasen .good{color:#537d29}body.nanotrasen .average{color:#be6209}body.nanotrasen .bad{color:#b00e0e}body.nanotrasen .highlight{color:#8ba5c4}body.nanotrasen main{display:block;margin-top:32px;padding:2px 6px 0}body.nanotrasen hr{height:2px;background-color:#40628a;border:none}body.nanotrasen .hidden{display:none}body.nanotrasen .bar .barText,body.nanotrasen span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.nanotrasen .bold{font-weight:700}body.nanotrasen .italic{font-style:italic}body.nanotrasen [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.nanotrasen div[data-tooltip],body.nanotrasen span[data-tooltip]{position:relative}body.nanotrasen div[data-tooltip]:after,body.nanotrasen span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.nanotrasen div[data-tooltip]:hover:after,body.nanotrasen span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.nanotrasen div[data-tooltip].tooltip-top:after,body.nanotrasen span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-top:hover:after,body.nanotrasen span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:after,body.nanotrasen span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:hover:after,body.nanotrasen span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-left:after,body.nanotrasen span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-left:hover:after,body.nanotrasen span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:after,body.nanotrasen span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:hover:after,body.nanotrasen span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}body.nanotrasen .bar .barText{position:absolute;top:0;right:3px}body.nanotrasen .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}body.nanotrasen .bar .barFill.good{background-color:#537d29}body.nanotrasen .bar .barFill.average{background-color:#be6209}body.nanotrasen .bar .barFill.bad{background-color:#b00e0e}body.nanotrasen span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.nanotrasen span.button .fa{padding-right:2px}body.nanotrasen span.button.normal{transition:background-color .5s;background-color:#40628a}body.nanotrasen span.button.normal.active:focus,body.nanotrasen span.button.normal.active:hover{transition:background-color .25s;background-color:#4f78aa;outline:0}body.nanotrasen span.button.disabled{transition:background-color .5s;background-color:#999}body.nanotrasen span.button.disabled.active:focus,body.nanotrasen span.button.disabled.active:hover{transition:background-color .25s;background-color:#a8a8a8;outline:0}body.nanotrasen span.button.selected{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.selected.active:focus,body.nanotrasen span.button.selected.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.toggle{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.toggle.active:focus,body.nanotrasen span.button.toggle.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.caution{transition:background-color .5s;background-color:#9a9d00}body.nanotrasen span.button.caution.active:focus,body.nanotrasen span.button.caution.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.nanotrasen span.button.danger{transition:background-color .5s;background-color:#9d0808}body.nanotrasen span.button.danger.active:focus,body.nanotrasen span.button.danger.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.nanotrasen span.button.gridable{width:125px;margin:2px 0}body.nanotrasen span.button.gridable.center{text-align:center;width:75px}body.nanotrasen span.button+span:not(.button),body.nanotrasen span:not(.button)+span.button{margin-left:5px}body.nanotrasen div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000);background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5)}body.nanotrasen div.display.tabular{padding:0;margin:0}body.nanotrasen div.display header,body.nanotrasen div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #40628a}body.nanotrasen div.display header .buttonRight,body.nanotrasen div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.nanotrasen div.display article,body.nanotrasen div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.nanotrasen input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#000;background-color:#fff;border:1px solid #272727}body.nanotrasen input.number{width:35px}body.nanotrasen input::-webkit-input-placeholder{color:#999}body.nanotrasen input:-ms-input-placeholder{color:#999}body.nanotrasen input::placeholder{color:#999}body.nanotrasen input::-ms-clear{display:none}body.nanotrasen svg.linegraph{overflow:hidden}body.nanotrasen div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px)}body.nanotrasen div.notice .label{color:#000}body.nanotrasen div.notice .content:only-of-type{padding:0}body.nanotrasen div.notice hr{background-color:#272727}body.nanotrasen div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.nanotrasen section .cell,body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .cell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.nanotrasen section{display:table-row;width:100%}body.nanotrasen section:not(:first-child){padding-top:4px}body.nanotrasen section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.nanotrasen section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}body.nanotrasen section .content:not(:last-child){padding-right:16px}body.nanotrasen section .line{width:100%}body.nanotrasen section .cell:not(:first-child){text-align:center;padding-top:0}body.nanotrasen section .cell span.button{width:75px}body.nanotrasen section:not(:last-child){padding-right:4px}body.nanotrasen div.subdisplay{width:100%;margin:0}body.nanotrasen header.titlebar .close,body.nanotrasen header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#8ba5c4}body.nanotrasen header.titlebar .close:hover,body.nanotrasen header.titlebar .minimize:hover{color:#9cb2cd}body.nanotrasen header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.nanotrasen header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.nanotrasen header.titlebar .title{position:absolute;top:6px;left:46px;color:#8ba5c4;font-size:16px;white-space:nowrap}body.nanotrasen header.titlebar .minimize{position:absolute;top:6px;right:46px}body.nanotrasen header.titlebar .close{position:absolute;top:4px;right:12px}body.syndicate{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgMjAwIDI4OS43NDIiIG9wYWNpdHk9Ii4zMyI+DQogIDxwYXRoIGQ9Im0gOTMuNTM3Njc3LDAgYyAtMTguMTEzMTI1LDAgLTM0LjIyMDEzMywzLjExMTY0IC00OC4zMjM0ODQsOS4zMzQzNyAtMTMuOTY1MDkyLDYuMjIxNjcgLTI0LjYxMjQ0MiwxNS4wNzExNCAtMzEuOTQwNjUxLDI2LjU0NzEgLTcuMTg5OTM5OCwxMS4zMzc4OSAtMTAuMzAxMjI2NiwyNC43NDkxMSAtMTAuMzAxMjI2Niw0MC4yMzQ3OCAwLDEwLjY0NjYyIDIuNzI1MDAyNiwyMC40NjQ2NSA4LjE3NTExMTYsMjkuNDUyNTggNS42MTUyNzcsOC45ODY4NiAxNC4wMzgyNzcsMTcuMzUyMDQgMjUuMjY4ODIxLDI1LjA5NDM2IDExLjIzMDU0NCw3LjYwNTMxIDI2LjUwNzQyMSwxNS40MTgzNSA0NS44MzA1MTQsMjMuNDM3ODIgMTkuOTgzNzQ4LDguMjk1NTcgMzQuODQ4ODQ4LDE1LjU1NDcxIDQ0LjU5Mjk5OCwyMS43NzYzOCA5Ljc0NDE0LDYuMjIyNzMgMTYuNzYxNywxMi44NTg1IDIxLjA1NTcyLDE5LjkwOTUxIDQuMjk0MDQsNy4wNTIwOCA2LjQ0MTkzLDE1Ljc2NDA4IDYuNDQxOTMsMjYuMTM0NTkgMCwxNi4xNzcwMiAtNS4yMDE5NiwyOC40ODIyMiAtMTUuNjA2NzMsMzYuOTE2ODIgLTEwLjIzOTYsOC40MzQ3IC0yNS4wMjIwMywxMi42NTIzIC00NC4zNDUxNjksMTIuNjUyMyAtMTQuMDM4MTcxLDAgLTI1LjUxNTI0NywtMS42NTk0IC0zNC40MzM2MTgsLTQuOTc3NyAtOC45MTgzNywtMy40NTY2IC0xNi4xODU1NzIsLTguNzExMyAtMjEuODAwODM5LC0xNS43NjMzIC01LjYxNTI3NywtNy4wNTIxIC0xMC4wNzQ3OTUsLTE2LjY2MDg4IC0xMy4zNzc4OTksLTI4LjgyODEyIGwgLTI0Ljc3MzE2MjYyOTM5NDUsMCAwLDU2LjgyNjMyIEMgMzMuODU2NzY5LDI4Ni4wNzYwMSA2My43NDkwNCwyODkuNzQyMDEgODkuNjc4MzgzLDI4OS43NDIwMSBjIDE2LjAyMDAyNywwIDMwLjcxOTc4NywtMS4zODI3IDQ0LjA5NzMzNywtNC4xNDc5IDEzLjU0MjcyLC0yLjkwNDMgMjUuMTA0MSwtNy40Njc2IDM0LjY4MzA5LC0xMy42ODkzIDkuNzQ0MTMsLTYuMzU5NyAxNy4zNDA0MiwtMTQuNTE5NSAyMi43OTA1MiwtMjQuNDc0OCA1LjQ1MDEsLTEwLjA5MzMyIDguMTc1MTEsLTIyLjM5OTU5IDguMTc1MTEsLTM2LjkxNjgyIDAsLTEyLjk5NzY0IC0zLjMwMjEsLTI0LjMzNTM5IC05LjkwODI5LC0zNC4wMTQ2IC02LjQ0MTA1LC05LjgxNzI1IC0xNS41MjU0NSwtMTguNTI3MDcgLTI3LjI1MTQ2LC0yNi4xMzEzMyAtMTEuNTYwODUsLTcuNjA0MjcgLTI3LjkxMDgzLC0xNS44MzE0MiAtNDkuMDUwNjYsLTI0LjY4MDIyIC0xNy41MDY0NCwtNy4xOTAxMiAtMzAuNzE5NjY4LC0xMy42ODk0OCAtMzkuNjM4MDM4LC0xOS40OTcwMSAtOC45MTgzNzEsLTUuODA3NTIgLTE4LjYwNzQ3NCwtMTIuNDM0MDkgLTI0LjA5NjUyNCwtMTguODc0MTcgLTUuNDI2MDQzLC02LjM2NjE2IC05LjY1ODgyNiwtMTUuMDcwMDMgLTkuNjU4ODI2LC0yNC44ODcyOSAwLC05LjI2NDAxIDIuMDc1NDE0LC0xNy4yMTM0NSA2LjIyMzQ1NCwtMjMuODUwMzMgMTEuMDk4Mjk4LC0xNC4zOTc0OCA0MS4yODY2MzgsLTEuNzk1MDcgNDUuMDc1NjA5LDI0LjM0NzYyIDQuODM5MzkyLDYuNzc0OTEgOC44NDkzNSwxNi4yNDcyOSAxMi4wMjk1MTUsMjguNDE1NiBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNC40NzgyNSwtNS45MjQ0OCAtOS45NTQ4OCwtMTAuNjMyMjIgLTE1LjkwODM3LC0xNC4zNzQxMSAxLjY0MDU1LDAuNDc5MDUgMy4xOTAzOSwxLjAyMzc2IDQuNjM4NjUsMS42NDAyNCA2LjQ5ODYxLDIuNjI2MDcgMTIuMTY3OTMsNy4zMjc0NyAxNy4wMDczLDE0LjEwMzQ1IDQuODM5MzksNi43NzQ5MSA4Ljg0OTM1LDE2LjI0NTY3IDEyLjAyOTUyLDI4LjQxMzk3IDAsMCA4LjQ4MTI4LC0wLjEyODk0IDguNDg5NzgsLTAuMDAyIDAuNDE3NzYsNi40MTQ5NCAtMS43NTMzOSw5LjQ1Mjg2IC00LjEyMzQyLDEyLjU2MTA0IC0yLjQxNzQsMy4xNjk3OCAtNS4xNDQ4Niw2Ljc4OTczIC00LjAwMjc4LDEzLjAwMjkgMS41MDc4Niw4LjIwMzE4IDEwLjE4MzU0LDEwLjU5NjQyIDE0LjYyMTk0LDkuMzExNTQgLTMuMzE4NDIsLTAuNDk5MTEgLTUuMzE4NTUsLTEuNzQ5NDggLTUuMzE4NTUsLTEuNzQ5NDggMCwwIDEuODc2NDYsMC45OTg2OCA1LjY1MTE3LC0xLjM1OTgxIC0zLjI3Njk1LDAuOTU1NzEgLTEwLjcwNTI5LC0wLjc5NzM4IC0xMS44MDEyNSwtNi43NjMxMyAtMC45NTc1MiwtNS4yMDg2MSAwLjk0NjU0LC03LjI5NTE0IDMuNDAxMTMsLTEwLjUxNDgyIDIuNDU0NjIsLTMuMjE5NjggNS4yODQyNiwtNi45NTgzMSA0LjY4NDMsLTE0LjQ4ODI0IGwgMC4wMDMsMC4wMDIgOC45MjY3NiwwIDAsLTU1Ljk5OTY3IGMgLTE1LjA3MTI1LC0zLjg3MTY4IC0yNy42NTMxNCwtNi4zNjA0MiAtMzcuNzQ2NzEsLTcuNDY1ODYgLTkuOTU1MzEsLTEuMTA3NTUgLTIwLjE4ODIzLC0xLjY1OTgxIC0zMC42OTY2MTMsLTEuNjU5ODEgeiBtIDcwLjMyMTYwMywxNy4zMDg5MyAwLjIzODA1LDQwLjMwNDkgYyAxLjMxODA4LDEuMjI2NjYgMi40Mzk2NSwyLjI3ODE1IDMuMzQwODEsMy4xMDYwMiA0LjgzOTM5LDYuNzc0OTEgOC44NDkzNCwxNi4yNDU2NiAxMi4wMjk1MSwyOC40MTM5NyBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNi42NzczMSwtNC41OTM4MSAtMTkuODM2NDMsLTEwLjQ3MzA5IC0zNi4xNDA3MSwtMTUuODI1MjIgeiBtIC0yOC4xMjA0OSw1LjYwNTUxIDguNTY0NzksMTcuNzE2NTUgYyAtMTEuOTcwMzcsLTYuNDY2OTcgLTEzLjg0Njc4LC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk3MDUsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IG0gMTUuMjIxOTUsMjQuMDA4NDggOC41NjQ3OSwxNy43MTY1NSBjIC0xMS45NzAzOCwtNi40NjY5NyAtMTMuODQ2NzksLTkuNzE3MjYgLTguNTY0NzksLTE3LjcxNjU1IHogbSAyMi43OTcwNCwwIGMgMi43NzE1LDcuOTk5MjkgMS43ODc0MSwxMS4yNDk1OCAtNC40OTM1NCwxNy43MTY1NSBsIDQuNDkzNTQsLTE3LjcxNjU1IHogbSAtOTkuMTEzODQsMi4yMDc2NCA4LjU2NDc5LDE3LjcxNjU1IGMgLTExLjk3MDM4MiwtNi40NjY5NyAtMTMuODQ2NzgyLC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk1NDIsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#750000 0,#340404);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff750000",endColorstr="#ff340404",GradientType=0)}body.syndicate .normal{color:#40628a}body.syndicate .good{color:#73e573}body.syndicate .average{color:#be6209}body.syndicate .bad{color:#b00e0e}body.syndicate .highlight{color:#000}body.syndicate main{display:block;margin-top:32px;padding:2px 6px 0}body.syndicate hr{height:2px;background-color:#272727;border:none}body.syndicate .hidden{display:none}body.syndicate .bar .barText,body.syndicate span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.syndicate .bold{font-weight:700}body.syndicate .italic{font-style:italic}body.syndicate [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.syndicate div[data-tooltip],body.syndicate span[data-tooltip]{position:relative}body.syndicate div[data-tooltip]:after,body.syndicate span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.syndicate div[data-tooltip]:hover:after,body.syndicate span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.syndicate div[data-tooltip].tooltip-top:after,body.syndicate span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-top:hover:after,body.syndicate span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:after,body.syndicate span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:hover:after,body.syndicate span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-left:after,body.syndicate span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-left:hover:after,body.syndicate span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:after,body.syndicate span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:hover:after,body.syndicate span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #000;background:#272727}body.syndicate .bar .barText{position:absolute;top:0;right:3px}body.syndicate .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#000}body.syndicate .bar .barFill.good{background-color:#73e573}body.syndicate .bar .barFill.average{background-color:#be6209}body.syndicate .bar .barFill.bad{background-color:#b00e0e}body.syndicate span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.syndicate span.button .fa{padding-right:2px}body.syndicate span.button.normal{transition:background-color .5s;background-color:#397439}body.syndicate span.button.normal.active:focus,body.syndicate span.button.normal.active:hover{transition:background-color .25s;background-color:#4a964a;outline:0}body.syndicate span.button.disabled{transition:background-color .5s;background-color:#363636}body.syndicate span.button.disabled.active:focus,body.syndicate span.button.disabled.active:hover{transition:background-color .25s;background-color:#545454;outline:0}body.syndicate span.button.selected{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.selected.active:focus,body.syndicate span.button.selected.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.toggle{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.toggle.active:focus,body.syndicate span.button.toggle.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.caution{transition:background-color .5s;background-color:#be6209}body.syndicate span.button.caution.active:focus,body.syndicate span.button.caution.active:hover{transition:background-color .25s;background-color:#eb790b;outline:0}body.syndicate span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.syndicate span.button.danger.active:focus,body.syndicate span.button.danger.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.syndicate span.button.gridable{width:125px;margin:2px 0}body.syndicate span.button.gridable.center{text-align:center;width:75px}body.syndicate span.button+span:not(.button),body.syndicate span:not(.button)+span.button{margin-left:5px}body.syndicate div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000);background-color:rgba(0,0,0,.5);box-shadow:inset 0 0 5px rgba(0,0,0,.75)}body.syndicate div.display.tabular{padding:0;margin:0}body.syndicate div.display header,body.syndicate div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #272727}body.syndicate div.display header .buttonRight,body.syndicate div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.syndicate div.display article,body.syndicate div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.syndicate input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#fff;background-color:#9d0808;border:1px solid #272727}body.syndicate input.number{width:35px}body.syndicate input::-webkit-input-placeholder{color:#999}body.syndicate input:-ms-input-placeholder{color:#999}body.syndicate input::placeholder{color:#999}body.syndicate input::-ms-clear{display:none}body.syndicate svg.linegraph{overflow:hidden}body.syndicate div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#750000;background-image:repeating-linear-gradient(-45deg,#750000,#750000 10px,#910101 0,#910101 20px)}body.syndicate div.notice .label{color:#000}body.syndicate div.notice .content:only-of-type{padding:0}body.syndicate div.notice hr{background-color:#272727}body.syndicate div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.syndicate section .cell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.syndicate section{display:table-row;width:100%}body.syndicate section:not(:first-child){padding-top:4px}body.syndicate section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.syndicate section .label{width:1%;padding-right:32px;white-space:nowrap;color:#fff}body.syndicate section .content:not(:last-child){padding-right:16px}body.syndicate section .line{width:100%}body.syndicate section .cell:not(:first-child){text-align:center;padding-top:0}body.syndicate section .cell span.button{width:75px}body.syndicate section:not(:last-child){padding-right:4px}body.syndicate div.subdisplay{width:100%;margin:0}body.syndicate header.titlebar .close,body.syndicate header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#e74242}body.syndicate header.titlebar .close:hover,body.syndicate header.titlebar .minimize:hover{color:#eb5e5e}body.syndicate header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.syndicate header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.syndicate header.titlebar .title{position:absolute;top:6px;left:46px;color:#e74242;font-size:16px;white-space:nowrap}body.syndicate header.titlebar .minimize{position:absolute;top:6px;right:46px}body.syndicate header.titlebar .close{position:absolute;top:4px;right:12px}.no-icons header.titlebar .statusicon{font-size:20px}.no-icons header.titlebar .statusicon:after{content:"O"}.no-icons header.titlebar .minimize{top:-2px;font-size:20px}.no-icons header.titlebar .minimize:after{content:"—"}.no-icons header.titlebar .close{font-size:20px}.no-icons header.titlebar .close:after{content:"X"} \ No newline at end of file +@charset "utf-8";body,html{box-sizing:border-box;height:100%;margin:0}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff;background-color:#2a2a2a;background-image:linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff2a2a2a",endColorstr="#ff202020",GradientType=0)}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4{display:inline-block;margin:0;padding:6px 0}h1{font-size:18px}h2{font-size:16px}h3{font-size:14px}h4{font-size:12px}body.clockwork{background:linear-gradient(180deg,#b18b25 0,#5f380e);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffb18b25",endColorstr="#ff5f380e",GradientType=0)}body.clockwork .normal{color:#b18b25}body.clockwork .good{color:#cfba47}body.clockwork .average{color:#896b19}body.clockwork .bad{color:#5f380e}body.clockwork .highlight{color:#b18b25}body.clockwork main{display:block;margin-top:32px;padding:2px 6px 0}body.clockwork hr{height:2px;background-color:#b18b25;border:none}body.clockwork .hidden{display:none}body.clockwork .bar .barText,body.clockwork span.button{color:#b18b25;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.clockwork .bold{font-weight:700}body.clockwork .italic{font-style:italic}body.clockwork [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.clockwork div[data-tooltip],body.clockwork span[data-tooltip]{position:relative}body.clockwork div[data-tooltip]:after,body.clockwork span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #170800;background-color:#2d1400}body.clockwork div[data-tooltip]:hover:after,body.clockwork span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.clockwork div[data-tooltip].tooltip-top:after,body.clockwork span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.clockwork div[data-tooltip].tooltip-top:hover:after,body.clockwork span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.clockwork div[data-tooltip].tooltip-bottom:after,body.clockwork span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.clockwork div[data-tooltip].tooltip-bottom:hover:after,body.clockwork span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.clockwork div[data-tooltip].tooltip-left:after,body.clockwork span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-left:hover:after,body.clockwork span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-right:after,body.clockwork span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-right:hover:after,body.clockwork span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.clockwork .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #170800;background:#2d1400}body.clockwork .bar .barText{position:absolute;top:0;right:3px}body.clockwork .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#b18b25}body.clockwork .bar .barFill.good{background-color:#cfba47}body.clockwork .bar .barFill.average{background-color:#896b19}body.clockwork .bar .barFill.bad{background-color:#5f380e}body.clockwork span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #170800}body.clockwork span.button .fa{padding-right:2px}body.clockwork span.button.normal{transition:background-color .5s;background-color:#5f380e}body.clockwork span.button.normal.active:focus,body.clockwork span.button.normal.active:hover{transition:background-color .25s;background-color:#704211;outline:0}body.clockwork span.button.disabled{transition:background-color .5s;background-color:#2d1400}body.clockwork span.button.disabled.active:focus,body.clockwork span.button.disabled.active:hover{transition:background-color .25s;background-color:#441e00;outline:0}body.clockwork span.button.selected{transition:background-color .5s;background-color:#cfba47}body.clockwork span.button.selected.active:focus,body.clockwork span.button.selected.active:hover{transition:background-color .25s;background-color:#d1bd50;outline:0}body.clockwork span.button.toggle{transition:background-color .5s;background-color:#cfba47}body.clockwork span.button.toggle.active:focus,body.clockwork span.button.toggle.active:hover{transition:background-color .25s;background-color:#d1bd50;outline:0}body.clockwork span.button.caution{transition:background-color .5s;background-color:#be6209}body.clockwork span.button.caution.active:focus,body.clockwork span.button.caution.active:hover{transition:background-color .25s;background-color:#cd6a0a;outline:0}body.clockwork span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.clockwork span.button.danger.active:focus,body.clockwork span.button.danger.active:hover{transition:background-color .25s;background-color:#abaf00;outline:0}body.clockwork span.button.gridable{width:125px;margin:2px 0}body.clockwork span.button.gridable.center{text-align:center;width:75px}body.clockwork span.button+span:not(.button),body.clockwork span:not(.button)+span.button{margin-left:5px}body.clockwork div.display{width:100%;padding:4px;margin:6px 0;background-color:#2d1400;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#e62d1400,endColorStr=#e62d1400)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#e62d1400,endColorStr=#e62d1400);background-color:rgba(45,20,0,.9);box-shadow:inset 0 0 5px rgba(0,0,0,.3)}body.clockwork div.display.tabular{padding:0;margin:0}body.clockwork div.display header,body.clockwork div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#cfba47;border-bottom:2px solid #b18b25}body.clockwork div.display header .buttonRight,body.clockwork div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.clockwork div.display article,body.clockwork div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.clockwork input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#b18b25;background-color:#cfba47;border:1px solid #272727}body.clockwork input.number{width:35px}body.clockwork input:-ms-input-placeholder{color:#999}body.clockwork input::placeholder{color:#999}body.clockwork input::-ms-clear{display:none}body.clockwork svg.linegraph{overflow:hidden}body.clockwork div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#2d1400;font-weight:700;font-style:italic;background-color:#000;background-image:repeating-linear-gradient(-45deg,#000,#000 10px,#170800 0,#170800 20px)}body.clockwork div.notice .label{color:#2d1400}body.clockwork div.notice .content:only-of-type{padding:0}body.clockwork div.notice hr{background-color:#896b19}body.clockwork div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #5f380e;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.clockwork section .cell,body.clockwork section .content,body.clockwork section .label,body.clockwork section .line,body.nanotrasen section .cell,body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .cell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.clockwork section{display:table-row;width:100%}body.clockwork section:not(:first-child){padding-top:4px}body.clockwork section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.clockwork section .label{width:1%;padding-right:32px;white-space:nowrap;color:#b18b25}body.clockwork section .content:not(:last-child){padding-right:16px}body.clockwork section .line{width:100%}body.clockwork section .cell:not(:first-child){text-align:center;padding-top:0}body.clockwork section .cell span.button{width:75px}body.clockwork section:not(:last-child){padding-right:4px}body.clockwork div.subdisplay{width:100%;margin:0}body.clockwork header.titlebar .close,body.clockwork header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#cfba47}body.clockwork header.titlebar .close:hover,body.clockwork header.titlebar .minimize:hover{color:#d1bd50}body.clockwork header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#5f380e;border-bottom:1px solid #170800;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.clockwork header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.clockwork header.titlebar .title{position:absolute;top:6px;left:46px;color:#cfba47;font-size:16px;white-space:nowrap}body.clockwork header.titlebar .minimize{position:absolute;top:6px;right:46px}body.clockwork header.titlebar .close{position:absolute;top:4px;right:12px}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgNDI1IDIwMCIgb3BhY2l0eT0iLjMzIj4NCiAgPHBhdGggZD0ibSAxNzguMDAzOTksMC4wMzg2OSAtNzEuMjAzOTMsMCBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTYuNzYxMzQsNi4wMjU1NSBsIDAsMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM0LDYuMDI1NTQgbCA1My4xMDcyLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xMDEuNTQ0MDE4IDcyLjIxNjI4LDEwNC42OTkzOTggYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDUuNzYwMTUsMi44NzAxNiBsIDczLjU1NDg3LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xODcuODcxNDcgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM1LC02LjAyNTU1IGwgLTU0LjcxNjQ0LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTMzLDYuMDI1NTUgbCAwLDEwMi42MTkzNSBMIDE4My43NjQxMywyLjkwODg2IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNS43NjAxNCwtMi44NzAxNyB6IiAvPg0KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPg0KICA8cGF0aCBkPSJtIDQyMC4xNTUzNSwxNzcuODkxMTkgYSAxMy40MTIwMzgsMTIuNTAxODQyIDAgMCAxIC04LjYzMjk1LDIyLjA2OTUxIGwgLTY2LjExODMyLDAgYSA1LjM2NDgxNTIsNS4wMDA3MzcgMCAwIDEgLTUuMzY0ODIsLTUuMDAwNzQgbCAwLC03OS44NzkzMSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff2a2a2a",endColorstr="#ff202020",GradientType=0)}body.nanotrasen .normal{color:#40628a}body.nanotrasen .good{color:#537d29}body.nanotrasen .average{color:#be6209}body.nanotrasen .bad{color:#b00e0e}body.nanotrasen .highlight{color:#8ba5c4}body.nanotrasen main{display:block;margin-top:32px;padding:2px 6px 0}body.nanotrasen hr{height:2px;background-color:#40628a;border:none}body.nanotrasen .hidden{display:none}body.nanotrasen .bar .barText,body.nanotrasen span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.nanotrasen .bold{font-weight:700}body.nanotrasen .italic{font-style:italic}body.nanotrasen [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.nanotrasen div[data-tooltip],body.nanotrasen span[data-tooltip]{position:relative}body.nanotrasen div[data-tooltip]:after,body.nanotrasen span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.nanotrasen div[data-tooltip]:hover:after,body.nanotrasen span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.nanotrasen div[data-tooltip].tooltip-top:after,body.nanotrasen span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-top:hover:after,body.nanotrasen span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:after,body.nanotrasen span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:hover:after,body.nanotrasen span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-left:after,body.nanotrasen span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-left:hover:after,body.nanotrasen span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:after,body.nanotrasen span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:hover:after,body.nanotrasen span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}body.nanotrasen .bar .barText{position:absolute;top:0;right:3px}body.nanotrasen .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}body.nanotrasen .bar .barFill.good{background-color:#537d29}body.nanotrasen .bar .barFill.average{background-color:#be6209}body.nanotrasen .bar .barFill.bad{background-color:#b00e0e}body.nanotrasen span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.nanotrasen span.button .fa{padding-right:2px}body.nanotrasen span.button.normal{transition:background-color .5s;background-color:#40628a}body.nanotrasen span.button.normal.active:focus,body.nanotrasen span.button.normal.active:hover{transition:background-color .25s;background-color:#4f78aa;outline:0}body.nanotrasen span.button.disabled{transition:background-color .5s;background-color:#999}body.nanotrasen span.button.disabled.active:focus,body.nanotrasen span.button.disabled.active:hover{transition:background-color .25s;background-color:#a8a8a8;outline:0}body.nanotrasen span.button.selected{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.selected.active:focus,body.nanotrasen span.button.selected.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.toggle{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.toggle.active:focus,body.nanotrasen span.button.toggle.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.caution{transition:background-color .5s;background-color:#9a9d00}body.nanotrasen span.button.caution.active:focus,body.nanotrasen span.button.caution.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.nanotrasen span.button.danger{transition:background-color .5s;background-color:#9d0808}body.nanotrasen span.button.danger.active:focus,body.nanotrasen span.button.danger.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.nanotrasen span.button.gridable{width:125px;margin:2px 0}body.nanotrasen span.button.gridable.center{text-align:center;width:75px}body.nanotrasen span.button+span:not(.button),body.nanotrasen span:not(.button)+span.button{margin-left:5px}body.nanotrasen div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000);background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5)}body.nanotrasen div.display.tabular{padding:0;margin:0}body.nanotrasen div.display header,body.nanotrasen div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #40628a}body.nanotrasen div.display header .buttonRight,body.nanotrasen div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.nanotrasen div.display article,body.nanotrasen div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.nanotrasen input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#000;background-color:#fff;border:1px solid #272727}body.nanotrasen input.number{width:35px}body.nanotrasen input:-ms-input-placeholder{color:#999}body.nanotrasen input::placeholder{color:#999}body.nanotrasen input::-ms-clear{display:none}body.nanotrasen svg.linegraph{overflow:hidden}body.nanotrasen div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px)}body.nanotrasen div.notice .label{color:#000}body.nanotrasen div.notice .content:only-of-type{padding:0}body.nanotrasen div.notice hr{background-color:#272727}body.nanotrasen div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.nanotrasen section .cell,body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .cell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.nanotrasen section{display:table-row;width:100%}body.nanotrasen section:not(:first-child){padding-top:4px}body.nanotrasen section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.nanotrasen section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}body.nanotrasen section .content:not(:last-child){padding-right:16px}body.nanotrasen section .line{width:100%}body.nanotrasen section .cell:not(:first-child){text-align:center;padding-top:0}body.nanotrasen section .cell span.button{width:75px}body.nanotrasen section:not(:last-child){padding-right:4px}body.nanotrasen div.subdisplay{width:100%;margin:0}body.nanotrasen header.titlebar .close,body.nanotrasen header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#8ba5c4}body.nanotrasen header.titlebar .close:hover,body.nanotrasen header.titlebar .minimize:hover{color:#9cb2cd}body.nanotrasen header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.nanotrasen header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.nanotrasen header.titlebar .title{position:absolute;top:6px;left:46px;color:#8ba5c4;font-size:16px;white-space:nowrap}body.nanotrasen header.titlebar .minimize{position:absolute;top:6px;right:46px}body.nanotrasen header.titlebar .close{position:absolute;top:4px;right:12px}body.syndicate{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgMjAwIDI4OS43NDIiIG9wYWNpdHk9Ii4zMyI+DQogIDxwYXRoIGQ9Im0gOTMuNTM3Njc3LDAgYyAtMTguMTEzMTI1LDAgLTM0LjIyMDEzMywzLjExMTY0IC00OC4zMjM0ODQsOS4zMzQzNyAtMTMuOTY1MDkyLDYuMjIxNjcgLTI0LjYxMjQ0MiwxNS4wNzExNCAtMzEuOTQwNjUxLDI2LjU0NzEgLTcuMTg5OTM5OCwxMS4zMzc4OSAtMTAuMzAxMjI2NiwyNC43NDkxMSAtMTAuMzAxMjI2Niw0MC4yMzQ3OCAwLDEwLjY0NjYyIDIuNzI1MDAyNiwyMC40NjQ2NSA4LjE3NTExMTYsMjkuNDUyNTggNS42MTUyNzcsOC45ODY4NiAxNC4wMzgyNzcsMTcuMzUyMDQgMjUuMjY4ODIxLDI1LjA5NDM2IDExLjIzMDU0NCw3LjYwNTMxIDI2LjUwNzQyMSwxNS40MTgzNSA0NS44MzA1MTQsMjMuNDM3ODIgMTkuOTgzNzQ4LDguMjk1NTcgMzQuODQ4ODQ4LDE1LjU1NDcxIDQ0LjU5Mjk5OCwyMS43NzYzOCA5Ljc0NDE0LDYuMjIyNzMgMTYuNzYxNywxMi44NTg1IDIxLjA1NTcyLDE5LjkwOTUxIDQuMjk0MDQsNy4wNTIwOCA2LjQ0MTkzLDE1Ljc2NDA4IDYuNDQxOTMsMjYuMTM0NTkgMCwxNi4xNzcwMiAtNS4yMDE5NiwyOC40ODIyMiAtMTUuNjA2NzMsMzYuOTE2ODIgLTEwLjIzOTYsOC40MzQ3IC0yNS4wMjIwMywxMi42NTIzIC00NC4zNDUxNjksMTIuNjUyMyAtMTQuMDM4MTcxLDAgLTI1LjUxNTI0NywtMS42NTk0IC0zNC40MzM2MTgsLTQuOTc3NyAtOC45MTgzNywtMy40NTY2IC0xNi4xODU1NzIsLTguNzExMyAtMjEuODAwODM5LC0xNS43NjMzIC01LjYxNTI3NywtNy4wNTIxIC0xMC4wNzQ3OTUsLTE2LjY2MDg4IC0xMy4zNzc4OTksLTI4LjgyODEyIGwgLTI0Ljc3MzE2MjYyOTM5NDUsMCAwLDU2LjgyNjMyIEMgMzMuODU2NzY5LDI4Ni4wNzYwMSA2My43NDkwNCwyODkuNzQyMDEgODkuNjc4MzgzLDI4OS43NDIwMSBjIDE2LjAyMDAyNywwIDMwLjcxOTc4NywtMS4zODI3IDQ0LjA5NzMzNywtNC4xNDc5IDEzLjU0MjcyLC0yLjkwNDMgMjUuMTA0MSwtNy40Njc2IDM0LjY4MzA5LC0xMy42ODkzIDkuNzQ0MTMsLTYuMzU5NyAxNy4zNDA0MiwtMTQuNTE5NSAyMi43OTA1MiwtMjQuNDc0OCA1LjQ1MDEsLTEwLjA5MzMyIDguMTc1MTEsLTIyLjM5OTU5IDguMTc1MTEsLTM2LjkxNjgyIDAsLTEyLjk5NzY0IC0zLjMwMjEsLTI0LjMzNTM5IC05LjkwODI5LC0zNC4wMTQ2IC02LjQ0MTA1LC05LjgxNzI1IC0xNS41MjU0NSwtMTguNTI3MDcgLTI3LjI1MTQ2LC0yNi4xMzEzMyAtMTEuNTYwODUsLTcuNjA0MjcgLTI3LjkxMDgzLC0xNS44MzE0MiAtNDkuMDUwNjYsLTI0LjY4MDIyIC0xNy41MDY0NCwtNy4xOTAxMiAtMzAuNzE5NjY4LC0xMy42ODk0OCAtMzkuNjM4MDM4LC0xOS40OTcwMSAtOC45MTgzNzEsLTUuODA3NTIgLTE4LjYwNzQ3NCwtMTIuNDM0MDkgLTI0LjA5NjUyNCwtMTguODc0MTcgLTUuNDI2MDQzLC02LjM2NjE2IC05LjY1ODgyNiwtMTUuMDcwMDMgLTkuNjU4ODI2LC0yNC44ODcyOSAwLC05LjI2NDAxIDIuMDc1NDE0LC0xNy4yMTM0NSA2LjIyMzQ1NCwtMjMuODUwMzMgMTEuMDk4Mjk4LC0xNC4zOTc0OCA0MS4yODY2MzgsLTEuNzk1MDcgNDUuMDc1NjA5LDI0LjM0NzYyIDQuODM5MzkyLDYuNzc0OTEgOC44NDkzNSwxNi4yNDcyOSAxMi4wMjk1MTUsMjguNDE1NiBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNC40NzgyNSwtNS45MjQ0OCAtOS45NTQ4OCwtMTAuNjMyMjIgLTE1LjkwODM3LC0xNC4zNzQxMSAxLjY0MDU1LDAuNDc5MDUgMy4xOTAzOSwxLjAyMzc2IDQuNjM4NjUsMS42NDAyNCA2LjQ5ODYxLDIuNjI2MDcgMTIuMTY3OTMsNy4zMjc0NyAxNy4wMDczLDE0LjEwMzQ1IDQuODM5MzksNi43NzQ5MSA4Ljg0OTM1LDE2LjI0NTY3IDEyLjAyOTUyLDI4LjQxMzk3IDAsMCA4LjQ4MTI4LC0wLjEyODk0IDguNDg5NzgsLTAuMDAyIDAuNDE3NzYsNi40MTQ5NCAtMS43NTMzOSw5LjQ1Mjg2IC00LjEyMzQyLDEyLjU2MTA0IC0yLjQxNzQsMy4xNjk3OCAtNS4xNDQ4Niw2Ljc4OTczIC00LjAwMjc4LDEzLjAwMjkgMS41MDc4Niw4LjIwMzE4IDEwLjE4MzU0LDEwLjU5NjQyIDE0LjYyMTk0LDkuMzExNTQgLTMuMzE4NDIsLTAuNDk5MTEgLTUuMzE4NTUsLTEuNzQ5NDggLTUuMzE4NTUsLTEuNzQ5NDggMCwwIDEuODc2NDYsMC45OTg2OCA1LjY1MTE3LC0xLjM1OTgxIC0zLjI3Njk1LDAuOTU1NzEgLTEwLjcwNTI5LC0wLjc5NzM4IC0xMS44MDEyNSwtNi43NjMxMyAtMC45NTc1MiwtNS4yMDg2MSAwLjk0NjU0LC03LjI5NTE0IDMuNDAxMTMsLTEwLjUxNDgyIDIuNDU0NjIsLTMuMjE5NjggNS4yODQyNiwtNi45NTgzMSA0LjY4NDMsLTE0LjQ4ODI0IGwgMC4wMDMsMC4wMDIgOC45MjY3NiwwIDAsLTU1Ljk5OTY3IGMgLTE1LjA3MTI1LC0zLjg3MTY4IC0yNy42NTMxNCwtNi4zNjA0MiAtMzcuNzQ2NzEsLTcuNDY1ODYgLTkuOTU1MzEsLTEuMTA3NTUgLTIwLjE4ODIzLC0xLjY1OTgxIC0zMC42OTY2MTMsLTEuNjU5ODEgeiBtIDcwLjMyMTYwMywxNy4zMDg5MyAwLjIzODA1LDQwLjMwNDkgYyAxLjMxODA4LDEuMjI2NjYgMi40Mzk2NSwyLjI3ODE1IDMuMzQwODEsMy4xMDYwMiA0LjgzOTM5LDYuNzc0OTEgOC44NDkzNCwxNi4yNDU2NiAxMi4wMjk1MSwyOC40MTM5NyBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNi42NzczMSwtNC41OTM4MSAtMTkuODM2NDMsLTEwLjQ3MzA5IC0zNi4xNDA3MSwtMTUuODI1MjIgeiBtIC0yOC4xMjA0OSw1LjYwNTUxIDguNTY0NzksMTcuNzE2NTUgYyAtMTEuOTcwMzcsLTYuNDY2OTcgLTEzLjg0Njc4LC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk3MDUsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IG0gMTUuMjIxOTUsMjQuMDA4NDggOC41NjQ3OSwxNy43MTY1NSBjIC0xMS45NzAzOCwtNi40NjY5NyAtMTMuODQ2NzksLTkuNzE3MjYgLTguNTY0NzksLTE3LjcxNjU1IHogbSAyMi43OTcwNCwwIGMgMi43NzE1LDcuOTk5MjkgMS43ODc0MSwxMS4yNDk1OCAtNC40OTM1NCwxNy43MTY1NSBsIDQuNDkzNTQsLTE3LjcxNjU1IHogbSAtOTkuMTEzODQsMi4yMDc2NCA4LjU2NDc5LDE3LjcxNjU1IGMgLTExLjk3MDM4MiwtNi40NjY5NyAtMTMuODQ2NzgyLC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk1NDIsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#750000 0,#340404);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff750000",endColorstr="#ff340404",GradientType=0)}body.syndicate .normal{color:#40628a}body.syndicate .good{color:#73e573}body.syndicate .average{color:#be6209}body.syndicate .bad{color:#b00e0e}body.syndicate .highlight{color:#000}body.syndicate main{display:block;margin-top:32px;padding:2px 6px 0}body.syndicate hr{height:2px;background-color:#272727;border:none}body.syndicate .hidden{display:none}body.syndicate .bar .barText,body.syndicate span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.syndicate .bold{font-weight:700}body.syndicate .italic{font-style:italic}body.syndicate [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.syndicate div[data-tooltip],body.syndicate span[data-tooltip]{position:relative}body.syndicate div[data-tooltip]:after,body.syndicate span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.syndicate div[data-tooltip]:hover:after,body.syndicate span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.syndicate div[data-tooltip].tooltip-top:after,body.syndicate span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-top:hover:after,body.syndicate span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:after,body.syndicate span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:hover:after,body.syndicate span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-left:after,body.syndicate span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-left:hover:after,body.syndicate span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:after,body.syndicate span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:hover:after,body.syndicate span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #000;background:#272727}body.syndicate .bar .barText{position:absolute;top:0;right:3px}body.syndicate .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#000}body.syndicate .bar .barFill.good{background-color:#73e573}body.syndicate .bar .barFill.average{background-color:#be6209}body.syndicate .bar .barFill.bad{background-color:#b00e0e}body.syndicate span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.syndicate span.button .fa{padding-right:2px}body.syndicate span.button.normal{transition:background-color .5s;background-color:#397439}body.syndicate span.button.normal.active:focus,body.syndicate span.button.normal.active:hover{transition:background-color .25s;background-color:#4a964a;outline:0}body.syndicate span.button.disabled{transition:background-color .5s;background-color:#363636}body.syndicate span.button.disabled.active:focus,body.syndicate span.button.disabled.active:hover{transition:background-color .25s;background-color:#545454;outline:0}body.syndicate span.button.selected{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.selected.active:focus,body.syndicate span.button.selected.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.toggle{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.toggle.active:focus,body.syndicate span.button.toggle.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.caution{transition:background-color .5s;background-color:#be6209}body.syndicate span.button.caution.active:focus,body.syndicate span.button.caution.active:hover{transition:background-color .25s;background-color:#eb790b;outline:0}body.syndicate span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.syndicate span.button.danger.active:focus,body.syndicate span.button.danger.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.syndicate span.button.gridable{width:125px;margin:2px 0}body.syndicate span.button.gridable.center{text-align:center;width:75px}body.syndicate span.button+span:not(.button),body.syndicate span:not(.button)+span.button{margin-left:5px}body.syndicate div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000);background-color:rgba(0,0,0,.5);box-shadow:inset 0 0 5px rgba(0,0,0,.75)}body.syndicate div.display.tabular{padding:0;margin:0}body.syndicate div.display header,body.syndicate div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #272727}body.syndicate div.display header .buttonRight,body.syndicate div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.syndicate div.display article,body.syndicate div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.syndicate input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#fff;background-color:#9d0808;border:1px solid #272727}body.syndicate input.number{width:35px}body.syndicate input:-ms-input-placeholder{color:#999}body.syndicate input::placeholder{color:#999}body.syndicate input::-ms-clear{display:none}body.syndicate svg.linegraph{overflow:hidden}body.syndicate div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#750000;background-image:repeating-linear-gradient(-45deg,#750000,#750000 10px,#910101 0,#910101 20px)}body.syndicate div.notice .label{color:#000}body.syndicate div.notice .content:only-of-type{padding:0}body.syndicate div.notice hr{background-color:#272727}body.syndicate div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.syndicate section .cell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.syndicate section{display:table-row;width:100%}body.syndicate section:not(:first-child){padding-top:4px}body.syndicate section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.syndicate section .label{width:1%;padding-right:32px;white-space:nowrap;color:#fff}body.syndicate section .content:not(:last-child){padding-right:16px}body.syndicate section .line{width:100%}body.syndicate section .cell:not(:first-child){text-align:center;padding-top:0}body.syndicate section .cell span.button{width:75px}body.syndicate section:not(:last-child){padding-right:4px}body.syndicate div.subdisplay{width:100%;margin:0}body.syndicate header.titlebar .close,body.syndicate header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#e74242}body.syndicate header.titlebar .close:hover,body.syndicate header.titlebar .minimize:hover{color:#eb5e5e}body.syndicate header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.syndicate header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.syndicate header.titlebar .title{position:absolute;top:6px;left:46px;color:#e74242;font-size:16px;white-space:nowrap}body.syndicate header.titlebar .minimize{position:absolute;top:6px;right:46px}body.syndicate header.titlebar .close{position:absolute;top:4px;right:12px}.no-icons header.titlebar .statusicon{font-size:20px}.no-icons header.titlebar .statusicon:after{content:"O"}.no-icons header.titlebar .minimize{top:-2px;font-size:20px}.no-icons header.titlebar .minimize:after{content:"—"}.no-icons header.titlebar .close{font-size:20px}.no-icons header.titlebar .close:after{content:"X"} \ No newline at end of file diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index 16752bdaa9..4d9e2b86ba 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -14,4 +14,4 @@ t:7,e:"ntosheader"}," ",{t:4,f:[{p:[18,3,363],t:7,e:"ui-notice",f:[{p:[19,5,380] s:"!_0"},p:[39,2,1216]}," ",{p:[89,2,2954],t:7,e:"br"},{p:[89,6,2958],t:7,e:"br"},{p:[89,10,2962],t:7,e:"hr"},{p:[89,14,2966],t:7,e:"i",f:["NTOS v2.0.4b Copyright Nanotrasen 2557 - 2559"]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(284)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,284:284}],278:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{p:[6,2,81],t:7,e:"ui-display",a:{title:"WIRELESS CONNECTIVITY"},f:[{p:[8,3,129],t:7,e:"ui-section",a:{label:"Active NTNetRelays"},f:[{p:[9,4,173],t:7,e:"b",f:[{t:2,r:"data.ntnetrelays",p:[9,7,176]}]}]}," ",{t:4,f:[{p:[12,4,250],t:7,e:"ui-section",a:{label:"System status"},f:[{p:[13,6,291],t:7,e:"b",f:[{t:2,x:{r:["data.ntnetstatus"],s:'_0?"ENABLED":"DISABLED"'},p:[13,9,294]}]}]}," ",{p:[15,4,366],t:7,e:"ui-section",a:{label:"Control"},f:[{p:[17,4,401],t:7,e:"ui-button",a:{icon:"plus",action:"toggleWireless"},f:["TOGGLE"]}]}," ",{p:[21,4,500],t:7,e:"br"},{p:[21,8,504],t:7,e:"br"}," ",{p:[22,4,513],t:7,e:"i",f:["Caution - Disabling wireless transmitters when using wireless device may prevent you from re-enabling them again!"]}],n:50,r:"data.ntnetrelays",p:[11,3,221]},{t:4,n:51,f:[{p:[24,4,650],t:7,e:"br"},{p:[24,8,654],t:7,e:"p",f:["Wireless coverage unavailable, no relays are connected."]}],r:"data.ntnetrelays"}]}," ",{p:[29,2,750],t:7,e:"ui-display",a:{title:"FIREWALL CONFIGURATION"},f:[{p:[31,2,798],t:7,e:"table",f:[{p:[32,3,809],t:7,e:"tr",f:[{p:[33,4,818],t:7,e:"th",f:["PROTOCOL"]},{p:[34,4,835],t:7,e:"th",f:["STATUS"]},{p:[35,4,850],t:7,e:"th",f:["CONTROL"]}]},{p:[36,3,865],t:7,e:"tr",f:[" ",{p:[37,4,874],t:7,e:"td",f:["Software Downloads"]},{p:[38,4,901],t:7,e:"td",f:[{t:2,x:{r:["data.config_softwaredownload"],s:'_0?"ENABLED":"DISABLED"'},p:[38,8,905]}]},{p:[39,4,967],t:7,e:"td",f:[" ",{p:[39,9,972],t:7,e:"ui-button",a:{action:"toggle_function",params:'{"id": "1"}'},f:["TOGGLE"]}]}]},{p:[40,3,1051],t:7,e:"tr",f:[" ",{p:[41,4,1060],t:7,e:"td",f:["Peer to Peer Traffic"]},{p:[42,4,1089],t:7,e:"td",f:[{t:2,x:{r:["data.config_peertopeer"],s:'_0?"ENABLED":"DISABLED"'},p:[42,8,1093]}]},{p:[43,4,1149],t:7,e:"td",f:[{p:[43,8,1153],t:7,e:"ui-button",a:{action:"toggle_function",params:'{"id": "2"}'},f:["TOGGLE"]}]}]},{p:[44,3,1232],t:7,e:"tr",f:[" ",{p:[45,4,1241],t:7,e:"td",f:["Communication Systems"]},{p:[46,4,1271],t:7,e:"td",f:[{t:2,x:{r:["data.config_communication"],s:'_0?"ENABLED":"DISABLED"'},p:[46,8,1275]}]},{p:[47,4,1334],t:7,e:"td",f:[{p:[47,8,1338],t:7,e:"ui-button",a:{action:"toggle_function",params:'{"id": "3"}'},f:["TOGGLE"]}]}]},{p:[48,3,1417],t:7,e:"tr",f:[" ",{p:[49,4,1426],t:7,e:"td",f:["Remote System Control"]},{p:[50,4,1456],t:7,e:"td",f:[{t:2,x:{r:["data.config_systemcontrol"],s:'_0?"ENABLED":"DISABLED"'},p:[50,8,1460]}]},{p:[51,4,1519],t:7,e:"td",f:[{p:[51,8,1523],t:7,e:"ui-button",a:{action:"toggle_function",params:'{"id": "4"}'},f:["TOGGLE"]}]}]}]}]}," ",{p:[55,2,1630],t:7,e:"ui-display",a:{title:"SECURITY SYSTEMS"},f:[{t:4,f:[{p:[58,4,1699],t:7,e:"ui-notice",f:[{p:[59,5,1716],t:7,e:"h1",f:["NETWORK INCURSION DETECTED"]}]}," ",{p:[61,5,1774],t:7,e:"i",f:["An abnormal activity has been detected in the network. Please verify system logs for more information"]}],n:50,r:"data.idsalarm",p:[57,3,1673]}," ",{p:[64,3,1902],t:7,e:"ui-section",a:{label:"Intrusion Detection System"},f:[{p:[65,4,1954],t:7,e:"b",f:[{t:2,x:{r:["data.idsstatus"],s:'_0?"ENABLED":"DISABLED"'},p:[65,7,1957]}]}]}," ",{p:[68,3,2029],t:7,e:"ui-section",a:{label:"Maximal Log Count"},f:[{p:[69,4,2072],t:7,e:"b",f:[{t:2,r:"data.ntnetmaxlogs",p:[69,7,2075]}]}]}," ",{p:[72,3,2125],t:7,e:"ui-section",a:{label:"Controls"},f:[]}," ",{p:[74,4,2176],t:7,e:"table",f:[{p:[75,4,2188],t:7,e:"tr",f:[{p:[75,8,2192],t:7,e:"td",f:[{p:[75,12,2196],t:7,e:"ui-button",a:{action:"resetIDS"},f:["RESET IDS"]}]}]},{p:[76,4,2251],t:7,e:"tr",f:[{p:[76,8,2255],t:7,e:"td",f:[{p:[76,12,2259],t:7,e:"ui-button",a:{action:"toggleIDS"},f:["TOGGLE IDS"]}]}]},{p:[77,4,2316],t:7,e:"tr",f:[{p:[77,8,2320],t:7,e:"td",f:[{p:[77,12,2324],t:7,e:"ui-button",a:{action:"updatemaxlogs"},f:["SET LOG LIMIT"]}]}]},{p:[78,4,2388],t:7,e:"tr",f:[{p:[78,8,2392],t:7,e:"td",f:[{p:[78,12,2396],t:7,e:"ui-button",a:{action:"purgelogs"},f:["PURGE LOGS"]}]}]}]}," ",{p:[81,3,2467],t:7,e:"ui-subdisplay",a:{title:"System Logs"},f:[{p:[82,3,2506],t:7,e:"div",a:{"class":"statusDisplay",style:"overflow: auto;"},f:[{p:[83,3,2561],t:7,e:"div",a:{"class":"item"},f:[{p:[84,4,2584],t:7,e:"div",a:{"class":"itemContent",style:"width: 100%;"},f:[{t:4,f:[{t:2,r:"entry",p:[86,6,2667]},{p:[86,15,2676],t:7,e:"br"}],n:52,r:"data.ntnetlogs",p:[85,5,2636]}]}]}]}]}]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(284)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,284:284}],279:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{t:4,f:[{p:[7,2,102],t:7,e:"div",a:{"class":"item"},f:[{p:[8,3,124],t:7,e:"h2",f:["An error has occurred during operation..."]}," ",{p:[9,3,178],t:7,e:"b",f:["Additional information:"]},{t:2,r:"data.error",p:[9,34,209]},{p:[9,48,223],t:7,e:"br"}," ",{p:[10,3,231],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Clear"]}]}],n:50,r:"data.error",p:[6,2,81]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.downloading"],s:"_0"},f:[{p:[13,3,321],t:7,e:"h2",f:["Download in progress..."]}," ",{p:[14,3,357],t:7,e:"div",a:{"class":"itemLabel"},f:["Downloaded file:"]}," ",{p:[17,3,416],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.download_name",p:[18,4,446]}]}," ",{p:[20,3,483],t:7,e:"div",a:{"class":"itemLabel"},f:["Download progress:"]}," ",{p:[23,3,544],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.download_progress",p:[24,4,574]}," / ",{t:2,r:"data.download_size",p:[24,33,603]}," GQ"]}," ",{p:[26,3,642],t:7,e:"div",a:{"class":"itemLabel"},f:["Transfer speed:"]}," ",{p:[29,3,700],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.download_netspeed",p:[30,4,730]},"GQ/s"]}," ",{p:[32,3,774],t:7,e:"div",a:{"class":"itemLabel"},f:["Controls:"]}," ",{p:[35,3,826],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[36,4,856],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Abort download"]}]}]},{t:4,n:50,x:{r:["data.downloading","data.uploading"],s:"(!(_0))&&(_1)"},f:[" ",{p:[39,3,954],t:7,e:"h2",f:["Server enabled"]}," ",{p:[40,3,981],t:7,e:"div",a:{"class":"itemLabel"},f:["Connected clients:"]}," ",{p:[43,3,1042],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.upload_clients",p:[44,4,1072]}]}," ",{p:[46,3,1109],t:7,e:"div",a:{"class":"itemLabel"},f:["Provided file:"]}," ",{p:[49,3,1166],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.upload_filename",p:[50,4,1196]}]}," ",{p:[52,3,1234],t:7,e:"div",a:{"class":"itemLabel"},f:["Server password:"]}," ",{p:[55,3,1293],t:7,e:"div",a:{"class":"itemContent"},f:[{t:4,f:["ENABLED"],n:50,r:"data.upload_haspassword",p:[56,4,1323]},{t:4,n:51,f:["DISABLED"],r:"data.upload_haspassword"}]}," ",{p:[62,3,1420],t:7,e:"div",a:{"class":"itemLabel"},f:["Commands:"]}," ",{p:[65,3,1472],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[66,4,1502],t:7,e:"ui-button",a:{action:"PRG_setpassword"},f:["Set password"]}," ",{p:[67,4,1567],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Exit server"]}]}]},{t:4,n:50,x:{r:["data.downloading","data.uploading","data.upload_filelist"],s:"(!(_0))&&((!(_1))&&(_2))"},f:[" ",{p:[70,3,1668],t:7,e:"h2",f:["File transfer server ready. Select file to upload:"]}," ",{p:[71,3,1732],t:7,e:"table",f:[{p:[72,3,1743],t:7,e:"tr",f:[{p:[72,7,1747],t:7,e:"th",f:["File name"]},{p:[72,20,1760],t:7,e:"th",f:["File size"]},{p:[72,33,1773],t:7,e:"th",f:["Controls ",{t:4,f:[{p:[74,4,1824],t:7,e:"tr",f:[{p:[74,8,1828],t:7,e:"td",f:[{t:2,r:"filename",p:[74,12,1832]}]},{p:[75,4,1849],t:7,e:"td",f:[{t:2,r:"size",p:[75,8,1853]},"GQ"]},{p:[76,4,1868],t:7,e:"td",f:[{p:[76,8,1872],t:7,e:"ui-button",a:{action:"PRG_uploadfile",params:['{"id": "',{t:2,r:"uid",p:[76,59,1923]},'"}']},f:["Select"]}]}]}],n:52,r:"data.upload_filelist",p:[73,3,1789]}]}]}]}," ",{p:[79,3,1981],t:7,e:"hr"}," ",{p:[80,3,1989],t:7,e:"ui-button",a:{action:"PRG_setpassword"},f:["Set password"]}," ",{p:[81,3,2053],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Return"]}]},{t:4,n:50,x:{r:["data.downloading","data.uploading","data.upload_filelist"],s:"(!(_0))&&((!(_1))&&(!(_2)))"},f:[" ",{p:[83,3,2116],t:7,e:"h2",f:["Available files:"]}," ",{p:[84,3,2145],t:7,e:"table",a:{border:"1",style:"border-collapse: collapse"},f:[{p:[84,55,2197],t:7,e:"tr",f:[{p:[84,59,2201],t:7,e:"th",f:["Server UID"]},{p:[84,73,2215],t:7,e:"th",f:["File Name"]},{p:[84,86,2228],t:7,e:"th",f:["File Size"]},{p:[84,99,2241],t:7,e:"th",f:["Password Protection"]},{p:[84,122,2264],t:7,e:"th",f:["Operations ",{t:4,f:[{p:[86,5,2311],t:7,e:"tr",f:[{p:[86,9,2315],t:7,e:"td",f:[{t:2,r:"uid",p:[86,13,2319]}]},{p:[87,5,2332],t:7,e:"td",f:[{t:2,r:"filename",p:[87,9,2336]}]},{p:[88,5,2354],t:7,e:"td",f:[{t:2,r:"size",p:[88,9,2358]},"GQ ",{t:4,f:[{p:[90,6,2400],t:7,e:"td",f:["Enabled"]}],n:50,r:"haspassword",p:[89,5,2374]}," ",{t:4,f:[{p:[93,6,2457],t:7,e:"td",f:["Disabled"]}],n:50,x:{r:["haspassword"],s:"!_0"},p:[92,5,2430]}]},{p:[96,5,2494],t:7,e:"td",f:[{p:[96,9,2498],t:7,e:"ui-button",a:{action:"PRG_downloadfile",params:['{"id": "',{t:2,r:"uid",p:[96,62,2551]},'"}']},f:["Download"]}]}]}],n:52,r:"data.servers",p:[85,4,2283]}]}]}]}," ",{p:[99,3,2612],t:7,e:"hr"}," ",{p:[100,3,2620],t:7,e:"ui-button",a:{action:"PRG_uploadmenu"},f:["Send file"]}]}],r:"data.error"}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(284)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,284:284}],280:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{chargingState:function(t){switch(t){case 2:return"good";case 1:return"average";default:return"bad"}},chargingMode:function(t){return 2==t?"Full":1==t?"Charging":"Draining"},channelState:function(t){return t>=2?"good":"bad"},channelPower:function(t){return t>=2?"On":"Off"},channelMode:function(t){return 1==t||3==t?"Auto":"Manual"}},computed:{graphData:function(){var t=this.get("data.history");return Object.keys(t).map(function(e){return t[e].map(function(t,e){return{x:e,y:t}})})}}}}(r),r.exports.template={v:3,t:[" "," ",{p:[43,1,1082],t:7,e:"ntosheader"}," ",{p:[45,1,1099],t:7,e:"ui-display",a:{title:"Network"},f:[{t:4,f:[{p:[47,5,1157],t:7,e:"ui-linegraph",a:{points:[{t:2,r:"graphData",p:[47,27,1179]}],height:"500",legend:'["Available", "Load"]',colors:'["rgb(0, 102, 0)", "rgb(153, 0, 0)"]',xunit:"seconds ago",xfactor:[{t:2,r:"data.interval",p:[49,38,1331]}],yunit:"W",yfactor:"1",xinc:[{t:2,x:{r:["data.stored"],s:"_0/10"},p:[50,15,1387]}],yinc:"9"}}],n:50,r:"config.fancy",p:[46,3,1131]},{t:4,n:51,f:[{p:[52,5,1437],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[53,7,1475],t:7,e:"span",f:[{t:2,r:"data.supply",p:[53,13,1481]}]}]}," ",{p:[55,5,1528],t:7,e:"ui-section",a:{label:"Load"},f:[{p:[56,9,1563],t:7,e:"span",f:[{t:2,r:"data.demand",p:[56,15,1569]}]}]}],r:"config.fancy"}]}," ",{p:[60,1,1638],t:7,e:"ui-display",a:{title:"Areas"},f:[{p:[61,3,1668],t:7,e:"ui-section",a:{nowrap:0},f:[{p:[62,5,1693],t:7,e:"div",a:{"class":"content"},f:["Area"]}," ",{p:[63,5,1730],t:7,e:"div",a:{"class":"content"},f:["Charge"]}," ",{p:[64,5,1769],t:7,e:"div",a:{"class":"content"},f:["Load"]}," ",{p:[65,5,1806],t:7,e:"div",a:{"class":"content"},f:["Status"]}," ",{p:[66,5,1845],t:7,e:"div",a:{"class":"content"},f:["Equipment"]}," ",{p:[67,5,1887],t:7,e:"div",a:{"class":"content"},f:["Lighting"]}," ",{p:[68,5,1928],t:7,e:"div",a:{"class":"content"},f:["Environment"]}]}," ",{t:4,f:[{p:[71,5,2013],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[71,24,2032]}],nowrap:0},f:[{p:[72,7,2057],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["@index","adata.areas"],s:"Math.round(_1[_0].charge)"},p:[72,28,2078]}," %"]}," ",{p:[73,7,2136],t:7,e:"div",a:{"class":"content"},f:[{t:2,rx:{r:"adata.areas",m:[{t:30,n:"@index"},"load"]},p:[73,28,2157]}]}," ",{p:[74,7,2199],t:7,e:"div",a:{"class":"content"},f:[{p:[74,28,2220],t:7,e:"span",a:{"class":[{t:2,x:{r:["chargingState","charging"],s:"_0(_1)"},p:[74,41,2233]}]},f:[{t:2,x:{r:["chargingMode","charging"],s:"_0(_1)"},p:[74,70,2262]}]}]}," ",{p:[75,7,2309],t:7,e:"div",a:{"class":"content"},f:[{p:[75,28,2330],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","eqp"],s:"_0(_1)"},p:[75,41,2343]}]},f:[{t:2,x:{r:["channelPower","eqp"],s:"_0(_1)"},p:[75,64,2366]}," [",{p:[75,87,2389],t:7,e:"span",f:[{t:2,x:{r:["channelMode","eqp"],s:"_0(_1)"},p:[75,93,2395]}]},"]"]}]}," ",{p:[76,7,2444],t:7,e:"div",a:{"class":"content"},f:[{p:[76,28,2465],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","lgt"],s:"_0(_1)"},p:[76,41,2478]}]},f:[{t:2,x:{r:["channelPower","lgt"],s:"_0(_1)"},p:[76,64,2501]}," [",{p:[76,87,2524],t:7,e:"span",f:[{t:2,x:{r:["channelMode","lgt"],s:"_0(_1)"},p:[76,93,2530]}]},"]"]}]}," ",{p:[77,7,2579],t:7,e:"div",a:{"class":"content"},f:[{p:[77,28,2600],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","env"],s:"_0(_1)"},p:[77,41,2613]}]},f:[{t:2,x:{r:["channelPower","env"],s:"_0(_1)"},p:[77,64,2636]}," [",{p:[77,87,2659],t:7,e:"span",f:[{t:2,x:{r:["channelMode","env"],s:"_0(_1)"},p:[77,93,2665]}]},"]"]}]}]}],n:52,r:"data.areas",p:[70,3,1987]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(284)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,284:284}],281:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{p:[5,2,79],t:7,e:"div",a:{"class":"item"},f:[{p:[6,3,101],t:7,e:"div",a:{"class":"itemLabel"},f:["Payload status:"]}," ",{p:[9,3,158],t:7,e:"div",a:{"class":"itemContent"},f:[{t:4,f:["ARMED"],n:50,r:"data.armed",p:[10,4,188]},{t:4,n:51,f:["DISARMED"],r:"data.armed"}]}," ",{p:[16,3,270],t:7,e:"div",a:{"class":"itemLabel"},f:["Controls:"]}," ",{p:[19,3,321],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[20,4,351],t:7,e:"table",f:[{p:[21,4,363],t:7,e:"tr",f:[{p:[21,8,367],t:7,e:"td",f:[{p:[21,12,371],t:7,e:"ui-button",a:{action:"PRG_obfuscate"},f:["OBFUSCATE PROGRAM NAME"]}]}]},{p:[22,4,444],t:7,e:"tr",f:[{p:[22,8,448],t:7,e:"td",f:[{p:[22,12,452],t:7,e:"ui-button",a:{action:"PRG_arm",state:[{t:2,x:{r:["data.armed"],s:'_0?"danger":null'},p:[22,47,487]}]},f:[{t:2,x:{r:["data.armed"],s:'_0?"DISARM":"ARM"'},p:[22,81,521]}]}," ",{p:[23,4,571],t:7,e:"ui-button",a:{icon:"radiation",state:[{t:2,x:{r:["data.armed"],s:'_0?null:"disabled"'},p:[23,39,606]}],action:"PRG_activate"},f:["ACTIVATE"]}]}]}]}]}]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(284)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,284:284}],282:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{t:4,f:[{p:[5,3,95],t:7,e:"ui-display",a:{title:[{t:2,r:"class",p:[5,22,114]}," Alarms"]},f:[{p:[6,5,138],t:7,e:"ul",f:[{t:4,f:[{p:[8,9,171],t:7,e:"li",f:[{t:2,r:".",p:[8,13,175]}]}],n:52,r:".",p:[7,7,150]},{t:4,n:51,f:[{p:[10,9,211],t:7,e:"li",f:["System Nominal"]}],r:"."}]}]}],n:52,i:"class",r:"data.alarms",p:[4,1,64]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(284)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,284:284}],283:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{integState:function(t){var e=100;return t==e?"good":t>e/2?"average":"bad"},bigState:function(t,e,n){return charge>n?"bad":t>e?"average":"good"}}}}(r),r.exports.template={v:3,t:[" "," ",{p:[23,1,421],t:7,e:"ntosheader"}," ",{t:4,f:[{p:[27,2,462],t:7,e:"ui-button",a:{action:"PRG_clear"},f:["Back to Menu"]},{p:[27,56,516],t:7,e:"br"}," ",{p:[28,3,524],t:7,e:"ui-display",a:{title:"Supermatter Status:"},f:[{p:[29,3,568],t:7,e:"ui-section",a:{label:"Core Integrity"},f:[{p:[30,5,609],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"adata.SM_integrity",p:[30,38,642]}],state:[{t:2,x:{r:["integState","adata.SM_integrity"],s:"_0(_1)"},p:[30,69,673]}]},f:[{t:2,r:"data.SM_integrity",p:[30,105,709]},"%"]}]}," ",{p:[32,3,761],t:7,e:"ui-section",a:{label:"Relative EER"},f:[{p:[33,5,800],t:7,e:"span",a:{"class":[{t:2,x:{r:["bigState","data.SM_power"],s:"_0(_1,150,300)"},p:[33,18,813]}]},f:[{t:2,r:"data.SM_power",p:[33,55,850]}," MeV/cm3"]}]}," ",{p:[35,3,903],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[36,5,941],t:7,e:"span",a:{"class":[{t:2,x:{r:["bigState","data.SM_ambienttemp"],s:"_0(_1,4000,5000)"},p:[36,18,954]}]},f:[{t:2,r:"data.SM_ambienttemp",p:[36,63,999]}," K"]}]}," ",{p:[38,3,1052],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[39,5,1087],t:7,e:"span",a:{"class":[{t:2,x:{r:["bigState","data.SM_ambientpressure"],s:"_0(_1,5000,10000)"},p:[39,18,1100]}]},f:[{t:2,r:"data.SM_ambientpressure",p:[39,68,1150]}," kPa"]}]}]}," ",{p:[42,3,1227],t:7,e:"hr"},{p:[42,7,1231],t:7,e:"br"}," ",{p:[43,3,1239],t:7,e:"ui-display",a:{title:"Gas Composition:"},f:[{t:4,f:[{p:[45,5,1307],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[45,24,1326]}]},f:[{t:2,r:"amount",p:[46,6,1343]}," %"]}],n:52,r:"data.gases",p:[44,4,1281]}]}],n:50,r:"data.active",p:[26,1,440]},{t:4,n:51,f:[{p:[51,2,1418],t:7,e:"ui-button",a:{action:"PRG_refresh"},f:["Refresh"]},{p:[51,53,1469],t:7,e:"br"}," ",{p:[52,2,1476],t:7,e:"ui-display",a:{title:"Detected Supermatters"},f:[{t:4,f:[{p:[54,3,1552],t:7,e:"ui-section",a:{label:"Area"},f:[{t:2,r:"area_name",p:[55,5,1583]}," - (#",{t:2,r:"uid",p:[55,23,1601]},")"]}," ",{p:[57,3,1630],t:7,e:"ui-section",a:{label:"Integrity"},f:[{t:2,r:"integrity",p:[58,5,1666]}," %"]}," ",{p:[60,3,1702],t:7,e:"ui-section",a:{label:"Options"},f:[{p:[61,5,1736],t:7,e:"ui-button",a:{action:"PRG_set",params:['{"target" : "',{t:2,r:"uid",p:[61,54,1785]},'"}']},f:["View Details"]}]}],n:52,r:"data.supermatters",p:[53,2,1521]}]}],r:"data.active"}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(284)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,284:284}],284:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"item",style:"float: left"},f:[{p:[2,2,41],t:7,e:"table",f:[{p:[2,9,48],t:7,e:"tr",f:[{t:4,f:[{p:[4,3,113],t:7,e:"td",f:[{p:[4,7,117],t:7,e:"img",a:{src:[{t:2,r:"data.PC_batteryicon",p:[4,17,127]}]}}]}],n:50,x:{r:["data.PC_batteryicon","data.PC_showbatteryicon"],s:"_0&&_1"},p:[3,2,55]}," ",{t:4,f:[{p:[7,3,226],t:7,e:"td",f:[{p:[7,7,230],t:7,e:"b",f:[{t:2,r:"data.PC_batterypercent",p:[7,10,233]}]}]}],n:50,x:{r:["data.PC_batterypercent","data.PC_showbatteryicon"],s:"_0&&_1"},p:[6,2,165]}," ",{t:4,f:[{p:[10,3,305],t:7,e:"td",f:[{p:[10,7,309],t:7,e:"img",a:{src:[{t:2,r:"data.PC_ntneticon",p:[10,17,319]}]}}]}],n:50,r:"data.PC_ntneticon",p:[9,2,276]}," ",{t:4,f:[{p:[13,3,386],t:7,e:"td",f:[{p:[13,7,390],t:7,e:"img",a:{src:[{t:2,r:"data.PC_apclinkicon",p:[13,17,400]}]}}]}],n:50,r:"data.PC_apclinkicon",p:[12,2,355]}," ",{t:4,f:[{p:[16,3,469],t:7,e:"td",f:[{p:[16,7,473],t:7,e:"b",f:[{t:2,r:"data.PC_stationtime",p:[16,10,476]}]}]}],n:50,r:"data.PC_stationtime",p:[15,2,438]}," ",{t:4,f:[{p:[19,3,552],t:7,e:"td",f:[{p:[19,7,556],t:7,e:"img",a:{src:[{t:2,r:"icon",p:[19,17,566]}]}}]}],n:52,r:"data.PC_programheaders",p:[18,2,516]}]}]}]}," ",{p:[23,1,609],t:7,e:"div",a:{style:"float: right; margin-top: 5px"},f:[{p:[24,2,655],t:7,e:"ui-button",a:{action:"PC_shutdown"},f:["Shutdown"]}," ",{t:4,f:[{p:[26,3,745],t:7,e:"ui-button",a:{action:"PC_exit"},f:["EXIT PROGRAM"]}," ",{p:[27,3,801],t:7,e:"ui-button",a:{action:"PC_minimize"},f:["Minimize Program"]}],n:50,r:"data.PC_showexitprogram",p:[25,2,710]}]}," ",{p:[30,1,881],t:7,e:"div",a:{style:"clear: both"}}]},e.exports=a.extend(r.exports)},{205:205}],285:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Auth. Disk:"},f:[{t:4,f:[{p:[3,7,69],t:7,e:"ui-button",a:{icon:"eject",style:"selected",action:"eject_disk"},f:["++++++++++"]}],n:50,r:"data.disk_present",p:[2,3,36]},{t:4,n:51,f:[{p:[5,7,172],t:7,e:"ui-button",a:{icon:"plus",action:"insert_disk"},f:["----------"]}],r:"data.disk_present"}]}," ",{p:[8,1,266],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[9,3,297],t:7,e:"span",f:[{t:2,r:"data.status1",p:[9,9,303]},"-",{t:2,r:"data.status2",p:[9,26,320]}]}]}," ",{p:[11,1,360],t:7,e:"ui-display",a:{title:"Timer"},f:[{p:[12,3,390],t:7,e:"ui-section",a:{label:"Time to Detonation"},f:[{p:[13,5,435],t:7,e:"span",f:[{t:2,x:{r:["data.timing","data.time_left","data.timer_set"],s:"_0?_1:_2"},p:[13,11,441]}]}]}," ",{t:4,f:[{p:[16,5,540],t:7,e:"ui-section",a:{label:"Adjust Timer"},f:[{p:[17,7,581],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.timer_is_not_default"],s:'_0&&_1&&_2?null:"disabled"'},p:[17,40,614]}],action:"timer",params:'{"change": "reset"}'},f:["Reset"]}," ",{p:[19,7,786],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.timer_is_not_min"],s:'_0&&_1&&_2?null:"disabled"'},p:[19,38,817]}],action:"timer",params:'{"change": "decrease"}'},f:["Decrease"]}," ",{p:[21,7,991],t:7,e:"ui-button",a:{icon:"pencil",state:[{t:2,x:{r:["data.disk_present","data.code_approved"],s:'_0&&_1?null:"disabled"'},p:[21,39,1023]}],action:"timer",params:'{"change": "input"}'},f:["Set"]}," ",{p:[22,7,1155],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.timer_is_not_max"],s:'_0&&_1&&_2?null:"disabled"'},p:[22,37,1185]}],action:"timer",params:'{"change": "increase"}'},f:["Increase"]}]}],n:51,r:"data.timing",p:[15,3,518]}," ",{p:[26,3,1394],t:7,e:"ui-section",a:{label:"Timer"},f:[{p:[27,5,1426],t:7,e:"ui-button",a:{icon:"clock-o",style:[{t:2,x:{r:["data.timing"],s:'_0?"danger":"caution"'},p:[27,38,1459]}],action:"toggle_timer",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.safety"],s:'_0&&_1&&!_2?null:"disabled"'},p:[29,14,1542]}]},f:[{t:2,x:{r:["data.timing"],s:'_0?"On":"Off"'},p:[30,7,1631]}]}]}]}," ",{p:[34,1,1713],t:7,e:"ui-display",a:{title:"Anchoring"},f:[{p:[35,3,1747],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.disk_present","data.code_approved"],s:'_0&&_1?null:"disabled"'},p:[36,12,1770]}],icon:[{t:2,x:{r:["data.anchored"],s:'_0?"lock":"unlock"'},p:[37,11,1846]}],style:[{t:2,x:{r:["data.anchored"],s:'_0?null:"caution"'},p:[38,12,1897]}],action:"anchor"},f:[{t:2,x:{r:["data.anchored"],s:'_0?"Engaged":"Off"'},p:[39,21,1956]}]}]}," ",{p:[41,1,2022],t:7,e:"ui-display",a:{title:"Safety"},f:[{p:[42,3,2053],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.disk_present","data.code_approved"],s:'_0&&_1?null:"disabled"'},p:[43,12,2076]}],icon:[{t:2,x:{r:["data.safety"],s:'_0?"lock":"unlock"'},p:[44,11,2152]}],action:"safety",style:[{t:2,x:{r:["data.safety"],s:'_0?"caution":"danger"'},p:[45,12,2217]}]},f:[{p:[46,7,2265],t:7,e:"span",f:[{t:2,x:{r:["data.safety"],s:'_0?"On":"Off"'},p:[46,13,2271]}]}]}]}," ",{p:[49,1,2341],t:7,e:"ui-display",a:{title:"Code"},f:[{p:[50,3,2370],t:7,e:"ui-section",a:{label:"Message"},f:[{t:2,r:"data.message",p:[50,31,2398]}]}," ",{p:[51,3,2431],t:7,e:"ui-section",a:{label:"Keypad"},f:[{p:[52,5,2464],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[52,39,2498]}],params:'{"digit":"1"}'},f:["1"]}," ",{p:[53,5,2583],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[53,39,2617]}],params:'{"digit":"2"}'},f:["2"]}," ",{p:[54,5,2702],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[54,39,2736]}],params:'{"digit":"3"}'},f:["3"]}," ",{p:[55,5,2821],t:7,e:"br"}," ",{p:[56,5,2831],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[56,39,2865]}],params:'{"digit":"4"}'},f:["4"]}," ",{p:[57,5,2950],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[57,39,2984]}],params:'{"digit":"5"}'},f:["5"]}," ",{p:[58,5,3069],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[58,39,3103]}],params:'{"digit":"6"}'},f:["6"]}," ",{p:[59,5,3188],t:7,e:"br"}," ",{p:[60,5,3198],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[60,39,3232]}],params:'{"digit":"7"}'},f:["7"]}," ",{p:[61,5,3317],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[61,39,3351]}],params:'{"digit":"8"}'},f:["8"]}," ",{p:[62,5,3436],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[62,39,3470]}],params:'{"digit":"9"}'},f:["9"]}," ",{p:[63,5,3555],t:7,e:"br"}," ",{p:[64,5,3565],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[64,39,3599]}],params:'{"digit":"R"}'},f:["R"]}," ",{p:[65,5,3684],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[65,39,3718]}],params:'{"digit":"0"}'},f:["0"]}," ",{p:[66,5,3803],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[66,39,3837]}],params:'{"digit":"E"}'},f:["E"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],286:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,25],t:7,e:"ui-notice",f:["No table detected!"]}],n:51,r:"data.table",p:[1,1,0]},{p:[6,1,88],t:7,e:"ui-display",f:[{p:[7,2,103],t:7,e:"ui-display",a:{title:"Patient State"},f:[{t:4,f:[{p:[9,4,166],t:7,e:"ui-section",a:{label:"State"},f:[{p:[10,5,198],t:7,e:"span",a:{"class":[{t:2,r:"data.patient.statstate",p:[10,18,211]}]},f:[{t:2,r:"data.patient.stat",p:[10,46,239]}]}]}," ",{p:[12,4,290],t:7,e:"ui-section",a:{label:"Blood Type"},f:[{p:[13,5,327],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.patient.blood_type",p:[13,27,349]}]}]}," ",{p:[15,4,406],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[16,5,439],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.patient.minHealth",p:[16,18,452]}],max:[{t:2,r:"data.patient.maxHealth",p:[16,51,485]}],value:[{t:2,r:"data.patient.health",p:[16,86,520]}],state:[{t:2,x:{r:["data.patient.health"],s:'_0>=0?"good":"average"'},p:[17,12,557]}]},f:[{t:2,x:{r:["adata.patient.health"],s:"Math.round(_0)"},p:[17,63,608]}]}]}," ",{t:4,f:[{p:[20,5,840],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[20,24,859]}]},f:[{p:[21,6,877],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.patient.maxHealth",p:[21,27,898]}],value:[{t:2,rx:{r:"data.patient",m:[{t:30,n:"type"}]},p:[21,62,933]}],state:"bad"},f:[{t:2,x:{r:["type","adata.patient"],s:"Math.round(_1[_0])"},p:[21,98,969]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Respiratory",type:"oxyLoss"}]'},p:[19,4,676]}],n:50,r:"data.patient",p:[8,3,141]},{t:4,n:51,f:["No patient detected."],r:"data.patient"}]}," ",{p:[28,2,1113],t:7,e:"ui-display",a:{title:"Initiated Procedures"},f:[{t:4,f:[{t:4,f:[{p:[31,5,1217],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"name",p:[31,27,1239]}]},f:[{p:[32,6,1256],t:7,e:"ui-section",a:{label:"Next Step"},f:[{p:[33,7,1294],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"next_step",p:[33,29,1316]}]}]}," ",{t:4,f:[{p:[36,7,1395],t:7,e:"ui-section",a:{label:"Alternative Step"},f:[{p:[37,8,1441],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"alternative_step",p:[37,30,1463]}]}]}],n:50,r:"alternative_step",p:[35,6,1363]}]}],n:52,r:"data.procedures",p:[30,4,1186]}],n:50,r:"data.procedures",p:[29,3,1158]},{t:4,n:51,f:["No active procedures."],r:"data.procedures"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],287:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,2,15],t:7,e:"ui-section",f:["This machine only accepts ore. Gibtonite and Slag are not accepted."]}," ",{p:[5,2,117],t:7,e:"ui-section",f:["Current unclaimed points: ",{t:2,r:"data.unclaimedPoints",p:[6,29,159]}," ",{t:4,f:[{p:[8,4,220],t:7,e:"ui-button",a:{action:"Claim"},f:["Claim Points"]}],n:50,r:"data.unclaimedPoints",p:[7,3,187]}]}," ",{p:[13,2,311],t:7,e:"ui-section",f:[{t:4,f:[{p:[15,4,350],t:7,e:"ui-button",a:{action:"Eject"},f:["Eject ID"]}," You have ",{t:2,r:"data.claimedPoints",p:[18,13,421]}," mining points collected."],n:50,r:"data.hasID",p:[14,3,327]},{t:4,n:51,f:[{p:[20,4,485],t:7,e:"ui-button",a:{action:"Insert"},f:["Insert ID"]}],r:"data.hasID"}]}]}," ",{p:[26,1,588],t:7,e:"ui-display",f:[{t:4,f:[{p:[28,3,627],t:7,e:"ui-section",f:[{p:[29,4,644],t:7,e:"ui-button",a:{action:"diskEject",icon:"eject"},f:["Eject Disk"]}]}," ",{t:4,f:[{p:[34,4,772],t:7,e:"ui-section",a:{"class":"candystripe"},f:[{p:[35,5,808],t:7,e:"ui-button",a:{action:"diskUpload",state:[{t:2,x:{r:["canupload"],s:'(_0)?null:"disabled"'},p:[35,42,845]}],icon:"upload",align:"right",params:['{ "design" : "',{t:2,r:"index",p:[35,129,932]},'" }']},f:["Upload"]}," File ",{t:2,r:"index",p:[38,10,988]},": ",{t:2,r:"name",p:[38,21,999]}]}],n:52,r:"data.diskDesigns",p:[33,3,741]}],n:50,r:"data.hasDisk",p:[27,2,603]},{t:4,n:51,f:[{p:[42,3,1053],t:7,e:"ui-section",f:[{p:[43,4,1070],t:7,e:"ui-button",a:{action:"diskInsert",icon:"floppy-o"},f:["Insert Disk"]}]}],r:"data.hasDisk"}]}," ",{p:[49,1,1195],t:7,e:"div",a:{"class":"display tabular"},f:[{p:[50,2,1227],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[51,4,1261],t:7,e:"section",a:{"class":"cell"},f:["Mineral"]}," ",{p:[54,4,1316],t:7,e:"section",a:{"class":"cell"},f:["Sheets"]}," ",{p:[57,4,1370],t:7,e:"section",a:{"class":"cell"},f:[]}," ",{p:[59,4,1412],t:7,e:"section",a:{"class":"cell"},f:[{p:[60,5,1440],t:7,e:"ui-button",a:{"class":"center mineral",grid:0,action:"Release",params:'{"id" : "all"}'},f:["Release All"]}]}," ",{p:[64,4,1576],t:7,e:"section",a:{"class":"cell"},f:["Ore Value"]}]}," ",{t:4,f:[{p:[69,3,1673],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[70,4,1707],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[71,5,1735]}]}," ",{p:[73,4,1763],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"amount",p:[74,5,1805]}]}," ",{p:[76,4,1835],t:7,e:"section",a:{"class":"cell"},f:[{p:[77,5,1863],t:7,e:"input",a:{value:[{t:2,r:"sheets",p:[77,18,1876]}],placeholder:"###","class":"number"}}]}," ",{p:[79,4,1941],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{p:[80,5,1983],t:7,e:"ui-button",a:{"class":"center",grid:0,action:"Release",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[80,59,2037]}],params:['{ "id" : ',{t:2,r:"id",p:[80,114,2092]},', "sheets" : ',{t:2,r:"sheets",p:[80,133,2111]}," }"]},f:["Release"]}]}," ",{p:[84,4,2178],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"value",p:[85,5,2220]}]}]}],n:52,r:"data.materials",p:[68,2,1645]}," ",{t:4,f:[{p:[90,3,2298],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[91,4,2332],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[92,5,2360]}]}," ",{p:[94,4,2388],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"amount",p:[95,5,2430]}]}," ",{p:[97,4,2460],t:7,e:"section",a:{"class":"cell"},f:[{p:[98,5,2488],t:7,e:"input",a:{value:[{t:2,r:"sheets",p:[98,18,2501]}],placeholder:"###","class":"number"}}]}," ",{p:[100,4,2566],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{p:[101,5,2608],t:7,e:"ui-button",a:{"class":"center",grid:0,action:"Smelt",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[101,57,2660]}],params:['{ "id" : ',{t:2,r:"id",p:[101,113,2716]},', "sheets" : ',{t:2,r:"sheets",p:[101,132,2735]}," }"]},f:["Smelt"]}]}," ",{p:[105,4,2799],t:7,e:"section", a:{"class":"cell",align:"right"},f:[{p:[106,5,2841],t:7,e:"ui-button",a:{"class":"center",grid:0,action:"SmeltAll",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[106,60,2896]}],params:['{ "id" : ',{t:2,r:"id",p:[106,116,2952]}," }"]},f:["Smelt All"]}]}]}],n:52,r:"data.alloys",p:[89,2,2273]}]}]},e.exports=a.extend(r.exports)},{205:205}],288:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:{button:[{p:[4,4,87],t:7,e:"ui-button",a:{icon:"remove",state:[{t:2,x:{r:["data.has_beaker"],s:'_0?null:"disabled"'},p:[4,36,119]}],action:"empty_eject_beaker"},f:["Empty and eject"]}," ",{p:[7,4,231],t:7,e:"ui-button",a:{icon:"trash",state:[{t:2,x:{r:["data.has_beaker"],s:'_0?null:"disabled"'},p:[7,35,262]}],action:"empty_beaker"},f:["Empty"]}," ",{p:[10,4,358],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.has_beaker"],s:'_0?null:"disabled"'},p:[10,35,389]}],action:"eject_beaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{t:4,f:[{p:[15,4,528],t:7,e:"ui-section",f:[{t:4,f:[{p:[17,6,578],t:7,e:"span",a:{"class":"bad"},f:["The beaker is empty!"]}],n:50,r:"data.beaker_empty",p:[16,5,546]},{t:4,n:51,f:[{p:[19,6,644],t:7,e:"ui-subdisplay",a:{title:"Blood"},f:[{t:4,f:[{p:[21,8,712],t:7,e:"ui-section",a:{label:"Blood DNA"},f:[{t:2,r:"data.blood.dna",p:[21,38,742]}]}," ",{p:[22,8,782],t:7,e:"ui-section",a:{label:"Blood type"},f:[{t:2,r:"data.blood.type",p:[22,39,813]}]}],n:50,r:"data.has_blood",p:[20,7,681]},{t:4,n:51,f:[{p:[24,8,870],t:7,e:"ui-section",f:[{p:[25,9,892],t:7,e:"span",a:{"class":"average"},f:["No blood sample detected."]}]}],r:"data.has_blood"}]}],r:"data.beaker_empty"}]}],n:50,r:"data.has_beaker",p:[14,3,500]},{t:4,n:51,f:[{p:[32,4,1054],t:7,e:"ui-section",f:[{p:[33,5,1072],t:7,e:"span",a:{"class":"bad"},f:["No beaker loaded."]}]}],r:"data.has_beaker"}]}," ",{t:4,f:[{p:[38,3,1188],t:7,e:"ui-display",a:{title:"Diseases"},f:[{t:4,f:[{p:{button:[{t:4,f:[{p:[43,8,1343],t:7,e:"ui-button",a:{icon:"pencil",action:"rename_disease",state:[{t:2,x:{r:["can_rename"],s:'_0?"":"disabled"'},p:[43,64,1399]}],params:['{"index": ',{t:2,r:"index",p:[43,116,1451]},"}"]},f:["Name advanced disease"]}],n:50,r:"is_adv",p:[42,7,1320]}," ",{p:[47,7,1538],t:7,e:"ui-button",a:{icon:"flask",action:"create_culture_bottle",state:[{t:2,x:{r:["data.is_ready"],s:'_0?"":"disabled"'},p:[47,69,1600]}],params:['{"index": ',{t:2,r:"index",p:[47,124,1655]},"}"]},f:["Create virus culture bottle"]}]},t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[40,24,1269]}],button:0},f:[" ",{p:[51,6,1749],t:7,e:"ui-section",a:{label:"Disease agent"},f:[{t:2,r:"agent",p:[51,40,1783]}]}," ",{p:[52,6,1812],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"description",p:[52,38,1844]}]}," ",{p:[53,6,1879],t:7,e:"ui-section",a:{label:"Spread"},f:[{t:2,r:"spread",p:[53,33,1906]}]}," ",{p:[54,6,1936],t:7,e:"ui-section",a:{label:"Possible cure"},f:[{t:2,r:"cure",p:[54,40,1970]}]}," ",{t:4,f:[{p:[56,7,2021],t:7,e:"ui-section",a:{label:"Symptoms"},f:[{t:4,f:[{p:[58,9,2087],t:7,e:"ui-button",a:{action:"symptom_details",state:"",params:['{"picked_symptom": ',{t:2,r:"sym_index",p:[58,81,2159]},', "index": ',{t:2,r:"index",p:[58,105,2183]},"}"]},f:[{t:2,r:"name",p:[59,10,2206]}," "]},{p:[60,21,2236],t:7,e:"br"}],n:52,r:"symptoms",p:[57,8,2059]}]}," ",{p:[63,7,2289],t:7,e:"ui-section",a:{label:"Resistance"},f:[{t:2,r:"resistance",p:[63,38,2320]}]}," ",{p:[64,7,2355],t:7,e:"ui-section",a:{label:"Stealth"},f:[{t:2,r:"stealth",p:[64,35,2383]}]}," ",{p:[65,7,2415],t:7,e:"ui-section",a:{label:"Stage speed"},f:[{t:2,r:"stage_speed",p:[65,39,2447]}]}," ",{p:[66,7,2483],t:7,e:"ui-section",a:{label:"Transmittability"},f:[{t:2,r:"transmission",p:[66,44,2520]}]}],n:50,r:"is_adv",p:[55,6,1999]}]}],n:52,r:"data.viruses",p:[39,4,1222]},{t:4,n:51,f:[{p:[70,5,2601],t:7,e:"ui-section",f:[{p:[71,6,2620],t:7,e:"span",a:{"class":"average"},f:["No detectable virus in the blood sample."]}]}],r:"data.viruses"}]}," ",{p:[75,3,2743],t:7,e:"ui-display",a:{title:"Antibodies"},f:[{t:4,f:[{p:[77,5,2811],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[77,24,2830]}]},f:[{p:[78,7,2848],t:7,e:"ui-button",a:{icon:"eyedropper",state:[{t:2,x:{r:["data.is_ready"],s:'_0?"":"disabled"'},p:[78,43,2884]}],action:"create_vaccine_bottle",params:['{"index": ',{t:2,r:"id",p:[78,129,2970]},"}"]},f:["Create vaccine bottle"]}]}],n:52,r:"data.resistances",p:[76,4,2779]},{t:4,n:51,f:[{p:[83,5,3067],t:7,e:"ui-section",f:[{p:[84,6,3086],t:7,e:"span",a:{"class":"average"},f:["No antibodies detected in the blood sample."]}]}],r:"data.resistances"}]}],n:50,r:"data.has_blood",p:[37,2,1162]}],n:50,x:{r:["data.mode"],s:"_0==1"},p:[1,1,0]},{t:4,n:51,f:[{p:[90,2,3231],t:7,e:"ui-button",a:{icon:"undo",state:"",action:"back"},f:["Back"]}," ",{t:4,f:[{p:[94,4,3330],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[94,23,3349]}]},f:[{p:[95,4,3364],t:7,e:"ui-section",f:[{t:2,r:"desc",p:[96,5,3382]}," ",{t:4,f:[{p:[98,5,3417],t:7,e:"br"}," ",{p:[99,5,3428],t:7,e:"b",f:["This symptom has been neutered, and has no effect. It will still affect the virus' statistics."]}],n:50,r:"neutered",p:[97,4,3395]}]}," ",{p:[102,4,3564],t:7,e:"ui-section",f:[{p:[103,5,3582],t:7,e:"ui-section",a:{label:"Level"},f:[{t:2,r:"level",p:[103,31,3608]}]}," ",{p:[104,5,3636],t:7,e:"ui-section",a:{label:"Resistance"},f:[{t:2,r:"resistance",p:[104,36,3667]}]}," ",{p:[105,5,3700],t:7,e:"ui-section",a:{label:"Stealth"},f:[{t:2,r:"stealth",p:[105,33,3728]}]}," ",{p:[106,5,3758],t:7,e:"ui-section",a:{label:"Stage speed"},f:[{t:2,r:"stage_speed",p:[106,37,3790]}]}," ",{p:[107,5,3824],t:7,e:"ui-section",a:{label:"Transmittability"},f:[{t:2,r:"transmission",p:[107,42,3861]}]}]}," ",{p:[109,4,3913],t:7,e:"ui-subdisplay",a:{title:"Effect Thresholds"},f:[{p:[110,5,3960],t:7,e:"ui-section",f:[{t:3,r:"threshold_desc",p:[110,17,3972]}]}]}]}],n:53,r:"data.symptom",p:[93,2,3303]}],x:{r:["data.mode"],s:"_0==1"}}]},e.exports=a.extend(r.exports)},{205:205}],289:[function(t,e,n){var a=t(205),r={exports:{}};!function(e){"use strict";var n=t(327);e.exports={data:{filter:"",tooltiptext:function(t,e,n){var a="";return t&&(a+="REQUIREMENTS: "+t+" "),e&&(a+="CATALYSTS: "+e+" "),n&&(a+="TOOLS: "+n),a}},oninit:function(){var t=this;this.on({hover:function(t){this.set("hovered",t.context.params)},unhover:function(t){this.set("hovered")}}),this.observe("filter",function(e,a,r){var i=null;i=t.get("data.display_compact")?t.findAll(".section"):t.findAll(".display:not(:first-child)"),(0,n.filterMulti)(i,t.get("filter").toLowerCase())},{init:!1})}}}(r),r.exports.template={v:3,t:[" ",{p:[48,1,1342],t:7,e:"ui-display",a:{title:[{t:2,r:"data.category",p:[48,20,1361]},{t:4,f:[" : ",{t:2,r:"data.subcategory",p:[48,64,1405]}],n:50,r:"data.subcategory",p:[48,37,1378]}]},f:[{t:4,f:[{p:[50,3,1459],t:7,e:"ui-section",f:["Crafting... ",{p:[51,16,1488],t:7,e:"i",a:{"class":"fa-spin fa fa-spinner"}}]}],n:50,r:"data.busy",p:[49,2,1438]},{t:4,n:51,f:[{p:[54,3,1557],t:7,e:"ui-section",f:[{p:[55,4,1574],t:7,e:"table",a:{style:"width:100%"},f:[{p:[56,5,1606],t:7,e:"tr",f:[{p:[57,6,1617],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[58,7,1659],t:7,e:"ui-button",a:{icon:"arrow-left",action:"backwardCat"},f:[{t:2,r:"data.prev_cat",p:[59,8,1718]}]}]}," ",{p:[62,6,1774],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[63,7,1816],t:7,e:"ui-button",a:{icon:"arrow-right",action:"forwardCat"},f:[{t:2,r:"data.next_cat",p:[64,7,1874]}]}]}," ",{p:[67,6,1930],t:7,e:"td",a:{style:"float:right!important"},f:[{t:4,f:[{p:[69,7,2014],t:7,e:"ui-button",a:{icon:"lock",action:"toggle_recipes"},f:["Showing Craftable Recipes"]}],n:50,r:"data.display_craftable_only",p:[68,6,1971]},{t:4,n:51,f:[{p:[73,7,2138],t:7,e:"ui-button",a:{icon:"unlock",action:"toggle_recipes"},f:["Showing All Recipes"]}],r:"data.display_craftable_only"}]}," ",{p:[78,6,2268],t:7,e:"td",a:{style:"float:right!important"},f:[{p:[79,7,2310],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.display_compact"],s:'_0?"check-square-o":"square-o"'},p:[79,24,2327]}],action:"toggle_compact"},f:["Compact"]}]}]}," ",{p:[84,5,2474],t:7,e:"tr",f:[{t:4,f:[{p:[86,6,2515],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[87,7,2557],t:7,e:"ui-button",a:{icon:"arrow-left",action:"backwardSubCat"},f:[{t:2,r:"data.prev_subcat",p:[88,8,2619]}]}]}," ",{p:[91,6,2678],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[92,7,2720],t:7,e:"ui-button",a:{icon:"arrow-right",action:"forwardSubCat"},f:[{t:2,r:"data.next_subcat",p:[93,8,2782]}]}]}],n:50,r:"data.subcategory",p:[85,5,2484]}]}]}," ",{t:4,f:[{t:4,f:[" ",{p:[101,6,2992],t:7,e:"ui-input",a:{value:[{t:2,r:"filter",p:[101,23,3009]}],placeholder:"Filter.."}}],n:51,r:"data.display_compact",p:[100,5,2902]}],n:50,r:"config.fancy",p:[99,4,2876]}]}," ",{t:4,f:[{p:[106,5,3144],t:7,e:"ui-display",f:[{t:4,f:[{p:[108,6,3193],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[108,25,3212]}]},f:[{p:[109,7,3230],t:7,e:"ui-button",a:{tooltip:[{t:2,x:{r:["tooltiptext","req_text","catalyst_text","tool_text"],s:"_0(_1,_2,_3)"},p:[109,27,3250]}],"tooltip-side":"right",action:"make",params:['{"recipe": "',{t:2,r:"ref",p:[109,135,3358]},'"}'],icon:"gears"},v:{hover:"hover",unhover:"unhover"},f:["Craft"]}]}],n:52,r:"data.can_craft",p:[107,5,3162]}," ",{t:4,f:[{t:4,f:[{p:[116,7,3567],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[116,26,3586]}]},f:[{p:[117,8,3605],t:7,e:"ui-button",a:{tooltip:[{t:2,x:{r:["tooltiptext","req_text","catalyst_text","tool_text"],s:"_0(_1,_2,_3)"},p:[117,28,3625]}],"tooltip-side":"right",state:"disabled",icon:"gears"},v:{hover:"hover",unhover:"unhover"},f:["Craft"]}]}],n:52,r:"data.cant_craft",p:[115,6,3534]}],n:51,r:"data.display_craftable_only",p:[114,5,3495]}]}],n:50,r:"data.display_compact",p:[105,4,3110]},{t:4,n:51,f:[{t:4,f:[{p:[126,6,3947],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[126,25,3966]}]},f:[{t:4,f:[{p:[128,8,4009],t:7,e:"ui-section",a:{label:"Requirements"},f:[{t:2,r:"req_text",p:[129,9,4052]}]}],n:50,r:"req_text",p:[127,7,3984]}," ",{t:4,f:[{p:[133,8,4139],t:7,e:"ui-section",a:{label:"Catalysts"},f:[{t:2,r:"catalyst_text",p:[134,9,4179]}]}],n:50,r:"catalyst_text",p:[132,7,4109]}," ",{t:4,f:[{p:[138,8,4267],t:7,e:"ui-section",a:{label:"Tools"},f:[{t:2,r:"tool_text",p:[139,9,4303]}]}],n:50,r:"tool_text",p:[137,7,4241]}," ",{p:[142,7,4361],t:7,e:"ui-section",f:[{p:[143,8,4382],t:7,e:"ui-button",a:{icon:"gears",action:"make",params:['{"recipe": "',{t:2,r:"ref",p:[143,66,4440]},'"}']},f:["Craft"]}]}]}],n:52,r:"data.can_craft",p:[125,5,3916]}," ",{t:4,f:[{t:4,f:[{p:[151,7,4621],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[151,26,4640]}]},f:[{t:4,f:[{p:[153,9,4685],t:7,e:"ui-section",a:{label:"Requirements"},f:[{t:2,r:"req_text",p:[154,10,4729]}]}],n:50,r:"req_text",p:[152,8,4659]}," ",{t:4,f:[{p:[158,9,4820],t:7,e:"ui-section",a:{label:"Catalysts"},f:[{t:2,r:"catalyst_text",p:[159,10,4861]}]}],n:50,r:"catalyst_text",p:[157,8,4789]}," ",{t:4,f:[{p:[163,9,4953],t:7,e:"ui-section",a:{label:"Tools"},f:[{t:2,r:"tool_text",p:[164,10,4990]}]}],n:50,r:"tool_text",p:[162,8,4926]}]}],n:52,r:"data.cant_craft",p:[150,6,4588]}],n:51,r:"data.display_craftable_only",p:[149,5,4549]}],r:"data.display_compact"}],r:"data.busy"}]}]},e.exports=a.extend(r.exports)},{205:205,327:327}],290:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.holding"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:[4,1,113],t:7,e:"ui-display",a:{title:"Status",button:0},f:[{p:[5,3,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,5,186],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[6,11,192]}," kPa"]}]}," ",{p:[8,3,254],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[9,5,285],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected"],s:'_0?"good":"average"'},p:[9,18,298]}]},f:[{t:2,x:{r:["data.connected"],s:'_0?"Connected":"Not Connected"'},p:[9,59,339]}]}]}]}," ",{p:[12,1,430],t:7,e:"ui-display",a:{title:"Pump"},f:[{p:[13,3,459],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,5,491],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[14,22,508]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":"null"'},p:[15,14,559]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[16,22,616]}]}]}," ",{p:[18,3,675],t:7,e:"ui-section",a:{label:"Direction"},f:[{p:[19,5,711],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.direction"],s:'_0=="out"?"sign-out":"sign-in"'},p:[19,22,728]}],action:"direction"},f:[{t:2,x:{r:["data.direction"],s:'_0=="out"?"Out":"In"'},p:[20,26,808]}]}]}," ",{p:[22,3,883],t:7,e:"ui-section",a:{label:"Target Pressure"},f:[{p:[23,5,925],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.min_pressure",p:[23,18,938]}],max:[{t:2,r:"data.max_pressure",p:[23,46,966]}],value:[{t:2,r:"data.target_pressure",p:[24,14,1003]}]},f:[{t:2,x:{r:["adata.target_pressure"],s:"Math.round(_0)"},p:[24,40,1029]}," kPa"]}]}," ",{p:[26,3,1100],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[27,5,1145],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.target_pressure","data.default_pressure"],s:'_0!=_1?null:"disabled"'},p:[27,38,1178]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[29,5,1328],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.target_pressure","data.min_pressure"],s:'_0>_1?null:"disabled"'},p:[29,36,1359]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[31,5,1500],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[32,5,1595],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.target_pressure","data.max_pressure"],s:'_0<_1?null:"disabled"'},p:[32,35,1625]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}]}," ",{p:{button:[{t:4,f:[{p:[39,7,1891],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.on"],s:'_0?"danger":null'},p:[39,38,1922]}],action:"eject"},f:["Eject"]}],n:50,r:"data.holding",p:[38,5,1863]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[43,3,2042],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holding.name",p:[44,4,2073]}]}," ",{p:[46,3,2115],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holding.pressure"],s:"Math.round(_0)"},p:[47,4,2149]}," kPa"]}],n:50,r:"data.holding",p:[42,3,2018]},{t:4,n:51,f:[{p:[50,3,2223],t:7,e:"ui-section",f:[{p:[51,4,2240],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.holding"}]}]},e.exports=a.extend(r.exports)},{205:205}],291:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[3,1,69],t:7,e:"ui-notice",f:[{p:[4,3,84],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.holding"],s:'_0?"is":"is not"'},p:[4,23,104]}," connected to a tank."]}]}," ",{p:[6,1,182],t:7,e:"ui-display",a:{title:"Status",button:0},f:[{p:[7,3,220],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[8,5,255],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[8,11,261]}," kPa"]}]}," ",{p:[10,3,323],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[11,5,354],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected"],s:'_0?"good":"average"'},p:[11,18,367]}]},f:[{t:2,x:{r:["data.connected"],s:'_0?"Connected":"Not Connected"'},p:[11,59,408]}]}]}]}," ",{p:[14,1,499],t:7,e:"ui-display",a:{title:"Filter"},f:[{p:[15,3,530],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[16,5,562],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[16,22,579]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":"null"'},p:[17,14,630]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[18,22,687]}]}]}]}," ",{p:{button:[{t:4,f:[{p:[24,7,856],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.on"],s:'_0?"danger":null'},p:[24,38,887]}],action:"eject"},f:["Eject"]}],n:50,r:"data.holding",p:[23,5,828]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[28,3,1007],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holding.name",p:[29,4,1038]}]}," ",{p:[31,3,1080],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holding.pressure"],s:"Math.round(_0)"},p:[32,4,1114]}," kPa"]}],n:50,r:"data.holding",p:[27,3,983]},{t:4,n:51,f:[{p:[35,3,1188],t:7,e:"ui-section",f:[{p:[36,4,1205],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.holding"}]}," ",{p:[40,1,1293],t:7,e:"ui-display",a:{title:"Filters"},f:[{t:4,f:[{p:[42,5,1345],t:7,e:"filters"}],n:53,r:"data",p:[41,3,1325]}]}]},r.exports.components=r.exports.components||{};var i={filters:t(299)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,299:299}],292:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{chargingState:function(t){switch(t){case 2:return"good";case 1:return"average";default:return"bad"}},chargingMode:function(t){return 2==t?"Full":1==t?"Charging":"Draining"},channelState:function(t){return t>=2?"good":"bad"},channelPower:function(t){return t>=2?"On":"Off"},channelMode:function(t){return 1==t||3==t?"Auto":"Manual"}},computed:{graphData:function(){var t=this.get("data.history");return Object.keys(t).map(function(e){return t[e].map(function(t,e){return{x:e,y:t}})})}}}}(r),r.exports.template={v:3,t:[" ",{p:[42,1,1035],t:7,e:"ui-display",a:{title:"Network"},f:[{t:4,f:[{p:[44,5,1093],t:7,e:"ui-linegraph",a:{points:[{t:2,r:"graphData",p:[44,27,1115]}],height:"500",legend:'["Available", "Load"]',colors:'["rgb(0, 102, 0)", "rgb(153, 0, 0)"]',xunit:"seconds ago",xfactor:[{t:2,r:"data.interval",p:[46,38,1267]}],yunit:"W",yfactor:"1",xinc:[{t:2,x:{r:["data.stored"],s:"_0/10"},p:[47,15,1323]}],yinc:"9"}}],n:50,r:"config.fancy",p:[43,3,1067]},{t:4,n:51,f:[{p:[49,5,1373],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[50,7,1411],t:7,e:"span",f:[{t:2,r:"data.supply",p:[50,13,1417]}]}]}," ",{p:[52,5,1464],t:7,e:"ui-section",a:{label:"Load"},f:[{p:[53,9,1499],t:7,e:"span",f:[{t:2,r:"data.demand",p:[53,15,1505]}]}]}],r:"config.fancy"}]}," ",{p:[57,1,1574],t:7,e:"ui-display",a:{title:"Areas"},f:[{p:[58,3,1604],t:7,e:"ui-section",a:{nowrap:0},f:[{p:[59,5,1629],t:7,e:"div",a:{"class":"content"},f:["Area"]}," ",{p:[60,5,1666],t:7,e:"div",a:{"class":"content"},f:["Charge"]}," ",{p:[61,5,1705],t:7,e:"div",a:{"class":"content"},f:["Load"]}," ",{p:[62,5,1742],t:7,e:"div",a:{"class":"content"},f:["Status"]}," ",{p:[63,5,1781],t:7,e:"div",a:{"class":"content"},f:["Equipment"]}," ",{p:[64,5,1823],t:7,e:"div",a:{"class":"content"},f:["Lighting"]}," ",{p:[65,5,1864],t:7,e:"div",a:{"class":"content"},f:["Environment"]}]}," ",{t:4,f:[{p:[68,5,1949],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[68,24,1968]}],nowrap:0},f:[{p:[69,7,1993],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["@index","adata.areas"],s:"Math.round(_1[_0].charge)"},p:[69,28,2014]}," %"]}," ",{p:[70,7,2072],t:7,e:"div",a:{"class":"content"},f:[{t:2,rx:{r:"adata.areas",m:[{t:30,n:"@index"},"load"]},p:[70,28,2093]}]}," ",{p:[71,7,2135],t:7,e:"div",a:{"class":"content"},f:[{p:[71,28,2156],t:7,e:"span",a:{"class":[{t:2,x:{r:["chargingState","charging"],s:"_0(_1)"},p:[71,41,2169]}]},f:[{t:2,x:{r:["chargingMode","charging"],s:"_0(_1)"},p:[71,70,2198]}]}]}," ",{p:[72,7,2245],t:7,e:"div",a:{"class":"content"},f:[{p:[72,28,2266],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","eqp"],s:"_0(_1)"},p:[72,41,2279]}]},f:[{t:2,x:{r:["channelPower","eqp"],s:"_0(_1)"},p:[72,64,2302]}," [",{p:[72,87,2325],t:7,e:"span",f:[{t:2,x:{r:["channelMode","eqp"],s:"_0(_1)"},p:[72,93,2331]}]},"]"]}]}," ",{p:[73,7,2380],t:7,e:"div",a:{"class":"content"},f:[{p:[73,28,2401],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","lgt"],s:"_0(_1)"},p:[73,41,2414]}]},f:[{t:2,x:{r:["channelPower","lgt"],s:"_0(_1)"},p:[73,64,2437]}," [",{p:[73,87,2460],t:7,e:"span",f:[{t:2,x:{r:["channelMode","lgt"],s:"_0(_1)"},p:[73,93,2466]}]},"]"]}]}," ",{p:[74,7,2515],t:7,e:"div",a:{"class":"content"},f:[{p:[74,28,2536],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","env"],s:"_0(_1)"},p:[74,41,2549]}]},f:[{t:2,x:{r:["channelPower","env"],s:"_0(_1)"},p:[74,64,2572]}," [",{p:[74,87,2595],t:7,e:"span",f:[{t:2,x:{r:["channelMode","env"],s:"_0(_1)"},p:[74,93,2601]}]},"]"]}]}]}],n:52,r:"data.areas",p:[67,3,1923]}]}]},e.exports=a.extend(r.exports)},{205:205}],293:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{readableFrequency:function(){return Math.round(this.get("adata.frequency"))/10}}}}(r),r.exports.template={v:3,t:[" ",{p:[11,1,177],t:7,e:"ui-display",a:{title:"Settings"},f:[{t:4,f:[{p:[13,5,236],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,7,270],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.listening"],s:'_0?"power-off":"close"'},p:[14,24,287]}],style:[{t:2,x:{r:["data.listening"],s:'_0?"selected":null'},p:[14,75,338]}],action:"listen"},f:[{t:2,x:{r:["data.listening"],s:'_0?"On":"Off"'},p:[16,9,413]}]}]}],n:50,r:"data.headset",p:[12,3,210]},{t:4,n:51,f:[{p:[19,5,494],t:7,e:"ui-section",a:{label:"Microphone"},f:[{p:[20,7,533],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.broadcasting"],s:'_0?"power-off":"close"'},p:[20,24,550]}],style:[{t:2,x:{r:["data.broadcasting"],s:'_0?"selected":null'},p:[20,78,604]}],action:"broadcast"},f:[{t:2,x:{r:["data.broadcasting"],s:'_0?"Engaged":"Disengaged"'},p:[22,9,685]}]}]}," ",{p:[24,5,769],t:7,e:"ui-section",a:{label:"Speaker"},f:[{p:[25,7,805],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.listening"],s:'_0?"power-off":"close"'},p:[25,24,822]}],style:[{t:2,x:{r:["data.listening"],s:'_0?"selected":null'},p:[25,75,873]}],action:"listen"},f:[{t:2,x:{r:["data.listening"],s:'_0?"Engaged":"Disengaged"'},p:[27,9,948]}]}]}],r:"data.headset"}," ",{t:4,f:[{p:[31,5,1064],t:7,e:"ui-section",a:{label:"High Volume"},f:[{p:[32,7,1104],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.useCommand"],s:'_0?"power-off":"close"'},p:[32,24,1121]}],style:[{t:2,x:{r:["data.useCommand"],s:'_0?"selected":null'},p:[32,76,1173]}],action:"command"},f:[{t:2,x:{r:["data.useCommand"],s:'_0?"On":"Off"'},p:[34,9,1250]}]}]}],n:50,r:"data.command",p:[30,3,1038]}]}," ",{p:[38,1,1342],t:7,e:"ui-display",a:{title:"Channel"},f:[{p:[39,3,1374],t:7,e:"ui-section",a:{label:"Frequency"},f:[{t:4,f:[{p:[41,7,1439],t:7,e:"span",f:[{t:2,r:"readableFrequency",p:[41,13,1445]}]}],n:50,r:"data.freqlock",p:[40,5,1410]},{t:4,n:51,f:[{p:[43,7,1495],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.frequency","data.minFrequency"],s:'_0==_1?"disabled":null'},p:[43,46,1534]}],action:"frequency",params:'{"adjust": -1}'}}," ",{p:[44,7,1646],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.frequency","data.minFrequency"],s:'_0==_1?"disabled":null'},p:[44,41,1680]}],action:"frequency",params:'{"adjust": -.2}'}}," ",{p:[45,7,1793],t:7,e:"ui-button",a:{icon:"pencil",action:"frequency",params:'{"tune": "input"}'},f:[{t:2,r:"readableFrequency",p:[45,78,1864]}]}," ",{p:[46,7,1905],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.frequency","data.maxFrequency"],s:'_0==_1?"disabled":null'},p:[46,40,1938]}],action:"frequency",params:'{"adjust": .2}'}}," ",{p:[47,7,2050],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.frequency","data.maxFrequency"],s:'_0==_1?"disabled":null'},p:[47,45,2088]}],action:"frequency",params:'{"adjust": 1}'}}],r:"data.freqlock"}]}," ",{t:4,f:[{p:[51,5,2262],t:7,e:"ui-section",a:{label:"Subspace Transmission"},f:[{p:[52,7,2312],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.subspace"],s:'_0?"power-off":"close"'},p:[52,24,2329]}],style:[{t:2,x:{r:["data.subspace"],s:'_0?"selected":null'},p:[52,74,2379]}],action:"subspace"},f:[{t:2,x:{r:["data.subspace"],s:'_0?"Active":"Inactive"'},p:[53,29,2447]}]}]}],n:50,r:"data.subspaceSwitchable",p:[50,3,2225]}," ",{t:4,f:[{p:[57,5,2578],t:7,e:"ui-section",a:{label:"Channels"},f:[{t:4,f:[{p:[59,9,2656],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["."],s:'_0?"check-square-o":"square-o"'},p:[59,26,2673]}],style:[{t:2,x:{r:["."],s:'_0?"selected":null'},p:[60,18,2730]}],action:"channel",params:['{"channel": "',{t:2,r:"channel",p:[61,49,2806]},'"}']},f:[{t:2,r:"channel",p:[62,11,2833]}]},{p:[62,34,2856],t:7,e:"br"}],n:52,i:"channel",r:"data.channels",p:[58,7,2615]}]}],n:50,x:{r:["data.subspace","data.channels"],s:"_0&&_1"},p:[56,3,2534]}]}]},e.exports=a.extend(r.exports)},{205:205}],294:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,1,25],t:7,e:"ui-notice",f:[{p:[3,3,40],t:7,e:"span",f:["The grinder is currently processing and cannot be used."]}]}],n:50,r:"data.processing",p:[1,1,0]},{p:{button:[{p:[8,5,208],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.operating","data.contents"],s:'(_0==0)&&_1?null:"disabled"'},p:[8,36,239]}],action:"eject"},f:["Eject Contents"]}]},t:7,e:"ui-display",a:{title:"Processing Chamber",button:0},f:[" ",{p:[10,3,364],t:7,e:"ui-section",a:{label:"Grinding"},f:[{p:[11,5,399],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.operating"],s:'_0?"average":"good"'},p:[11,18,412]}]},f:[{t:2,x:{r:["data.operating"],s:'_0?"Busy":"Ready"'},p:[11,59,453]}]}," ",{p:[12,2,500],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.operating","data.contents"],s:'(_0==0)&&_1?null:"disabled"'},p:[12,35,533]}],action:"grind"},f:["Activate"]}]}," ",{p:[14,3,653],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[17,9,755],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:["The ",{t:2,r:"name",p:[17,56,802]}]},{p:[17,71,817],t:7,e:"br"}],n:52,r:"adata.contentslist",p:[16,7,717]},{t:4,n:51,f:[{p:[19,9,848],t:7,e:"span",f:["No Contents"]}],r:"adata.contentslist"}],n:50,r:"data.contents",p:[15,5,688]},{t:4,n:51,f:[{p:[22,7,911],t:7,e:"span",f:["No Contents"]}],r:"data.contents"}]}]}," ",{p:{button:[{p:[28,5,1047],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.operating","data.isBeakerLoaded"],s:'(_0==0)&&_1?null:"disabled"'},p:[28,36,1078]}],action:"detach"},f:["Detach"]}]},t:7,e:"ui-display",a:{title:"Container",button:0},f:[" ",{p:[30,3,1202],t:7,e:"ui-section",a:{label:"Reagents"},f:[{t:4,f:[{p:[32,7,1272],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[32,13,1278]},"/",{t:2,r:"data.beakerMaxVolume",p:[32,55,1320]}," Units"]}," ",{p:[33,7,1365],t:7,e:"br"}," ",{t:4,f:[{p:[35,9,1418],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[35,52,1461]}," units of ",{t:2,r:"name",p:[35,87,1496]}]},{p:[35,102,1511],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[34,7,1378]},{t:4,n:51,f:[{p:[37,9,1542],t:7,e:"span",a:{"class":"bad"},f:["Container Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[31,5,1237]},{t:4,n:51,f:[{p:[40,7,1621],t:7,e:"span",a:{"class":"average"},f:["No Container"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],295:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" "," ",{t:4,f:[{p:[5,2,123],t:7,e:"dirsel"}],n:50,x:{r:["data.mode"],s:"_0>=0"},p:[4,1,98]},{t:4,f:[{p:[8,2,187],t:7,e:"colorsel"}],n:50,x:{r:["data.mode"],s:"_0==-2||_0==0"},p:[7,1,143]},{p:[10,1,209],t:7,e:"ui-display",a:{title:"Utilities"},f:[{p:[11,2,242],t:7,e:"ui-section",f:[{p:[12,3,258],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0>=0?"check-square-o":"square-o"'},p:[12,20,275]}],state:[{t:2,x:{r:["data.mode"],s:'_0>=0?"selected":null'},p:[12,79,334]}],action:"mode",params:['{"mode": ',{t:2,r:"data.screen",p:[13,35,409]},"}"]},f:["Lay Pipes"]}]}," ",{p:[15,2,467],t:7,e:"ui-section",f:[{p:[16,3,483],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0==-1?"check-square-o":"square-o"'},p:[16,20,500]}],state:[{t:2,x:{r:["data.mode"],s:'_0==-1?"selected":null'},p:[16,80,560]}],action:"mode",params:'{"mode": -1}'},f:["Eat Pipes"]}]}," ",{p:[19,2,681],t:7,e:"ui-section",f:[{p:[20,3,697],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0==-2?"check-square-o":"square-o"'},p:[20,20,714]}],state:[{t:2,x:{r:["data.mode"],s:'_0==-2?"selected":null'},p:[20,80,774]}],action:"mode",params:'{"mode": -2}'},f:["Paint Pipes"]}]}]}," ",{p:[24,1,911],t:7,e:"ui-display",a:{title:"Category"},f:[{p:[25,2,943],t:7,e:"ui-section",f:[{p:[26,3,959],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.screen"],s:'_0==0?"check-square-o":"square-o"'},p:[26,20,976]}],state:[{t:2,x:{r:["data.screen"],s:'_0==0?"selected":null'},p:[26,81,1037]}],action:"screen",params:'{"screen": 0}'},f:["Atmospherics"]}," ",{p:[28,3,1150],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.screen"],s:'_0==2?"check-square-o":"square-o"'},p:[28,20,1167]}],state:[{t:2,x:{r:["data.screen"],s:'_0==2?"selected":null'},p:[28,81,1228]}],action:"screen",params:'{"screen": 2}'},f:["Disposals"]}]}," ",{t:4,f:[{p:[32,3,1381],t:7,e:"ui-section",a:{label:"Piping Layer"},f:[{p:[33,4,1419],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.piping_layer"],s:'_0==1?"selected":null'},p:[33,22,1437]}],action:"piping_layer",params:'{"piping_layer": 1}'},f:["1"]}," ",{p:[35,4,1559],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.piping_layer"],s:'_0==2?"selected":null'},p:[35,22,1577]}],action:"piping_layer",params:'{"piping_layer": 2}'},f:["2"]}," ",{p:[37,4,1699],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.piping_layer"],s:'_0==3?"selected":null'},p:[37,22,1717]}],action:"piping_layer",params:'{"piping_layer": 3}'},f:["3"]}]}],n:50,x:{r:["data.screen"],s:"_0==0"},p:[31,2,1353]}]}," ",{t:4,f:[{p:[43,2,1906],t:7,e:"ui-display",a:{title:[{t:2,r:"cat_name",p:[43,21,1925]}]},f:[{t:4,f:[{p:[45,4,1965],t:7,e:"ui-section",f:[{p:[46,5,1983],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[46,23,2001]}],action:"pipe_type",params:['{"pipe_type": ',{t:2,r:"pipe_index",p:[47,28,2082]},', "category": ',{t:2,r:"cat_name",p:[47,56,2110]},"}"]},f:[{t:2,r:"pipe_name",p:[47,71,2125]}]}]}],n:52,r:"recipes",p:[44,3,1943]}]}],n:52,r:"data.categories",p:[42,1,1878]}]},r.exports.components=r.exports.components||{};var i={colorsel:t(296),dirsel:t(297)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,296:296,297:297}],296:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Color"},f:[{t:4,f:[{p:[3,3,60],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[3,21,78]}],action:"color",params:['{"paint_color": ',{t:2,r:"color_name",p:[4,28,155]},"}"]},f:[{t:2,r:"color_name",p:[4,45,172]}]}],n:52,r:"data.paint_colors",p:[2,2,29]}]}]},e.exports=a.extend(r.exports)},{205:205}],297:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Direction"},f:[{t:4,f:[{p:[3,3,64],t:7,e:"ui-section",f:[{t:4,f:[{p:[5,5,105],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[5,23,123]}],action:"setdir",params:['{"dir": ',{t:2,r:"dir",p:[6,22,195]},', "flipped": ',{t:2,r:"flipped",p:[6,42,215]},"}"]},f:[{p:[6,56,229],t:7,e:"img",a:{src:["pipe.",{t:2,r:"dir",p:[6,71,244]},".",{t:2,r:"icon_state",p:[6,79,252]},".png"],title:[{t:2,r:"dir_name",p:[6,106,279]}]}}]}],n:52,r:"previews",p:[4,4,81]}]}],n:52,r:"data.preview_rows",p:[2,2,33]}]}]},e.exports=a.extend(r.exports)},{205:205}],298:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,23],t:7,e:"ui-notice",f:[{t:2,r:"data.notice",p:[3,5,40]}]}],n:50,r:"data.notice",p:[1,1,0]},{p:[6,1,82],t:7,e:"ui-display",a:{title:"Satellite Network Control",button:0},f:[{t:4,f:[{p:[8,4,168],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{p:[9,9,209],t:7,e:"div",a:{"class":"content"},f:["#",{t:2,r:"id",p:[9,31,231]}]}," ",{p:[10,9,253],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"mode",p:[10,30,274]}]}," ",{p:[11,9,298],t:7,e:"div",a:{"class":"content"},f:[{p:[12,11,331],t:7,e:"ui-button",a:{action:"toggle",params:['{"id": "',{t:2,r:"id",p:[12,54,374]},'"}']},f:[{t:2,x:{r:["active"],s:'_0?"Deactivate":"Activate"'},p:[12,64,384]}]}]}]}],n:52,r:"data.satellites",p:[7,2,138]}]}," ",{t:4,f:[{p:[18,1,528],t:7,e:"ui-display",a:{title:"Station Shield Coverage" },f:[{p:[19,3,576],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.meteor_shield_coverage_max",p:[19,24,597]}],value:[{t:2,r:"data.meteor_shield_coverage",p:[19,68,641]}]},f:[{t:2,x:{r:["data.meteor_shield_coverage","data.meteor_shield_coverage_max"],s:"100*_0/_1"},p:[19,101,674]}," %"]}," ",{p:[20,1,758],t:7,e:"ui-display",f:[]}]}],n:50,r:"data.meteor_shield",p:[17,1,500]}]},e.exports=a.extend(r.exports)},{205:205}],299:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,26],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["enabled"],s:'_0?"check-square-o":"square-o"'},p:[2,20,43]}],style:[{t:2,x:{r:["enabled"],s:'_0?"selected":null'},p:[2,72,95]}],action:"toggle_filter",params:['{"id_tag": "',{t:2,r:"id_tag",p:[3,48,176]},'", "val": ',{t:2,r:"gas_id",p:[3,68,196]},"}"]},f:[{t:2,r:"gas_name",p:[3,81,209]}]}],n:52,r:"filter_types",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],300:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" "," "," ",{p:[5,1,200],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.tabs",p:[5,16,215]}]},f:[{p:[6,2,233],t:7,e:"tab",a:{name:"Status"},f:[{p:[7,3,256],t:7,e:"status"}]}," ",{p:[9,2,277],t:7,e:"tab",a:{name:"Templates"},f:[{p:[10,3,303],t:7,e:"templates"}]}," ",{p:[12,2,327],t:7,e:"tab",a:{name:"Modification"},f:[{t:4,f:[{p:[14,3,381],t:7,e:"modification"}],n:50,r:"data.selected",p:[13,3,356]}," ",{t:4,f:[{p:[17,3,437],t:7,e:"span",a:{"class":"bad"},f:["No shuttle selected."]}],n:50,x:{r:["data.selected"],s:"!_0"},p:[16,3,411]}]}]}]},r.exports.components=r.exports.components||{};var i={modification:t(301),templates:t(303),status:t(302)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,301:301,302:302,303:303}],301:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:["Selected: ",{t:2,r:"data.selected.name",p:[1,30,29]}]},f:[{t:4,f:[{p:[3,5,96],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"data.selected.description",p:[3,37,128]}]}],n:50,r:"data.selected.description",p:[2,3,57]}," ",{t:4,f:[{p:[6,5,224],t:7,e:"ui-section",a:{label:"Admin Notes"},f:[{t:2,r:"data.selected.admin_notes",p:[6,37,256]}]}],n:50,r:"data.selected.admin_notes",p:[5,3,185]}]}," ",{t:4,f:[{p:[11,3,361],t:7,e:"ui-display",a:{title:["Existing Shuttle: ",{t:2,r:"data.existing_shuttle.name",p:[11,40,398]}]},f:["Status: ",{t:2,r:"data.existing_shuttle.status",p:[12,13,444]}," ",{t:4,f:["(",{t:2,r:"data.existing_shuttle.timeleft",p:[14,8,526]},")"],n:50,r:"data.existing_shuttle.timer",p:[13,5,482]}," ",{p:[16,5,580],t:7,e:"ui-button",a:{action:"jump_to",params:['{"type": "mobile", "id": "',{t:2,r:"data.existing_shuttle.id",p:[17,41,649]},'"}']},f:["Jump To"]}]}],n:50,r:"data.existing_shuttle",p:[10,1,328]},{t:4,f:[{p:[24,3,778],t:7,e:"ui-display",a:{title:"Existing Shuttle: None"}}],n:50,x:{r:["data.existing_shuttle"],s:"!_0"},p:[23,1,744]},{p:[27,1,847],t:7,e:"ui-button",a:{action:"preview",params:['{"shuttle_id": "',{t:2,r:"data.selected.shuttle_id",p:[28,27,902]},'"}']},f:["Preview"]}," ",{p:[31,1,961],t:7,e:"ui-button",a:{action:"load",params:['{"shuttle_id": "',{t:2,r:"data.selected.shuttle_id",p:[32,27,1013]},'"}'],style:"danger"},f:["Load"]}," ",{p:[37,1,1089],t:7,e:"ui-display",a:{title:"Status"},f:[]}]},e.exports=a.extend(r.exports)},{205:205}],302:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,27],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[2,22,46]}," (",{t:2,r:"id",p:[2,32,56]},")"]},f:[{t:2,r:"status",p:[3,5,71]}," ",{t:4,f:["(",{t:2,r:"timeleft",p:[5,8,109]},")"],n:50,r:"timer",p:[4,5,87]}," ",{p:[7,5,141],t:7,e:"ui-button",a:{action:"jump_to",params:['{"type": "mobile", "id": "',{t:2,r:"id",p:[7,67,203]},'"}']},f:["Jump To"]}," ",{p:[10,5,252],t:7,e:"ui-button",a:{action:"fast_travel",params:['{"id": "',{t:2,r:"id",p:[10,53,300]},'"}'],state:[{t:2,x:{r:["can_fast_travel"],s:'_0?null:"disabled"'},p:[10,70,317]}]},f:["Fast Travel"]}]}],n:52,r:"data.shuttles",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],303:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.templates_tabs",p:[1,16,15]}]},f:[{t:4,f:[{p:[3,5,74],t:7,e:"tab",a:{name:[{t:2,r:"port_id",p:[3,16,85]}]},f:[{t:4,f:[{p:[5,9,135],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[5,28,154]}]},f:[{t:4,f:[{p:[7,13,209],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"description",p:[7,45,241]}]}],n:50,r:"description",p:[6,11,176]}," ",{t:4,f:[{p:[10,13,333],t:7,e:"ui-section",a:{label:"Admin Notes"},f:[{t:2,r:"admin_notes",p:[10,45,365]}]}],n:50,r:"admin_notes",p:[9,11,300]}," ",{p:[13,11,426],t:7,e:"ui-button",a:{action:"select_template",params:['{"shuttle_id": "',{t:2,r:"shuttle_id",p:[14,37,499]},'"}'],state:[{t:2,x:{r:["data.selected.shuttle_id","shuttle_id"],s:'_0==_1?"selected":null'},p:[15,20,537]}]},f:[{t:2,x:{r:["data.selected.shuttle_id","shuttle_id"],s:'_0==_1?"Selected":"Select"'},p:[17,13,630]}]}]}],n:52,r:"templates",p:[4,7,106]}]}],n:52,r:"data.templates",p:[2,3,44]}]}]},e.exports=a.extend(r.exports)},{205:205}],304:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[2,3,33],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[3,3,66],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[3,9,72]}]}]}," ",{t:4,f:[{p:[6,5,186],t:7,e:"ui-section",a:{label:"State"},f:[{p:[7,7,220],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.statstate",p:[7,20,233]}]},f:[{t:2,r:"data.occupant.stat",p:[7,49,262]}]}]}," ",{p:[9,5,315],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[10,7,350],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[10,20,363]}],max:[{t:2,r:"data.occupant.maxHealth",p:[10,54,397]}],value:[{t:2,r:"data.occupant.health",p:[10,90,433]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[11,16,475]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[11,68,527]}]}]}," ",{t:4,f:[{p:[14,7,764],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[14,26,783]}]},f:[{p:[15,9,804],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[15,30,825]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[15,66,861]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[15,103,898]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[13,5,598]}," ",{p:[18,5,985],t:7,e:"ui-section",a:{label:"Cells"},f:[{p:[19,9,1021],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"bad":"good"'},p:[19,22,1034]}]},f:[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"Damaged":"Healthy"'},p:[19,68,1080]}]}]}," ",{p:[21,5,1163],t:7,e:"ui-section",a:{label:"Brain"},f:[{p:[22,9,1199],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"bad":"good"'},p:[22,22,1212]}]},f:[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"Abnormal":"Healthy"'},p:[22,68,1258]}]}]}," ",{p:[24,5,1342],t:7,e:"ui-section",a:{label:"Bloodstream"},f:[{t:4,f:[{p:[26,11,1429],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,1)"},p:[26,54,1472]}," units of ",{t:2,r:"name",p:[26,89,1507]}]},{p:[26,104,1522],t:7,e:"br"}],n:52,r:"adata.occupant.reagents",p:[25,9,1384]},{t:4,n:51,f:[{p:[28,11,1557],t:7,e:"span",a:{"class":"good"},f:["Pure"]}],r:"adata.occupant.reagents"}]}],n:50,r:"data.occupied",p:[5,3,159]}]}," ",{p:[33,1,1653],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[34,2,1685],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[35,5,1716],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"unlock":"lock"'},p:[35,22,1733]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Open":"Closed"'},p:[35,71,1782]}]}]}," ",{p:[37,3,1847],t:7,e:"ui-section",a:{label:"Inject"},f:[{t:4,f:[{p:[39,7,1908],t:7,e:"ui-button",a:{icon:"flask",state:[{t:2,x:{r:["data.occupied","allowed"],s:'_0&&_1?null:"disabled"'},p:[39,38,1939]}],action:"inject",params:['{"chem": "',{t:2,r:"id",p:[39,122,2023]},'"}']},f:[{t:2,r:"name",p:[39,132,2033]}]},{p:[39,152,2053],t:7,e:"br"}],n:52,r:"data.chems",p:[38,5,1880]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],305:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,25],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[2,22,44]}],labelcolor:[{t:2,r:"htmlcolor",p:[2,44,66]}],candystripe:0,right:0},f:[{p:[3,5,105],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[3,32,132],t:7,e:"span",a:{"class":[{t:2,x:{r:["status"],s:'_0=="Dead"?"bad bold":_0=="Unconscious"?"average bold":"good"'},p:[3,45,145]}]},f:[{t:2,r:"status",p:[3,132,232]}]}]}," ",{p:[4,5,268],t:7,e:"ui-section",a:{label:"Jelly"},f:[{t:2,r:"exoticblood",p:[4,31,294]}]}," ",{p:[5,5,328],t:7,e:"ui-section",a:{label:"Location"},f:[{t:2,r:"area",p:[5,34,357]}]}," ",{p:[7,5,386],t:7,e:"ui-button",a:{state:[{t:2,r:"swap_button_state",p:[8,14,411]}],action:"swap",params:['{"ref": "',{t:2,r:"ref",p:[9,38,472]},'"}']},f:[{t:2,x:{r:["is_current"],s:'_0?"You Are Here":"Swap"'},p:[10,7,491]}]}]}],n:52,r:"data.bodies",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],306:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{t:4,f:[{p:[4,23,82],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.drying"],s:'_0?"stop":"tint"'},p:[4,40,99]}],action:"Dry"},f:[{t:2,x:{r:["data.drying"],s:'_0?"Stop drying":"Dry"'},p:[4,88,147]}]}],n:50,r:"data.isdryer",p:[4,3,62]}]},t:7,e:"ui-display",a:{title:"Storage",button:0},f:[" ",{t:4,f:[{p:[7,3,258],t:7,e:"ui-notice",f:[{p:[8,5,275],t:7,e:"span",f:["Unfortunately, this ",{t:2,r:"data.name",p:[8,31,301]}," is empty."]}]}],n:50,x:{r:["data.contents.length"],s:"_0==0"},p:[6,1,221]},{t:4,n:51,f:[{p:[11,1,359],t:7,e:"div",a:{"class":"display tabular"},f:[{p:[12,2,391],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[13,4,425],t:7,e:"section",a:{"class":"cell bold"},f:["Item"]}," ",{p:[16,4,482],t:7,e:"section",a:{"class":"cell bold"},f:["Quantity"]}," ",{p:[19,4,543],t:7,e:"section",a:{"class":"cell bold",align:"center"},f:[{t:4,f:[{t:2,r:"data.verb",p:[20,22,608]}],n:50,r:"data.verb",p:[20,5,591]},{t:4,n:51,f:["Dispense"],r:"data.verb"}]}]}," ",{t:4,f:[{p:[24,3,703],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[25,4,737],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[26,5,765]}]}," ",{p:[28,4,793],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"amount",p:[29,5,835]}]}," ",{p:[31,4,865],t:7,e:"section",a:{"class":"table",alight:"right"},f:[{p:[32,5,909],t:7,e:"section",a:{"class":"cell"}}," ",{p:[33,5,947],t:7,e:"section",a:{"class":"cell"},f:[{p:[34,6,976],t:7,e:"ui-button",a:{grid:0,action:"Release",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[34,45,1015]}],params:['{ "name" : ',{t:2,r:"name",p:[34,102,1072]},', "amount" : 1 }']},f:["One"]}]}," ",{p:[38,5,1151],t:7,e:"section",a:{"class":"cell"},f:[{p:[39,6,1180],t:7,e:"ui-button",a:{grid:0,action:"Release",state:[{t:2,x:{r:["amount"],s:'(_0>1)?null:"disabled"'},p:[39,45,1219]}],params:['{ "name" : ',{t:2,r:"name",p:[39,101,1275]}," }"]},f:["Many"]}]}]}]}],n:52,r:"data.contents",p:[23,2,676]}]}],x:{r:["data.contents.length"],s:"_0==0"}}]}]},e.exports=a.extend(r.exports)},{205:205}],307:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{capacityPercentState:function(){var t=this.get("data.capacityPercent");return t>50?"good":t>15?"average":"bad"},inputState:function(){return this.get("data.capacityPercent")>=100?"good":this.get("data.inputting")?"average":"bad"},outputState:function(){return this.get("data.outputting")?"good":this.get("data.charge")>0?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[24,1,663],t:7,e:"ui-display",a:{title:"Storage"},f:[{p:[25,3,695],t:7,e:"ui-section",a:{label:"Stored Energy"},f:[{p:[26,5,735],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.capacityPercent",p:[26,38,768]}],state:[{t:2,r:"capacityPercentState",p:[26,71,801]}]},f:[{t:2,x:{r:["adata.capacityPercent"],s:"Math.fixed(_0)"},p:[26,97,827]},"%"]}]}]}," ",{p:[29,1,908],t:7,e:"ui-display",a:{title:"Input"},f:[{p:[30,3,938],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{p:[31,5,976],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"refresh":"close"'},p:[31,22,993]}],style:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"selected":null'},p:[31,74,1045]}],action:"tryinput"},f:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"Auto":"Off"'},p:[32,25,1113]}]},"   [",{p:[34,6,1182],t:7,e:"span",a:{"class":[{t:2,r:"inputState",p:[34,19,1195]}]},f:[{t:2,x:{r:["data.capacityPercent","data.inputting"],s:'_0>=100?"Fully Charged":_1?"Charging":"Not Charging"'},p:[34,35,1211]}]},"]"]}," ",{p:[36,3,1335],t:7,e:"ui-section",a:{label:"Target Input"},f:[{p:[37,5,1374],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.inputLevelMax",p:[37,26,1395]}],value:[{t:2,r:"data.inputLevel",p:[37,57,1426]}]},f:[{t:2,r:"adata.inputLevel_text",p:[37,78,1447]}]}]}," ",{p:[39,3,1501],t:7,e:"ui-section",a:{label:"Adjust Input"},f:[{p:[40,5,1540],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[40,44,1579]}],action:"input",params:'{"target": "min"}'}}," ",{p:[41,5,1674],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[41,39,1708]}],action:"input",params:'{"adjust": -10000}'}}," ",{p:[42,5,1804],t:7,e:"ui-button",a:{icon:"pencil",action:"input",params:'{"target": "input"}'},f:["Set"]}," ",{p:[43,5,1894],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[43,38,1927]}],action:"input",params:'{"adjust": 10000}'}}," ",{p:[44,5,2039],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[44,43,2077]}],action:"input",params:'{"target": "max"}'}}]}," ",{p:[46,3,2204],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[47,3,2238],t:7,e:"span",f:[{t:2,r:"adata.inputAvailable",p:[47,9,2244]}]}]}]}," ",{p:[50,1,2308],t:7,e:"ui-display",a:{title:"Output"},f:[{p:[51,3,2339],t:7,e:"ui-section",a:{label:"Output Mode"},f:[{p:[52,5,2377],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"power-off":"close"'},p:[52,22,2394]}],style:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"selected":null'},p:[52,77,2449]}],action:"tryoutput"},f:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"On":"Off"'},p:[53,26,2519]}]},"   [",{p:[55,6,2587],t:7,e:"span",a:{"class":[{t:2,r:"outputState",p:[55,19,2600]}]},f:[{t:2,x:{r:["data.outputting","data.charge"],s:'_0?"Sending":_1>0?"Not Sending":"No Charge"'},p:[55,36,2617]}]},"]"]}," ",{p:[57,3,2724],t:7,e:"ui-section",a:{label:"Target Output"},f:[{p:[58,5,2764],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.outputLevelMax",p:[58,26,2785]}],value:[{t:2,r:"data.outputLevel",p:[58,58,2817]}]},f:[{t:2,r:"adata.outputLevel_text",p:[58,80,2839]}]}]}," ",{p:[60,3,2894],t:7,e:"ui-section",a:{label:"Adjust Output"},f:[{p:[61,5,2934],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[61,44,2973]}],action:"output",params:'{"target": "min"}'}}," ",{p:[62,5,3070],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[62,39,3104]}],action:"output",params:'{"adjust": -10000}'}}," ",{p:[63,5,3202],t:7,e:"ui-button",a:{icon:"pencil",action:"output",params:'{"target": "input"}'},f:["Set"]}," ",{p:[64,5,3293],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[64,38,3326]}],action:"output",params:'{"adjust": 10000}'}}," ",{p:[65,5,3441],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[65,43,3479]}],action:"output",params:'{"target": "max"}'}}]}," ",{p:[67,3,3609],t:7,e:"ui-section",a:{label:"Outputting"},f:[{p:[68,3,3644],t:7,e:"span",f:[{t:2,r:"adata.outputUsed",p:[68,9,3650]}]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],308:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:["\ufeff",{t:4,f:[" ",{p:[2,2,33],t:7,e:"ui-display",a:{title:"Dispersal Tank"},f:[{p:[3,2,72],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[4,6,105],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.active"],s:'_0?"power-off":"close"'},p:[4,23,122]}],style:[{t:2,x:{r:["data.active"],s:'_0?"selected":null'},p:[5,11,174]}],state:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?null:"disabled"'},p:[6,11,222]}],action:"power"},f:[{t:2,x:{r:["data.active"],s:'_0?"On":"Off"'},p:[7,19,284]}]}]}," ",{p:[10,2,349],t:7,e:"ui-section",a:{label:"Smoke Radius Setting"},f:[{p:[11,4,395],t:7,e:"div",a:{"class":"content",style:"float:left"},f:[{p:[12,5,441],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.setting"],s:'_0==3?"selected":null'},p:[12,35,471]}],action:"setting",params:'{"amount": 3}'},f:["3"]}," ",{p:[13,5,573],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.setting"],s:'_0==6?"selected":null'},p:[13,35,603]}],action:"setting",params:'{"amount": 6}'},f:["6"]}," ",{p:[14,5,705],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.setting"],s:'_0==9?"selected":null'},p:[14,35,735]}],action:"setting",params:'{"amount": 9}'},f:["9"]}," ",{p:[15,5,837],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.setting"],s:'_0==12?"selected":null'},p:[15,35,867]}],action:"setting",params:'{"amount": 12}'},f:["12"]}," ",{p:[16,5,972],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.setting"],s:'_0==15?"selected":null'},p:[16,35,1002]}],action:"setting",params:'{"amount": 15}'},f:["15"]}]}]}," ",{p:[19,5,1139],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[21,10,1212],t:7,e:"span",f:[{t:2,x:{r:["adata.TankCurrentVolume"],s:"Math.round(_0)"},p:[21,16,1218]},"/",{t:2,r:"data.TankMaxVolume",p:[21,56,1258]}," Units"]}," ",{p:[22,10,1304],t:7,e:"br"}," ",{p:[23,5,1315],t:7,e:"br"}," ",{t:4,f:[{p:[25,13,1374],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[25,56,1417]}," units of ",{t:2,r:"name",p:[25,91,1452]}]},{p:[25,106,1467],t:7,e:"br"}],n:52,r:"adata.TankContents",p:[24,11,1332]}],n:50,r:"data.isTankLoaded",p:[20,7,1176]},{t:4,n:51,f:[{p:[28,12,1519],t:7,e:"span",a:{"class":"bad"},f:["Tank Empty"]}],r:"data.isTankLoaded"}," ",{p:[30,4,1571],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?"Eject":"Close"'},p:[30,21,1588]}],style:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?"selected":null'},p:[31,12,1643]}],state:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?null:"disabled"'},p:[32,12,1698]}],action:"purge"},f:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?"Purge Contents":"No chemicals detected"'},p:[33,20,1761]}]}]}]}],n:50,x:{r:["data.screen"],s:'_0=="home"'},p:[1,2,1]}]},e.exports=a.extend(r.exports)},{205:205}],309:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{t:2,x:{r:["adata.generated"],s:"Math.round(_0)"},p:[3,5,73]},"W"]}," ",{p:[5,3,126],t:7,e:"ui-section",a:{label:"Orientation"},f:[{p:[6,5,164],t:7,e:"span",f:[{t:2,x:{r:["adata.angle"],s:"Math.round(_0)"},p:[6,11,170]},"° (",{t:2,r:"data.direction",p:[6,45,204]},")"]}]}," ",{p:[8,3,251],t:7,e:"ui-section",a:{label:"Adjust Angle"},f:[{p:[9,5,290],t:7,e:"ui-button",a:{icon:"step-backward",action:"angle",params:'{"adjust": -15}'},f:["15°"]}," ",{p:[10,5,387],t:7,e:"ui-button",a:{icon:"backward",action:"angle",params:'{"adjust": -5}'},f:["5°"]}," ",{p:[11,5,477],t:7,e:"ui-button",a:{icon:"forward",action:"angle",params:'{"adjust": 5}'},f:["5°"]}," ",{p:[12,5,565],t:7,e:"ui-button",a:{icon:"step-forward",action:"angle",params:'{"adjust": 15}'},f:["15°"]}]}]}," ",{p:[15,1,687],t:7,e:"ui-display",a:{title:"Tracking"},f:[{p:[16,3,720],t:7,e:"ui-section",a:{label:"Tracker Mode"},f:[{p:[17,5,759],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==0?"selected":null'},p:[17,36,790]}],action:"tracking",params:'{"mode": 0}'},f:["Off"]}," ",{p:[19,5,907],t:7,e:"ui-button",a:{icon:"clock-o",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==1?"selected":null'},p:[19,38,940]}],action:"tracking",params:'{"mode": 1}'},f:["Timed"]}," ",{p:[21,5,1059],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.connected_tracker","data.tracking_state"],s:'_0?_1==2?"selected":null:"disabled"'},p:[21,38,1092]}],action:"tracking",params:'{"mode": 2}'},f:["Auto"]}]}," ",{p:[24,3,1262],t:7,e:"ui-section",a:{label:"Tracking Rate"},f:[{p:[25,3,1300],t:7,e:"span",f:[{t:2,x:{r:["adata.tracking_rate"],s:"Math.round(_0)"},p:[25,9,1306]},"°/h (",{t:2,r:"data.rotating_way",p:[25,53,1350]},")"]}]}," ",{p:[27,3,1399],t:7,e:"ui-section",a:{label:"Adjust Rate"},f:[{p:[28,5,1437],t:7,e:"ui-button",a:{icon:"fast-backward",action:"rate",params:'{"adjust": -180}'},f:["180°"]}," ",{p:[29,5,1535],t:7,e:"ui-button",a:{icon:"step-backward",action:"rate",params:'{"adjust": -30}'},f:["30°"]}," ",{p:[30,5,1631],t:7,e:"ui-button",a:{icon:"backward",action:"rate",params:'{"adjust": -5}'},f:["5°"]}," ",{p:[31,5,1720],t:7,e:"ui-button",a:{icon:"forward",action:"rate",params:'{"adjust": 5}'},f:["5°"]}," ",{p:[32,5,1807],t:7,e:"ui-button",a:{icon:"step-forward",action:"rate",params:'{"adjust": 30}'},f:["30°"]}," ",{p:[33,5,1901],t:7,e:"ui-button",a:{icon:"fast-forward",action:"rate",params:'{"adjust": 180}'},f:["180°"]}]}]}," ",{p:{button:[{p:[38,5,2088],t:7,e:"ui-button",a:{icon:"refresh",action:"refresh"},f:["Refresh"]}]},t:7,e:"ui-display",a:{title:"Devices",button:0},f:[" ",{p:[40,2,2169],t:7,e:"ui-section",a:{label:"Solar Tracker"},f:[{p:[41,5,2209],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_tracker"],s:'_0?"good":"bad"'},p:[41,18,2222]}]},f:[{t:2,x:{r:["data.connected_tracker"],s:'_0?"":"Not "'},p:[41,63,2267]},"Found"]}]}," ",{p:[43,2,2338],t:7,e:"ui-section",a:{label:"Solar Panels"},f:[{p:[44,3,2375],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_panels"],s:'_0?"good":"bad"'},p:[44,16,2388]}]},f:[{t:2,x:{r:["adata.connected_panels"],s:"Math.round(_0)"},p:[44,60,2432]}," Panels Connected"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],310:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{t:4,f:[{p:[4,7,87],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.hasPowercell"],s:'_0?null:"disabled"'},p:[4,38,118]}],action:"eject"},f:["Eject"]}],n:50,r:"data.open",p:[3,5,62]}]},t:7,e:"ui-display",a:{title:"Power",button:0},f:[" ",{p:[7,3,226],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[8,5,258],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[8,22,275]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[9,14,326]}],state:[{t:2,x:{r:["data.hasPowercell"],s:'_0?null:"disabled"'},p:[9,54,366]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[10,22,431]}]}]}," ",{p:[12,3,490],t:7,e:"ui-section",a:{label:"Cell"},f:[{t:4,f:[{p:[14,7,554],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerLevel",p:[14,40,587]}]},f:[{t:2,x:{r:["adata.powerLevel"],s:"Math.fixed(_0)"},p:[14,61,608]},"%"]}],n:50,r:"data.hasPowercell",p:[13,5,521]},{t:4,n:51,f:[{p:[16,4,667],t:7,e:"span",a:{"class":"bad"},f:["No Cell"]}],r:"data.hasPowercell"}]}]}," ",{p:[20,1,744],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[21,3,779],t:7,e:"ui-section",a:{label:"Current Temperature"},f:[{p:[22,3,823],t:7,e:"span",f:[{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[22,9,829]},"°C"]}]}," ",{p:[24,2,894],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[25,3,937],t:7,e:"span",f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[25,9,943]},"°C"]}]}," ",{t:4,f:[{p:[28,5,1031],t:7,e:"ui-section",a:{label:"Adjust Target"},f:[{p:[29,7,1073],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[29,46,1112]}],action:"target",params:'{"adjust": -20}'}}," ",{p:[30,7,1218],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[30,41,1252]}],action:"target",params:'{"adjust": -5}'}}," ",{p:[31,7,1357],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "input"}'},f:["Set"]}," ",{p:[32,7,1450],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[32,40,1483]}],action:"target",params:'{"adjust": 5}'}}," ",{p:[33,7,1587],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[33,45,1625]}],action:"target",params:'{"adjust": 20}'}}]}],n:50,r:"data.open",p:[27,3,1008]}," ",{p:[36,3,1754],t:7,e:"ui-section",a:{label:"Mode"},f:[{t:4,f:[{p:[38,7,1808],t:7,e:"ui-button",a:{icon:"long-arrow-up",state:[{t:2,x:{r:["data.mode"],s:'_0=="heat"?"selected":null'},p:[38,46,1847]}],action:"mode",params:'{"mode": "heat"}'},f:["Heat"]}," ",{p:[39,7,1956],t:7,e:"ui-button",a:{icon:"long-arrow-down",state:[{t:2,x:{r:["data.mode"],s:'_0=="cool"?"selected":null'},p:[39,48,1997]}],action:"mode",params:'{"mode": "cool"}'},f:["Cool"]}," ",{p:[40,7,2106],t:7,e:"ui-button",a:{icon:"arrows-v",state:[{t:2,x:{r:["data.mode"],s:'_0=="auto"?"selected":null'},p:[40,41,2140]}],action:"mode",params:'{"mode": "auto"}'},f:["Auto"]}],n:50,r:"data.open",p:[37,3,1783]},{t:4,n:51,f:[{p:[42,4,2258],t:7,e:"span",f:[{t:2,x:{r:["text","data.mode"],s:"_0.titleCase(_1)"},p:[42,10,2264]}]}],r:"data.open"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],311:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:{button:[{p:[4,8,97],t:7,e:"ui-button",a:{action:"jump",params:['{"name" : ',{t:2,r:"name",p:[4,51,140]},"}"]},f:["Jump"]}," ",{p:[7,9,195],t:7,e:"ui-button",a:{action:"spawn",params:['{"name" : ',{t:2,r:"name",p:[7,53,239]},"}"]},f:["Spawn"]}]},t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[2,22,46]}],button:0},f:[" ",{p:[11,3,308],t:7,e:"ui-section",a:{label:"Description"},f:[{p:[12,5,346],t:7,e:"span",f:[{t:3,r:"desc",p:[12,11,352]}]}]}," ",{p:[14,3,390],t:7,e:"ui-section",a:{label:"Spawners left"},f:[{p:[15,5,430],t:7,e:"span",f:[{t:2,r:"amount_left",p:[15,11,436]}]}]}]}],n:52,r:"data.spawners",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],312:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,31],t:7,e:"ui-display",a:{title:[{t:2,r:"class",p:[2,22,50]}," Alarms"]},f:[{p:[3,5,74],t:7,e:"ul",f:[{t:4,f:[{p:[5,9,107],t:7,e:"li",f:[{t:2,r:".",p:[5,13,111]}]}],n:52,r:".",p:[4,7,86]},{t:4,n:51,f:[{p:[7,9,147],t:7,e:"li",f:["System Nominal"]}],r:"."}]}]}],n:52,i:"class",r:"data.alarms",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],313:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,42],t:7,e:"ui-notice",f:[{p:[3,5,59],t:7,e:"span",f:["Biological entity detected in contents. Please remove."]}]}],n:50,x:{r:["data.occupied","data.safeties"],s:"_0&&_1"},p:[1,1,0]},{t:4,f:[{p:[7,3,179],t:7,e:"ui-notice",f:[{p:[8,5,196],t:7,e:"span",f:["Contents are being disinfected. Please wait."]}]}],n:50,r:"data.uv_active",p:[6,1,153]},{t:4,n:51,f:[{p:{button:[{t:4,f:[{p:[13,25,369],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[13,42,386]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Unlock":"Lock"'},p:[13,93,437]}]}],n:50,x:{r:["data.open"],s:"!_0"},p:[13,7,351]}," ",{t:4,f:[{p:[14,27,519],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"sign-out":"sign-in"'},p:[14,44,536]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Close":"Open"'},p:[14,98,590]}]}],n:50,x:{r:["data.locked"],s:"!_0"},p:[14,7,499]}]},t:7,e:"ui-display",a:{title:"Storage",button:0},f:[" ",{t:4,f:[{p:[17,7,692],t:7,e:"ui-notice",f:[{p:[18,9,713],t:7,e:"span",f:["Unit Locked"]}]}],n:50,r:"data.locked",p:[16,5,665]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.open"],s:"_0"},f:[{p:[21,9,793],t:7,e:"ui-section",a:{label:"Helmet"},f:[{p:[22,11,832],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.helmet"],s:'_0?"square":"square-o"'},p:[22,28,849]}],state:[{t:2,x:{r:["data.helmet"],s:'_0?null:"disabled"'},p:[22,75,896]}],action:"dispense",params:'{"item": "helmet"}'},f:[{t:2,x:{r:["data.helmet"],s:'_0||"Empty"'},p:[23,59,992]}]}]}," ",{p:[25,9,1063],t:7,e:"ui-section",a:{label:"Suit"},f:[{p:[26,11,1100],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.suit"],s:'_0?"square":"square-o"'},p:[26,28,1117]}],state:[{t:2,x:{r:["data.suit"],s:'_0?null:"disabled"'},p:[26,74,1163]}],action:"dispense",params:'{"item": "suit"}'},f:[{t:2,x:{r:["data.suit"],s:'_0||"Empty"'},p:[27,57,1255]}]}]}," ",{p:[29,9,1324],t:7,e:"ui-section",a:{label:"Mask"},f:[{p:[30,11,1361],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mask"],s:'_0?"square":"square-o"'},p:[30,28,1378]}],state:[{t:2,x:{r:["data.mask"],s:'_0?null:"disabled"'},p:[30,74,1424]}],action:"dispense",params:'{"item": "mask"}'},f:[{t:2,x:{r:["data.mask"],s:'_0||"Empty"'},p:[31,57,1516]}]}]}," ",{p:[33,9,1585],t:7,e:"ui-section",a:{label:"Storage"},f:[{p:[34,11,1625],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.storage"],s:'_0?"square":"square-o"'},p:[34,28,1642]}],state:[{t:2,x:{r:["data.storage"],s:'_0?null:"disabled"'},p:[34,77,1691]}],action:"dispense",params:'{"item": "storage"}'},f:[{t:2,x:{r:["data.storage"],s:'_0||"Empty"'},p:[35,60,1789]}]}]}]},{t:4,n:50,x:{r:["data.open"],s:"!(_0)"},f:[" ",{p:[38,7,1873],t:7,e:"ui-button",a:{icon:"recycle",state:[{t:2,x:{r:["data.occupied","data.safeties"],s:'_0&&_1?"disabled":null'},p:[38,40,1906]}],action:"uv"},f:["Disinfect"]}]}],r:"data.locked"}]}],r:"data.uv_active"}]},e.exports=a.extend(r.exports)},{205:205}],314:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,5,18],t:7,e:"ui-section",a:{label:"Dispense"},f:[{p:[3,9,57],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.plasma"],s:'_0?"square":"square-o"'},p:[3,26,74]}],state:[{t:2,x:{r:["data.plasma"],s:'_0?null:"disabled"'},p:[3,74,122]}],action:"plasma"},f:["Plasma (",{t:2,x:{r:["adata.plasma"],s:"Math.round(_0)"},p:[4,37,196]},")"]}," ",{p:[5,9,247],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.oxygen"],s:'_0?"square":"square-o"'},p:[5,26,264]}],state:[{t:2,x:{r:["data.oxygen"],s:'_0?null:"disabled"'},p:[5,74,312]}],action:"oxygen"},f:["Oxygen (",{t:2,x:{r:["adata.oxygen"],s:"Math.round(_0)"},p:[6,37,386]},")"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],315:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{tankPressureState:function(){var t=this.get("data.tankPressure");return t>=200?"good":t>=100?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[14,1,295],t:7,e:"ui-notice",f:[{p:[15,3,310],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.connected"],s:'_0?"is":"is not"'},p:[15,23,330]}," connected to a mask."]}]}," ",{p:[17,1,409],t:7,e:"ui-display",f:[{p:[18,3,425],t:7,e:"ui-section",a:{label:"Tank Pressure"},f:[{p:[19,7,467],t:7,e:"ui-bar",a:{min:"0",max:"1013",value:[{t:2,r:"data.tankPressure",p:[19,41,501]}],state:[{t:2,r:"tankPressureState",p:[20,16,540]}]},f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[20,39,563]}," kPa"]}]}," ",{p:[22,3,631],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[23,5,674],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[23,18,687]}],max:[{t:2,r:"data.maxReleasePressure",p:[23,52,721]}],value:[{t:2,r:"data.releasePressure",p:[24,14,764]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[24,40,790]}," kPa"]}]}," ",{p:[26,3,861],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[27,5,906],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[27,38,939]}],action:"pressure", -params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[29,5,1095],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[29,36,1126]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[31,5,1273],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[32,5,1368],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[32,35,1398]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],316:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,5,33],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[3,9,75],t:7,e:"span",f:[{t:2,x:{r:["adata.temperature"],s:"Math.fixed(_0,2)"},p:[3,15,81]}," K"]}]}," ",{p:[5,5,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,9,190],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.fixed(_0,2)"},p:[6,15,196]}," kPa"]}]}]}," ",{p:[9,1,276],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[10,5,311],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[11,9,347],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[11,26,364]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[11,70,408]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[12,28,469]}]}]}," ",{p:[14,5,531],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[15,9,580],t:7,e:"ui-button",a:{icon:"fast-backward",style:[{t:2,x:{r:["data.target","data.min"],s:'_0==_1?"disabled":null'},p:[15,48,619]}],action:"target",params:'{"adjust": -20}'}}," ",{p:[17,9,733],t:7,e:"ui-button",a:{icon:"backward",style:[{t:2,x:{r:["data.target","data.min"],s:'_0==_1?"disabled":null'},p:[17,43,767]}],action:"target",params:'{"adjust": -5}'}}," ",{p:[19,9,880],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "input"}'},f:[{t:2,x:{r:["adata.target"],s:"Math.fixed(_0,2)"},p:[19,79,950]}]}," ",{p:[20,9,1003],t:7,e:"ui-button",a:{icon:"forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[20,42,1036]}],action:"target",params:'{"adjust": 5}'}}," ",{p:[22,9,1148],t:7,e:"ui-button",a:{icon:"fast-forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[22,47,1186]}],action:"target",params:'{"adjust": 20}'}}]}]}]},e.exports=a.extend(r.exports)},{205:205}],317:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{powerState:function(t){switch(t){case 1:return"good";default:return"bad"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[13,1,173],t:7,e:"ui-notice",f:[{p:[14,2,187],t:7,e:"ui-section",a:{label:"Reconnect"},f:[{p:[15,3,221],t:7,e:"div",a:{style:"float:right"},f:[{p:[16,4,251],t:7,e:"ui-button",a:{icon:"refresh",action:"reconnect",state:[{t:2,r:"data.connected",p:[16,56,303]}]},f:["Reconnect"]}]}]}]}," ",{p:[20,1,386],t:7,e:"ui-display",a:{title:"Turbine Controller"},f:[{p:[21,2,428],t:7,e:"ui-section",a:{label:"Status"},f:[{t:4,f:[{p:[23,4,484],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.online"],s:"_0(_1)"},p:[23,17,497]}]},f:[{t:2,x:{r:["data.online","data.compressor_broke","data.turbine_broke"],s:'_0&&!(_1||_2)?"Online":"Offline"'},p:[23,46,526]}]}],n:50,r:"data.working",p:[22,3,459]},{t:4,n:51,f:[{p:[25,4,638],t:7,e:"span",a:{"class":"bad"},f:["Broken"]}],r:"data.working"}," ",{p:[27,3,684],t:7,e:"div",a:{style:"float:right"},f:[{p:[28,4,714],t:7,e:"ui-button",a:{icon:"power-off",action:"power",state:[{t:2,r:"data.working",p:[28,54,764]}],style:[{t:2,x:{r:["data.online"],s:'_0?"selected":""'},p:[28,79,789]}]},f:["On"]}," ",{p:[29,4,843],t:7,e:"ui-button",a:{icon:"close",action:"power",state:[{t:2,r:"data.working",p:[29,50,889]}],style:[{t:2,x:{r:["data.online"],s:'_0?"":"selected"'},p:[29,75,914]}]},f:["Off"]}]}," ",{t:4,f:[{p:[32,4,1012],t:7,e:"br"}," [ ",{p:[33,6,1023],t:7,e:"span",a:{"class":"bad"},f:["Compressor is inoperable"]}," ]"],n:50,r:"data.compressor_broke",p:[31,3,978]}," ",{t:4,f:[{p:[36,4,1120],t:7,e:"br"}," [ ",{p:[37,6,1131],t:7,e:"span",a:{"class":"bad"},f:["Turbine is inoperable"]}," ]"],n:50,r:"data.turbine_broke",p:[35,3,1089]}]}]}," ",{p:[41,1,1223],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[42,2,1253],t:7,e:"ui-section",a:{label:"Turbine Speed"},f:[{p:[43,3,1291],t:7,e:"span",f:[{t:2,x:{r:["data.working","data.rpm"],s:'_0?_1:"--"'},p:[43,9,1297]}," RPM"]}]}," ",{p:[45,2,1361],t:7,e:"ui-section",a:{label:"Internal Temp"},f:[{p:[46,3,1399],t:7,e:"span",f:[{t:2,x:{r:["data.working","data.temp"],s:'_0?_1:"--"'},p:[46,9,1405]}," K"]}]}," ",{p:[48,2,1468],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{p:[49,3,1508],t:7,e:"span",f:[{t:2,x:{r:["data.working","data.power"],s:'_0?_1:"--"'},p:[49,9,1514]}]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],318:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{},oninit:function(){this.on({hover:function(t){var e=this.get("data.telecrystals");e>=t.context.params.cost&&this.set("hovered",t.context.params)},unhover:function(t){this.set("hovered")}})}}}(r),r.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[23,7,482],t:7,e:"ui-button",a:{icon:"lock",action:"lock"},f:["Lock"]}],n:50,r:"data.lockable",p:[22,5,453]}]},t:7,e:"ui-display",a:{title:"Uplink",button:0},f:[" ",{p:[26,3,568],t:7,e:"ui-section",a:{label:"Telecrystals",right:0},f:[{p:[27,5,613],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.telecrystals"],s:'_0>0?"good":"bad"'},p:[27,18,626]}]},f:[{t:2,r:"data.telecrystals",p:[27,62,670]}," TC"]}]}]}," ",{t:4,f:[{p:[31,3,764],t:7,e:"ui-display",f:[{p:[32,2,779],t:7,e:"ui-button",a:{action:"select",params:['{"category": "',{t:2,r:"name",p:[32,51,828]},'"}']},f:[{t:2,r:"name",p:[32,63,840]}]}," ",{t:4,f:[{p:[34,4,883],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[34,23,902]}],candystripe:0,right:0},f:[{p:[35,3,934],t:7,e:"ui-button",a:{tooltip:[{t:2,r:"name",p:[35,23,954]},": ",{t:2,r:"desc",p:[35,33,964]}],"tooltip-side":"left",state:[{t:2,x:{r:["data.telecrystals","hovered.cost","cost","hovered.item","name"],s:'_0<_2||(_0-_1<_2&&_3!=_4)?"disabled":null'},p:[36,12,1006]}],action:"buy",params:['{"category": "',{t:2,r:"category",p:[37,40,1165]},'", "item": ',{t:2,r:"name",p:[37,63,1188]},', "cost": ',{t:2,r:"cost",p:[37,81,1206]},"}"]},v:{hover:"hover",unhover:"unhover"},f:[{t:2,r:"cost",p:[38,43,1260]}," TC"]}]}],n:52,r:"items",p:[33,2,863]}]}],n:52,r:"data.categories",p:[30,1,735]}]},e.exports=a.extend(r.exports)},{205:205}],319:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Products"},f:[{t:4,f:[{p:[3,2,58],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[3,21,77]}],labelcolor:[{t:2,r:"color",p:[3,43,99]}],candystripe:0,right:0},f:[{p:[4,3,132],t:7,e:"span",f:[{p:[4,9,138],t:7,e:"b",f:[{t:2,r:"amount",p:[4,12,141]}]}]}," ",{p:[5,3,166],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["amount"],s:'(_0>0)?null:"disabled"'},p:[5,22,185]}],icon:[{t:2,x:{r:["amount"],s:'(_0>0)?"cart-arrow-down":"ban"'},p:[5,66,229]}],action:"vend",params:['{"key": ',{t:2,r:"key",p:[5,142,305]},"}"]},f:[{t:2,x:{r:["amount"],s:'(_0>0)?"Vend":"Sold Out"'},p:[5,152,315]}]}]}],n:52,r:"data.products",p:[2,2,32]}]}," ",{t:4,f:[{p:[10,2,434],t:7,e:"ui-display",a:{title:"Coin Slot"},f:[{p:[11,3,468],t:7,e:"ui-section",a:{label:"Coin"},f:[{p:[12,3,497],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.coin"],s:'_0?"bold":null'},p:[12,16,510]}]},f:[{t:2,x:{r:["data.coin"],s:'_0?_0:"No Coin"'},p:[12,47,541]}]}," ",{p:[13,4,590],t:7,e:"ui-button",a:{icon:"arrow-circle-up",state:[{t:2,x:{r:["data.coin","data.canvend"],s:'_0&&_1?null:"disabled"'},p:[13,45,631]}],action:"eject"},f:["Eject Coin"]}]}]}],n:50,r:"data.coinslot",p:[9,1,410]}]},e.exports=a.extend(r.exports)},{205:205}],320:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{healthState:function(t){var e=this.get("data.vr_avatar.maxhealth");return t>e/1.5?"good":t>e/3?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[14,1,292],t:7,e:"ui-display",f:[{t:4,f:[{p:[16,3,333],t:7,e:"ui-display",a:{title:"Virtual Avatar"},f:[{p:[17,4,373],t:7,e:"ui-section",a:{label:"Name"},f:[{t:2,r:"data.vr_avatar.name",p:[18,5,404]}]}," ",{p:[20,4,450],t:7,e:"ui-section",a:{label:"Status"},f:[{t:2,r:"data.vr_avatar.status",p:[21,5,483]}]}," ",{p:[23,4,531],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[24,5,564],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.vr_avatar.maxhealth",p:[24,26,585]}],value:[{t:2,r:"adata.vr_avatar.health",p:[24,64,623]}],state:[{t:2,x:{r:["healthState","adata.vr_avatar.health"],s:"_0(_1)"},p:[24,99,658]}]},f:[{t:2,x:{r:["adata.vr_avatar.health"],s:"Math.round(_0)"},p:[24,140,699]},"/",{t:2,r:"adata.vr_avatar.maxhealth",p:[24,179,738]}]}]}]}],n:50,r:"data.vr_avatar",p:[15,2,307]},{t:4,n:51,f:[{p:[28,3,826],t:7,e:"ui-display",a:{title:"Virtual Avatar"},f:["No Virtual Avatar detected"]}],r:"data.vr_avatar"}," ",{p:[32,2,922],t:7,e:"ui-display",a:{title:"VR Commands"},f:[{p:[33,3,958],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.toggle_open"],s:'_0?"times":"plus"'},p:[33,20,975]}],action:"toggle_open"},f:[{t:2,x:{r:["data.toggle_open"],s:'_0?"Close":"Open"'},p:[34,4,1042]}," the VR Sleeper"]}," ",{t:4,f:[{p:[37,4,1144],t:7,e:"ui-button",a:{icon:"signal",action:"vr_connect"},f:["Connect to VR"]}],n:50,r:"data.isoccupant",p:[36,3,1116]}," ",{t:4,f:[{p:[42,4,1267],t:7,e:"ui-button",a:{icon:"ban",action:"delete_avatar"},f:["Delete Virtual Avatar"]}],n:50,r:"data.vr_avatar",p:[41,3,1240]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],321:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{t:4,f:[{p:[3,5,42],t:7,e:"ui-section",a:{label:[{t:2,r:"color",p:[3,24,61]},{t:2,x:{r:["wire"],s:'_0?" ("+_0+")":""'},p:[3,33,70]}],labelcolor:[{t:2,r:"color",p:[3,80,117]}],candystripe:0,right:0},f:[{p:[4,7,154],t:7,e:"ui-button",a:{action:"cut",params:['{"wire":"',{t:2,r:"color",p:[4,48,195]},'"}']},f:[{t:2,x:{r:["cut"],s:'_0?"Mend":"Cut"'},p:[4,61,208]}]}," ",{p:[5,7,252],t:7,e:"ui-button",a:{action:"pulse",params:['{"wire":"',{t:2,r:"color",p:[5,50,295]},'"}']},f:["Pulse"]}," ",{p:[6,7,333],t:7,e:"ui-button",a:{action:"attach",params:['{"wire":"',{t:2,r:"color",p:[6,51,377]},'"}']},f:[{t:2,x:{r:["attached"],s:'_0?"Detach":"Attach"'},p:[6,64,390]}]}]}],n:52,r:"data.wires",p:[2,3,16]}]}," ",{t:4,f:[{p:[11,3,508],t:7,e:"ui-display",f:[{t:4,f:[{p:[13,7,555],t:7,e:"ui-section",f:[{t:2,r:".",p:[13,19,567]}]}],n:52,r:"data.status",p:[12,5,526]}]}],n:50,r:"data.status",p:[10,1,485]}]},e.exports=a.extend(r.exports)},{205:205}],322:[function(t,e,n){(function(e){"use strict";var n=t(205),a=e.interopRequireDefault(n);t(194),t(1),t(190),t(193);var r=t(323),i=e.interopRequireDefault(r),o=t(324),s=t(191),p=t(192),u=e.interopRequireDefault(p);a["default"].DEBUG=/minified/.test(function(){}),Object.assign(Math,t(328)),window.initialize=function(e){window.tgui=window.tgui||new i["default"]({el:"#container",data:function(){var n=JSON.parse(e);return{constants:t(325),text:t(329),config:n.config,data:n.data,adata:n.data}}})};var c=document.getElementById("data"),l=c.textContent,d=c.getAttribute("data-ref");"{}"!==l&&(window.initialize(l),c.remove()),(0,o.act)(d,"tgui:initialize"),(0,s.loadCSS)("font-awesome.min.css");var f=new u["default"]("FontAwesome");f.check("").then(function(){return document.body.classList.add("icons")})["catch"](function(){return document.body.classList.add("no-icons")})}).call(this,t("babel/external-helpers"))},{1:1,190:190,191:191,192:192,193:193,194:194,205:205,323:323,324:324,325:325,328:328,329:329,"babel/external-helpers":"babel/external-helpers"}],323:[function(t,e,n){var a=t(205),r={exports:{}};!function(e){"use strict";var n=t(324),a=t(326);e.exports={components:{"ui-bar":t(206),"ui-button":t(207),"ui-display":t(208),"ui-input":t(209),"ui-linegraph":t(210),"ui-notice":t(211),"ui-section":t(213),"ui-subdisplay":t(214),"ui-tabs":t(215)},events:{enter:t(203).enter,space:t(203).space},transitions:{fade:t(204)},onconfig:function(){var e=this.get("config.interface"),n={ai_airlock:t(219),airalarm:t(220),"airalarm/back":t(221),"airalarm/modes":t(222),"airalarm/scrubbers":t(223),"airalarm/status":t(224),"airalarm/thresholds":t(225),"airalarm/vents":t(226),airlock_electronics:t(227),apc:t(228),atmos_alert:t(229),atmos_control:t(230),atmos_filter:t(231),atmos_mixer:t(232),atmos_pump:t(233),brig_timer:t(234),bsa:t(235),canister:t(236),cargo:t(237),cellular_emporium:t(238),chem_dispenser:t(239),chem_heater:t(240),chem_master:t(241),clockwork_slab:t(242),codex_gigas:t(243),computer_fabricator:t(244),crayon:t(245),cryo:t(246),disposal_unit:t(247),dna_vault:t(248),dogborg_sleeper:t(249),eightball:t(250),emergency_shuttle_console:t(251),engraved_message:t(252),error:t(253),"exofab - Copia":t(254),exonet_node:t(255),firealarm:t(256),gps:t(257),gulag_console:t(258),gulag_item_reclaimer:t(259),holodeck:t(260),implantchair:t(261),intellicard:t(262),keycard_auth:t(263),labor_claim_console:t(264),language_menu:t(265),launchpad_remote:t(266),mech_bay_power_console:t(267),mulebot:t(268),ntnet_relay:t(269),ntos_ai_restorer:t(270),ntos_card:t(271),ntos_configuration:t(272),ntos_file_manager:t(273),ntos_main:t(274),ntos_net_chat:t(275),ntos_net_dos:t(276),ntos_net_downloader:t(277),ntos_net_monitor:t(278),ntos_net_transfer:t(279),ntos_power_monitor:t(280),ntos_revelation:t(281),ntos_station_alert:t(282),ntos_supermatter_monitor:t(283),ntosheader:t(284),nuclear_bomb:t(285),operating_computer:t(286),ore_redemption_machine:t(287),pandemic:t(288),personal_crafting:t(289),portable_pump:t(290),portable_scrubber:t(291),power_monitor:t(292),radio:t(293),reagentgrinder:t(294),rpd:t(295),"rpd/colorsel":t(296),"rpd/dirsel":t(297),sat_control:t(298),scrubbing_types:t(299),shuttle_manipulator:t(300),"shuttle_manipulator/modification":t(301),"shuttle_manipulator/status":t(302),"shuttle_manipulator/templates":t(303),sleeper:t(304),slime_swap_body:t(305),smartvend:t(306),smes:t(307),smoke_machine:t(308),solar_control:t(309),space_heater:t(310),spawners_menu:t(311),station_alert:t(312),suit_storage_unit:t(313),tank_dispenser:t(314),tanks:t(315),thermomachine:t(316),turbine_computer:t(317),uplink:t(318),vending:t(319),vr_sleeper:t(320),wires:t(321)};e in n?this.components["interface"]=n[e]:this.components["interface"]=n.error},oninit:function(){this.observe("config.style",function(t,e,n){t&&document.body.classList.add(t),e&&document.body.classList.remove(e)})},oncomplete:function(){if(this.get("config.locked")){var t=(0,a.lock)(window.screenLeft,window.screenTop),e=t.x,r=t.y;(0,n.winset)(this.get("config.window"),"pos",e+","+r)}(0,n.winset)("mapwindow.map","focus",!0)}}}(r),r.exports.template={v:3,t:[" "," "," "," ",{p:[56,1,1874],t:7,e:"titlebar",f:[{t:3,r:"config.title",p:[56,11,1884]}]}," ",{p:[57,1,1915],t:7,e:"main",f:[{p:[58,3,1925],t:7,e:"warnings"}," ",{p:[59,3,1940],t:7,e:"interface"}]}," ",{t:4,f:[{p:[62,3,1990],t:7,e:"resize"}],n:50,r:"config.titlebar",p:[61,1,1963]}]},r.exports.components=r.exports.components||{};var i={warnings:t(218),titlebar:t(217),resize:t(212)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{203:203,204:204,205:205,206:206,207:207,208:208,209:209,210:210,211:211,212:212,213:213,214:214,215:215,217:217,218:218,219:219,220:220,221:221,222:222,223:223,224:224,225:225,226:226,227:227,228:228,229:229,230:230,231:231,232:232,233:233,234:234,235:235,236:236,237:237,238:238,239:239,240:240,241:241,242:242,243:243,244:244,245:245,246:246,247:247,248:248,249:249,250:250,251:251,252:252,253:253,254:254,255:255,256:256,257:257,258:258,259:259,260:260,261:261,262:262,263:263,264:264,265:265,266:266,267:267,268:268,269:269,270:270,271:271,272:272,273:273,274:274,275:275,276:276,277:277,278:278,279:279,280:280,281:281,282:282,283:283,284:284,285:285,286:286,287:287,288:288,289:289,290:290,291:291,292:292,293:293,294:294,295:295,296:296,297:297,298:298,299:299,300:300,301:301,302:302,303:303,304:304,305:305,306:306,307:307,308:308,309:309,310:310,311:311,312:312,313:313,314:314,315:315,316:316,317:317,318:318,319:319,320:320,321:321,324:324,326:326}],324:[function(t,e,n){"use strict";function a(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"byond://"+e+"?"+Object.keys(t).map(function(e){return o(e)+"="+o(t[e])}).join("&")}function r(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};window.location.href=a(Object.assign({src:t,action:e},n))}function i(t,e,n){var r;window.location.href=a((r={},r[t+"."+e]=n,r),"winset")}n.__esModule=!0,n.href=a,n.act=r,n.winset=i;var o=encodeURIComponent},{}],325:[function(t,e,n){"use strict";n.__esModule=!0;n.UI_INTERACTIVE=2,n.UI_UPDATE=1,n.UI_DISABLED=0,n.UI_CLOSE=-1},{}],326:[function(t,e,n){"use strict";function a(t,e){return 0>t?t=0:t+window.innerWidth>window.screen.availWidth&&(t=window.screen.availWidth-window.innerWidth),0>e?e=0:e+window.innerHeight>window.screen.availHeight&&(e=window.screen.availHeight-window.innerHeight),{x:t,y:e}}function r(t){if(t.preventDefault(),this.get("drag")){if(this.get("x")){var e=t.screenX-this.get("x")+window.screenLeft,n=t.screenY-this.get("y")+window.screenTop;if(this.get("config.locked")){var r=a(e,n);e=r.x,n=r.y}(0,s.winset)(this.get("config.window"),"pos",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}function i(t,e){return t=Math.clamp(100,window.screen.width,t),e=Math.clamp(100,window.screen.height,e),{x:t,y:e}}function o(t){if(t.preventDefault(),this.get("resize")){if(this.get("x")){var e=t.screenX-this.get("x")+window.innerWidth,n=t.screenY-this.get("y")+window.innerHeight,a=i(e,n);e=a.x,n=a.y,(0,s.winset)(this.get("config.window"),"size",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}n.__esModule=!0,n.lock=a,n.drag=r,n.sane=i,n.resize=o;var s=t(324)},{324:324}],327:[function(t,e,n){"use strict";function a(t,e){for(var n=t,a=Array.isArray(n),i=0,n=a?n:n[Symbol.iterator]();;){var o;if(a){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var s=o;s.textContent.toLowerCase().includes(e)?(s.style.display="",r(s,e)):s.style.display="none"}}function r(t,e){for(var n=t.queryAll("section"),a=t.query("header").textContent.toLowerCase().includes(e),r=n,i=Array.isArray(r),o=0,r=i?r:r[Symbol.iterator]();;){var s;if(i){if(o>=r.length)break;s=r[o++]}else{if(o=r.next(),o.done)break;s=o.value}var p=s;a||p.textContent.toLowerCase().includes(e)?p.style.display="":p.style.display="none"}}n.__esModule=!0,n.filterMulti=a,n.filter=r},{}],328:[function(t,e,n){"use strict";function a(t,e,n){return Math.max(t,Math.min(n,e))}function r(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return+(Math.round(t+"e"+e)+"e-"+e)}n.__esModule=!0,n.clamp=a,n.fixed=r},{}],329:[function(t,e,n){"use strict";function a(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()}function r(t){return t.replace(/\w\S*/g,a)}function i(t,e){for(t=""+t;t.length1){for(var p=Array(o),u=0;o>u;u++)p[u]=arguments[u+3];n.children=p}return{$$typeof:t,type:e,key:void 0===a?null:""+a,ref:null,props:n,_owner:null}}}(),e.asyncIterator=function(t){if("function"==typeof Symbol){if(Symbol.asyncIterator){var e=t[Symbol.asyncIterator];if(null!=e)return e.call(t)}if(Symbol.iterator)return t[Symbol.iterator]()}throw new TypeError("Object is not async iterable")},e.asyncGenerator=function(){function t(t){this.value=t}function e(e){function n(t,e){return new Promise(function(n,r){var s={key:t,arg:e,resolve:n,reject:r,next:null};o?o=o.next=s:(i=o=s,a(t,e))})}function a(n,i){try{var o=e[n](i),s=o.value;s instanceof t?Promise.resolve(s.value).then(function(t){a("next",t)},function(t){a("throw",t)}):r(o.done?"return":"normal",o.value)}catch(p){r("throw",p)}}function r(t,e){switch(t){case"return":i.resolve({value:e,done:!0});break;case"throw":i.reject(e);break;default:i.resolve({value:e,done:!1})}i=i.next,i?a(i.key,i.arg):o=null}var i,o;this._invoke=n,"function"!=typeof e["return"]&&(this["return"]=void 0)}return"function"==typeof Symbol&&Symbol.asyncIterator&&(e.prototype[Symbol.asyncIterator]=function(){return this}),e.prototype.next=function(t){return this._invoke("next",t)},e.prototype["throw"]=function(t){return this._invoke("throw",t)},e.prototype["return"]=function(t){return this._invoke("return",t)},{wrap:function(t){return function(){return new e(t.apply(this,arguments))}},await:function(e){return new t(e)}}}(),e.asyncGeneratorDelegate=function(t,e){function n(n,a){return r=!0,a=new Promise(function(e){e(t[n](a))}),{done:!1,value:e(a)}}var a={},r=!1;return"function"==typeof Symbol&&Symbol.iterator&&(a[Symbol.iterator]=function(){return this}),a.next=function(t){return r?(r=!1,t):n("next",t)},"function"==typeof t["throw"]&&(a["throw"]=function(t){if(r)throw r=!1,t;return n("throw",t)}),"function"==typeof t["return"]&&(a["return"]=function(t){return n("return",t)}),a},e.asyncToGenerator=function(t){return function(){var e=t.apply(this,arguments);return new Promise(function(t,n){function a(r,i){try{var o=e[r](i),s=o.value}catch(p){return void n(p)}return o.done?void t(s):Promise.resolve(s).then(function(t){a("next",t)},function(t){a("throw",t)})}return a("next")})}},e.classCallCheck=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},e.createClass=function(){function t(t,e){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(t,a)&&(n[a]=t[a]);return n},e.possibleConstructorReturn=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e},e.selfGlobal=void 0===t?self:t,e.set=function a(t,e,n,r){var i=Object.getOwnPropertyDescriptor(t,e);if(void 0===i){var o=Object.getPrototypeOf(t);null!==o&&a(o,e,n,r)}else if("value"in i&&i.writable)i.value=n;else{var s=i.set;void 0!==s&&s.call(r,n)}return n},e.slicedToArray=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),e.slicedToArrayLoose=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){for(var n,a=[],r=t[Symbol.iterator]();!(n=r.next()).done&&(a.push(n.value),!e||a.length!==e););return a}throw new TypeError("Invalid attempt to destructure non-iterable instance")},e.taggedTemplateLiteral=function(t,e){return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))},e.taggedTemplateLiteralLoose=function(t,e){return t.raw=e,t},e.temporalRef=function(t,e,n){if(t===n)throw new ReferenceError(e+" is not defined - temporal dead zone");return t},e.temporalUndefined={},e.toArray=function(t){return Array.isArray(t)?t:Array.from(t)},e.toConsumableArray=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e_1?null:"disabled"'},p:[29,36,1126]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[31,5,1273],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[32,5,1368],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[32,35,1398]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],316:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,5,33],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[3,9,75],t:7,e:"span",f:[{t:2,x:{r:["adata.temperature"],s:"Math.fixed(_0,2)"},p:[3,15,81]}," K"]}]}," ",{p:[5,5,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,9,190],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.fixed(_0,2)"},p:[6,15,196]}," kPa"]}]}]}," ",{p:[9,1,276],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[10,5,311],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[11,9,347],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[11,26,364]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[11,70,408]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[12,28,469]}]}]}," ",{p:[14,5,531],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[15,9,580],t:7,e:"ui-button",a:{icon:"fast-backward",style:[{t:2,x:{r:["data.target","data.min"],s:'_0==_1?"disabled":null'},p:[15,48,619]}],action:"target",params:'{"adjust": -20}'}}," ",{p:[17,9,733],t:7,e:"ui-button",a:{icon:"backward",style:[{t:2,x:{r:["data.target","data.min"],s:'_0==_1?"disabled":null'},p:[17,43,767]}],action:"target",params:'{"adjust": -5}'}}," ",{p:[19,9,880],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "input"}'},f:[{t:2,x:{r:["adata.target"],s:"Math.fixed(_0,2)"},p:[19,79,950]}]}," ",{p:[20,9,1003],t:7,e:"ui-button",a:{icon:"forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[20,42,1036]}],action:"target",params:'{"adjust": 5}'}}," ",{p:[22,9,1148],t:7,e:"ui-button",a:{icon:"fast-forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[22,47,1186]}],action:"target",params:'{"adjust": 20}'}}]}]}]},e.exports=a.extend(r.exports)},{205:205}],317:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{powerState:function(t){switch(t){case 1:return"good";default:return"bad"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[13,1,173],t:7,e:"ui-notice",f:[{p:[14,2,187],t:7,e:"ui-section",a:{label:"Reconnect"},f:[{p:[15,3,221],t:7,e:"div",a:{style:"float:right"},f:[{p:[16,4,251],t:7,e:"ui-button",a:{icon:"refresh",action:"reconnect"},f:["Reconnect"]}]}]}]}," ",{p:[20,1,359],t:7,e:"ui-display",a:{title:"Turbine Controller"},f:[{p:[21,2,401],t:7,e:"ui-section",a:{label:"Status"},f:[{t:4,f:[{p:[23,4,456],t:7,e:"span",a:{"class":"bad"},f:["Broken"]}],n:50,r:"data.broken",p:[22,3,432]},{t:4,n:51,f:[{p:[25,4,504],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.online"],s:"_0(_1)"},p:[25,17,517]}]},f:[{t:2,x:{r:["data.online","data.compressor_broke","data.turbine_broke"],s:'_0&&!(_1||_2)?"Online":"Offline"'},p:[25,46,546]}]}],r:"data.broken"}," ",{p:[27,3,656],t:7,e:"div",a:{style:"float:right"},f:[{p:[28,4,686],t:7,e:"ui-button",a:{icon:"power-off",action:"power-on",state:[{t:2,r:"data.broken",p:[28,57,739]}],style:[{t:2,x:{r:["data.online"],s:'_0?"selected":""'},p:[28,81,763]}]},f:["On"]}," ",{p:[29,4,817],t:7,e:"ui-button",a:{icon:"close",action:"power-off",state:[{t:2,r:"data.broken",p:[29,54,867]}],style:[{t:2,x:{r:["data.online"],s:'_0?"":"selected"'},p:[29,78,891]}]},f:["Off"]}]}," ",{t:4,f:[{p:[32,4,989],t:7,e:"br"}," [ ",{p:[33,6,1e3],t:7,e:"span",a:{"class":"bad"},f:["Compressor is inoperable"]}," ]"],n:50,r:"data.compressor_broke",p:[31,3,955]}," ",{t:4,f:[{p:[36,4,1097],t:7,e:"br"}," [ ",{p:[37,6,1108],t:7,e:"span",a:{"class":"bad"},f:["Turbine is inoperable"]}," ]"],n:50,r:"data.turbine_broke",p:[35,3,1066]}]}]}," ",{p:[41,1,1200],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[42,2,1230],t:7,e:"ui-section",a:{label:"Turbine Speed"},f:[{p:[43,3,1268],t:7,e:"span",f:[{t:2,x:{r:["data.broken","data.rpm"],s:'_0?"--":_1'},p:[43,9,1274]}," RPM"]}]}," ",{p:[45,2,1337],t:7,e:"ui-section",a:{label:"Internal Temp"},f:[{p:[46,3,1375],t:7,e:"span",f:[{t:2,x:{r:["data.broken","data.temp"],s:'_0?"--":_1'},p:[46,9,1381]}," K"]}]}," ",{p:[48,2,1443],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{p:[49,3,1483],t:7,e:"span",f:[{t:2,x:{r:["data.broken","data.power"],s:'_0?"--":_1'},p:[49,9,1489]}]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],318:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{},oninit:function(){this.on({hover:function(t){var e=this.get("data.telecrystals");e>=t.context.params.cost&&this.set("hovered",t.context.params)},unhover:function(t){this.set("hovered")}})}}}(r),r.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[23,7,482],t:7,e:"ui-button",a:{icon:"lock",action:"lock"},f:["Lock"]}],n:50,r:"data.lockable",p:[22,5,453]}]},t:7,e:"ui-display",a:{title:"Uplink",button:0},f:[" ",{p:[26,3,568],t:7,e:"ui-section",a:{label:"Telecrystals",right:0},f:[{p:[27,5,613],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.telecrystals"],s:'_0>0?"good":"bad"'},p:[27,18,626]}]},f:[{t:2,r:"data.telecrystals",p:[27,62,670]}," TC"]}]}]}," ",{t:4,f:[{p:[31,3,764],t:7,e:"ui-display",f:[{p:[32,2,779],t:7,e:"ui-button",a:{action:"select",params:['{"category": "',{t:2,r:"name",p:[32,51,828]},'"}']},f:[{t:2,r:"name",p:[32,63,840]}]}," ",{t:4,f:[{p:[34,4,883],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[34,23,902]}],candystripe:0,right:0},f:[{p:[35,3,934],t:7,e:"ui-button",a:{tooltip:[{t:2,r:"name",p:[35,23,954]},": ",{t:2,r:"desc",p:[35,33,964]}],"tooltip-side":"left",state:[{t:2,x:{r:["data.telecrystals","hovered.cost","cost","hovered.item","name"],s:'_0<_2||(_0-_1<_2&&_3!=_4)?"disabled":null'},p:[36,12,1006]}],action:"buy",params:['{"category": "',{t:2,r:"category",p:[37,40,1165]},'", "item": ',{t:2,r:"name",p:[37,63,1188]},', "cost": ',{t:2,r:"cost",p:[37,81,1206]},"}"]},v:{hover:"hover",unhover:"unhover"},f:[{t:2,r:"cost",p:[38,43,1260]}," TC"]}]}],n:52,r:"items",p:[33,2,863]}]}],n:52,r:"data.categories",p:[30,1,735]}]},e.exports=a.extend(r.exports)},{205:205}],319:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Products"},f:[{t:4,f:[{p:[3,2,58],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[3,21,77]}],labelcolor:[{t:2,r:"color",p:[3,43,99]}],candystripe:0,right:0},f:[{p:[4,3,132],t:7,e:"span",f:[{p:[4,9,138],t:7,e:"b",f:[{t:2,r:"amount",p:[4,12,141]}]}]}," ",{p:[5,3,166],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["amount"],s:'(_0>0)?null:"disabled"'},p:[5,22,185]}],icon:[{t:2,x:{r:["amount"],s:'(_0>0)?"cart-arrow-down":"ban"'},p:[5,66,229]}],action:"vend",params:['{"key": ',{t:2,r:"key",p:[5,142,305]},"}"]},f:[{t:2,x:{r:["amount"],s:'(_0>0)?"Vend":"Sold Out"'},p:[5,152,315]}]}]}],n:52,r:"data.products",p:[2,2,32]}]}," ",{t:4,f:[{p:[10,2,434],t:7,e:"ui-display",a:{title:"Coin Slot"},f:[{p:[11,3,468],t:7,e:"ui-section",a:{label:"Coin"},f:[{p:[12,3,497],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.coin"],s:'_0?"bold":null'},p:[12,16,510]}]},f:[{t:2,x:{r:["data.coin"],s:'_0?_0:"No Coin"'},p:[12,47,541]}]}," ",{p:[13,4,590],t:7,e:"ui-button",a:{icon:"arrow-circle-up",state:[{t:2,x:{r:["data.coin","data.canvend"],s:'_0&&_1?null:"disabled"'},p:[13,45,631]}],action:"eject"},f:["Eject Coin"]}]}]}],n:50,r:"data.coinslot",p:[9,1,410]}]},e.exports=a.extend(r.exports)},{205:205}],320:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{healthState:function(t){var e=this.get("data.vr_avatar.maxhealth");return t>e/1.5?"good":t>e/3?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[14,1,292],t:7,e:"ui-display",f:[{t:4,f:[{p:[16,3,333],t:7,e:"ui-display",a:{title:"Virtual Avatar"},f:[{p:[17,4,373],t:7,e:"ui-section",a:{label:"Name"},f:[{t:2,r:"data.vr_avatar.name",p:[18,5,404]}]}," ",{p:[20,4,450],t:7,e:"ui-section",a:{label:"Status"},f:[{t:2,r:"data.vr_avatar.status",p:[21,5,483]}]}," ",{p:[23,4,531],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[24,5,564],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.vr_avatar.maxhealth",p:[24,26,585]}],value:[{t:2,r:"adata.vr_avatar.health",p:[24,64,623]}],state:[{t:2,x:{r:["healthState","adata.vr_avatar.health"],s:"_0(_1)"},p:[24,99,658]}]},f:[{t:2,x:{r:["adata.vr_avatar.health"],s:"Math.round(_0)"},p:[24,140,699]},"/",{t:2,r:"adata.vr_avatar.maxhealth",p:[24,179,738]}]}]}]}],n:50,r:"data.vr_avatar",p:[15,2,307]},{t:4,n:51,f:[{p:[28,3,826],t:7,e:"ui-display",a:{title:"Virtual Avatar"},f:["No Virtual Avatar detected"]}],r:"data.vr_avatar"}," ",{p:[32,2,922],t:7,e:"ui-display",a:{title:"VR Commands"},f:[{p:[33,3,958],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.toggle_open"],s:'_0?"times":"plus"'},p:[33,20,975]}],action:"toggle_open"},f:[{t:2,x:{r:["data.toggle_open"],s:'_0?"Close":"Open"'},p:[34,4,1042]}," the VR Sleeper"]}," ",{t:4,f:[{p:[37,4,1144],t:7,e:"ui-button",a:{icon:"signal",action:"vr_connect"},f:["Connect to VR"]}],n:50,r:"data.isoccupant",p:[36,3,1116]}," ",{t:4,f:[{p:[42,4,1267],t:7,e:"ui-button",a:{icon:"ban",action:"delete_avatar"},f:["Delete Virtual Avatar"]}],n:50,r:"data.vr_avatar",p:[41,3,1240]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],321:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{t:4,f:[{p:[3,5,42],t:7,e:"ui-section",a:{label:[{t:2,r:"color",p:[3,24,61]},{t:2,x:{r:["wire"],s:'_0?" ("+_0+")":""'},p:[3,33,70]}],labelcolor:[{t:2,r:"color",p:[3,80,117]}],candystripe:0,right:0},f:[{p:[4,7,154],t:7,e:"ui-button",a:{action:"cut",params:['{"wire":"',{t:2,r:"color",p:[4,48,195]},'"}']},f:[{t:2,x:{r:["cut"],s:'_0?"Mend":"Cut"'},p:[4,61,208]}]}," ",{p:[5,7,252],t:7,e:"ui-button",a:{action:"pulse",params:['{"wire":"',{t:2,r:"color",p:[5,50,295]},'"}']},f:["Pulse"]}," ",{p:[6,7,333],t:7,e:"ui-button",a:{action:"attach",params:['{"wire":"',{t:2,r:"color",p:[6,51,377]},'"}']},f:[{t:2,x:{r:["attached"],s:'_0?"Detach":"Attach"'},p:[6,64,390]}]}]}],n:52,r:"data.wires",p:[2,3,16]}]}," ",{t:4,f:[{p:[11,3,508],t:7,e:"ui-display",f:[{t:4,f:[{p:[13,7,555],t:7,e:"ui-section",f:[{t:2,r:".",p:[13,19,567]}]}],n:52,r:"data.status",p:[12,5,526]}]}],n:50,r:"data.status",p:[10,1,485]}]},e.exports=a.extend(r.exports)},{205:205}],322:[function(t,e,n){(function(e){"use strict";var n=t(205),a=e.interopRequireDefault(n);t(194),t(1),t(190),t(193);var r=t(323),i=e.interopRequireDefault(r),o=t(324),s=t(191),p=t(192),u=e.interopRequireDefault(p);a["default"].DEBUG=/minified/.test(function(){}),Object.assign(Math,t(328)),window.initialize=function(e){window.tgui=window.tgui||new i["default"]({el:"#container",data:function(){var n=JSON.parse(e);return{constants:t(325),text:t(329),config:n.config,data:n.data,adata:n.data}}})};var c=document.getElementById("data"),l=c.textContent,d=c.getAttribute("data-ref");"{}"!==l&&(window.initialize(l),c.remove()),(0,o.act)(d,"tgui:initialize"),(0,s.loadCSS)("font-awesome.min.css");var f=new u["default"]("FontAwesome");f.check("").then(function(){return document.body.classList.add("icons")})["catch"](function(){return document.body.classList.add("no-icons")})}).call(this,t("babel/external-helpers"))},{1:1,190:190,191:191,192:192,193:193,194:194,205:205,323:323,324:324,325:325,328:328,329:329,"babel/external-helpers":"babel/external-helpers"}],323:[function(t,e,n){var a=t(205),r={exports:{}};!function(e){"use strict";var n=t(324),a=t(326);e.exports={components:{"ui-bar":t(206),"ui-button":t(207),"ui-display":t(208),"ui-input":t(209),"ui-linegraph":t(210),"ui-notice":t(211),"ui-section":t(213),"ui-subdisplay":t(214),"ui-tabs":t(215)},events:{enter:t(203).enter,space:t(203).space},transitions:{fade:t(204)},onconfig:function(){var e=this.get("config.interface"),n={ai_airlock:t(219),airalarm:t(220),"airalarm/back":t(221),"airalarm/modes":t(222),"airalarm/scrubbers":t(223),"airalarm/status":t(224),"airalarm/thresholds":t(225),"airalarm/vents":t(226),airlock_electronics:t(227),apc:t(228),atmos_alert:t(229),atmos_control:t(230),atmos_filter:t(231),atmos_mixer:t(232),atmos_pump:t(233),brig_timer:t(234),bsa:t(235),canister:t(236),cargo:t(237),cellular_emporium:t(238),chem_dispenser:t(239),chem_heater:t(240),chem_master:t(241),clockwork_slab:t(242),codex_gigas:t(243),computer_fabricator:t(244),crayon:t(245),cryo:t(246),disposal_unit:t(247),dna_vault:t(248),dogborg_sleeper:t(249),eightball:t(250),emergency_shuttle_console:t(251),engraved_message:t(252),error:t(253),"exofab - Copia":t(254),exonet_node:t(255),firealarm:t(256),gps:t(257),gulag_console:t(258),gulag_item_reclaimer:t(259),holodeck:t(260),implantchair:t(261),intellicard:t(262),keycard_auth:t(263),labor_claim_console:t(264),language_menu:t(265),launchpad_remote:t(266),mech_bay_power_console:t(267),mulebot:t(268),ntnet_relay:t(269),ntos_ai_restorer:t(270),ntos_card:t(271),ntos_configuration:t(272),ntos_file_manager:t(273),ntos_main:t(274),ntos_net_chat:t(275),ntos_net_dos:t(276),ntos_net_downloader:t(277),ntos_net_monitor:t(278),ntos_net_transfer:t(279),ntos_power_monitor:t(280),ntos_revelation:t(281),ntos_station_alert:t(282),ntos_supermatter_monitor:t(283),ntosheader:t(284),nuclear_bomb:t(285),operating_computer:t(286),ore_redemption_machine:t(287),pandemic:t(288),personal_crafting:t(289),portable_pump:t(290),portable_scrubber:t(291),power_monitor:t(292),radio:t(293),reagentgrinder:t(294),rpd:t(295),"rpd/colorsel":t(296),"rpd/dirsel":t(297),sat_control:t(298),scrubbing_types:t(299),shuttle_manipulator:t(300),"shuttle_manipulator/modification":t(301),"shuttle_manipulator/status":t(302),"shuttle_manipulator/templates":t(303),sleeper:t(304),slime_swap_body:t(305),smartvend:t(306),smes:t(307),smoke_machine:t(308),solar_control:t(309),space_heater:t(310),spawners_menu:t(311),station_alert:t(312),suit_storage_unit:t(313),tank_dispenser:t(314),tanks:t(315),thermomachine:t(316),turbine_computer:t(317),uplink:t(318),vending:t(319),vr_sleeper:t(320),wires:t(321)};e in n?this.components["interface"]=n[e]:this.components["interface"]=n.error},oninit:function(){this.observe("config.style",function(t,e,n){t&&document.body.classList.add(t),e&&document.body.classList.remove(e)})},oncomplete:function(){if(this.get("config.locked")){var t=(0,a.lock)(window.screenLeft,window.screenTop),e=t.x,r=t.y;(0,n.winset)(this.get("config.window"),"pos",e+","+r)}(0,n.winset)("mapwindow.map","focus",!0)}}}(r),r.exports.template={v:3,t:[" "," "," "," ",{p:[56,1,1874],t:7,e:"titlebar",f:[{t:3,r:"config.title",p:[56,11,1884]}]}," ",{p:[57,1,1915],t:7,e:"main",f:[{p:[58,3,1925],t:7,e:"warnings"}," ",{p:[59,3,1940],t:7,e:"interface"}]}," ",{t:4,f:[{p:[62,3,1990],t:7,e:"resize"}],n:50,r:"config.titlebar",p:[61,1,1963]}]},r.exports.components=r.exports.components||{};var i={warnings:t(218),titlebar:t(217),resize:t(212)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{203:203,204:204,205:205,206:206,207:207,208:208,209:209,210:210,211:211,212:212,213:213,214:214,215:215,217:217,218:218,219:219,220:220,221:221,222:222,223:223,224:224,225:225,226:226,227:227,228:228,229:229,230:230,231:231,232:232,233:233,234:234,235:235,236:236,237:237,238:238,239:239,240:240,241:241,242:242,243:243,244:244,245:245,246:246,247:247,248:248,249:249,250:250,251:251,252:252,253:253,254:254,255:255,256:256,257:257,258:258,259:259,260:260,261:261,262:262,263:263,264:264,265:265,266:266,267:267,268:268,269:269,270:270,271:271,272:272,273:273,274:274,275:275,276:276,277:277,278:278,279:279,280:280,281:281,282:282,283:283,284:284,285:285,286:286,287:287,288:288,289:289,290:290,291:291,292:292,293:293,294:294,295:295,296:296,297:297,298:298,299:299,300:300,301:301,302:302,303:303,304:304,305:305,306:306,307:307,308:308,309:309,310:310,311:311,312:312,313:313,314:314,315:315,316:316,317:317,318:318,319:319,320:320,321:321,324:324,326:326}],324:[function(t,e,n){"use strict";function a(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"byond://"+e+"?"+Object.keys(t).map(function(e){return o(e)+"="+o(t[e])}).join("&")}function r(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};window.location.href=a(Object.assign({src:t,action:e},n))}function i(t,e,n){var r;window.location.href=a((r={},r[t+"."+e]=n,r),"winset")}n.__esModule=!0,n.href=a,n.act=r,n.winset=i;var o=encodeURIComponent},{}],325:[function(t,e,n){"use strict";n.__esModule=!0;n.UI_INTERACTIVE=2,n.UI_UPDATE=1,n.UI_DISABLED=0,n.UI_CLOSE=-1},{}],326:[function(t,e,n){"use strict";function a(t,e){return 0>t?t=0:t+window.innerWidth>window.screen.availWidth&&(t=window.screen.availWidth-window.innerWidth),0>e?e=0:e+window.innerHeight>window.screen.availHeight&&(e=window.screen.availHeight-window.innerHeight),{x:t,y:e}}function r(t){if(t.preventDefault(),this.get("drag")){if(this.get("x")){var e=t.screenX-this.get("x")+window.screenLeft,n=t.screenY-this.get("y")+window.screenTop;if(this.get("config.locked")){var r=a(e,n);e=r.x,n=r.y}(0,s.winset)(this.get("config.window"),"pos",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}function i(t,e){return t=Math.clamp(100,window.screen.width,t),e=Math.clamp(100,window.screen.height,e),{x:t,y:e}}function o(t){if(t.preventDefault(),this.get("resize")){if(this.get("x")){var e=t.screenX-this.get("x")+window.innerWidth,n=t.screenY-this.get("y")+window.innerHeight,a=i(e,n);e=a.x,n=a.y,(0,s.winset)(this.get("config.window"),"size",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}n.__esModule=!0,n.lock=a,n.drag=r,n.sane=i,n.resize=o;var s=t(324)},{324:324}],327:[function(t,e,n){"use strict";function a(t,e){for(var n=t,a=Array.isArray(n),i=0,n=a?n:n[Symbol.iterator]();;){var o;if(a){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var s=o;s.textContent.toLowerCase().includes(e)?(s.style.display="",r(s,e)):s.style.display="none"}}function r(t,e){for(var n=t.queryAll("section"),a=t.query("header").textContent.toLowerCase().includes(e),r=n,i=Array.isArray(r),o=0,r=i?r:r[Symbol.iterator]();;){var s;if(i){if(o>=r.length)break;s=r[o++]}else{if(o=r.next(),o.done)break;s=o.value}var p=s;a||p.textContent.toLowerCase().includes(e)?p.style.display="":p.style.display="none"}}n.__esModule=!0,n.filterMulti=a,n.filter=r},{}],328:[function(t,e,n){"use strict";function a(t,e,n){return Math.max(t,Math.min(n,e))}function r(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return+(Math.round(t+"e"+e)+"e-"+e)}n.__esModule=!0,n.clamp=a,n.fixed=r},{}],329:[function(t,e,n){"use strict";function a(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()}function r(t){return t.replace(/\w\S*/g,a)}function i(t,e){for(t=""+t;t.length1){for(var p=Array(o),u=0;o>u;u++)p[u]=arguments[u+3];n.children=p}return{$$typeof:t,type:e,key:void 0===a?null:""+a,ref:null,props:n,_owner:null}}}(),e.asyncIterator=function(t){if("function"==typeof Symbol){if(Symbol.asyncIterator){var e=t[Symbol.asyncIterator];if(null!=e)return e.call(t)}if(Symbol.iterator)return t[Symbol.iterator]()}throw new TypeError("Object is not async iterable")},e.asyncGenerator=function(){function t(t){this.value=t}function e(e){function n(t,e){return new Promise(function(n,r){var s={key:t,arg:e,resolve:n,reject:r,next:null};o?o=o.next=s:(i=o=s,a(t,e))})}function a(n,i){try{var o=e[n](i),s=o.value;s instanceof t?Promise.resolve(s.value).then(function(t){a("next",t)},function(t){a("throw",t)}):r(o.done?"return":"normal",o.value)}catch(p){r("throw",p)}}function r(t,e){switch(t){case"return":i.resolve({value:e,done:!0});break;case"throw":i.reject(e);break;default:i.resolve({value:e,done:!1})}i=i.next,i?a(i.key,i.arg):o=null}var i,o;this._invoke=n,"function"!=typeof e["return"]&&(this["return"]=void 0)}return"function"==typeof Symbol&&Symbol.asyncIterator&&(e.prototype[Symbol.asyncIterator]=function(){return this}),e.prototype.next=function(t){return this._invoke("next",t)},e.prototype["throw"]=function(t){return this._invoke("throw",t)},e.prototype["return"]=function(t){return this._invoke("return",t)},{wrap:function(t){return function(){return new e(t.apply(this,arguments))}},await:function(e){return new t(e)}}}(),e.asyncGeneratorDelegate=function(t,e){function n(n,a){return r=!0,a=new Promise(function(e){e(t[n](a))}),{done:!1,value:e(a)}}var a={},r=!1;return"function"==typeof Symbol&&Symbol.iterator&&(a[Symbol.iterator]=function(){return this}),a.next=function(t){return r?(r=!1,t):n("next",t)},"function"==typeof t["throw"]&&(a["throw"]=function(t){if(r)throw r=!1,t;return n("throw",t)}),"function"==typeof t["return"]&&(a["return"]=function(t){return n("return",t)}),a},e.asyncToGenerator=function(t){return function(){var e=t.apply(this,arguments);return new Promise(function(t,n){function a(r,i){try{var o=e[r](i),s=o.value}catch(p){return void n(p)}return o.done?void t(s):Promise.resolve(s).then(function(t){a("next",t)},function(t){a("throw",t)})}return a("next")})}},e.classCallCheck=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},e.createClass=function(){function t(t,e){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(t,a)&&(n[a]=t[a]);return n},e.possibleConstructorReturn=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e},e.selfGlobal=void 0===t?self:t,e.set=function a(t,e,n,r){var i=Object.getOwnPropertyDescriptor(t,e);if(void 0===i){var o=Object.getPrototypeOf(t);null!==o&&a(o,e,n,r)}else if("value"in i&&i.writable)i.value=n;else{var s=i.set;void 0!==s&&s.call(r,n)}return n},e.slicedToArray=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),e.slicedToArrayLoose=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){for(var n,a=[],r=t[Symbol.iterator]();!(n=r.next()).done&&(a.push(n.value),!e||a.length!==e););return a}throw new TypeError("Invalid attempt to destructure non-iterable instance")},e.taggedTemplateLiteral=function(t,e){return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))},e.taggedTemplateLiteralLoose=function(t,e){return t.raw=e,t},e.temporalRef=function(t,e,n){if(t===n)throw new ReferenceError(e+" is not defined - temporal dead zone");return t},e.temporalUndefined={},e.toArray=function(t){return Array.isArray(t)?t:Array.from(t)},e.toConsumableArray=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e Date: Sun, 3 Dec 2017 06:10:15 -0600 Subject: [PATCH 272/328] Automatic changelog generation for PR #4175 [ci skip] --- html/changelogs/AutoChangeLog-pr-4175.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4175.yml diff --git a/html/changelogs/AutoChangeLog-pr-4175.yml b/html/changelogs/AutoChangeLog-pr-4175.yml new file mode 100644 index 0000000000..1eed117c43 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4175.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - imageadd: "Construct shells have a new animated sprite" From d5a202c78f902f965577883ca5ef9b2a52ba0e5a Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Dec 2017 06:10:36 -0600 Subject: [PATCH 273/328] Automatic changelog generation for PR #4177 [ci skip] --- html/changelogs/AutoChangeLog-pr-4177.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4177.yml diff --git a/html/changelogs/AutoChangeLog-pr-4177.yml b/html/changelogs/AutoChangeLog-pr-4177.yml new file mode 100644 index 0000000000..f6e65ed068 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4177.yml @@ -0,0 +1,4 @@ +author: "Robustin" +delete-after: True +changes: + - balance: "Clockwork magicks will now prevent Bags of Holding from being combined on Reebe." From 6d65fd87149fa1a0298f98bc4e07b400a761da14 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Dec 2017 06:11:21 -0600 Subject: [PATCH 274/328] Automatic changelog generation for PR #4180 [ci skip] --- html/changelogs/AutoChangeLog-pr-4180.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4180.yml diff --git a/html/changelogs/AutoChangeLog-pr-4180.yml b/html/changelogs/AutoChangeLog-pr-4180.yml new file mode 100644 index 0000000000..fb6248b653 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4180.yml @@ -0,0 +1,4 @@ +author: "Robustin" +delete-after: True +changes: + - bugfix: "Flashes will now burn out AFTER flashing when they fail instead of being a ticking time bomb that waits to screw you over on your next attempt." From 13779a4b10a98b5fe6fc0cb86bbd66d6207d3e62 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Dec 2017 06:12:17 -0600 Subject: [PATCH 275/328] Automatic changelog generation for PR #4182 [ci skip] --- html/changelogs/AutoChangeLog-pr-4182.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4182.yml diff --git a/html/changelogs/AutoChangeLog-pr-4182.yml b/html/changelogs/AutoChangeLog-pr-4182.yml new file mode 100644 index 0000000000..6d0c949e11 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4182.yml @@ -0,0 +1,4 @@ +author: "Frozenguy5" +delete-after: True +changes: + - tweak: "The Particle Accelerator's wires can no longer be EMP'd" From dd99e8305ad85777e2768d067f4546a9dd2cd719 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 3 Dec 2017 06:14:14 -0600 Subject: [PATCH 276/328] Update plushes.dm --- code/game/objects/items/plushes.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index 29e3b59d3f..8bd5d570e2 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -503,9 +503,5 @@ icon_state = "plushie_slime" item_state = "plushie_slime" attack_verb = list("blorbled", "slimed", "absorbed") -<<<<<<< HEAD - squeak_override = list('sound/effects/blobattack.ogg' = 1) -======= squeak_override = list('sound/effects/blobattack.ogg' = 1) gender = FEMALE //given all the jokes and drawings, I'm not sure the xenobiologists would make a slimeboy ->>>>>>> 502905f... Plushie relationships! (#33184) From a96c9f1175cb8cf9d4f9d0b9a984bf0a71f2830b Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Dec 2017 06:14:37 -0600 Subject: [PATCH 277/328] Automatic changelog generation for PR #4186 [ci skip] --- html/changelogs/AutoChangeLog-pr-4186.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4186.yml diff --git a/html/changelogs/AutoChangeLog-pr-4186.yml b/html/changelogs/AutoChangeLog-pr-4186.yml new file mode 100644 index 0000000000..86951d81f1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4186.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - code_imp: "Cleans up some loc assignments" From 96a064258fac9937f54c87573756bd251be9cc33 Mon Sep 17 00:00:00 2001 From: checkraisefold Date: Sun, 3 Dec 2017 10:41:04 -0800 Subject: [PATCH 278/328] Spellcheck (#33214) --- code/modules/integrated_electronics/subtypes/manipulation.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index bc22204a2d..813b77d6c2 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -6,8 +6,8 @@ desc = "This somewhat complicated system allows one to slot in a gun, direct it towards a position, and remotely fire it." extended_desc = "The firing mechanism can slot in any energy weapon. \ The first and second inputs need to be numbers. They are coordinates for the gun to fire at, relative to the machine itself. \ - The 'fire' activator will cause the mechanism to attempt to fire the weapon at the coordinates, if possible. Mode is switch between\ - letal(TRUE) or stun(FALSE) modes.It uses internal battery of weapon." + The 'fire' activator will cause the mechanism to attempt to fire the weapon at the coordinates, if possible. Mode is switch between \ + lethal (TRUE) or stun (FALSE) modes.It uses internal battery of weapon." complexity = 20 w_class = WEIGHT_CLASS_SMALL size = 3 From b1e15a0da21e75b9a212d1ff150fa8050c59fed6 Mon Sep 17 00:00:00 2001 From: jammer312 Date: Sun, 3 Dec 2017 21:44:58 +0300 Subject: [PATCH 280/328] Crash to timers and INFINITY check to beams. (#33219) * beams * timers * >= instead of != * whooops --- code/controllers/subsystem/timer.dm | 3 +++ code/datums/beam.dm | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm index eca88d5126..3a2ca82bcd 100644 --- a/code/controllers/subsystem/timer.dm +++ b/code/controllers/subsystem/timer.dm @@ -357,6 +357,9 @@ SUBSYSTEM_DEF(timer) wait = max(wait, 0) + if(wait >= INFINITY) + CRASH("Attempted to create timer with INFINITY delay") + var/hash if (flags & TIMER_UNIQUE) diff --git a/code/datums/beam.dm b/code/datums/beam.dm index 252a305af2..c1a75c8b7e 100644 --- a/code/datums/beam.dm +++ b/code/datums/beam.dm @@ -29,7 +29,8 @@ icon = beam_icon icon_state = beam_icon_state beam_type = btype - addtimer(CALLBACK(src,.proc/End), time) + if(time < INFINITY) + addtimer(CALLBACK(src,.proc/End), time) /datum/beam/proc/Start() Draw() From 5621507b4a0f96fb2dc43851ab53177acb697133 Mon Sep 17 00:00:00 2001 From: Ashe Higgs Date: Sun, 3 Dec 2017 13:53:58 -0500 Subject: [PATCH 282/328] Adds emergency lights, built into light fixtures --- .../gamemodes/malfunction/Malf_Modules.dm | 27 ++++ code/modules/power/apc.dm | 10 ++ code/modules/power/cell.dm | 14 ++ code/modules/power/lighting.dm | 125 +++++++++++++++++- .../research/designs/autolathe_designs.dm | 8 ++ icons/mob/actions/actions_AI.dmi | Bin 8198 -> 8853 bytes tgui/src/interfaces/apc.ract | 9 ++ 7 files changed, 187 insertions(+), 6 deletions(-) diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 9be9e59cab..1c17893a28 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -734,6 +734,33 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( owner.playsound_local(owner, "sparks", 50, 0) +//Disable Emergency Lights +/datum/AI_Module/small/emergency_lights + module_name = "Disable Emergency Lights" + mod_pick_name = "disable_emergency_lights" + description = "Cuts emergency lights across the entire station. If power is lost to light fixtures, they will not attempt to fall back on emergency power reserves." + cost = 10 + one_purchase = TRUE + power_type = /datum/action/innate/ai/emergency_lights + unlock_text = "You hook into the powernet and locate the connections between light fixtures and their fallbacks." + unlock_sound = "sparks" + +/datum/action/innate/ai/emergency_lights + name = "Disable Emergency Lights" + desc = "Disables all emergency lighting. Note that emergency lights can be restored through reboot at an APC." + button_icon_state = "emergency_lights" + uses = 1 + +/datum/action/innate/ai/emergency_lights/Activate() + for(var/obj/machinery/light/L in GLOB.machines) + if(L.z in GLOB.station_z_levels) + L.no_emergency = TRUE + INVOKE_ASYNC(L, /obj/machinery/light/.proc/update, FALSE) + CHECK_TICK + to_chat(owner, "Emergency light connections severed.") + owner.playsound_local(owner, 'sound/effects/light_flicker.ogg', 50, FALSE) + + //Reactivate Camera Network: Reactivates up to 30 cameras across the station. /datum/AI_Module/small/reactivate_cameras module_name = "Reactivate Camera Network" diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 815da3fbdb..7f3b428978 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -89,6 +89,7 @@ var/auto_name = 0 var/failure_timer = 0 var/force_update = 0 + var/emergency_lights = FALSE var/update_state = -1 var/update_overlay = -1 var/icon_update_needed = FALSE @@ -760,6 +761,7 @@ "coverLocked" = coverlocked, "siliconUser" = user.has_unlimited_silicon_privilege || user.using_power_flow_console(), "malfStatus" = get_malf_status(user), + "emergencyLights" = !emergency_lights, "powerChannels" = list( list( @@ -899,6 +901,14 @@ failure_timer = 0 update_icon() update() + if("emergency_lighting") + emergency_lights = !emergency_lights + for(var/area/A in area.related) + for(var/obj/machinery/light/L in A) + if(!initial(L.no_emergency)) //If there was an override set on creation, keep that override + L.no_emergency = emergency_lights + INVOKE_ASYNC(L, /obj/machinery/light/.proc/update, FALSE) + CHECK_TICK return 1 /obj/machinery/power/apc/proc/toggle_breaker() diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index c8e58791e2..acbebea458 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -343,3 +343,17 @@ /obj/item/stock_parts/cell/beam_rifle/emp_act(severity) charge = Clamp((charge-(10000/severity)),0,maxcharge) + +/obj/item/stock_parts/cell/emergency_light + name = "miniature power cell" + desc = "A tiny power cell with a very low power capacity. Used in light fixtures to power them in the event of an outage." + maxcharge = 120 //Emergency lights use 0.2 W per tick, meaning ~10 minutes of emergency power from a cell + materials = list(MAT_GLASS = 20) + rating = 1 + w_class = WEIGHT_CLASS_TINY + +/obj/item/stock_parts/cell/emergency_light/Initialize() + . = ..() + var/area/A = get_area(src) + if(!A.lightswitch || !A.light_power) + charge = 0 //For naturally depowered areas, we start with no power diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 98fb2ed233..635a17056d 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -49,12 +49,22 @@ var/fixture_type = "tube" var/sheets_refunded = 2 var/obj/machinery/light/newlight = null + var/obj/item/stock_parts/cell/cell -/obj/structure/light_construct/New(loc, ndir, building) - ..() + var/cell_connectors = TRUE + +/obj/structure/light_construct/Initialize(mapload, ndir, building) + . = ..() if(building) setDir(ndir) +/obj/structure/light_construct/Destroy() + QDEL_NULL(cell) + return ..() + +/obj/structure/light_construct/get_cell() + return cell + /obj/structure/light_construct/examine(mob/user) ..() switch(src.stage) @@ -64,9 +74,38 @@ to_chat(user, "It's wired.") if(3) to_chat(user, "The casing is closed.") + if(cell_connectors) + if(cell) + to_chat(user, "You see [cell] inside the casing.") + else + to_chat(user, "The casing has no power cell for backup power.") + else + to_chat(user, "This casing doesn't support power cells for backup power.") + return /obj/structure/light_construct/attackby(obj/item/W, mob/user, params) add_fingerprint(user) + if(istype(W, /obj/item/stock_parts/cell)) + if(!cell_connectors) + to_chat(user, "This [name] can't support a power cell!") + return + if(W.flags_1 & NODROP_1) + to_chat(user, "[W] is stuck to your hand!") + return + user.dropItemToGround(W) + if(cell) + user.visible_message("[user] swaps [W] out for [src]'s cell.", \ + "You swap [src]'s power cells.") + cell.forceMove(drop_location()) + user.put_in_hands(cell) + else + user.visible_message("[user] hooks up [W] to [src].", \ + "You add [W] to [src].") + playsound(src, 'sound/machines/click.ogg', 50, TRUE) + W.forceMove(src) + cell = W + add_fingerprint(user) + return switch(stage) if(1) if(istype(W, /obj/item/wrench)) @@ -124,6 +163,10 @@ newlight = new /obj/machinery/light/small/built(loc) newlight.setDir(dir) transfer_fingerprints_to(newlight) + if(cell) + newlight.cell = cell + cell.forceMove(newlight) + cell = null qdel(src) return return ..() @@ -173,6 +216,11 @@ var/rigged = 0 // true if rigged to explode + var/obj/item/stock_parts/cell/cell + var/start_with_cell = TRUE // if true, this fixture generates a very weak cell at roundstart + var/emergency_mode = FALSE // if true, the light is in emergency mode + var/no_emergency = FALSE // if true, this light cannot ever have an emergency mode + // the smaller bulb light fixture /obj/machinery/light/small @@ -192,8 +240,14 @@ /obj/machinery/light/built icon_state = "tube-empty" + start_with_cell = FALSE +<<<<<<< HEAD /obj/machinery/light/built/New() +======= +/obj/machinery/light/built/Initialize() + . = ..() +>>>>>>> fe816da... Adds emergency lights, built into light fixtures (#33213) status = LIGHT_EMPTY update(0) ..() @@ -208,8 +262,15 @@ // create a new lighting fixture +<<<<<<< HEAD /obj/machinery/light/New() ..() +======= +/obj/machinery/light/Initialize() + . = ..() + if(start_with_cell && !no_emergency) + cell = new/obj/item/stock_parts/cell/emergency_light(src) +>>>>>>> fe816da... Adds emergency lights, built into light fixtures (#33213) spawn(2) switch(fitting) if("tube") @@ -228,13 +289,17 @@ if(A) on = FALSE // A.update_lights() + QDEL_NULL(cell) return ..() /obj/machinery/light/update_icon() switch(status) // set icon_states if(LIGHT_OK) - icon_state = "[base_state][on]" + if(emergency_mode) + icon_state = "[base_state]_emergency" + else + icon_state = "[base_state][on]" if(LIGHT_EMPTY) icon_state = "[base_state]-empty" on = FALSE @@ -249,7 +314,7 @@ // update the icon_state and luminosity of the light depending on its state /obj/machinery/light/proc/update(trigger = 1) - update_icon() + emergency_mode = FALSE if(on) if(!light || light.light_range != brightness) switchcount++ @@ -261,10 +326,15 @@ burn_out() else use_power = ACTIVE_POWER_USE - set_light(brightness) + set_light(brightness, 1, "#FFFFFF") + else if(has_emergency_power() && !turned_off()) + use_power = IDLE_POWER_USE + emergency_mode = TRUE + process() //Force a process tick to update the light immediately else use_power = IDLE_POWER_USE set_light(0) + update_icon() active_power_usage = (brightness * 10) if(on != on_gs) @@ -276,6 +346,12 @@ removeStaticPower(static_power_used, STATIC_LIGHT) +/obj/machinery/light/process() + if(has_power() && cell) + cell.charge = min(cell.maxcharge, cell.charge + 0.2) //Recharge emergency power automatically while not using it + if(emergency_mode && !use_emergency_power(0.2)) + update(FALSE) //Disables emergency mode and sets the color to normal + /obj/machinery/light/proc/burn_out() if(status == LIGHT_OK) status = LIGHT_BURNED @@ -289,6 +365,9 @@ on = (s && status == LIGHT_OK) update() +/obj/machinery/light/get_cell() + return cell + // examine verb /obj/machinery/light/examine(mob/user) ..() @@ -301,6 +380,8 @@ to_chat(user, "The [fitting] is burnt out.") if(LIGHT_BROKEN) to_chat(user, "The [fitting] has been smashed.") + if(cell) + to_chat(user, "Its backup power charge meter reads [(cell.charge / cell.maxcharge) * 100]%.") @@ -384,6 +465,10 @@ drop_light_tube() new /obj/item/stack/cable_coil(loc, 1, "red") transfer_fingerprints_to(newlight) + if(cell) + newlight.cell = cell + cell.forceMove(newlight) + cell = null qdel(src) /obj/machinery/light/attacked_by(obj/item/I, mob/living/user) @@ -415,6 +500,11 @@ if(BURN) playsound(src.loc, 'sound/items/welder.ogg', 100, 1) +// returns if the light has power /but/ is manually turned off +// if a light is turned off, it won't activate emergency power +/obj/machinery/light/proc/turned_off() + var/area/A = get_area(src) + return !A.lightswitch && A.power_light // returns whether this light has power // true if area has power and lightswitch is on @@ -422,6 +512,27 @@ var/area/A = get_area(src) return A.lightswitch && A.power_light +// returns whether this light has emergency power +// can also return if it has access to a certain amount of that power +/obj/machinery/light/proc/has_emergency_power(pwr) + if(no_emergency || !cell) + return FALSE + if(pwr ? cell.charge >= pwr : cell.charge) + return status == LIGHT_OK + +// attempts to use power from the installed emergency cell, returns true if it does and false if it doesn't +/obj/machinery/light/proc/use_emergency_power(pwr = 0.2) + if(!has_emergency_power(pwr)) + return FALSE + if(cell.charge > 300) //it's meant to handle 120 W, ya doofus + visible_message("[src] short-circuits from too powerful of a power cell!") + burn_out() + return FALSE + cell.use(pwr) + set_light(brightness * 0.25, max(0.5, 0.75 * (cell.charge / cell.maxcharge)), "#FF3232") //RGB: 255, 50, 50 + return TRUE + + /obj/machinery/light/proc/flicker(var/amount = rand(10, 20)) set waitfor = 0 if(flickering) @@ -441,7 +552,9 @@ // ai attack - make lights flicker, because why not /obj/machinery/light/attack_ai(mob/user) - src.flicker(1) + no_emergency = !no_emergency + to_chat(user, "Emergency lights for this fixture have been [no_emergency ? "disabled" : "enabled"].") + update(FALSE) return // attack with hand - remove tube/bulb diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 03424346e8..77150a44d8 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -799,3 +799,11 @@ materials = list(MAT_METAL = 300, MAT_GLASS = 200) build_path = /obj/item/device/slime_scanner category = list("initial", "Misc") + +/datum/design/miniature_power_cell + name = "Light Fixture Battery" + id = "miniature_power_cell" + build_type = AUTOLATHE + materials = list(MAT_GLASS = 20) + build_path = /obj/item/stock_parts/cell/emergency_light + category = list("initial", "Electronics") diff --git a/icons/mob/actions/actions_AI.dmi b/icons/mob/actions/actions_AI.dmi index c6e4e1dae721a5f603f3164a4fea2830b789e566..2ddc7923cc3e56b3df04a1d90612c3f5c2265117 100644 GIT binary patch literal 8853 zcmai4^;;WFv!#Yia-h1>0ZW z$V<`I)5gQW&C9{{GXUV16Q3mac|aCVX(>z3s9uRQsd1_dr>ZfSD{d-|(SWt#ulrXI z1aBwcee?M5-vLkeV0`*f$R6HxrTZ&~Pm~3rw{10CXEZh8I1@cwAGS@LWK@I&Lvajr zN+5)6^bUVzxeOH-@kmch-QS;ZD4+)zDyoahp-29LGO}Ttr6Dd>R-{Uk#)Fm36{ec5 zl&~ehwk(O*Ef$Up$GURLznLk55({^si5q=ryQ;D1>9G`;;9<+6Ij7!0Jd@88Z|~;W ztq%T9e)6nf>zO5B&4(|p1bVaJjl80|3zp)T<{Fc>63#bKcfh7q+$WcRdWKRZ>{A`- z?ewDX`>xvhOf9Pe01N;%MLB)HoYUL@Ka$<`Tbb-%R;kX@atzT)Xhj5AGZ;bzEL@Ak zAM`I8KqW?6T7_u_^VNL6&G{5-%Uh&_3Y(SDs~1&bm5vKXVwCuHMiwb}&kdWw-=vw}zybSR^6%x3W@_hazu=%(i*>P@xXHcDfnMKNFfCWHD zN1tC>ij7{UEuoT=Wmq^6ZL^taIHeI3O;5G<%Bl8#yI+8kqKh&%Ia%D=N*3(0+A2ow zl}AW0QJsIzIh&yTb(1l@t`nl0om{AgHD$okkaF&-M-=ZSZVJYaNM&sVU9gPZWJnJDo0{ne%88lw8^aBJN+9>U!#~PHk(F(+yJqWPAl;ZMsYfSn3x(Ui?jG` zaq<_I^t83NcG{lz3QdB4f7Mb~Wo42_Py+F>|A9ittm{vfmX-wgS;E`fMa6h{c@s*o zLOhw@yq=lt@U&}KJ#D78iH@fH*slOO9WerEvJxjJ>*T~HyuzlSdSls?Pkfn@nkC`M z+6APU@r>QH_rlh`yC^Pt1%M;C+C+0bcWUZvhGcc+->h4BH?(>+5U>+s%spKl&P9t* zC9gRK21=^Dj2Te1)|PgiNHaY+-EnsAUTt(9VW0YHcc`Jd+uwj8)*DCl65`=wYfc<&m9ap^Kq5Rr5#w3307WI0q_iZO3u^p~M`Tz? zAHdWn0dGtoYEpW-n*1U&Q6uYYd~%49fUpgTyjSzw^?5I%cCO(U#jxy;tj}@(u8obe z0Q0nxQOnLZkCWi9unv5`OZ;5tWz-ih>Tk%4u%smb*D993zQ3HCXOY;GpDJP2_QlTFdps^z6A_<9Pow6u_rkj%_&oLvTe zA%+vDpWmCOW(cGU#K#W}4OzxUhisVVpIv50K~Mva#smI7?)t{iRTOR{ z`yi3P+-e<32r^L=T&FmUjzhV^E@OKW@i~rJMKM59YZ*pa{cu=SEtw$hw^Mt&ae09M zK!+K427%P~EjEDnfoHHlxnS(Fplp7s%L2sFmDjV__IA$j?kQFFY!k&O6S(t;vyhiH zLPe9cuhzn@?XtYOmPj&s#)(bwDC8x6v<%w#VD}wspttfv_g$IaSxc$HE!?p*3 z2CJ^kr?)pZMC9abxchj@{;%F5d%1eqwz|E&t*W6>+}F2x_#vDBd!{O}-D`1dEzUXm zmo%ab&q*t!x!=ytK9lj8OLErzBO)d~JU?gS(1~Oxm%-@(Kzs zM);`45{NNZv;7etXOWKXmVTB&ugB}$aqZ;Qu4C1CskRS5B>#9DPW`}>NzHc z+$5>&RlfyjdW^#oEmt5Nx`6`8ucf~_zMGlU`Q|wS#*L|++^W{I%N5x0Hmy_StcJ}g zlTBrDl%KD6L4u6U4^B@0nwUImNI%&e>adf}J!g8S?X8wi?597J+w^sHt+Gkv{b_Zf z<}&zEP*j8(yr$u?+~V|2G7P=w*2&)9%`gnN6U`p*v|ot-&)vy{eCIc9vDvE68YE|# zfc6DFkIW0%%eSeACueA}O6}{8w8;`QJc#n%laJ8bz4j8r?hf*?i^Dv`_f_N9c8meH zXRo5=8XMna3D^k-WOKc~PT1ip>Ly41XlG~BwCs1c+t(O)2c)5-{-Moj&@`F&iBL!q zed==?v29$+?F%(cO+1LyEsgI6i0!|+qoad&n~RUnZf`1!PThT^TzE@sQF1%w2A<(9 zY3v;_FuJ9p#fEyJ4;6;%PJ!qB8=%90sF~~_XoGy7f2VZC&9(IrX^)Bix#3lgeHqvR zvnJKC<6(}48N28PvDXeL)$oL=1YAP|V>=!syj))LPfmwYWeDS!mo@h2L(<_)w?H4vzbNbM=|BT|+wQ$si73$Il3z{{_ z{KYZjuP*IVB$OM`XA%7Cljpc@zAGI~frxZ&$<0SqVzzSLhO!qkDKY?Bj^>`+eg}k@ zY;afiGya!#SG>m}jTKRXY%37>I#miwv;zJulw&YQCsl5br!sKpFFb>z(1JH5IcnG5t* zXL%PdZ29And(Yj4MrI)z1Uj#=fM*4~(4K?1ZU z_i>q0`^Bg<0w1uj&@pJpY!h{Fdiyrc8$eQYA9InT*Z}*%&FNYJ2G1@I+7=dkFT2?9g^(2dVcL;`Ngt?9 zme<`Zhxr}Vw8JAFIXAMwiF7Bl2vT!>eMP-F#>S@d!FswhH|-=j?F!?+|Kdr&U~9N_BV-bUQWnw`o4naB1K83lY1n zOwP%nS@NW!uG~X&H`6owS8^9L(Yj?fUURiTl_lvwB=zEvfHJ)1nPxoIL)51}tB%Qp zqS*|u-}h|h4wIurm)i(Uorglb1`GM}hHw3dx#ZbyU>c`iTs}prO~c$0D9#SjIQ^Mz zbJ77r>uXdICTjiM0*lY#Tcnt+q@UjnNy2E{WyHjcrR{ze_Q2;*DDe>xndfdmQ4&({ z*Kz8R$y*b#wQx4*@p>s2qa@w7l8t>{nBJH3I6>lU=GvE|HER0>do4wgN8u5zd}aDJ zIxc+cE6}LkG9;(leMh-(bu(9{M+e&dd5xuG;oco6&^XB{n!q?`&%w4aDPH9gD21t;1Wzi&E}r_38y}=LW2l zF(Z3-!gbZ5vSBC)(SFQdU3gi3i_MYvD9t`-B>ismL*WXlDT>h1gC(IK;#C&&>lOVE zH4*WH2#i>zdd`Hea6Qt-wi=-X+z1IPzdH(*SWM@ObmmSaCWXZ(c|Oe z_W{uDx^FI8g|pTXM{!wM#OAZKXgs10cR$EEv%6dJC7mQYAJI3-LJ6(i%DE!VTYZeE zZ9NFDG(F5o{zxQxW#xl$7z54^!xmFr_0*yAX~VqomO5o33sF&>KQBeZ0I5 zdJSkPe-c+#)7H#njix|k4f<_-Ft)&q}mJ`mYNr~dj4r#ji!BKVH9`chRM-r4G6(Do#f0BUK zM4_t36Skqh-4d5|%+bV#Wj zIqP>Ao4#s6XMw$cuixGbypGY5=Rl2)uu<`*-+$+x%Z*z^aOGF5z3eOTGEK zGzP7?om3bSR`h6@WZQHL=-)`a93=T{A_r|Hm2|&#_HmkOxn!+vVC}6+gJQpGBwmRkJM zpfv=o*Q5lG&@LVZ;JvlCwA8@~k%2tfg1X#=AR)Js`e6 z{`hjqj_>@U&D*Q3{j#7cuWvB;VWE)<37|cC54NC-i%Us)`K7s1czdX3`O{wK^0}i! zp*p|h&dZ)tSsq4vDL0;#6>(Kn5_0^~cxt|K5gLh!qjVrZTeOWJc>3MwclFX=+RIBM zTcsjTBCc!fXU`U5*L}IuIx(6Z-rwleOB`=|&=oG|3YwhisqJPf=jQ1yI-!NH98L(f z#AB6`#Mz%-8Xz>FYw{DVpEIOp8qZ^OKCZv-D6Btc>d$>967YHY%k&METzR`Pbx<#=N^hNAl^a7^hdrm9e2=n^Q`QmZ-+Og39;q z@UZd<7*&0Kf6}9wcGB~tj2BvdbBxv%Ro-QsdB&Y7InVdN~gyaN**0fET za4z>Dw;;a}Vs$O+w%bWLZaEsT=YB|u(`aZAIq-i+q3U}3U8~Eb_h!g>=d6 z5K0O+^RGX4L(+sxofI4_n(###%_Ke!#c{y6EpBX}1J0*l{+5SndMBLA@cq1b7EPW) z5K$QS9xWhHhATN+)-IEjL*YrbAy2Bt2K zvQ`VVGvYgHH?vHL8SR-$9oz2TxizDG?=G+9$L`K`&vWBn^D!~~AW71^Ax!Jln#sWc zi)bzHoTjnC%(6u{J%%d9V53wU<6t(Rpuvd~&c$KNEXn$3A@07*(SZe#7?hKZM?}7n zUk}CD$D`&BL6Jq!dfp+~^GxrLAHWRw{J?4-xKA%tu1X!@(XAvfJ375&K1Tu_Pc_rb z$&72Zoc^{^ac}CnQM-AeV4`%}C|a zEnsZ3#=OixUoDAeCCuAf%&>1m9QDJ#Bkk(x zBX4dnQY1K5JF~v83#GZNpLo3W_jepS4KPhBX}cuA3Vnag31gLZyLQ_;B9sCtw6K{r zf5d+O{{2+GOnz-G@6pjwrVRKgsxLN-Ij6#&U(z(c=Nnv9gBmo}+S^10ybcd2MHAwG%H+aNaKUdZArlh8-9UWO8UXT?yiJGn43W8@g9kn}a z!Ir_E`xuAxZV7P~O(qFzf3L(f%}66Ao+^0MJ;=9499yUYu^mr={*v@jw2@U+oK;m- zf{AT>8^s+pRTTx*)sqffrCd7GIR=KqA4*D?K~fpgL=(t&t(2laphbe}W^}4^%Q8kg z5iWZo%07BF-}A?IcXM$~{oH@ug(XLF>*D!BJD{knjP+fvxKcoXgisfd-)`|^;wVwL zC+^+9_REW;agzA;jo5J#HdpEdp=1dblU8a+gpG2rlG4xW0x2bqB<;RC?LPBtQU0vc z*xULa533&8?^ceK{so`as;Q|J_4b;ZdlI@%|MTaT`h$dkWSXbs@RBcgB8{$>s)kd9 z#*HtLoYeGUd(_(>i#X<|Jg%JFucQx>@j6=V`&os|Qpw+bqM1hE+`MWrFM4WO+4} z0t*v?Wofz(F6c|Jz02A9JDy51m2m5iH$7ngv>j$bjlJhrwrl5v!>WHX2wj$+I+Gd= z>x3L3L)=f%umeobqRnq8^vtZ9p`qI5rPMh~H3I(GMdcQ0uZXM#LB2A^Yn8V?UgkfW zw(qOQ8FK9t1DLQ3_2il&0R>? zUx7@f^O+zp(qjd#F&h4t~nF z(fw$L|2*0$ckRPFOPv#+w!gg^h{MNoqJzIz-I+7v2m80HKTuu#o8-f7TldL+_+h@; zsr!0V$?8~Yl83A9{t+)1qsX&dlf~DA39r??{Y;^#xTu@13vqP|Y=87CM)vLq?$vaM zS@qT8?og+|0aNZe-M!wWn+u+3qFR$3_ea$oyBQ{MC=gt6{D&5~hQG{{31juF|5{t%7t%`)}NxMXs?nBVv@W zdAieq#ej?vVyOdCdcQ;TY8W!0BFF|;UuK5E2>CQmnp9!mLS5%AHK*xN+r{d3kbP0e727hkaQ3;zCK5H~GX~NJ1Z__f+~QtJ8R5&M4-M>JC#YF;8OycEsf;y}QnX zP|7gU60Am&581iN1!92aV!dK#Y#BbN6>JZ3NEHm(hed@m+{6Ke6o%4`TZ;u-{?7OnMIK4z>mhMPR&&T!Sq9C!R@z-J2zG)9J+qj1C@*0` zJ3c%1_(zXi!s=a=1sF6mx~+}#N&9Y5;q$6U@d6?2@7)Iz6VQIHFY2e`#`86GS1l2V zRv8{}8xkj+vY2CAoHAC4_mjwbE(fQFdq|V2>cGSvOYnt=wApJUCH3`91K)ekMA|9O zB9Lo`ZINfcza1;=e#|#af6-_=35bL*{xBZQ;4wk{EwFK|oYnojv}7(AHOO6i+JAx_ z{{XEd$N#VdVzL(89tF)jd$ghh)IBV~MAC+Qk)UWB8jd1+ zHEMOHM29ULP$)ETmgcJsni| zEG)PhC{x+m+775H`klV5<}miDBLHwbxgvoV(ZfZnWdJvX4SN zW1Z{7zc{Y@P|3^N&tgny`@MT%los2&j(fu4;mB$QArxo=%g*1&urSrnxId-V?&)ch zlF0;ND9w3}+bh`yO~>(X@-{pY>%DY@XNI0SH633<&=dH%o<%jtZ7-4IqP>RyMX~io ze#W}#rd=J_FCE+qbvgY_e3SOAPs*~=Woi8}sC-8|IVp+Y&1$t_oiLhS;QzvYWN)=Z zZ5wz?6r!;ocj@<3>Nx^i*Ff{>(NQ*3iPeKF)6z*5Aa^Swp7J3pfGZ4I;ybXFk2Rck z3Oy<*`S#Z)9~T>NyXFZ2HKfTBB_FJB#S%-2b~7~IBINnmv=c9wP5pnqefw5WSlHtM z?(XQb#%XWiLGr_!W(&mu8vU3-*+Yyl=6uV0yyt%{1cbq`!@44 zvmKMHe}Vnl!;zPYe#x_ctoL@88v1xsk?0IslPGbN{_1`Z&!3C~EWzE5;I7o~VbFQl zu`*TuJGKAJcl#rs0Sq>4B;{U*MiaN;Sij(IF>u!ps$bp^AT7hlDdU6QHPc=Co#1{? zB^3T)0c61a^mx%gLjO6GsjsJJvxcA)?l$+YX;&*CK*lG4k4@_f^m=a~H_la>&TjA^ z8pswsL3|`M;9vdMtwqA;PxqG&%MP&wBww=9!D}2^>P>4j`&}SQ$2E9#=k_3o_=jTq3N5v>d7r7OX8hi7v7L6WY0(Vci4l*c16gj7(FQM_)|_vd zRHvy}ulgB#HF$I7EWk7l)2ZEsbrw z`&ef)aGaHZQqB`K$p0V1*2A+pmHaj^E1HeC3wy&azh82yf5~i6F$%VlSN}hYn7Od| zs3@#H)D=8@{El37r;c9z`d+gtK7GUBQ*%r=73%oNRU)|MF;)rz9gT%-Ni_puSkJ~AQJdAXorYs%ZrP^rZkse1pbZIEANy*qZ>PB<5*}S zo+HXn#Ued@BL#P~i01AM>NUa>_})%xsaqAI;1cw&p?Pziv7IzTH&AP;H>E9NpNBK? zI%b9*;rMCFXCs0#0BPzQ+24F+B)l|w0ac+NM{FbwVQ7n)o~xOZviCsif=b(C?L=J{ z?yTe!&)oa%z?aE6?+=g%BqaVj3xM0-!c#VM?^6klUN)Ripc@uYgsGuw?;}F#5E;iB z;qMVNbOwz)kAV6A{6{&B{13iCvPai}k5v7qgWt4cG)_?#?(!~{p768k9XAod)tII& z=Ru#x=53^=?4iQKn#kEbK3`(>A!Mvw1wlm=DbKYC!z126=3D^y#AK6K$mn++$%bP9 zeZ(-UcWB8D_3y{aeyh;0OBc?*GFMLJj*x6jU7{!}0*g~FrHZrY$YGHiH^Qyt#2Qnt ztZ<;r{n$?UZ@*kNX2^alCSF(&4`IZxh_E|h0W?=e`+1t)%k1RZ;WJqN3u)Om*=56+ z*WA4gv2#`J+FBS`!yltAs@i9W%rhv-ELE`~n0Umx1E~LR@g!pwwDM@7&k%<^ZURtK LdZ$<`ZyEYOOr4{T literal 8198 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 b=MB3xxf=^%FEIgjun+hkuO?S3V;cNFF}mC} diff --git a/tgui/src/interfaces/apc.ract b/tgui/src/interfaces/apc.ract index 686d20755a..fb1d7d2799 100644 --- a/tgui/src/interfaces/apc.ract +++ b/tgui/src/interfaces/apc.ract @@ -121,6 +121,15 @@ {{/if}} {{/if}} + + + {{#if data.locked && !data.siliconUser}} + {{data.emergencyLights ? "Enabled" : "Disabled"}} + {{else}} + {{data.emergencyLights ? "Enabled" : "Disabled"}} + {{/if}} + + {{#if data.locked && !data.siliconUser}} From 29ba71765c27116481e56efa36c141e1aadc5a99 Mon Sep 17 00:00:00 2001 From: MoreRobustThanYou Date: Sun, 3 Dec 2017 13:55:03 -0500 Subject: [PATCH 283/328] Datumizes saymodes --- code/__DEFINES/is_helpers.dm | 2 + code/__DEFINES/say.dm | 8 +- code/controllers/subsystem/radio.dm | 7 ++ code/datums/saymode.dm | 112 ++++++++++++++++++ code/game/gamemodes/blob/blobs/blob_mobs.dm | 7 -- .../gamemodes/changeling/powers/linglink.dm | 2 +- .../gamemodes/miniantags/bot_swarm/swarmer.dm | 7 -- code/modules/mob/living/brain/say.dm | 2 +- code/modules/mob/living/living.dm | 13 +- code/modules/mob/living/say.dm | 82 ++----------- code/modules/mob/living/silicon/ai/say.dm | 9 -- code/modules/mob/living/silicon/say.dm | 11 -- .../simple_animal/friendly/drone/say.dm | 8 -- code/modules/mob/say.dm | 85 +++++++++++++ tgstation.dme | 1 + 15 files changed, 240 insertions(+), 116 deletions(-) create mode 100644 code/datums/saymode.dm diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 1e5e994636..77425e14dd 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -189,3 +189,5 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list( /obj/item/stack/sheet/plasmarglass))) #define is_glass_sheet(O) (is_type_in_typecache(O, GLOB.glass_sheet_types)) + +#define isblobmonster(O) (istype(O, /mob/living/simple_animal/hostile/blob)) \ No newline at end of file diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index d30eb36132..74a1669686 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -49,4 +49,10 @@ #define LOGCHAT "chat" #define LOGASAY "adminsay" #define LOGCOMMENT "comment" -#define LOGOOC "ooc" \ No newline at end of file +#define LOGOOC "ooc" + + +#define LINGHIVE_NONE 0 +#define LINGHIVE_OUTSIDER 1 +#define LINGHIVE_LING 2 +#define LINGHIVE_LINK 3 \ No newline at end of file diff --git a/code/controllers/subsystem/radio.dm b/code/controllers/subsystem/radio.dm index de605cb554..43803aa647 100644 --- a/code/controllers/subsystem/radio.dm +++ b/code/controllers/subsystem/radio.dm @@ -3,6 +3,13 @@ SUBSYSTEM_DEF(radio) flags = SS_NO_FIRE|SS_NO_INIT var/list/datum/radio_frequency/frequencies = list() + var/list/saymodes = list() + +/datum/controller/subsystem/radio/PreInit(timeofday) + for(var/_SM in subtypesof(/datum/saymode)) + var/datum/saymode/SM = new _SM() + saymodes[SM.key] = SM + return ..() /datum/controller/subsystem/radio/proc/add_object(obj/device, new_frequency as num, filter = null as text|null) var/f_text = num2text(new_frequency) diff --git a/code/datums/saymode.dm b/code/datums/saymode.dm new file mode 100644 index 0000000000..6aa1c48d8a --- /dev/null +++ b/code/datums/saymode.dm @@ -0,0 +1,112 @@ +/datum/saymode + var/key + var/mode + +//Return FALSE if you have handled the message. Otherwise, return TRUE and saycode will continue doing saycode things. +//user = whoever said the message +//message = the message +//language = the language. +/datum/saymode/proc/handle_message(mob/living/user, message, datum/language/language) + return TRUE + + +/datum/saymode/changeling + key = "g" + mode = MODE_CHANGELING + +/datum/saymode/changeling/handle_message(mob/living/user, message, datum/language/language) + switch(user.lingcheck()) + if(LINGHIVE_LINK) + var/msg = "[user.mind]: [message]" + for(var/_M in GLOB.mob_list) + var/mob/M = _M + if(M in GLOB.dead_mob_list) + var/link = FOLLOW_LINK(M, user) + to_chat(M, "[link] [msg]") + else + switch(M.lingcheck()) + if(LINGHIVE_LINK, LINGHIVE_LING) + to_chat(M, msg) + if(LINGHIVE_OUTSIDER) + if(prob(40)) + to_chat(M, "We can faintly sense an outsider trying to communicate through the hivemind...") + if(LINGHIVE_LING) + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + var/msg = "[changeling.changelingID]: [message]" + log_talk(src,"[changeling.changelingID]/[user.key] : [message]",LOGSAY) + for(var/_M in GLOB.mob_list) + var/mob/M = _M + if(M in GLOB.dead_mob_list) + var/link = FOLLOW_LINK(M, user) + to_chat(M, "[link] [msg]") + else + switch(M.lingcheck()) + if(LINGHIVE_LINK) + to_chat(M, msg) + if(LINGHIVE_LING) + to_chat(M, msg) + if(LINGHIVE_OUTSIDER) + if(prob(40)) + to_chat(M, "We can faintly sense another of our kind trying to communicate through the hivemind...") + if(LINGHIVE_OUTSIDER) + to_chat(user, "Our senses have not evolved enough to be able to communicate this way...") + return FALSE + + +/datum/saymode/xeno + key = "a" + mode = MODE_ALIEN + +/datum/saymode/xeno/handle_message(mob/living/user, message, datum/language/language) + if(user.hivecheck()) + user.alien_talk(message) + return FALSE + + +/datum/saymode/vocalcords + key = "x" + mode = MODE_VOCALCORDS + +/datum/saymode/vocalcords/handle_message(mob/living/user, message, datum/language/language) + if(iscarbon(user)) + var/mob/living/carbon/C = user + var/obj/item/organ/vocal_cords/V = C.getorganslot(ORGAN_SLOT_VOICE) + if(V && V.can_speak_with()) + V.handle_speech(message) //message + V.speak_with(message) //action + return FALSE + + +/datum/saymode/binary //everything that uses .b (silicons, drones, blobbernauts/spores, swarmers) + key = "b" + mode = MODE_BINARY + +/datum/saymode/binary/handle_message(mob/living/user, message, datum/language/language) + if(isswarmer(user)) + var/mob/living/simple_animal/hostile/swarmer/S = user + S.swarmer_chat(message) + return FALSE + if(isblobmonster(user)) + var/mob/living/simple_animal/hostile/blob/B = user + B.blob_chat(message) + return FALSE + if(isdrone(user)) + var/mob/living/simple_animal/drone/D = user + D.drone_chat(message) + return FALSE + if(user.binarycheck()) + user.robot_talk(message) + return FALSE + return FALSE + + +/datum/saymode/holopad + key = "h" + mode = MODE_HOLOPAD + +/datum/saymode/holopad/handle_message(mob/living/user, message, datum/language/language) + if(isAI(user)) + var/mob/living/silicon/ai/AI = user + AI.holopad_talk(message, language) + return FALSE + return FALSE \ No newline at end of file diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index 5572bbd9d8..c5c813ecfc 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -56,13 +56,6 @@ return 1 return ..() -/mob/living/simple_animal/hostile/blob/handle_inherent_channels(message, message_mode) - if(message_mode == MODE_BINARY) - blob_chat(message) - return 1 - else - ..() - /mob/living/simple_animal/hostile/blob/proc/blob_chat(msg) var/spanned_message = say_quote(msg, get_spans()) var/rendered = "\[Blob Telepathy\] [real_name] [spanned_message]" diff --git a/code/game/gamemodes/changeling/powers/linglink.dm b/code/game/gamemodes/changeling/powers/linglink.dm index d6ceb4edd0..cd7c944137 100644 --- a/code/game/gamemodes/changeling/powers/linglink.dm +++ b/code/game/gamemodes/changeling/powers/linglink.dm @@ -50,7 +50,7 @@ to_chat(target, "A migraine throbs behind your eyes, you hear yourself screaming - but your mouth has not opened!") for(var/mi in GLOB.mob_list) var/mob/M = mi - if(M.lingcheck() == 2) + if(M.lingcheck() == LINGHIVE_LING) to_chat(M, "We can sense a foreign presence in the hivemind...") target.mind.linglink = 1 target.say(":g AAAAARRRRGGGGGHHHHH!!") diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm index 7005b26b12..e59fc2c9b7 100644 --- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm +++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm @@ -121,13 +121,6 @@ if(statpanel("Status")) stat("Resources:",resources) -/mob/living/simple_animal/hostile/swarmer/handle_inherent_channels(message, message_mode) - if(message_mode == MODE_BINARY) - swarmer_chat(message) - return ITALICS | REDUCE_RANGE - else - . = ..() - /mob/living/simple_animal/hostile/swarmer/get_spans() return ..() | SPAN_ROBOT diff --git a/code/modules/mob/living/brain/say.dm b/code/modules/mob/living/brain/say.dm index 0cfbf5d170..0f8e9e60bd 100644 --- a/code/modules/mob/living/brain/say.dm +++ b/code/modules/mob/living/brain/say.dm @@ -21,7 +21,7 @@ return ITALICS | REDUCE_RANGE /mob/living/brain/lingcheck() - return 0 + return LINGHIVE_NONE /mob/living/brain/treat_message(message) message = capitalize(message) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 5a58c67c6b..8849d52f22 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1022,4 +1022,15 @@ /mob/living/proc/add_abilities_to_panel() for(var/obj/effect/proc_holder/A in abilities) - statpanel("[A.panel]",A.get_panel_text(),A) \ No newline at end of file + statpanel("[A.panel]",A.get_panel_text(),A) + +/mob/living/lingcheck() + if(mind) + var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling) + if(changeling) + if(changeling.changeling_speak) + return LINGHIVE_LING + return LINGHIVE_OUTSIDER + if(mind && mind.linglink) + return LINGHIVE_LINK + return LINGHIVE_NONE diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index a2fdb9d2b0..739b4e3584 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -72,6 +72,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list( /mob/living/say(message, bubble_type,var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE) var/static/list/crit_allowed_modes = list(MODE_WHISPER = TRUE, MODE_CHANGELING = TRUE, MODE_ALIEN = TRUE) var/static/list/unconscious_allowed_modes = list(MODE_CHANGELING = TRUE, MODE_ALIEN = TRUE) + var/key = get_key(message) var/static/list/one_character_prefix = list(MODE_HEADSET = TRUE, MODE_ROBOT = TRUE, MODE_WHISPER = TRUE) @@ -134,8 +135,11 @@ GLOBAL_LIST_INIT(department_radio_keys, list( // AIs use inherent channels for the holopad. Most inherent channels // ignore the language argument however. - if(handle_inherent_channels(message, message_mode, language)) //Hiveminds, binary chat & holopad. - return + var/datum/saymode/SM = SSradio.saymodes[key] + if(key && SM) + if(!SM.handle_message(src, message, language)) + return + if(!can_speak_vocal(message)) to_chat(src, "You find yourself unable to speak!") @@ -264,7 +268,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list( INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, I, speech_bubble_recipients, 30) /mob/proc/binarycheck() - return 0 + return FALSE /mob/living/can_speak(message) //For use outside of Say() if(can_speak_basic(message) && can_speak_vocal(message)) @@ -307,6 +311,11 @@ GLOBAL_LIST_INIT(department_radio_keys, list( var/key_symbol = lowertext(copytext(message, 2, 3)) return GLOB.department_radio_keys[key_symbol] +/mob/living/proc/get_key(message) + var/key = copytext(message, 1, 2) + if(key in GLOB.department_radio_prefixes) + return lowertext(copytext(message, 2, 3)) + /mob/living/proc/get_message_language(message) if(copytext(message, 1, 2) == ",") var/key = copytext(message, 2, 3) @@ -316,60 +325,6 @@ GLOBAL_LIST_INIT(department_radio_keys, list( return LD return null -/mob/living/proc/handle_inherent_channels(message, message_mode) - if(message_mode == MODE_CHANGELING) - switch(lingcheck()) - if(3) - var/msg = "[src.mind]: [message]" - for(var/_M in GLOB.mob_list) - var/mob/M = _M - if(M in GLOB.dead_mob_list) - var/link = FOLLOW_LINK(M, src) - to_chat(M, "[link] [msg]") - else - switch(M.lingcheck()) - if(3) - to_chat(M, msg) - if(2) - to_chat(M, msg) - if(1) - if(prob(40)) - to_chat(M, "We can faintly sense an outsider trying to communicate through the hivemind...") - if(2) - var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling) - var/msg = "[changeling.changelingID]: [message]" - log_talk(src,"[changeling.changelingID]/[key] : [message]",LOGSAY) - for(var/_M in GLOB.mob_list) - var/mob/M = _M - if(M in GLOB.dead_mob_list) - var/link = FOLLOW_LINK(M, src) - to_chat(M, "[link] [msg]") - else - switch(M.lingcheck()) - if(3) - to_chat(M, msg) - if(2) - to_chat(M, msg) - if(1) - if(prob(40)) - to_chat(M, "We can faintly sense another of our kind trying to communicate through the hivemind...") - if(1) - to_chat(src, "Our senses have not evolved enough to be able to communicate this way...") - return TRUE - if(message_mode == MODE_ALIEN) - if(hivecheck()) - alien_talk(message) - return TRUE - if(message_mode == MODE_VOCALCORDS) - if(iscarbon(src)) - var/mob/living/carbon/C = src - var/obj/item/organ/vocal_cords/V = C.getorganslot(ORGAN_SLOT_VOICE) - if(V && V.can_speak_with()) - V.handle_speech(message) //message - V.speak_with(message) //action - return TRUE - return FALSE - /mob/living/proc/treat_message(message) if(getBrainLoss() >= 60) message = derpspeech(message, stuttering) @@ -408,22 +363,9 @@ GLOBAL_LIST_INIT(department_radio_keys, list( return ITALICS | REDUCE_RANGE if(MODE_BINARY) - if(binarycheck()) - robot_talk(message) return ITALICS | REDUCE_RANGE //Does not return 0 since this is only reached by humans, not borgs or AIs. return 0 -/mob/living/lingcheck() //1 is ling w/ no hivemind. 2 is ling w/hivemind. 3 is ling victim being linked into hivemind. - if(mind) - var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling) - if(changeling) - if(changeling.changeling_speak) - return 2 - return 1 - if(mind && mind.linglink) - return 3 - return 0 - /mob/living/say_mod(input, message_mode) if(message_mode == MODE_WHISPER) . = verb_whisper diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index 13f0609c0d..b55fa2a663 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -31,15 +31,6 @@ else return ..() -/mob/living/silicon/ai/handle_inherent_channels(message, message_mode, language) - . = ..() - if(.) - return . - - if(message_mode == MODE_HOLOPAD) - holopad_talk(message, language) - return 1 - //For holopads only. Usable by AI. /mob/living/silicon/ai/proc/holopad_talk(message, language) diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index f3e7baa0d9..f10ac43858 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -57,14 +57,3 @@ return MODE_ROBOT else return . - -/mob/living/silicon/handle_inherent_channels(message, message_mode) - . = ..() - if(.) - return . - - if(message_mode == MODE_BINARY) - if(binarycheck()) - robot_talk(message) - return 1 - return 0 diff --git a/code/modules/mob/living/simple_animal/friendly/drone/say.dm b/code/modules/mob/living/simple_animal/friendly/drone/say.dm index fb0c0c0614..16bf370f02 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/say.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/say.dm @@ -3,14 +3,6 @@ ///////////// //Drone speach -/mob/living/simple_animal/drone/handle_inherent_channels(message, message_mode) - if(message_mode == MODE_BINARY) - drone_chat(message) - return 1 - else - ..() - - /mob/living/simple_animal/drone/get_spans() return ..() | SPAN_ROBOT diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index a396072b4f..fd17800d5a 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD //Speech verbs. /mob/verb/say_verb(message as text) set name = "Say" @@ -81,3 +82,87 @@ /mob/proc/lingcheck() return 0 +======= +//Speech verbs. +/mob/verb/say_verb(message as text) + set name = "Say" + set category = "IC" + if(GLOB.say_disabled) //This is here to try to identify lag problems + to_chat(usr, "Speech is currently admin-disabled.") + return + usr.say(message) + + +/mob/verb/whisper_verb(message as text) + set name = "Whisper" + set category = "IC" + if(GLOB.say_disabled) //This is here to try to identify lag problems + to_chat(usr, "Speech is currently admin-disabled.") + return + whisper(message) + +/mob/proc/whisper(message, datum/language/language=null) + say(message, language) //only living mobs actually whisper, everything else just talks + +/mob/verb/me_verb(message as text) + set name = "Me" + set category = "IC" + + if(GLOB.say_disabled) //This is here to try to identify lag problems + to_chat(usr, "Speech is currently admin-disabled.") + return + + message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) + + usr.emote("me",1,message) + +/mob/proc/say_dead(var/message) + var/name = real_name + var/alt_name = "" + + if(GLOB.say_disabled) //This is here to try to identify lag problems + to_chat(usr, "Speech is currently admin-disabled.") + return + + if(jobban_isbanned(src, "OOC")) + to_chat(src, "You have been banned from deadchat.") + return + + if (src.client) + if(src.client.prefs.muted & MUTE_DEADCHAT) + to_chat(src, "You cannot talk in deadchat (muted).") + return + + if(src.client.handle_spam_prevention(message,MUTE_DEADCHAT)) + return + + var/mob/dead/observer/O = src + if(isobserver(src) && O.deadchat_name) + name = "[O.deadchat_name]" + else + if(mind && mind.name) + name = "[mind.name]" + else + name = real_name + if(name != real_name) + alt_name = " (died as [real_name])" + + var/K + + if(key) + K = src.key + + message = src.say_quote(message, get_spans()) + var/rendered = "DEAD: [name][alt_name] [message]" + + deadchat_broadcast(rendered, follow_target = src, speaker_key = K) + +/mob/proc/emote(var/act) + return + +/mob/proc/hivecheck() + return 0 + +/mob/proc/lingcheck() + return LINGHIVE_NONE +>>>>>>> 36414ac... Datumizes saymodes (#33013) diff --git a/tgstation.dme b/tgstation.dme index 34227a9a18..132b4689dc 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -308,6 +308,7 @@ #include "code\datums\recipe.dm" #include "code\datums\riding.dm" #include "code\datums\ruins.dm" +#include "code\datums\saymode.dm" #include "code\datums\shuttles.dm" #include "code\datums\soullink.dm" #include "code\datums\spawners_menu.dm" From 0df9db51f34514569c811209c3ffc3585db75b00 Mon Sep 17 00:00:00 2001 From: ExcessiveUseOfCobblestone <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com> Date: Sun, 3 Dec 2017 14:16:34 -0500 Subject: [PATCH 284/328] Being buckled to a bed now saves you from "the floor is lava" (#33204) * Update floor_is_lava.dm * Switcheroo * ))))))))))))) --- code/datums/weather/weather_types/floor_is_lava.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/datums/weather/weather_types/floor_is_lava.dm b/code/datums/weather/weather_types/floor_is_lava.dm index 52f82abec9..cf9fa0da86 100644 --- a/code/datums/weather/weather_types/floor_is_lava.dm +++ b/code/datums/weather/weather_types/floor_is_lava.dm @@ -20,10 +20,11 @@ overlay_layer = ABOVE_OPEN_TURF_LAYER //Covers floors only immunity_type = "lava" + /datum/weather/floor_is_lava/weather_act(mob/living/L) - for(var/obj/structure/O in L.loc) - if(O.density) + for(var/obj/structure/O in L.loc) + if(O.density || (L in O.buckled_mobs && istype(O, /obj/structure/bed))) return if(L.loc.density) return From a575e2668dd521b3e47afe5e980f170d5cb875c0 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 3 Dec 2017 14:15:42 -0500 Subject: [PATCH 286/328] Plasma statues get fixed (#33224) * Plasma statues fix * Actually a fix * brackets --- code/game/objects/structures/statues.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index b89dca9d4f..67b42c128c 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -177,8 +177,8 @@ else return ..() -/obj/structure/statue/plasma/proc/PlasmaBurn() - atmos_spawn_air("plasma=400;TEMP=1000") +/obj/structure/statue/plasma/proc/PlasmaBurn(exposed_temperature) + atmos_spawn_air("plasma=[oreAmount*10];TEMP=[exposed_temperature]") deconstruct(FALSE) /obj/structure/statue/plasma/proc/ignite(exposed_temperature) From 66c66f0bd72baeb563b35b852fab656b074b1d08 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 3 Dec 2017 13:33:01 -0800 Subject: [PATCH 288/328] [READY]VEHICLE REFACTOR - Riding datums --> Components, Vehicles --> /obj/vehicle, staging for mech overhaul later on --- .../LavaRuins/lavaland_biodome_beach.dmm | 2 +- .../lavaland_surface_animal_hospital.dmm | 2 +- .../lavaland_surface_biodome_winter.dmm | 2 +- _maps/RandomZLevels/Cabin.dmm | 2 +- _maps/RandomZLevels/snowdin.dmm | 6 +- _maps/map_files/BoxStation/BoxStation.dmm | 7 +- .../map_files/Deltastation/DeltaStation2.dmm | 4 +- _maps/map_files/MetaStation/MetaStation.dmm | 6 +- _maps/map_files/OmegaStation/OmegaStation.dmm | 4 +- _maps/map_files/PubbyStation/PubbyStation.dmm | 6 +- _maps/map_files/generic/CentCom.dmm | 2 +- code/__DEFINES/components.dm | 10 + code/__DEFINES/maps.dm | 2 +- code/__DEFINES/misc.dm | 7 + code/_onclick/other_mobs.dm | 2 + code/datums/components/riding.dm | 326 +++++++++++++ code/datums/riding.dm | 442 ------------------ code/game/atoms_movable.dm | 1 + code/game/objects/buckling.dm | 11 +- .../objects/items/devices/chameleonproj.dm | 6 +- code/game/objects/items/weaponry.dm | 2 +- .../structures/beds_chairs/alien_nest.dm | 20 +- .../objects/structures/beds_chairs/bed.dm | 18 +- .../objects/structures/beds_chairs/chair.dm | 14 +- code/modules/cargo/packs.dm | 2 +- code/modules/crafting/recipes.dm | 4 +- .../mining/lavaland/necropolis_chests.dm | 24 +- code/modules/mob/living/carbon/human/human.dm | 14 +- .../mob/living/carbon/human/human_defense.dm | 4 - .../mob/living/carbon/human/human_movement.dm | 5 - code/modules/mob/living/emote.dm | 12 +- code/modules/mob/living/living.dm | 6 - .../modules/mob/living/silicon/robot/robot.dm | 6 +- .../living/silicon/robot/robot_movement.dm | 24 + .../mob/living/simple_animal/bot/mulebot.dm | 9 +- .../mob/living/simple_animal/simple_animal.dm | 21 +- code/modules/mob/mob.dm | 16 +- code/modules/mob/mob_defines.dm | 1 - .../research/xenobiology/xenobiology.dm | 5 +- .../space_transition/space_transition.dm | 28 +- code/modules/vehicles/_vehicle.dm | 140 ++++++ code/modules/vehicles/atv.dm | 58 ++- code/modules/vehicles/bicycle.dm | 7 +- code/modules/vehicles/entered.dm | 56 +++ code/modules/vehicles/pimpin_ride.dm | 35 +- code/modules/vehicles/ridden.dm | 76 +++ code/modules/vehicles/scooter.dm | 62 ++- code/modules/vehicles/secway.dm | 13 +- code/modules/vehicles/speedbike.dm | 58 ++- code/modules/vehicles/vehicle.dm | 108 ----- code/modules/vehicles/vehicle_actions.dm | 112 +++++ code/modules/vehicles/vehicle_key.dm | 15 + icons/mob/actions/actions_vehicle.dmi | Bin 0 -> 435 bytes tgstation.dme | 13 +- 54 files changed, 1052 insertions(+), 786 deletions(-) create mode 100644 code/datums/components/riding.dm delete mode 100644 code/datums/riding.dm create mode 100644 code/modules/vehicles/_vehicle.dm create mode 100644 code/modules/vehicles/entered.dm create mode 100644 code/modules/vehicles/ridden.dm delete mode 100644 code/modules/vehicles/vehicle.dm create mode 100644 code/modules/vehicles/vehicle_actions.dm create mode 100644 code/modules/vehicles/vehicle_key.dm create mode 100644 icons/mob/actions/actions_vehicle.dmi diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index aeaf849b73..2e066413f7 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -270,7 +270,7 @@ /turf/open/floor/wood, /area/ruin/powered/beach) "be" = ( -/obj/vehicle/scooter/skateboard{ +/obj/vehicle/ridden/scooter/skateboard{ dir = 4 }, /turf/open/floor/plating/beach/sand, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm index af51457db9..cc961656f6 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm @@ -528,7 +528,7 @@ /turf/open/floor/plasteel/white, /area/ruin/powered/animal_hospital) "bL" = ( -/obj/vehicle/scooter/skateboard{ +/obj/vehicle/ridden/scooter/skateboard{ dir = 4 }, /turf/open/floor/grass{ diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm index edc6dcffac..593cbdb665 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm @@ -170,7 +170,7 @@ }, /area/ruin/powered/snow_biodome) "aJ" = ( -/obj/vehicle/atv, +/obj/vehicle/ridden/atv, /turf/open/floor/plating/asteroid/snow{ initial_gas_mix = "o2=22;n2=82;TEMP=180" }, diff --git a/_maps/RandomZLevels/Cabin.dmm b/_maps/RandomZLevels/Cabin.dmm index dd40e3c024..4cd42ea994 100644 --- a/_maps/RandomZLevels/Cabin.dmm +++ b/_maps/RandomZLevels/Cabin.dmm @@ -825,7 +825,7 @@ /turf/open/floor/plating/snowed/temperatre, /area/awaymission/cabin) "cT" = ( -/obj/vehicle/atv, +/obj/vehicle/ridden/atv, /turf/open/floor/plating/snowed/temperatre, /area/awaymission/cabin) "cU" = ( diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index e9f6caa5fb..7e416c0aae 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -15,7 +15,7 @@ /area/awaymission/snowdin/post) "ae" = ( /obj/effect/decal/cleanable/oil, -/obj/vehicle/atv, +/obj/vehicle/ridden/atv, /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/snow }, @@ -41,7 +41,7 @@ }, /area/awaymission/snowdin/post) "ai" = ( -/obj/vehicle/atv, +/obj/vehicle/ridden/atv, /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/snow }, @@ -1842,7 +1842,7 @@ /turf/open/floor/plating/asteroid/snow, /area/awaymission/snowdin) "eZ" = ( -/obj/vehicle/atv, +/obj/vehicle/ridden/atv, /turf/open/floor/plating/asteroid/snow{ temperature = 140 }, diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index b630c327cf..989183043e 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -818,6 +818,7 @@ /turf/open/floor/plasteel/freezer, /area/security/prison) "aci" = ( +<<<<<<< HEAD /obj/machinery/door/poddoor/shutters{ id = "armory"; name = "Armoury Shutter" @@ -825,6 +826,10 @@ /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, +======= +/obj/vehicle/ridden/secway, +/turf/open/floor/plasteel/dark, +>>>>>>> 5182128... refactors riding datums to a component, vehicle refactor staging for mech overhaul (#32249) /area/ai_monitored/security/armory) "acj" = ( /obj/machinery/light{ @@ -33081,7 +33086,7 @@ /obj/machinery/camera{ c_tag = "Custodial Closet" }, -/obj/vehicle/janicart, +/obj/vehicle/ridden/janicart, /turf/open/floor/plasteel, /area/janitor) "bDL" = ( diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 0479e1ec28..a05ca17d4b 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -10106,7 +10106,7 @@ /turf/open/floor/plasteel/neutral, /area/janitor) "avA" = ( -/obj/vehicle/janicart, +/obj/vehicle/ridden/janicart, /obj/machinery/status_display{ pixel_y = 32 }, @@ -48974,7 +48974,7 @@ /turf/open/floor/plating, /area/ai_monitored/security/armory) "bVp" = ( -/obj/vehicle/secway, +/obj/vehicle/ridden/secway, /turf/open/floor/plasteel/vault{ dir = 8 }, diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index f0f8fa160c..26d14bd983 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -8766,10 +8766,14 @@ /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "asy" = ( +<<<<<<< HEAD /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, /obj/vehicle/secway, +======= +/obj/vehicle/ridden/secway, +>>>>>>> 5182128... refactors riding datums to a component, vehicle refactor staging for mech overhaul (#32249) /obj/item/key/security, /turf/open/floor/plasteel/red/side{ dir = 10 @@ -29270,7 +29274,7 @@ name = "Station Intercom (General)"; pixel_y = -28 }, -/obj/vehicle/janicart, +/obj/vehicle/ridden/janicart, /obj/item/key/janitor, /turf/open/floor/plating, /area/janitor) diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 00a601dba2..49d03878bb 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -6043,7 +6043,7 @@ /turf/open/floor/plating, /area/security/brig) "akW" = ( -/obj/vehicle/secway, +/obj/vehicle/ridden/secway, /obj/machinery/light{ dir = 8 }, @@ -19057,7 +19057,7 @@ /turf/open/floor/plasteel, /area/janitor) "aJJ" = ( -/obj/vehicle/janicart, +/obj/vehicle/ridden/janicart, /obj/effect/decal/cleanable/dirt, /obj/item/storage/bag/trash, /obj/item/key/janitor, diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index fab27c788f..a8ba88b8df 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -2614,7 +2614,7 @@ /turf/open/floor/plasteel/dark, /area/security/armory) "ail" = ( -/obj/vehicle/secway, +/obj/vehicle/ridden/secway, /turf/open/floor/plasteel/dark, /area/security/armory) "aim" = ( @@ -2647,7 +2647,7 @@ /turf/open/floor/plasteel/showroomfloor, /area/security/main) "air" = ( -/obj/vehicle/secway, +/obj/vehicle/ridden/secway, /obj/item/key/security, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel/showroomfloor, @@ -21626,7 +21626,7 @@ /turf/open/floor/plasteel/neutral/corner, /area/hallway/primary/central) "baX" = ( -/obj/vehicle/janicart, +/obj/vehicle/ridden/janicart, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 4a0f5fdb02..007fffd634 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -11604,7 +11604,7 @@ /turf/open/floor/plasteel, /area/wizard_station) "Ej" = ( -/obj/vehicle/scooter/skateboard{ +/obj/vehicle/ridden/scooter/skateboard{ icon_state = "skateboard"; dir = 4 }, diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 72b12ab988..f672188533 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -59,6 +59,8 @@ #define COMSIG_MOVABLE_CROSSED "movable_crossed" //from base of atom/movable/Crossed(): (/atom/movable) #define COMSIG_MOVABLE_COLLIDE "movable_collide" //from base of atom/movable/Collide(): (/atom) #define COMSIG_MOVABLE_IMPACT "movable_impact" //from base of atom/movable/throw_impact(): (/atom, throwingdatum) +#define COMSIG_MOVABLE_BUCKLE "buckle" //from base of atom/movable/buckle_mob(): (mob, force) +#define COMSIG_MOVABLE_UNBUCKLE "unbuckle" //from base of atom/movable/unbuckle_mob(): (mob, force) // /obj/item signals #define COMSIG_ITEM_ATTACK "item_attack" //from base of obj/item/attack(): (/mob/living/target, /mob/living/user) @@ -78,4 +80,12 @@ // /obj/machinery signals #define COMSIG_MACHINE_PROCESS "machine_process" //from machinery subsystem fire(): () +<<<<<<< HEAD #define COMSIG_MACHINE_PROCESS_ATMOS "machine_process_atmos" //from air subsystem process_atmos_machinery(): () +======= +#define COMSIG_MACHINE_PROCESS_ATMOS "machine_process_atmos" //from air subsystem process_atmos_machinery(): () + +// /mob/living/carbon/human signals +#define COMSIG_HUMAN_MELEE_UNARMED_ATTACK "human_melee_unarmed_attack" //from mob/living/carbon/human/UnarmedAttack(): (atom/target) +#define COMSIG_HUMAN_MELEE_UNARMED_ATTACKBY "human_melee_unarmed_attackby" //from mob/living/carbon/human/UnarmedAttack(): (mob/living/carbon/human/attacker) +>>>>>>> 5182128... refactors riding datums to a component, vehicle refactor staging for mech overhaul (#32249) diff --git a/code/__DEFINES/maps.dm b/code/__DEFINES/maps.dm index 1320250f89..cdd2739b3c 100644 --- a/code/__DEFINES/maps.dm +++ b/code/__DEFINES/maps.dm @@ -48,4 +48,4 @@ Last space-z level = empty #define ZLEVEL_SPACEMIN 3 #define ZLEVEL_SPACEMAX 13 -#define SPACERUIN_MAP_EDGE_PAD 15 \ No newline at end of file +#define SPACERUIN_MAP_EDGE_PAD 15 diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 7cc2e4537f..55b29e64a5 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -4,6 +4,11 @@ // #define EAST 4 // #define WEST 8 +#define TEXT_NORTH "[NORTH]" +#define TEXT_SOUTH "[SOUTH]" +#define TEXT_EAST "[EAST]" +#define TEXT_WEST "[WEST]" + //These get to go at the top, because they're special //You can use these defines to get the typepath of the currently running proc/verb (yes procs + verbs are objects) /* eg: @@ -483,3 +488,5 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define NO_SPAWN 0 #define HOSTILE_SPAWN 1 #define FRIENDLY_SPAWN 2 + +#define RIDING_OFFSET_ALL "ALL" diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index c340943a36..02cdfe7c13 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -25,7 +25,9 @@ if(override) return + SendSignal(COMSIG_HUMAN_MELEE_UNARMED_ATTACK, A) A.attack_hand(src) + SendSignal(COMSIG_HUMAN_MELEE_UNARMED_ATTACKBY, src) /atom/proc/attack_hand(mob/user) return diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm new file mode 100644 index 0000000000..4b18f91014 --- /dev/null +++ b/code/datums/components/riding.dm @@ -0,0 +1,326 @@ +/datum/component/riding + var/next_vehicle_move = 0 //used for move delays + var/vehicle_move_delay = 2 //tick delay between movements, lower = faster, higher = slower + var/keytype + + var/slowed = FALSE + var/slowvalue = 1 + + var/list/riding_offsets = list() //position_of_user = list(dir = list(px, py)), or RIDING_OFFSET_ALL for a generic one. + var/list/directional_vehicle_layers = list() //["[DIRECTION]"] = layer. Don't set it for a direction for default, set a direction to null for no change. + var/list/directional_vehicle_offsets = list() //same as above but instead of layer you have a list(px, py) + var/list/allowed_turf_typecache + var/list/forbid_turf_typecache //allow typecache for only certain turfs, forbid to allow all but those. allow only certain turfs will take precedence. + var/allow_one_away_from_valid_turf = TRUE //allow moving one tile away from a valid turf but not more. + var/override_allow_spacemove = FALSE + var/drive_verb = "drive" + var/ride_check_rider_incapacitated = FALSE + var/ride_check_rider_restrained = FALSE + var/ride_check_ridden_incapacitated = FALSE + +/datum/component/riding/Initialize() + if(!ismovableatom(parent)) + . = COMPONENT_INCOMPATIBLE + CRASH("RIDING COMPONENT ASSIGNED TO NON ATOM MOVABLE!") + RegisterSignal(COMSIG_MOVABLE_BUCKLE, .proc/vehicle_mob_buckle) + RegisterSignal(COMSIG_MOVABLE_UNBUCKLE, .proc/vehicle_mob_unbuckle) + RegisterSignal(COMSIG_MOVABLE_MOVED, .proc/vehicle_moved) + +/datum/component/riding/proc/vehicle_mob_unbuckle(mob/living/M, force = FALSE) + restore_position(M) + unequip_buckle_inhands(M) + +/datum/component/riding/proc/vehicle_mob_buckle(mob/living/M, force = FALSE) + handle_vehicle_offsets() + +/datum/component/riding/proc/handle_vehicle_layer() + var/atom/movable/AM = parent + var/static/list/defaults = list(TEXT_NORTH = OBJ_LAYER, TEXT_SOUTH = ABOVE_MOB_LAYER, TEXT_EAST = ABOVE_MOB_LAYER, TEXT_WEST = ABOVE_MOB_LAYER) + . = defaults["[AM.dir]"] + if(directional_vehicle_layers["[AM.dir]"]) + . = directional_vehicle_layers["[AM.dir]"] + if(isnull(.)) //you can set it to null to not change it. + . = AM.layer + AM.layer = . + +/datum/component/riding/proc/set_vehicle_dir_layer(dir, layer) + directional_vehicle_layers["[dir]"] = layer + +/datum/component/riding/proc/vehicle_moved() + var/atom/movable/AM = parent + for(var/i in AM.buckled_mobs) + ride_check(i) + handle_vehicle_offsets() + handle_vehicle_layer() + +/datum/component/riding/proc/ride_check(mob/living/M) + var/atom/movable/AM = parent + var/mob/AMM = AM + if((ride_check_rider_restrained && M.restrained(TRUE)) || (ride_check_rider_incapacitated && M.incapacitated(FALSE, TRUE)) || (ride_check_ridden_incapacitated && istype(AMM) && AMM.incapacitated(FALSE, TRUE))) + AM.visible_message("[M] falls off of [AM]!") + AM.unbuckle_mob(M) + return TRUE + +/datum/component/riding/proc/force_dismount(mob/living/M) + var/atom/movable/AM = parent + AM.unbuckle_mob(M) + +/datum/component/riding/proc/handle_vehicle_offsets() + var/atom/movable/AM = parent + var/AM_dir = "[AM.dir]" + var/passindex = 0 + if(AM.has_buckled_mobs()) + for(var/m in AM.buckled_mobs) + passindex++ + var/mob/living/buckled_mob = m + var/list/offsets = get_offsets(passindex) + var/rider_dir = get_rider_dir(passindex) + buckled_mob.setDir(rider_dir) + dir_loop: + for(var/offsetdir in offsets) + if(offsetdir == AM_dir) + var/list/diroffsets = offsets[offsetdir] + buckled_mob.pixel_x = diroffsets[1] + if(diroffsets.len >= 2) + buckled_mob.pixel_y = diroffsets[2] + if(diroffsets.len == 3) + buckled_mob.layer = diroffsets[3] + break dir_loop + var/list/static/default_vehicle_pixel_offsets = list(TEXT_NORTH = list(0, 0), TEXT_SOUTH = list(0, 0), TEXT_EAST = list(0, 0), TEXT_WEST = list(0, 0)) + var/px = default_vehicle_pixel_offsets[AM_dir] + var/py = default_vehicle_pixel_offsets[AM_dir] + if(directional_vehicle_offsets[AM_dir]) + if(isnull(directional_vehicle_offsets[AM_dir])) + px = AM.pixel_x + py = AM.pixel_y + else + px = directional_vehicle_offsets[AM_dir][1] + py = directional_vehicle_offsets[AM_dir][2] + AM.pixel_x = px + AM.pixel_y = py + +/datum/component/riding/proc/set_vehicle_dir_offsets(dir, x, y) + directional_vehicle_offsets["[dir]"] = list(x, y) + +//Override this to set your vehicle's various pixel offsets +/datum/component/riding/proc/get_offsets(pass_index) // list(dir = x, y, layer) + . = list(TEXT_NORTH = list(0, 0), TEXT_SOUTH = list(0, 0), TEXT_EAST = list(0, 0), TEXT_WEST = list(0, 0)) + if(riding_offsets["[pass_index]"]) + . = riding_offsets["[pass_index]"] + else if(riding_offsets["[RIDING_OFFSET_ALL]"]) + . = riding_offsets["[RIDING_OFFSET_ALL]"] + +/datum/component/riding/proc/set_riding_offsets(index, list/offsets) + if(!islist(offsets)) + return FALSE + riding_offsets["[index]"] = offsets + +//Override this to set the passengers/riders dir based on which passenger they are. +//ie: rider facing the vehicle's dir, but passenger 2 facing backwards, etc. +/datum/component/riding/proc/get_rider_dir(pass_index) + var/atom/movable/AM = parent + return AM.dir + +//KEYS +/datum/component/riding/proc/keycheck(mob/user) + return !keytype || user.is_holding_item_of_type(keytype) + +//BUCKLE HOOKS +/datum/component/riding/proc/restore_position(mob/living/buckled_mob) + if(buckled_mob) + buckled_mob.pixel_x = 0 + buckled_mob.pixel_y = 0 + if(buckled_mob.client) + buckled_mob.client.change_view(world.view) + +//MOVEMENT +/datum/component/riding/proc/turf_check(turf/next, turf/current) + if(allowed_turf_typecache && !allowed_turf_typecache[next.type]) + return (allow_one_away_from_valid_turf && allowed_turf_typecache[current.type]) + else if(forbid_turf_typecache && forbid_turf_typecache[next.type]) + return (allow_one_away_from_valid_turf && !forbid_turf_typecache[current.type]) + return TRUE + +/datum/component/riding/proc/handle_ride(mob/user, direction) + var/atom/movable/AM = parent + if(user.incapacitated()) + Unbuckle(user) + return + + if(world.time < next_vehicle_move) + return + next_vehicle_move = world.time + vehicle_move_delay + + if(keycheck(user)) + var/turf/next = get_step(AM, direction) + var/turf/current = get_turf(AM) + if(!istype(next) || !istype(current)) + return //not happening. + if(!turf_check(next, current)) + to_chat(user, "Your \the [AM] can not go onto [next]!") + return + if(!Process_Spacemove(direction) || !isturf(AM.loc)) + return + step(AM, direction) + + handle_vehicle_layer() + handle_vehicle_offsets() + else + to_chat(user, "You'll need the keys in one of your hands to [drive_verb] [AM].") + +/datum/component/riding/proc/Unbuckle(atom/movable/M) + addtimer(CALLBACK(parent, /atom/movable/.proc/unbuckle_mob, M), 0, TIMER_UNIQUE) + +/datum/component/riding/proc/Process_Spacemove(direction) + var/atom/movable/AM = parent + return override_allow_spacemove || AM.has_gravity() + +/datum/component/riding/proc/account_limbs(mob/living/M) + if(M.get_num_legs() < 2 && !slowed) + vehicle_move_delay = vehicle_move_delay + slowvalue + slowed = TRUE + else if(slowed) + vehicle_move_delay = vehicle_move_delay - slowvalue + slowed = FALSE + +///////Yes, I said humans. No, this won't end well...////////// +/datum/component/riding/human + +/datum/component/riding/human/Initialize() + . = ..() + RegisterSignal(COMSIG_HUMAN_MELEE_UNARMED_ATTACK, .proc/on_host_unarmed_melee) + +/datum/component/riding/human/proc/on_host_unarmed_melee(atom/target) + var/mob/living/carbon/human/AM = parent + if(AM.a_intent == INTENT_DISARM && (target in AM.buckled_mobs)) + force_dismount(target) + +/datum/component/riding/human/handle_vehicle_layer() + var/atom/movable/AM = parent + if(AM.buckled_mobs && AM.buckled_mobs.len) + if(AM.dir == SOUTH) + AM.layer = ABOVE_MOB_LAYER + else + AM.layer = OBJ_LAYER + else + AM.layer = MOB_LAYER + +/datum/component/riding/human/force_dismount(mob/living/user) + var/atom/movable/AM = parent + AM.unbuckle_mob(user) + user.Knockdown(60) + user.visible_message("[AM] pushes [user] off of them!") + +/datum/component/riding/cyborg + +/datum/component/riding/cyborg/ride_check(mob/user) + var/atom/movable/AM = parent + if(user.incapacitated()) + var/kick = TRUE + if(iscyborg(AM)) + var/mob/living/silicon/robot/R = AM + if(R.module && R.module.ride_allow_incapacitated) + kick = FALSE + if(kick) + to_chat(user, "You fall off of [AM]!") + Unbuckle(user) + return + if(iscarbon(user)) + var/mob/living/carbon/carbonuser = user + if(!carbonuser.get_num_arms()) + Unbuckle(user) + to_chat(user, "You can't grab onto [AM] with no hands!") + return + +/datum/component/riding/cyborg/handle_vehicle_layer() + var/atom/movable/AM = parent + if(AM.buckled_mobs && AM.buckled_mobs.len) + if(AM.dir == SOUTH) + AM.layer = ABOVE_MOB_LAYER + else + AM.layer = OBJ_LAYER + else + AM.layer = MOB_LAYER + +/datum/component/riding/cyborg/get_offsets(pass_index) // list(dir = x, y, layer) + return list(TEXT_NORTH = list(0, 4), TEXT_SOUTH = list(0, 4), TEXT_EAST = list(-6, 3), TEXT_WEST = list( 6, 3)) + +/datum/component/riding/cyborg/handle_vehicle_offsets() + var/atom/movable/AM = parent + if(AM.has_buckled_mobs()) + for(var/mob/living/M in AM.buckled_mobs) + M.setDir(AM.dir) + if(iscyborg(AM)) + var/mob/living/silicon/robot/R = AM + if(istype(R.module)) + M.pixel_x = R.module.ride_offset_x[dir2text(AM.dir)] + M.pixel_y = R.module.ride_offset_y[dir2text(AM.dir)] + else + ..() + +/datum/component/riding/cyborg/force_dismount(mob/living/M) + var/atom/movable/AM = parent + AM.unbuckle_mob(M) + var/turf/target = get_edge_target_turf(AM, AM.dir) + var/turf/targetm = get_step(get_turf(AM), AM.dir) + M.Move(targetm) + M.visible_message("[M] is thrown clear of [AM]!") + M.throw_at(target, 14, 5, AM) + M.Knockdown(60) + +/datum/component/riding/proc/equip_buckle_inhands(mob/living/carbon/human/user, amount_required = 1) + var/atom/movable/AM = parent + var/amount_equipped = 0 + for(var/amount_needed = amount_required, amount_needed > 0, amount_needed--) + var/obj/item/riding_offhand/inhand = new /obj/item/riding_offhand(user) + inhand.rider = user + inhand.parent = AM + if(user.put_in_hands(inhand, TRUE)) + amount_equipped++ + else + break + if(amount_equipped >= amount_required) + return TRUE + else + unequip_buckle_inhands(user) + return FALSE + +/datum/component/riding/proc/unequip_buckle_inhands(mob/living/carbon/user) + var/atom/movable/AM = parent + for(var/obj/item/riding_offhand/O in user.contents) + if(O.parent != AM) + CRASH("RIDING OFFHAND ON WRONG MOB") + continue + if(O.selfdeleting) + continue + else + qdel(O) + return TRUE + +/obj/item/riding_offhand + name = "offhand" + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "offhand" + w_class = WEIGHT_CLASS_HUGE + flags_1 = ABSTRACT_1 | DROPDEL_1 | NOBLUDGEON_1 + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + var/mob/living/carbon/rider + var/mob/living/parent + var/selfdeleting = FALSE + +/obj/item/riding_offhand/dropped() + selfdeleting = TRUE + . = ..() + +/obj/item/riding_offhand/equipped() + if(loc != rider) + selfdeleting = TRUE + qdel(src) + . = ..() + +/obj/item/riding_offhand/Destroy() + var/atom/movable/AM = parent + if(selfdeleting) + if(rider in AM.buckled_mobs) + AM.unbuckle_mob(rider) + . = ..() diff --git a/code/datums/riding.dm b/code/datums/riding.dm deleted file mode 100644 index 7cd12ae6c8..0000000000 --- a/code/datums/riding.dm +++ /dev/null @@ -1,442 +0,0 @@ -/datum/riding - var/next_vehicle_move = 0 //used for move delays - var/vehicle_move_delay = 2 //tick delay between movements, lower = faster, higher = slower - var/keytype = null - var/atom/movable/ridden = null - - var/slowed = FALSE - var/slowvalue = 1 - -/datum/riding/New(atom/movable/_ridden) - ridden = _ridden - -/datum/riding/Destroy() - ridden = null - return ..() - -/datum/riding/proc/handle_vehicle_layer() - if(ridden.dir != NORTH) - ridden.layer = ABOVE_MOB_LAYER - else - ridden.layer = OBJ_LAYER - -/datum/riding/proc/on_vehicle_move() - for(var/mob/living/M in ridden.buckled_mobs) - ride_check(M) - handle_vehicle_offsets() - handle_vehicle_layer() - -/datum/riding/proc/ride_check(mob/living/M) - return TRUE - -/datum/riding/proc/force_dismount(mob/living/M) - ridden.unbuckle_mob(M) - -/datum/riding/proc/handle_vehicle_offsets() - var/ridden_dir = "[ridden.dir]" - var/passindex = 0 - if(ridden.has_buckled_mobs()) - for(var/m in ridden.buckled_mobs) - passindex++ - var/mob/living/buckled_mob = m - var/list/offsets = get_offsets(passindex) - var/rider_dir = get_rider_dir(passindex) - buckled_mob.setDir(rider_dir) - dir_loop: - for(var/offsetdir in offsets) - if(offsetdir == ridden_dir) - var/list/diroffsets = offsets[offsetdir] - buckled_mob.pixel_x = diroffsets[1] - if(diroffsets.len >= 2) - buckled_mob.pixel_y = diroffsets[2] - if(diroffsets.len == 3) - buckled_mob.layer = diroffsets[3] - break dir_loop - - -//Override this to set your vehicle's various pixel offsets -/datum/riding/proc/get_offsets(pass_index) // list(dir = x, y, layer) - return list("[NORTH]" = list(0, 0), "[SOUTH]" = list(0, 0), "[EAST]" = list(0, 0), "[WEST]" = list(0, 0)) - -//Override this to set the passengers/riders dir based on which passenger they are. -//ie: rider facing the vehicle's dir, but passenger 2 facing backwards, etc. -/datum/riding/proc/get_rider_dir(pass_index) - return ridden.dir - -//KEYS -/datum/riding/proc/keycheck(mob/user) - if(keytype) - if(user.is_holding_item_of_type(keytype)) - return TRUE - else - return TRUE - return FALSE - -//BUCKLE HOOKS -/datum/riding/proc/restore_position(mob/living/buckled_mob) - if(istype(buckled_mob)) - buckled_mob.pixel_x = 0 - buckled_mob.pixel_y = 0 - if(buckled_mob.client) - buckled_mob.client.change_view(world.view) - -//MOVEMENT -/datum/riding/proc/handle_ride(mob/user, direction) - if(user.incapacitated()) - Unbuckle(user) - return - - if(world.time < next_vehicle_move) - return - next_vehicle_move = world.time + vehicle_move_delay - if(keycheck(user)) - if(!Process_Spacemove(direction) || !isturf(ridden.loc)) - return - step(ridden, direction) - - handle_vehicle_layer() - handle_vehicle_offsets() - else - to_chat(user, "You'll need the keys in one of your hands to drive \the [ridden.name].") - -/datum/riding/proc/Unbuckle(atom/movable/M) - addtimer(CALLBACK(ridden, /atom/movable/.proc/unbuckle_mob, M), 0, TIMER_UNIQUE) - -/datum/riding/proc/Process_Spacemove(direction) - if(ridden.has_gravity()) - return 1 - - return 0 - -/datum/riding/space/Process_Spacemove(direction) - return 1 - - -//atv -/datum/riding/atv - keytype = /obj/item/key - vehicle_move_delay = 1 - -/datum/riding/atv/get_offsets(pass_index) // list(dir = x, y, layer) - return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(0, 4), "[WEST]" = list( 0, 4)) - - -/datum/riding/atv/handle_vehicle_layer() - if(ridden.dir == SOUTH) - ridden.layer = ABOVE_MOB_LAYER - else - ridden.layer = OBJ_LAYER - -/datum/riding/atv/turret - var/obj/machinery/porta_turret/syndicate/vehicle_turret/turret = null - -/datum/riding/atv/turret/handle_vehicle_layer() - if(ridden.dir == SOUTH) - ridden.layer = ABOVE_MOB_LAYER - else - ridden.layer = OBJ_LAYER - - if(turret) - if(ridden.dir == NORTH) - turret.layer = ABOVE_MOB_LAYER - else - turret.layer = OBJ_LAYER - - -/datum/riding/atv/turret/handle_vehicle_offsets() - ..() - if(turret) - turret.forceMove(get_turf(ridden)) - switch(ridden.dir) - if(NORTH) - turret.pixel_x = 0 - turret.pixel_y = 4 - if(EAST) - turret.pixel_x = -12 - turret.pixel_y = 4 - if(SOUTH) - turret.pixel_x = 0 - turret.pixel_y = 4 - if(WEST) - turret.pixel_x = 12 - turret.pixel_y = 4 - - -//pimpin ride -/datum/riding/janicart - keytype = /obj/item/key/janitor - - -/datum/riding/janicart/get_offsets(pass_index) // list(dir = x, y, layer) - return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 7), "[EAST]" = list(-12, 7), "[WEST]" = list( 12, 7)) - -//scooter -/datum/riding/scooter/handle_vehicle_layer() - if(ridden.dir == SOUTH) - ridden.layer = ABOVE_MOB_LAYER - else - ridden.layer = OBJ_LAYER - -/datum/riding/scooter/get_offsets(pass_index) // list(dir = x, y, layer) - return list("[NORTH]" = list(0), "[SOUTH]" = list(-2), "[EAST]" = list(0), "[WEST]" = list( 2)) - -/datum/riding/scooter/handle_vehicle_offsets() - ..() - if(ridden.has_buckled_mobs()) - for(var/m in ridden.buckled_mobs) - var/mob/living/buckled_mob = m - if(buckled_mob.get_num_legs() > 0) - buckled_mob.pixel_y = 5 - else - buckled_mob.pixel_y = -4 - -/datum/riding/proc/account_limbs(mob/living/M) - if(M.get_num_legs() < 2 && !slowed) - vehicle_move_delay = vehicle_move_delay + slowvalue - slowed = TRUE - else if(slowed) - vehicle_move_delay = vehicle_move_delay - slowvalue - slowed = FALSE - -/datum/riding/scooter/skateboard - vehicle_move_delay = 0//fast - - -//secway -/datum/riding/secway - keytype = /obj/item/key/security - -/datum/riding/secway/get_offsets(pass_index) // list(dir = x, y, layer) - return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(0, 4), "[WEST]" = list( 0, 4)) - -//i want to ride my -/datum/riding/bicycle - keytype = null - vehicle_move_delay = 0 - -/datum/riding/bicycle/get_offsets(pass_index) // list(dir = x, y, layer) - return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(0, 4), "[WEST]" = list( 0, 4)) - -//speedbike -/datum/riding/space/speedbike - keytype = null - vehicle_move_delay = 0 - -/datum/riding/space/speedbike/handle_vehicle_layer() - switch(ridden.dir) - if(NORTH,SOUTH) - ridden.pixel_x = -16 - ridden.pixel_y = -16 - if(EAST,WEST) - ridden.pixel_x = -18 - ridden.pixel_y = 0 - -/datum/riding/space/speedbike/get_offsets(pass_index) // list(dir = x, y, layer) - return list("[NORTH]" = list(0, -8), "[SOUTH]" = list(0, 4), "[EAST]" = list(-10, 5), "[WEST]" = list( 10, 5)) - -//SPEEDUWAGON - -/datum/riding/space/speedwagon - vehicle_move_delay = 0 - -/datum/riding/space/speedwagon/handle_vehicle_layer() - ridden.layer = BELOW_MOB_LAYER - -/datum/riding/space/speedwagon/get_offsets(pass_index) // list(dir = x, y, layer) - switch(pass_index) - if(1) - return list("[NORTH]" = list(-10, -4), "[SOUTH]" = list(16, 3), "[EAST]" = list(-4, 30), "[WEST]" = list(4, -3)) - if(2) - return list("[NORTH]" = list(19, -5, 4), "[SOUTH]" = list(-13, 3, 4), "[EAST]" = list(-4, -3, 4.1), "[WEST]" = list(4, 28, 3.9)) - if(3) - return list("[NORTH]" = list(-10, -18, 4.2), "[SOUTH]" = list(16, 25, 3.9), "[EAST]" = list(-22, 30), "[WEST]" = list(22, -3, 4.1)) - if(4) - return list("[NORTH]" = list(19, -18, 4.2), "[SOUTH]" = list(-13, 25, 3.9), "[EAST]" = list(-22, 3, 3.9), "[WEST]" = list(22, 28)) - -///////////////BOATS//////////// -/datum/riding/boat - keytype = /obj/item/oar - -/datum/riding/boat/handle_ride(mob/user, direction) - var/turf/next = get_step(ridden, direction) - var/turf/current = get_turf(ridden) - - if(islava(next) || islava(current)) //We can move from land to lava, or lava to land, but not from land to land - ..() - else - to_chat(user, "Boats don't go on land!") - return 0 - -/datum/riding/boat/dragon - keytype = null - vehicle_move_delay = 1 - -/datum/riding/boat/dragon/get_offsets(pass_index) // list(dir = x, y, layer) - return list("[NORTH]" = list(1, 2), "[SOUTH]" = list(1, 2), "[EAST]" = list(1, 2), "[WEST]" = list( 1, 2)) - -///////////////ANIMALS//////////// -//general animals -/datum/riding/animal - keytype = null - -/datum/riding/animal/handle_ride(mob/user, direction) - if(user.incapacitated()) - Unbuckle(user) - return - - if(world.time < next_vehicle_move) - return - - next_vehicle_move = world.time + vehicle_move_delay - if(keycheck(user)) - if(!isturf(ridden.loc)) - return - step(ridden, direction) - - handle_vehicle_layer() - handle_vehicle_offsets() - else - to_chat(user, "You'll need something to guide the [ridden.name].") - -///////Humans. Yes, I said humans. No, this won't end well...////////// -/datum/riding/human - keytype = null - -/datum/riding/human/ride_check(mob/living/M) - var/mob/living/carbon/human/H = ridden //IF this runtimes I'm blaming the admins. - if(M.incapacitated(FALSE, TRUE) || H.incapacitated(FALSE, TRUE)) - M.visible_message("[M] falls off [ridden]!") - Unbuckle(M) - return FALSE - if(M.restrained(TRUE)) - M.visible_message("[M] can't hang onto [ridden] with their hands cuffed!") //Honestly this should put the ridden mob in a chokehold. - Unbuckle(M) - return FALSE - if(H.pulling == M) - H.stop_pulling() - -/datum/riding/human/get_offsets(pass_index) // list(dir = x, y, layer) - return list("[NORTH]" = list(0, 6), "[SOUTH]" = list(0, 6), "[EAST]" = list(-6, 4), "[WEST]" = list( 6, 4)) - - -/datum/riding/human/handle_vehicle_layer() - if(ridden.buckled_mobs && ridden.buckled_mobs.len) - if(ridden.dir == SOUTH) - ridden.layer = ABOVE_MOB_LAYER - else - ridden.layer = OBJ_LAYER - else - ridden.layer = MOB_LAYER - -/datum/riding/human/force_dismount(mob/living/user) - ridden.unbuckle_mob(user) - user.Knockdown(60) - user.visible_message("[ridden] pushes [user] off of them!") - -/datum/riding/cyborg - keytype = null - -/datum/riding/cyborg/ride_check(mob/user) - if(user.incapacitated()) - var/kick = TRUE - if(iscyborg(ridden)) - var/mob/living/silicon/robot/R = ridden - if(R.module && R.module.ride_allow_incapacitated) - kick = FALSE - if(kick) - to_chat(user, "You fall off of [ridden]!") - Unbuckle(user) - return - if(iscarbon(user)) - var/mob/living/carbon/carbonuser = user - if(!carbonuser.get_num_arms()) - Unbuckle(user) - to_chat(user, "You can't grab onto [ridden] with no hands!") - return - -/datum/riding/cyborg/handle_vehicle_layer() - if(ridden.buckled_mobs && ridden.buckled_mobs.len) - if(ridden.dir == SOUTH) - ridden.layer = ABOVE_MOB_LAYER - else - ridden.layer = OBJ_LAYER - else - ridden.layer = MOB_LAYER - -/datum/riding/cyborg/get_offsets(pass_index) // list(dir = x, y, layer) - return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(-6, 3), "[WEST]" = list( 6, 3)) - -/datum/riding/cyborg/handle_vehicle_offsets() - if(ridden.has_buckled_mobs()) - for(var/mob/living/M in ridden.buckled_mobs) - M.setDir(ridden.dir) - if(iscyborg(ridden)) - var/mob/living/silicon/robot/R = ridden - if(istype(R.module)) - M.pixel_x = R.module.ride_offset_x[dir2text(ridden.dir)] - M.pixel_y = R.module.ride_offset_y[dir2text(ridden.dir)] - else - ..() - -/datum/riding/cyborg/force_dismount(mob/living/M) - ridden.unbuckle_mob(M) - var/turf/target = get_edge_target_turf(ridden, ridden.dir) - var/turf/targetm = get_step(get_turf(ridden), ridden.dir) - M.Move(targetm) - M.visible_message("[M] is thrown clear of [ridden]!") - M.throw_at(target, 14, 5, ridden) - M.Knockdown(60) - -/datum/riding/proc/equip_buckle_inhands(mob/living/carbon/human/user, amount_required = 1) - var/amount_equipped = 0 - for(var/amount_needed = amount_required, amount_needed > 0, amount_needed--) - var/obj/item/riding_offhand/inhand = new /obj/item/riding_offhand(user) - inhand.rider = user - inhand.ridden = ridden - if(user.put_in_hands(inhand, TRUE)) - amount_equipped++ - else - break - if(amount_equipped >= amount_required) - return TRUE - else - unequip_buckle_inhands(user) - return FALSE - -/datum/riding/proc/unequip_buckle_inhands(mob/living/carbon/user) - for(var/obj/item/riding_offhand/O in user.contents) - if(O.ridden != ridden) - CRASH("RIDING OFFHAND ON WRONG MOB") - continue - if(O.selfdeleting) - continue - else - qdel(O) - return TRUE - -/obj/item/riding_offhand - name = "offhand" - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "offhand" - w_class = WEIGHT_CLASS_HUGE - flags_1 = ABSTRACT_1 | DROPDEL_1 | NOBLUDGEON_1 - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - var/mob/living/carbon/rider - var/mob/living/ridden - var/selfdeleting = FALSE - -/obj/item/riding_offhand/dropped() - selfdeleting = TRUE - . = ..() - -/obj/item/riding_offhand/equipped() - if(loc != rider) - selfdeleting = TRUE - qdel(src) - . = ..() - -/obj/item/riding_offhand/Destroy() - if(selfdeleting) - if(rider in ridden.buckled_mobs) - ridden.unbuckle_mob(rider) - . = ..() diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 9d3b208acc..f73de90536 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -26,6 +26,7 @@ appearance_flags = TILE_BOUND|PIXEL_SCALE var/datum/forced_movement/force_moving = null //handled soley by forced_movement.dm var/floating = FALSE + var/movement_type = GROUND //Incase you have multiple types, you automatically use the most useful one. IE: Skating on ice, flippers on water, flying over chasm/space, etc. /atom/movable/vv_edit_var(var_name, var_value) var/static/list/banned_edits = list("step_x", "step_y", "step_size") diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 0c72e63feb..2e13cb16c9 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -65,6 +65,7 @@ M.throw_alert("buckled", /obj/screen/alert/restrained/buckled) post_buckle_mob(M) + SendSignal(COMSIG_MOVABLE_BUCKLE, M, force) return TRUE /obj/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE) @@ -82,8 +83,9 @@ buckled_mob.update_canmove() buckled_mob.clear_alert("buckled") buckled_mobs -= buckled_mob + SendSignal(COMSIG_MOVABLE_UNBUCKLE, buckled_mob, force) - post_buckle_mob(.) + post_unbuckle_mob(.) /atom/movable/proc/unbuckle_all_mobs(force=FALSE) if(!has_buckled_mobs()) @@ -91,11 +93,12 @@ for(var/m in buckled_mobs) unbuckle_mob(m, force) -//Handle any extras after buckling/unbuckling -//Called on buckle_mob() and unbuckle_mob() +//Handle any extras after buckling +//Called on buckle_mob() /atom/movable/proc/post_buckle_mob(mob/living/M) - return +//same but for unbuckle +/atom/movable/proc/post_unbuckle_mob(mob/living/M) //Wrapper procs that handle sanity and user feedback /atom/movable/proc/user_buckle_mob(mob/living/M, mob/user, check_loc = TRUE) diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index d1de04923c..acdb0b874d 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -102,7 +102,11 @@ appearance = saved_appearance if(istype(M.buckled, /obj/vehicle)) var/obj/vehicle/V = M.buckled - V.riding_datum.force_dismount(M) + GET_COMPONENT_FROM(VRD, /datum/component/riding, V) + if(VRD) + VRD.force_dismount(M) + else + V.unbuckle_mob(M, force = TRUE) M.loc = src master = C master.active_dummy = src diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index 7b7c9c8ee5..c112e103b2 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -474,7 +474,7 @@ attack_verb = list("smacked", "whacked", "slammed", "smashed") /obj/item/melee/skateboard/attack_self(mob/user) - new /obj/vehicle/scooter/skateboard(get_turf(user)) + new /obj/vehicle/ridden/scooter/skateboard(get_turf(user)) qdel(src) /obj/item/melee/baseball_bat diff --git a/code/game/objects/structures/beds_chairs/alien_nest.dm b/code/game/objects/structures/beds_chairs/alien_nest.dm index f840316aa9..d3b62f35f4 100644 --- a/code/game/objects/structures/beds_chairs/alien_nest.dm +++ b/code/game/objects/structures/beds_chairs/alien_nest.dm @@ -66,16 +66,16 @@ "You hear squelching...") /obj/structure/bed/nest/post_buckle_mob(mob/living/M) - if(M in buckled_mobs) - M.pixel_y = 0 - M.pixel_x = initial(M.pixel_x) + 2 - M.layer = BELOW_MOB_LAYER - add_overlay(nest_overlay) - else - M.pixel_x = M.get_standard_pixel_x_offset(M.lying) - M.pixel_y = M.get_standard_pixel_y_offset(M.lying) - M.layer = initial(M.layer) - cut_overlay(nest_overlay) + M.pixel_y = 0 + M.pixel_x = initial(M.pixel_x) + 2 + M.layer = BELOW_MOB_LAYER + add_overlay(nest_overlay) + +/obj/structure/bed/nest/post_unbuckle_mob(mob/living/M) + M.pixel_x = M.get_standard_pixel_x_offset(M.lying) + M.pixel_y = M.get_standard_pixel_y_offset(M.lying) + M.layer = initial(M.layer) + cut_overlay(nest_overlay) /obj/structure/bed/nest/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) switch(damage_type) diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm index 9ad24d1cdb..ab285cbbd6 100644 --- a/code/game/objects/structures/beds_chairs/bed.dm +++ b/code/game/objects/structures/beds_chairs/bed.dm @@ -85,21 +85,21 @@ qdel(src) /obj/structure/bed/roller/post_buckle_mob(mob/living/M) - if(M in buckled_mobs) - density = TRUE - icon_state = "up" - M.pixel_y = initial(M.pixel_y) - else - density = FALSE - icon_state = "down" - M.pixel_x = M.get_standard_pixel_x_offset(M.lying) - M.pixel_y = M.get_standard_pixel_y_offset(M.lying) + density = TRUE + icon_state = "up" + M.pixel_y = initial(M.pixel_y) /obj/structure/bed/roller/Moved() . = ..() if(has_gravity()) playsound(src, 'sound/effects/roll.ogg', 100, 1) +/obj/structure/bed/roller/post_unbuckle_mob(mob/living/M) + density = FALSE + icon_state = "down" + M.pixel_x = M.get_standard_pixel_x_offset(M.lying) + M.pixel_y = M.get_standard_pixel_y_offset(M.lying) + /obj/item/roller name = "roller bed" desc = "A collapsed roller bed that can be carried around." diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 6c1c0392b3..2fb2d5253d 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -91,7 +91,11 @@ layer = OBJ_LAYER /obj/structure/chair/post_buckle_mob(mob/living/M) - ..() + . = ..() + handle_layer() + +/obj/structure/chair/post_unbuckle_mob() + . = ..() handle_layer() /obj/structure/chair/proc/spin() @@ -167,12 +171,18 @@ return ..() /obj/structure/chair/comfy/post_buckle_mob(mob/living/M) - ..() + . = ..() + update_armrest() + +/obj/structure/chair/comfy/proc/update_armrest() if(has_buckled_mobs()) add_overlay(armrest) else cut_overlay(armrest) +/obj/structure/chair/comfy/post_unbuckle_mob() + . = ..() + update_armrest() /obj/structure/chair/comfy/brown color = rgb(255,113,0) diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index c4c6899683..13325a23c8 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -54,7 +54,7 @@ name = "Biker Gang Kit" //TUNNEL SNAKES OWN THIS TOWN cost = 2000 contraband = TRUE - contains = list(/obj/vehicle/atv, + contains = list(/obj/vehicle/ridden/atv, /obj/item/key, /obj/item/clothing/suit/jacket/leather/overcoat, /obj/item/clothing/gloves/color/black, diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 0378d44809..7ad03c6e9d 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -357,7 +357,7 @@ /datum/crafting_recipe/skateboard name = "Skateboard" - result = /obj/vehicle/scooter/skateboard + result = /obj/vehicle/ridden/scooter/skateboard time = 60 reqs = list(/obj/item/stack/sheet/metal = 5, /obj/item/stack/rods = 10) @@ -365,7 +365,7 @@ /datum/crafting_recipe/scooter name = "Scooter" - result = /obj/vehicle/scooter + result = /obj/vehicle/ridden/scooter time = 65 reqs = list(/obj/item/stack/sheet/metal = 5, /obj/item/stack/rods = 12) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 18eb52c8f8..9a4918e1fa 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -469,16 +469,19 @@ //Boat -/obj/vehicle/lavaboat +/obj/vehicle/ridden/lavaboat name = "lava boat" desc = "A boat used for traversing lava." icon_state = "goliath_boat" icon = 'icons/obj/lavaland/dragonboat.dmi' resistance_flags = LAVA_PROOF | FIRE_PROOF + can_buckle = TRUE -/obj/vehicle/lavaboat/buckle_mob(mob/living/M, force = 0, check_loc = 1) +/obj/vehicle/ridden/lavaboat/Initialize() . = ..() - riding_datum = new/datum/riding/boat + var/datum/component/riding/D = LoadComponent(/datum/component/riding) + D.keytype = /obj/item/oar + D.allowed_turf_typecache = typecacheof(/turf/open/lava) /obj/item/oar name = "oar" @@ -501,7 +504,7 @@ /datum/crafting_recipe/boat name = "goliath hide boat" - result = /obj/vehicle/lavaboat + result = /obj/vehicle/ridden/lavaboat reqs = list(/obj/item/stack/sheet/animalhide/goliath_hide = 3) time = 50 category = CAT_PRIMAL @@ -518,17 +521,20 @@ /obj/item/ship_in_a_bottle/attack_self(mob/user) to_chat(user, "You're not sure how they get the ships in these things, but you're pretty sure you know how to get it out.") playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, 1) - new /obj/vehicle/lavaboat/dragon(get_turf(src)) + new /obj/vehicle/ridden/lavaboat/dragon(get_turf(src)) qdel(src) -/obj/vehicle/lavaboat/dragon +/obj/vehicle/ridden/lavaboat/dragon name = "mysterious boat" desc = "This boat moves where you will it, without the need for an oar." icon_state = "dragon_boat" -/obj/vehicle/lavaboat/dragon/buckle_mob(mob/living/M, force = 0, check_loc = 1) - ..() - riding_datum = new/datum/riding/boat/dragon +/obj/vehicle/ridden/lavaboat/dragon/Initialize() + . = ..() + var/datum/component/riding/D = LoadComponent(/datum/component/riding) + D.vehicle_move_delay = 1 + D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(1, 2), TEXT_SOUTH = list(1, 2), TEXT_EAST = list(1, 2), TEXT_WEST = list( 1, 2))) + D.keytype = null //Potion of Flight /obj/item/reagent_containers/glass/bottle/potion diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 7d4c62d9e1..f0c630421d 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -890,8 +890,11 @@ if(!is_type_in_typecache(M, can_ride_typecache)) M.visible_message("[M] really can't seem to mount [src]...") return - if(!riding_datum) - riding_datum = new /datum/riding/human(src) + var/datum/component/riding/human/riding_datum = LoadComponent(/datum/component/riding/human) + riding_datum.ride_check_rider_incapacitated = TRUE + riding_datum.ride_check_ridden_incapacitated = TRUE + riding_datum.ride_check_rider_restrained = TRUE + riding_datum.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 6), TEXT_SOUTH = list(0, 6), TEXT_EAST = list(-6, 4), TEXT_WEST = list( 6, 4))) if(buckled_mobs && ((M in buckled_mobs) || (buckled_mobs.len >= max_buckled_mobs)) || buckled || (M.stat != CONSCIOUS)) return visible_message("[M] starts to climb onto [src]...") @@ -908,13 +911,6 @@ else visible_message("[M] fails to climb onto [src]!") -/mob/living/carbon/human/unbuckle_mob(mob/living/M, force=FALSE) - if(iscarbon(M)) - if(riding_datum) - riding_datum.unequip_buckle_inhands(M) - riding_datum.restore_position(M) - . = ..(M, force) - /mob/living/carbon/human/species var/race = null diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index a96052a37e..e8d4baba63 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -188,12 +188,8 @@ return if(ishuman(user)) var/mob/living/carbon/human/H = user - if(H.a_intent == INTENT_DISARM) - if(H.buckled_mobs && (src in H.buckled_mobs) && H.riding_datum) - H.riding_datum.force_dismount(src) dna.species.spec_attack_hand(H, src) - /mob/living/carbon/human/attack_paw(mob/living/carbon/monkey/M) var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg") var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone)) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index fc8fdac04c..c90d1a0231 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -58,11 +58,6 @@ //End bloody footprints S.step_action() -/mob/living/carbon/human/Moved() - . = ..() - if(buckled_mobs && buckled_mobs.len && riding_datum) - riding_datum.on_vehicle_move() - /mob/living/carbon/human/Process_Spacemove(movement_dir = 0) //Temporary laziness thing. Will change to handles by species reee. if(..()) return 1 diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index c656dd7494..9f541aaf67 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -491,14 +491,14 @@ . = ..() if(.) user.spin(20, 1) - if(iscyborg(user)) + if(iscyborg(user) && user.has_buckled_mobs()) var/mob/living/silicon/robot/R = user - if(R.buckled_mobs) + GET_COMPONENT_FROM(riding_datum, /datum/component/riding, R) + if(riding_datum) for(var/mob/M in R.buckled_mobs) - if(R.riding_datum) - R.riding_datum.force_dismount(M) - else - R.unbuckle_all_mobs() + riding_datum.force_dismount(M) + else + R.unbuckle_all_mobs() /datum/emote/living/circle diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 5a58c67c6b..04e347ff4c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -39,7 +39,6 @@ ranged_ability.remove_ranged_ability(src) if(buckled) buckled.unbuckle_mob(src,force=1) - QDEL_NULL(riding_datum) for(var/mob/living/simple_animal/drone/D in GLOB.player_list) for(var/image/I in staticOverlays) @@ -955,11 +954,6 @@ "[C] leaps out of [src]'s way!")]") C.Knockdown(40) -/mob/living/post_buckle_mob(mob/living/M) - if(riding_datum) - riding_datum.handle_vehicle_offsets() - riding_datum.handle_vehicle_layer() - /mob/living/ConveyorMove() if((movement_type & FLYING) && !stat) return diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 72dc341276..e8b05bac9e 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1151,8 +1151,7 @@ if(!is_type_in_typecache(M, can_ride_typecache)) M.visible_message("[M] really can't seem to mount [src]...") return - if(!riding_datum) - riding_datum = new /datum/riding/cyborg(src) + var/datum/component/riding/riding_datum = LoadComponent(/datum/component/riding/cyborg) if(buckled_mobs) if(buckled_mobs.len >= max_buckled_mobs) return @@ -1175,7 +1174,8 @@ /mob/living/silicon/robot/unbuckle_mob(mob/user) if(iscarbon(user)) - if(riding_datum) + GET_COMPONENT(riding_datum, /datum/component/riding) + if(istype(riding_datum)) riding_datum.unequip_buckle_inhands(user) riding_datum.restore_position(user) . = ..(user) diff --git a/code/modules/mob/living/silicon/robot/robot_movement.dm b/code/modules/mob/living/silicon/robot/robot_movement.dm index 762d86dee9..8959c8245b 100644 --- a/code/modules/mob/living/silicon/robot/robot_movement.dm +++ b/code/modules/mob/living/silicon/robot/robot_movement.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /mob/living/silicon/robot/Process_Spacemove(movement_dir = 0) if(ionpulse()) return 1 @@ -24,3 +25,26 @@ . = ..() if(riding_datum) riding_datum.on_vehicle_move() +======= +/mob/living/silicon/robot/Process_Spacemove(movement_dir = 0) + if(ionpulse()) + return 1 + return ..() + +/mob/living/silicon/robot/movement_delay() + . = ..() + var/static/config_robot_delay + if(isnull(config_robot_delay)) + config_robot_delay = CONFIG_GET(number/robot_delay) + . += speed + config_robot_delay + +/mob/living/silicon/robot/mob_negates_gravity() + return magpulse + +/mob/living/silicon/robot/mob_has_gravity() + return ..() || mob_negates_gravity() + +/mob/living/silicon/robot/experience_pressure_difference(pressure_difference, direction) + if(!magpulse) + return ..() +>>>>>>> 5182128... refactors riding datums to a component, vehicle refactor staging for mech overhaul (#32249) diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 0cba76edf5..828ce6a88b 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -379,12 +379,11 @@ return FALSE /mob/living/simple_animal/bot/mulebot/post_buckle_mob(mob/living/M) - if(M in buckled_mobs) //post buckling - M.pixel_y = initial(M.pixel_y) + 9 - if(M.layer < layer) - M.layer = layer + 0.01 + M.pixel_y = initial(M.pixel_y) + 9 + if(M.layer < layer) + M.layer = layer + 0.01 - else //post unbuckling +/mob/living/simple_animal/bot/mulebot/post_unbuckle_mob(mob/living/M) load = null M.layer = initial(M.layer) M.pixel_y = initial(M.pixel_y) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 72a1ec84c1..a4851bb432 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -521,37 +521,26 @@ client.screen |= l_hand //ANIMAL RIDING -/mob/living/simple_animal/unbuckle_mob(mob/living/buckled_mob, force = 0, check_loc = 1) - if(riding_datum) - riding_datum.restore_position(buckled_mob) - . = ..() - /mob/living/simple_animal/user_buckle_mob(mob/living/M, mob/user) + GET_COMPONENT(riding_datum, /datum/component/riding) if(riding_datum) if(user.incapacitated()) return for(var/atom/movable/A in get_turf(src)) if(A != src && A != M && A.density) return - M.loc = get_turf(src) - riding_datum.handle_vehicle_offsets() - riding_datum.ridden = src + M.forceMove(get_turf(src)) + return ..() /mob/living/simple_animal/relaymove(mob/user, direction) + GET_COMPONENT(riding_datum, /datum/component/riding) if(tame && riding_datum) riding_datum.handle_ride(user, direction) -/mob/living/simple_animal/Moved() - . = ..() - if(riding_datum) - riding_datum.on_vehicle_move() - - /mob/living/simple_animal/buckle_mob(mob/living/buckled_mob, force = 0, check_loc = 1) . = ..() - riding_datum = new/datum/riding/animal - + LoadComponent(/datum/component/riding) /mob/living/simple_animal/proc/toggle_ai(togglestatus) if (AIStatus != togglestatus) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index dd32042849..20509329bb 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -774,14 +774,14 @@ //Default buckling shift visual for mobs /mob/post_buckle_mob(mob/living/M) - if(M in buckled_mobs)//post buckling - var/height = M.get_mob_buckling_height(src) - M.pixel_y = initial(M.pixel_y) + height - if(M.layer < layer) - M.layer = layer + 0.1 - else //post unbuckling - M.layer = initial(M.layer) - M.pixel_y = initial(M.pixel_y) + var/height = M.get_mob_buckling_height(src) + M.pixel_y = initial(M.pixel_y) + height + if(M.layer < layer) + M.layer = layer + 0.1 + +/mob/post_unbuckle_mob(mob/living/M) + M.layer = initial(M.layer) + M.pixel_y = initial(M.pixel_y) //returns the height in pixel the mob should have when buckled to another mob. /mob/proc/get_mob_buckling_height(mob/seat) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 58cb82714e..d9dd2a0eee 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -33,7 +33,6 @@ var/obj/machinery/machine = null var/other_mobs = null var/disabilities = 0 //Carbon - var/movement_type = GROUND //Incase you have multiple types, you automatically use the most useful one. IE: Skating on ice, flippers on water, flying over chasm/space, etc. var/atom/movable/pulling = null var/grab_state = 0 diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 83957a7285..6f9db6c8e2 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -343,8 +343,8 @@ if(istype(C, /obj/vehicle)) var/obj/vehicle/V = C - var/datum/riding/R = V.riding_datum - if(V.riding_datum) + var/datum/component/riding/R = V.GetComponent(/datum/component/riding) + if(R) if(R.vehicle_move_delay <= 0 ) to_chat(user, "The [C] can't be made any faster!") return ..() @@ -355,7 +355,6 @@ C.add_atom_colour("#FF0000", FIXED_COLOUR_PRIORITY) qdel(src) - /obj/item/slimepotion/fireproof name = "slime chill potion" desc = "A potent chemical mix that will fireproof any article of clothing. Has three uses." diff --git a/code/modules/space_transition/space_transition.dm b/code/modules/space_transition/space_transition.dm index e1a4c743bf..2a8be8a761 100644 --- a/code/modules/space_transition/space_transition.dm +++ b/code/modules/space_transition/space_transition.dm @@ -1,10 +1,5 @@ //This is a simple 3 by 3 grid working off the corpse of the space torus. The donut is dead, cube has been avenged! -#define Z_LEVEL_NORTH "1" -#define Z_LEVEL_SOUTH "2" -#define Z_LEVEL_EAST "4" -#define Z_LEVEL_WEST "8" - GLOBAL_LIST_EMPTY(z_levels_list) /datum/space_level @@ -19,7 +14,7 @@ GLOBAL_LIST_EMPTY(z_levels_list) linked = transition_type if(linked == SELFLOOPING) neigbours = list() - var/list/L = list(Z_LEVEL_NORTH,Z_LEVEL_SOUTH,Z_LEVEL_EAST,Z_LEVEL_WEST) + var/list/L = list(TEXT_NORTH,TEXT_SOUTH,TEXT_EAST,TEXT_WEST) for(var/A in L) neigbours[A] = src @@ -27,18 +22,18 @@ GLOBAL_LIST_EMPTY(z_levels_list) for(var/datum/point/P in L) if(P.x == xi) if(P.y == yi+1) - neigbours[Z_LEVEL_NORTH] = P.spl - P.spl.neigbours[Z_LEVEL_SOUTH] = src + neigbours[TEXT_NORTH] = P.spl + P.spl.neigbours[TEXT_SOUTH] = src else if(P.y == yi-1) - neigbours[Z_LEVEL_SOUTH] = P.spl - P.spl.neigbours[Z_LEVEL_NORTH] = src + neigbours[TEXT_SOUTH] = P.spl + P.spl.neigbours[TEXT_NORTH] = src else if(P.y == yi) if(P.x == xi+1) - neigbours[Z_LEVEL_EAST] = P.spl - P.spl.neigbours[Z_LEVEL_WEST] = src + neigbours[TEXT_EAST] = P.spl + P.spl.neigbours[TEXT_WEST] = src else if(P.x == xi-1) - neigbours[Z_LEVEL_WEST] = P.spl - P.spl.neigbours[Z_LEVEL_EAST] = src + neigbours[TEXT_WEST] = P.spl + P.spl.neigbours[TEXT_EAST] = src /datum/point //this is explicitly utilitarian datum type made specially for the space map generation and are absolutely unusable for anything else var/list/neigbours = list() @@ -157,8 +152,3 @@ GLOBAL_LIST_EMPTY(z_levels_list) for(var/A in grid) GLOB.z_levels_list[A] = grid[A] - -#undef Z_LEVEL_NORTH -#undef Z_LEVEL_SOUTH -#undef Z_LEVEL_EAST -#undef Z_LEVEL_WEST diff --git a/code/modules/vehicles/_vehicle.dm b/code/modules/vehicles/_vehicle.dm new file mode 100644 index 0000000000..4cedfdf3e3 --- /dev/null +++ b/code/modules/vehicles/_vehicle.dm @@ -0,0 +1,140 @@ +#define VEHICLE_CONTROL_PERMISSION 1 +#define VEHICLE_CONTROL_DRIVE 2 + +/obj/vehicle + name = "generic vehicle" + desc = "Yell at coderbus." + icon = 'icons/obj/vehicles.dmi' + icon_state = "fuckyou" + max_integrity = 300 + armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) + density = TRUE + anchored = FALSE + var/list/mob/occupants //mob = bitflags of their control level. + var/max_occupants = 1 + var/max_drivers = 1 + var/movedelay = 2 + var/lastmove = 0 + var/key_type + var/obj/item/key/inserted_key + var/key_type_exact = TRUE //can subtypes work + var/canmove = TRUE + var/emulate_door_bumps = TRUE //when bumping a door try to make occupants bump them to open them. + var/default_driver_move = TRUE //handle driver movement instead of letting something else do it like riding datums. + var/list/autogrant_actions_passenger //plain list of typepaths + var/list/autogrant_actions_controller //assoc list "[bitflag]" = list(typepaths) + var/list/mob/occupant_actions //assoc list mob = list(type = action datum assigned to mob) + +/obj/vehicle/Initialize(mapload) + . = ..() + occupants = list() + autogrant_actions_passenger = list() + autogrant_actions_controller = list() + occupant_actions = list() + generate_actions() + +/obj/vehicle/proc/is_key(obj/item/I) + return I? (key_type_exact? (I.type == key_type) : istype(I, key_type)) : FALSE + +/obj/vehicle/proc/return_occupants() + return occupants + +/obj/vehicle/proc/occupant_amount() + return length(occupants) + +/obj/vehicle/proc/return_amount_of_controllers_with_flag(flag) + . = 0 + for(var/i in occupants) + if(occupants[i] & flag) + .++ + +/obj/vehicle/proc/return_controllers_with_flag(flag) + . = list() + for(var/i in occupants) + if(occupants[i] & flag) + . += i + +/obj/vehicle/proc/return_drivers() + return return_controllers_with_flag(VEHICLE_CONTROL_DRIVE) + +/obj/vehicle/proc/driver_amount() + return return_amount_of_controllers_with_flag(VEHICLE_CONTROL_DRIVE) + +/obj/vehicle/proc/is_driver(mob/M) + return is_occupant(M) && occupants[M] & VEHICLE_CONTROL_DRIVE + +/obj/vehicle/proc/is_occupant(mob/M) + return !isnull(occupants[M]) + +/obj/vehicle/proc/add_occupant(mob/M, control_flags) + if(!istype(M) || occupants[M]) + return FALSE + occupants[M] = NONE + add_control_flags(M, control_flags) + grant_passenger_actions(M) + after_add_occupant(M) + return TRUE + +/obj/vehicle/proc/after_add_occupant(mob/M) + auto_assign_occupant_flags(M) + +/obj/vehicle/proc/auto_assign_occupant_flags(mob/M) //override for each type that needs it. Default is assign driver if drivers is not at max. + if(driver_amount() < max_drivers) + add_control_flags(M, VEHICLE_CONTROL_DRIVE|VEHICLE_CONTROL_PERMISSION) + +/obj/vehicle/proc/remove_occupant(mob/M) + if(!istype(M)) + return FALSE + remove_control_flags(M, ALL) + occupants -= M + remove_passenger_actions(M) + cleanup_actions_for_mob(M) + after_remove_occupant(M) + return TRUE + +/obj/vehicle/proc/after_remove_occupant(mob/M) + +/obj/vehicle/relaymove(mob/user, direction) + if(is_driver(user)) + return driver_move(user, direction) + return FALSE + +/obj/vehicle/proc/driver_move(mob/user, direction) + if(key_type && !is_key(inserted_key)) + to_chat(user, "[src] has no key inserted!") + return FALSE + if(!default_driver_move) + return + vehicle_move(direction) + +/obj/vehicle/proc/vehicle_move(direction) + if(lastmove + movedelay > world.time) + return FALSE + lastmove = world.time + return step(src, direction) + +/obj/vehicle/proc/add_control_flags(mob/controller, flags) + if(!istype(controller) || !flags) + return FALSE + occupants[controller] |= flags + for(var/i in GLOB.bitflags) + if(flags & i) + grant_controller_actions_by_flag(controller, i) + return TRUE + +/obj/vehicle/proc/remove_control_flags(mob/controller, flags) + if(!istype(controller) || !flags) + return FALSE + occupants[controller] &= ~flags + for(var/i in GLOB.bitflags) + if(flags & i) + remove_controller_actions_by_flag(controller, i) + return TRUE + +/obj/vehicle/Collide(atom/movable/M) + . = ..() + if(emulate_door_bumps) + if(istype(M, /obj/machinery/door) && has_buckled_mobs()) + for(var/m in occupants) + M.CollidedWith(m) + diff --git a/code/modules/vehicles/atv.dm b/code/modules/vehicles/atv.dm index 504e4753df..ac5be5b51c 100644 --- a/code/modules/vehicles/atv.dm +++ b/code/modules/vehicles/atv.dm @@ -1,45 +1,63 @@ -/obj/vehicle/atv +/obj/vehicle/ridden/atv name = "all-terrain vehicle" desc = "An all-terrain vehicle built for traversing rough terrain with ease. One of the few old-Earth technologies that are still relevant on most planet-bound outposts." icon_state = "atv" + key_type = /obj/item/key var/static/mutable_appearance/atvcover -/obj/vehicle/atv/buckle_mob(mob/living/buckled_mob, force = 0, check_loc = 1) +/obj/vehicle/ridden/atv/Initialize() . = ..() - riding_datum = new/datum/riding/atv + var/datum/component/riding/D = LoadComponent(/datum/component/riding) + D.vehicle_move_delay = 1 + D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 4), TEXT_SOUTH = list(0, 4), TEXT_EAST = list(0, 4), TEXT_WEST = list( 0, 4))) + D.set_vehicle_dir_layer(SOUTH, ABOVE_MOB_LAYER) + D.set_vehicle_dir_layer(NORTH, OBJ_LAYER) + D.set_vehicle_dir_layer(EAST, OBJ_LAYER) + D.set_vehicle_dir_layer(WEST, OBJ_LAYER) -/obj/vehicle/atv/Initialize() - . = ..() - atvcover = atvcover || mutable_appearance(icon, "atvcover", ABOVE_MOB_LAYER) +/obj/vehicle/ridden/atv/post_buckle_mob(mob/living/M) + add_overlay(atvcover) + return ..() - -/obj/vehicle/atv/post_buckle_mob(mob/living/M) - if(has_buckled_mobs()) - add_overlay(atvcover) - else +/obj/vehicle/ridden/atv/post_unbuckle_mob(mob/living/M) + if(!has_buckled_mobs()) cut_overlay(atvcover) - - + return ..() //TURRETS! -/obj/vehicle/atv/turret +/obj/vehicle/ridden/atv/turret var/obj/machinery/porta_turret/syndicate/vehicle_turret/turret = null - /obj/machinery/porta_turret/syndicate/vehicle_turret name = "mounted turret" scan_range = 7 emp_vunerable = 1 density = FALSE - -/obj/vehicle/atv/turret/Initialize() +/obj/vehicle/ridden/atv/turret/Initialize() . = ..() turret = new(loc) turret.base = src -/obj/vehicle/atv/turret/buckle_mob(mob/living/buckled_mob, force = 0, check_loc = 1) +/obj/vehicle/ridden/atv/turret/Moved() . = ..() - riding_datum = new/datum/riding/atv/turret - + if(turret) + turret.forceMove(get_turf(src)) + switch(dir) + if(NORTH) + turret.pixel_x = 0 + turret.pixel_y = 4 + turret.layer = ABOVE_MOB_LAYER + if(EAST) + turret.pixel_x = -12 + turret.pixel_y = 4 + turret.layer = OBJ_LAYER + if(SOUTH) + turret.pixel_x = 0 + turret.pixel_y = 4 + turret.layer = OBJ_LAYER + if(WEST) + turret.pixel_x = 12 + turret.pixel_y = 4 + turret.layer = OBJ_LAYER diff --git a/code/modules/vehicles/bicycle.dm b/code/modules/vehicles/bicycle.dm index cd93196b69..a6818d8bf3 100644 --- a/code/modules/vehicles/bicycle.dm +++ b/code/modules/vehicles/bicycle.dm @@ -7,9 +7,12 @@ var/static/list/bike_music = list('sound/misc/bike1.mid', 'sound/misc/bike2.mid', 'sound/misc/bike3.mid') + /obj/vehicle/bicycle/Initialize() . = ..() - riding_datum = new/datum/riding/bicycle + var/datum/component/riding/D = LoadComponent(/datum/component/riding) + D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 4), TEXT_SOUTH = list(0, 4), TEXT_EAST = list(0, 4), TEXT_WEST = list( 0, 4))) + D.vehicle_move_delay = 0 /obj/vehicle/bicycle/buckle_mob(mob/living/M, force = 0, check_loc = 1) if(prob(easter_egg_chance) || (SSevents.holidays && SSevents.holidays[APRIL_FOOLS])) @@ -24,7 +27,7 @@ /obj/vehicle/bicycle/tesla_act() // :::^^^))) name = "fried bicycle" desc = "Well spent." - riding_datum = null color = rgb(63, 23, 4) + can_buckle = FALSE for(var/m in buckled_mobs) unbuckle_mob(m,1) diff --git a/code/modules/vehicles/entered.dm b/code/modules/vehicles/entered.dm new file mode 100644 index 0000000000..d0fb93f7f0 --- /dev/null +++ b/code/modules/vehicles/entered.dm @@ -0,0 +1,56 @@ +/obj/vehicle/sealed + var/enter_delay = 20 + +/obj/vehicle/sealed/generate_actions() + . = ..() + initialize_passenger_action_type(/datum/action/vehicle/sealed/climb_out) + +/obj/vehicle/sealed/generate_action_type() + var/datum/action/vehicle/sealed/E = ..() + . = E + if(istype(E)) + E.vehicle_entered_target = src + +/obj/vehicle/sealed/MouseDrop_T(atom/dropping, mob/M) + if(!istype(dropping) || !istype(M)) + return ..() + if(M == dropping) + mob_try_enter(M) + return ..() + +/obj/vehicle/sealed/proc/mob_try_enter(mob/M) + if(!istype(M)) + return FALSE + if(occupant_amount() >= max_occupants) + return FALSE + if(do_after(M, get_enter_delay(M), FALSE, src, TRUE)) + mob_enter(M) + return TRUE + return FALSE + +/obj/vehicle/sealed/proc/get_enter_delay(mob/M) + return enter_delay + +/obj/vehicle/sealed/proc/mob_enter(mob/M, silent = FALSE) + if(!istype(M)) + return FALSE + if(!silent) + M.visible_message("[M] climbs into \the [src]!") + M.forceMove(src) + add_occupant(M) + return TRUE + +/obj/vehicle/sealed/proc/mob_try_exit(mob/M, mob/user, silent = FALSE) + mob_exit(M, silent) + +/obj/vehicle/sealed/proc/mob_exit(mob/M, silent = FALSE) + if(!istype(M)) + return FALSE + remove_occupant(M) + M.forceMove(exit_location(M)) + if(!silent) + M.visible_message("[M] drops out of \the [src]!") + return TRUE + +/obj/vehicle/sealed/proc/exit_location(M) + return drop_location() diff --git a/code/modules/vehicles/pimpin_ride.dm b/code/modules/vehicles/pimpin_ride.dm index f8f80819dd..42d863d968 100644 --- a/code/modules/vehicles/pimpin_ride.dm +++ b/code/modules/vehicles/pimpin_ride.dm @@ -1,33 +1,24 @@ //PIMP-CART -/obj/vehicle/janicart +/obj/vehicle/ridden/janicart name = "janicart (pimpin' ride)" desc = "A brave janitor cyborg gave its life to produce such an amazing combination of speed and utility." icon_state = "pussywagon" - + key_type = /obj/item/key/janitor var/obj/item/storage/bag/trash/mybag = null var/floorbuffer = FALSE -/obj/vehicle/janicart/Initialize(mapload) +/obj/vehicle/ridden/janicart/Initialize(mapload) . = ..() update_icon() + var/datum/component/riding/D = LoadComponent(/datum/component/riding) + D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 4), TEXT_SOUTH = list(0, 7), TEXT_EAST = list(-12, 7), TEXT_WEST = list( 12, 7))) -/obj/vehicle/janicart/Destroy() +/obj/vehicle/ridden/janicart/Destroy() if(mybag) qdel(mybag) mybag = null . = ..() -/obj/vehicle/janicart/buckle_mob(mob/living/buckled_mob, force = 0, check_loc = 0) - . = ..() - riding_datum = new/datum/riding/janicart - - - -/obj/item/key/janitor - desc = "A keyring with a small steel key, and a pink fob reading \"Pussy Wagon\"." - icon_state = "keyjanitor" - - /obj/item/janiupgrade name = "floor buffer upgrade" desc = "An upgrade for mobile janicarts." @@ -35,14 +26,12 @@ icon_state = "upgrade" origin_tech = "materials=3;engineering=4" - -/obj/vehicle/janicart/examine(mob/user) +/obj/vehicle/ridden/janicart/examine(mob/user) ..() if(floorbuffer) to_chat(user, "It has been upgraded with a floor buffer.") - -/obj/vehicle/janicart/attackby(obj/item/I, mob/user, params) +/obj/vehicle/ridden/janicart/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/storage/bag/trash)) if(mybag) to_chat(user, "[src] already has a trashbag hooked!") @@ -64,16 +53,14 @@ else return ..() - -/obj/vehicle/janicart/update_icon() +/obj/vehicle/ridden/janicart/update_icon() cut_overlays() if(mybag) add_overlay("cart_garbage") if(floorbuffer) add_overlay("cart_buffer") - -/obj/vehicle/janicart/attack_hand(mob/user) +/obj/vehicle/ridden/janicart/attack_hand(mob/user) if(..()) return 1 else if(mybag) @@ -82,5 +69,5 @@ mybag = null update_icon() -/obj/vehicle/janicart/upgraded +/obj/vehicle/ridden/janicart/upgraded floorbuffer = TRUE diff --git a/code/modules/vehicles/ridden.dm b/code/modules/vehicles/ridden.dm new file mode 100644 index 0000000000..ea3a05470a --- /dev/null +++ b/code/modules/vehicles/ridden.dm @@ -0,0 +1,76 @@ +/obj/vehicle/ridden + name = "ridden vehicle" + can_buckle = TRUE + max_buckled_mobs = 1 + buckle_lying = FALSE + default_driver_move = FALSE + var/legs_required = 2 + var/arms_requires = 0 //why not? + +/obj/vehicle/ridden/Initialize() + . = ..() + LoadComponent(/datum/component/riding) + +/obj/vehicle/ridden/examine(mob/user) + . = ..() + to_chat(user, "Put a key inside it by clicking it with the key. If there's a key inside, you can remove it via Alt-Click!") + +/obj/vehicle/ridden/generate_action_type(actiontype) + var/datum/action/vehicle/ridden/A = ..() + . = A + if(istype(A)) + A.vehicle_ridden_target = src + +/obj/vehicle/ridden/post_unbuckle_mob(mob/living/M) + remove_occupant(M) + return ..() + +/obj/vehicle/ridden/post_buckle_mob(mob/living/M) + add_occupant(M) + return ..() + +/obj/vehicle/ridden/attackby(obj/item/I, mob/user, params) + if(key_type && !is_key(inserted_key) && is_key(I)) + if(user.transferItemToLoc(I, src)) + to_chat(user, "You insert \the [I] into \the [src].") + if(inserted_key) //just in case there's an invalid key + inserted_key.forceMove(drop_location()) + inserted_key = I + else + to_chat(user, "[I] seems to be stuck to your hand!") + return + return ..() + +/obj/vehicle/ridden/AltClick(mob/user) + if(user.Adjacent(src) && inserted_key) + if(!is_occupant(user)) + to_chat(user, "You must be riding the [src] to remove [src]'s key!") + return + to_chat(user, "You remove \the [inserted_key] from \the [src].") + inserted_key.forceMove(drop_location()) + user.put_in_hands(inserted_key) + inserted_key = null + return ..() + +/obj/vehicle/ridden/driver_move(mob/user, direction) + if(key_type && !is_key(inserted_key)) + to_chat(user, "[src] has no key inserted!") + return FALSE + var/datum/component/riding/R = GetComponent(/datum/component/riding) + R.handle_ride(user, direction) + return ..() + +/obj/vehicle/ridden/user_buckle_mob(mob/living/M, mob/user, check_loc = TRUE) + if(user.incapacitated()) + return + for(var/atom/movable/A in get_turf(src)) + if(A.density) + if(A != src && A != M) + return + M.forceMove(get_turf(src)) + . = ..() + +/obj/vehicle/ridden/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE) + if(!force && occupant_amount() >= max_occupants) + return FALSE + return ..() diff --git a/code/modules/vehicles/scooter.dm b/code/modules/vehicles/scooter.dm index 24cfd9ab92..66ae84f559 100644 --- a/code/modules/vehicles/scooter.dm +++ b/code/modules/vehicles/scooter.dm @@ -1,14 +1,20 @@ -/obj/vehicle/scooter +/obj/vehicle/ridden/scooter name = "scooter" desc = "A fun way to get around." icon_state = "scooter" -/obj/vehicle/scooter/attackby(obj/item/I, mob/user, params) +/obj/vehicle/ridden/scooter/Initialize() + . = ..() + var/datum/component/riding/D = LoadComponent(/datum/component/riding) + D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0), TEXT_SOUTH = list(-2), TEXT_EAST = list(0), TEXT_WEST = list( 2))) + + +/obj/vehicle/ridden/scooter/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/wrench)) to_chat(user, "You begin to remove the handlebars...") playsound(get_turf(user), 'sound/items/ratchet.ogg', 50, 1) if(do_after(user, 40*I.toolspeed, target = src)) - var/obj/vehicle/scooter/skateboard/S = new /obj/vehicle/scooter/skateboard(get_turf(src)) + var/obj/vehicle/ridden/scooter/skateboard/S = new(loc) new /obj/item/stack/rods(get_turf(src),2) to_chat(user, "You remove the handlebars from [src].") if(has_buckled_mobs()) @@ -17,9 +23,16 @@ S.buckle_mob(H) qdel(src) +/obj/vehicle/ridden/scooter/Moved() + . = ..() + for(var/m in buckled_mobs) + var/mob/living/buckled_mob = m + if(buckled_mob.get_num_legs() > 0) + buckled_mob.pixel_y = 5 + else + buckled_mob.pixel_y = -4 -/obj/vehicle/scooter/buckle_mob(mob/living/M, force = 0, check_loc = 1) - riding_datum = new/datum/riding/scooter +/obj/vehicle/ridden/scooter/buckle_mob(mob/living/M, force = 0, check_loc = 1) if(!istype(M)) return 0 if(M.get_num_legs() < 2 && M.get_num_arms() <= 0) @@ -27,29 +40,32 @@ return 0 . = ..() -/obj/vehicle/scooter/post_buckle_mob(mob/living/M) - riding_datum.account_limbs(M) - -/obj/vehicle/scooter/skateboard +/obj/vehicle/ridden/scooter/skateboard name = "skateboard" desc = "An unfinished scooter which can only barely be called a skateboard. It's still rideable, but probably unsafe. Looks like you'll need to add a few rods to make handlebars." icon_state = "skateboard" - density = FALSE -/obj/vehicle/scooter/skateboard/buckle_mob(mob/living/M, force = 0, check_loc = 1) +/obj/vehicle/ridden/scooter/skateboard/Initialize() . = ..() - riding_datum = new/datum/riding/scooter/skateboard + var/datum/component/riding/D = LoadComponent(/datum/component/riding) + D.vehicle_move_delay = 0 + D.set_vehicle_dir_layer(SOUTH, ABOVE_MOB_LAYER) + D.set_vehicle_dir_layer(NORTH, OBJ_LAYER) + D.set_vehicle_dir_layer(EAST, OBJ_LAYER) + D.set_vehicle_dir_layer(WEST, OBJ_LAYER) -/obj/vehicle/scooter/skateboard/post_buckle_mob(mob/living/M)//allows skateboards to be non-dense but still allows 2 skateboarders to collide with each other - if(has_buckled_mobs()) - density = TRUE - else +/obj/vehicle/ridden/scooter/skateboard/post_buckle_mob(mob/living/M)//allows skateboards to be non-dense but still allows 2 skateboarders to collide with each other + density = TRUE + return ..() + +/obj/vehicle/ridden/scooter/skateboard/post_unbuckle_mob(mob/living/M) + if(!has_buckled_mobs()) density = FALSE - ..() + return ..() -/obj/vehicle/scooter/skateboard/Collide(atom/A) - ..() +/obj/vehicle/ridden/scooter/skateboard/Collide(atom/A) + . = ..() if(A.density && has_buckled_mobs()) var/mob/living/carbon/H = buckled_mobs[1] var/atom/throw_target = get_edge_target_turf(H, pick(GLOB.cardinals)) @@ -63,7 +79,7 @@ visible_message("[src] crashes into [A], sending [H] flying!") playsound(src, 'sound/effects/bang.ogg', 50, 1) -/obj/vehicle/scooter/skateboard/MouseDrop(atom/over_object) +/obj/vehicle/ridden/scooter/skateboard/MouseDrop(atom/over_object) var/mob/living/carbon/M = usr if(!istype(M) || M.incapacitated() || !Adjacent(M)) return @@ -102,10 +118,10 @@ return M.use(5) to_chat(user, "You finish making wheels for [src].") - new /obj/vehicle/scooter/skateboard(user.loc) + new /obj/vehicle/ridden/scooter/skateboard(user.loc) qdel(src) -/obj/vehicle/scooter/skateboard/attackby(obj/item/I, mob/user, params) +/obj/vehicle/ridden/scooter/skateboard/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/screwdriver)) to_chat(user, "You begin to deconstruct and remove the wheels on [src]...") playsound(get_turf(user), I.usesound, 50, 1) @@ -129,7 +145,7 @@ return to_chat(user, "You add the rods to [src], creating handlebars.") C.use(2) - var/obj/vehicle/scooter/S = new/obj/vehicle/scooter(get_turf(src)) + var/obj/vehicle/ridden/scooter/S = new(loc) if(has_buckled_mobs()) var/mob/living/carbon/H = buckled_mobs[1] unbuckle_mob(H) diff --git a/code/modules/vehicles/secway.dm b/code/modules/vehicles/secway.dm index c85088ec8d..33f0d794c8 100644 --- a/code/modules/vehicles/secway.dm +++ b/code/modules/vehicles/secway.dm @@ -1,13 +1,12 @@ -/obj/vehicle/secway +/obj/vehicle/ridden/secway name = "secway" desc = "A brave security cyborg gave its life to help you look like a complete tool." icon_state = "secway" + key_type = /obj/item/key/security -/obj/item/key/security - desc = "A keyring with a small steel key, and a rubber stun baton accessory." - icon_state = "keysec" - -/obj/vehicle/secway/buckle_mob(mob/living/buckled_mob, force = 0, check_loc = 1) +/obj/vehicle/ridden/secway/Initialize() . = ..() - riding_datum = new/datum/riding/secway \ No newline at end of file + var/datum/component/riding/D = LoadComponent(/datum/component/riding) + D.vehicle_move_delay = 1 + D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 4), TEXT_SOUTH = list(0, 4), TEXT_EAST = list(0, 4), TEXT_WEST = list( 0, 4))) diff --git a/code/modules/vehicles/speedbike.dm b/code/modules/vehicles/speedbike.dm index 9200a3d696..c4e9e17e11 100644 --- a/code/modules/vehicles/speedbike.dm +++ b/code/modules/vehicles/speedbike.dm @@ -1,44 +1,72 @@ -/obj/vehicle/space/speedbike + +/obj/vehicle/ridden/space + name = "Generic Space Vehicle!" + +/obj/vehicle/ridden/space/Initialize() + . = ..() + var/datum/component/riding/D = LoadComponent(/datum/component/riding) + D.override_allow_spacemove = TRUE + +/obj/vehicle/ridden/space/speedbike name = "Speedbike" icon = 'icons/obj/bike.dmi' icon_state = "speedbike_blue" layer = LYING_MOB_LAYER var/overlay_state = "cover_blue" - var/static/mutable_appearance/overlay - -/obj/vehicle/space/speedbike/buckle_mob(mob/living/M, force = 0, check_loc = 1) - . = ..() - riding_datum = new/datum/riding/space/speedbike + var/mutable_appearance/overlay +<<<<<<< HEAD /obj/vehicle/space/speedbike/New() +======= +/obj/vehicle/ridden/space/speedbike/Initialize() +>>>>>>> 5182128... refactors riding datums to a component, vehicle refactor staging for mech overhaul (#32249) . = ..() - overlay = overlay || mutable_appearance(icon, overlay_state, ABOVE_MOB_LAYER) + overlay = mutable_appearance(icon, overlay_state, ABOVE_MOB_LAYER) add_overlay(overlay) + var/datum/component/riding/D = LoadComponent(/datum/component/riding) + D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, -8), TEXT_SOUTH = list(0, 4), TEXT_EAST = list(-10, 5), TEXT_WEST = list( 10, 5))) + D.vehicle_move_delay = 0 + D.set_vehicle_dir_offsets(NORTH, -16, -16) + D.set_vehicle_dir_offsets(SOUTH, -16, -16) + D.set_vehicle_dir_offsets(EAST, -18, 0) + D.set_vehicle_dir_offsets(WEST, -18, 0) -/obj/vehicle/space/speedbike/Move(newloc,move_dir) +/obj/vehicle/ridden/space/speedbike/Move(newloc,move_dir) if(has_buckled_mobs()) new /obj/effect/temp_visual/dir_setting/speedbike_trail(loc,move_dir) . = ..() -/obj/vehicle/space/speedbike/red +/obj/vehicle/ridden/space/speedbike/red icon_state = "speedbike_red" overlay_state = "cover_red" //BM SPEEDWAGON -/obj/vehicle/space/speedbike/speedwagon +/obj/vehicle/ridden/space/speedwagon name = "BM Speedwagon" desc = "Push it to the limit, walk along the razor's edge." icon = 'icons/obj/car.dmi' icon_state = "speedwagon" layer = LYING_MOB_LAYER - overlay_state = "speedwagon_cover" + var/static/mutable_appearance/overlay = mutable_appearance(icon, "speedwagon_cover", ABOVE_MOB_LAYER) max_buckled_mobs = 4 var/crash_all = FALSE //CHAOS pixel_y = -48 //to fix the offset when Initialized() pixel_x = -48 -/obj/vehicle/space/speedbike/speedwagon/Collide(atom/movable/A) +/obj/vehicle/ridden/space/speedwagon/Initialize() + . = ..() + add_overlay(overlay) + var/datum/component/riding/D = LoadComponent(/datum/component/riding) + D.vehicle_move_delay = 0 + D.set_riding_offsets(1, list(TEXT_NORTH = list(-10, -4), TEXT_SOUTH = list(16, 3), TEXT_EAST = list(-4, 30), TEXT_WEST = list(4, -3))) + D.set_riding_offsets(2, list(TEXT_NORTH = list(19, -5, 4), TEXT_SOUTH = list(-13, 3, 4), TEXT_EAST = list(-4, -3, 4.1), TEXT_WEST = list(4, 28, 3.9))) + D.set_riding_offsets(3, list(TEXT_NORTH = list(-10, -18, 4.2), TEXT_SOUTH = list(16, 25, 3.9), TEXT_EAST = list(-22, 30), TEXT_WEST = list(22, -3, 4.1))) + D.set_riding_offsets(4, list(TEXT_NORTH = list(19, -18, 4.2), TEXT_SOUTH = list(-13, 25, 3.9), TEXT_EAST = list(-22, 3, 3.9), TEXT_WEST = list(22, 28))) + for(var/i in GLOB.cardinals) + D.set_vehicle_dir_layer(i, BELOW_MOB_LAYER) + +/obj/vehicle/ridden/space/speedwagon/Collide(atom/movable/A) . = ..() if(A.density && has_buckled_mobs()) var/atom/throw_target = get_edge_target_turf(A, dir) @@ -56,11 +84,7 @@ visible_message("[src] crashes into [H]!") playsound(src, 'sound/effects/bang.ogg', 50, 1) -/obj/vehicle/space/speedbike/speedwagon/buckle_mob(mob/living/M, force = 0, check_loc = 1) - . = ..() - riding_datum = new/datum/riding/space/speedwagon - -/obj/vehicle/space/speedbike/speedwagon/Moved() +/obj/vehicle/ridden/space/speedwagon/Moved() . = ..() if(has_buckled_mobs()) for(var/atom/A in range(2, src)) diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm deleted file mode 100644 index e538599754..0000000000 --- a/code/modules/vehicles/vehicle.dm +++ /dev/null @@ -1,108 +0,0 @@ - -/obj/vehicle - name = "vehicle" - desc = "A basic vehicle, vroom." - icon = 'icons/obj/vehicles.dmi' - icon_state = "fuckyou" - density = TRUE - anchored = FALSE - can_buckle = 1 - buckle_lying = 0 - max_integrity = 300 - armor = list(melee = 30, bullet = 30, laser = 30, energy = 0, bomb = 30, bio = 0, rad = 0, fire = 60, acid = 60) - var/auto_door_open = TRUE - var/view_range = 7 - var/datum/riding/riding_datum = null - -/obj/vehicle/Destroy() - QDEL_NULL(riding_datum) - return ..() - -/obj/vehicle/update_icon() - return - -/obj/item/key - name = "key" - desc = "A small grey key." - icon = 'icons/obj/vehicles.dmi' - icon_state = "key" - w_class = WEIGHT_CLASS_TINY - -//BUCKLE HOOKS -/obj/vehicle/unbuckle_mob(mob/living/buckled_mob,force = 0) - if(riding_datum) - riding_datum.restore_position(buckled_mob) - . = ..() - - -/obj/vehicle/user_buckle_mob(mob/living/M, mob/living/user) - if(!istype(user) || user.incapacitated()) - return - for(var/atom/movable/A in get_turf(src)) - if(A.density) - if(A != src && A != M) - return - M.forceMove(get_turf(src)) - ..() - if(user.client) - user.client.change_view(view_range) - if(riding_datum) - riding_datum.ridden = src - riding_datum.handle_vehicle_offsets() - -//MOVEMENT -/obj/vehicle/relaymove(mob/user, direction) - if(riding_datum) - riding_datum.handle_ride(user, direction) - - -/obj/vehicle/Moved() - . = ..() - if(riding_datum) - riding_datum.handle_vehicle_layer() - riding_datum.handle_vehicle_offsets() - - -/obj/vehicle/Collide(atom/movable/M) - . = ..() - if(auto_door_open) - if(istype(M, /obj/machinery/door) && has_buckled_mobs()) - for(var/m in buckled_mobs) - M.CollidedWith(m) - - -/obj/vehicle/Process_Spacemove(direction) - if(has_gravity()) - return 1 - - if(pulledby && (pulledby.loc != loc)) - return 1 - - return 0 - -/obj/vehicle/space - pressure_resistance = INFINITY - - -/obj/vehicle/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) - if(damage_flag == "melee" && damage_amount < 20) - return 0 - . = ..() - -/obj/vehicle/deconstruct(disassembled = TRUE) - new /obj/item/stack/sheet/metal (loc, 5) - qdel(src) - -/obj/vehicle/examine(mob/user) - ..() - if(!(resistance_flags & INDESTRUCTIBLE)) - if(resistance_flags & ON_FIRE) - to_chat(user, "It's on fire!") - var/healthpercent = (obj_integrity/max_integrity) * 100 - switch(healthpercent) - if(50 to 99) - to_chat(user, "It looks slightly damaged.") - if(25 to 50) - to_chat(user, "It appears heavily damaged.") - if(0 to 25) - to_chat(user, "It's falling apart!") \ No newline at end of file diff --git a/code/modules/vehicles/vehicle_actions.dm b/code/modules/vehicles/vehicle_actions.dm new file mode 100644 index 0000000000..79a24c8b11 --- /dev/null +++ b/code/modules/vehicles/vehicle_actions.dm @@ -0,0 +1,112 @@ +//VEHICLE DEFAULT HANDLING +/obj/vehicle/proc/generate_actions() + return + +/obj/vehicle/proc/generate_action_type(actiontype) + var/datum/action/vehicle/A = new actiontype + if(!istype(A)) + return + A.vehicle_target = src + return A + +/obj/vehicle/proc/initialize_passenger_action_type(actiontype) + autogrant_actions_passenger += actiontype + for(var/i in occupants) + grant_passenger_actions(i) //refresh + +/obj/vehicle/proc/initialize_controller_action_type(actiontype, control_flag) + LAZYINITLIST(autogrant_actions_controller["[control_flag]"]) + autogrant_actions_controller["[control_flag]"] += actiontype + for(var/i in occupants) + grant_controller_actions(i) //refresh + +/obj/vehicle/proc/grant_action_type_to_mob(actiontype, mob/m) + if(!occupants[m] || !actiontype) + return FALSE + LAZYINITLIST(occupant_actions[m]) + if(occupant_actions[m][actiontype]) + return TRUE + var/datum/action/action = generate_action_type(actiontype) + action.Grant(m) + occupant_actions[m][action.type] = action + return TRUE + +/obj/vehicle/proc/remove_action_type_from_mob(actiontype, mob/m) + if(!occupants[m] || !actiontype) + return FALSE + LAZYINITLIST(occupant_actions[m]) + if(occupant_actions[m][actiontype]) + var/datum/action/action = occupant_actions[m][actiontype] + action.Remove(m) + occupant_actions[m] -= actiontype + return TRUE + +/obj/vehicle/proc/grant_passenger_actions(mob/M) + for(var/v in autogrant_actions_passenger) + grant_action_type_to_mob(v, M) + +/obj/vehicle/proc/remove_passenger_actions(mob/M) + for(var/v in autogrant_actions_passenger) + remove_action_type_from_mob(v, M) + +/obj/vehicle/proc/grant_controller_actions(mob/M) + if(!istype(M) || !occupants[M]) + return FALSE + for(var/i in GLOB.bitflags) + if(occupants[M] & i) + grant_controller_actions_by_flag(M, i) + return TRUE + +/obj/vehicle/proc/remove_controller_actions(mob/M) + if(!istype(M) || !occupants[M]) + return FALSE + for(var/i in GLOB.bitflags) + remove_controller_actions_by_flag(M, i) + return TRUE + +/obj/vehicle/proc/grant_controller_actions_by_flag(mob/M, flag) + if(!istype(M) || !autogrant_actions_controller["[flag]"]) + return FALSE + for(var/v in autogrant_actions_controller["[flag]"]) + grant_action_type_to_mob(v, M) + return TRUE + +/obj/vehicle/proc/remove_controller_actions_by_flag(mob/M, flag) + if(!istype(M) || autogrant_actions_controller["[flag]"]) + return FALSE + for(var/v in autogrant_actions_controller["[flag]"]) + remove_action_type_from_mob(v, M) + return TRUE + +/obj/vehicle/proc/cleanup_actions_for_mob(mob/M) + if(!istype(M)) + return FALSE + LAZYINITLIST(occupant_actions[M]) + for(var/path in occupant_actions[M]) + stack_trace("Leftover action type [path] in vehicle type [type] for mob type [M.type] - THIS SHOULD NOT BE HAPPENING!") + var/datum/action/action = occupant_actions[M] + action.Remove(M) + occupant_actions -= M + return TRUE + +//ACTION DATUMS + +/datum/action/vehicle + check_flags = AB_CHECK_RESTRAINED | AB_CHECK_STUN | AB_CHECK_CONSCIOUS + icon_icon = 'icons/mob/actions/actions_vehicle.dmi' + button_icon_state = "vehicle_eject" + var/obj/vehicle/vehicle_target + +/datum/action/vehicle/sealed + var/obj/vehicle/sealed/vehicle_entered_target + +/datum/action/vehicle/sealed/climb_out + name = "Climb Out" + desc = "Climb out of your vehicle!" + +/datum/action/vehicle/sealed/climb_out/Trigger() + if(..() && istype(vehicle_entered_target)) + vehicle_entered_target.mob_try_exit(owner, owner) + +/datum/action/vehicle/ridden + var/obj/vehicle/ridden/vehicle_ridden_target diff --git a/code/modules/vehicles/vehicle_key.dm b/code/modules/vehicles/vehicle_key.dm new file mode 100644 index 0000000000..204a10bd17 --- /dev/null +++ b/code/modules/vehicles/vehicle_key.dm @@ -0,0 +1,15 @@ +/obj/item/key + name = "key" + desc = "A small grey key." + icon = 'icons/obj/vehicles.dmi' + icon_state = "key" + w_class = WEIGHT_CLASS_TINY + +/obj/item/key/security + desc = "A keyring with a small steel key, and a rubber stun baton accessory." + icon_state = "keysec" + +/obj/item/key/janitor + desc = "A keyring with a small steel key, and a pink fob reading \"Pussy Wagon\"." + icon_state = "keyjanitor" + diff --git a/icons/mob/actions/actions_vehicle.dmi b/icons/mob/actions/actions_vehicle.dmi new file mode 100644 index 0000000000000000000000000000000000000000..62b995ef9bc33e6b61381ebddffdfb94f6b6a875 GIT binary patch literal 435 zcmV;k0ZjghP)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+ z(=$pSoZ^zil2jm5sVp@kGdU+UJ~b;fxkQPJGbOXA7$|PY#hF%=n41b=D=WDAxqyua z07RM{RW?gCMgRZ+$w@>(R49>!l0g!JFbqZO4NTFxE{+FKyZ|E?&>0SpP4;X^ZcvVG zX#fi>Ocrh5q?!JonggujXrR1S&Fj{-pJ!7&N-);v1=br2jsOUC0R;#|x}Y~j+RasX zj{x?7mTM85An%H`f~D&STn?Z%h0D9b-B^drJ!^FFVP}Uj^diHU9lR6Z2w0ed0+PTY zLAp!83B5|=xc#H}3L02jf3$BMOMQT_xb$Gn1{V}3u% d-LSXc;R|;5bSSvrdYu3O002ovPDHLkV1j1avK#;a literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 34227a9a18..53331b7561 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -306,7 +306,6 @@ #include "code\datums\progressbar.dm" #include "code\datums\radiation_wave.dm" #include "code\datums\recipe.dm" -#include "code\datums\riding.dm" #include "code\datums\ruins.dm" #include "code\datums\shuttles.dm" #include "code\datums\soullink.dm" @@ -339,6 +338,7 @@ #include "code\datums\components\paintable.dm" #include "code\datums\components\rad_insulation.dm" #include "code\datums\components\radioactive.dm" +#include "code\datums\components\riding.dm" #include "code\datums\components\signal_redirect.dm" #include "code\datums\components\slippery.dm" #include "code\datums\components\spooky.dm" @@ -2381,15 +2381,22 @@ #include "code\modules\tgui\states\self.dm" #include "code\modules\tgui\states\zlevel.dm" #include "code\modules\tooltip\tooltip.dm" +<<<<<<< HEAD #include "code\modules\uplink\uplink.dm" #include "code\modules\uplink\uplink_item.dm" #include "code\modules\uplink\uplink_item_cit.dm" +======= +#include "code\modules\vehicles\_vehicle.dm" +>>>>>>> 5182128... refactors riding datums to a component, vehicle refactor staging for mech overhaul (#32249) #include "code\modules\vehicles\atv.dm" #include "code\modules\vehicles\bicycle.dm" +#include "code\modules\vehicles\entered.dm" #include "code\modules\vehicles\pimpin_ride.dm" +#include "code\modules\vehicles\ridden.dm" #include "code\modules\vehicles\scooter.dm" #include "code\modules\vehicles\secway.dm" #include "code\modules\vehicles\speedbike.dm" +<<<<<<< HEAD #include "code\modules\vehicles\vehicle.dm" #include "code\modules\vore\hook-defs_vr.dm" #include "code\modules\vore\trycatch_vr.dm" @@ -2399,6 +2406,10 @@ #include "code\modules\vore\eating\simple_animal_vr.dm" #include "code\modules\vore\eating\vore_vr.dm" #include "code\modules\vore\eating\vorepanel_vr.dm" +======= +#include "code\modules\vehicles\vehicle_actions.dm" +#include "code\modules\vehicles\vehicle_key.dm" +>>>>>>> 5182128... refactors riding datums to a component, vehicle refactor staging for mech overhaul (#32249) #include "code\modules\VR\vr_human.dm" #include "code\modules\VR\vr_sleeper.dm" #include "code\modules\zombie\items.dm" From c0547bea4baaa4309a749244e0235e2a22df0c57 Mon Sep 17 00:00:00 2001 From: Leo Date: Sun, 3 Dec 2017 20:06:30 -0200 Subject: [PATCH 289/328] Merge pull request #33217 from tgstation/Cyberboss-patch-3 Makes ahelp timestamps consistent with logs --- code/modules/admin/verbs/adminhelp.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 99e21c2da2..2d57ee0965 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -214,7 +214,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(heard_by_no_admins && usr && usr.ckey != initiator_ckey) heard_by_no_admins = FALSE send2irc(initiator_ckey, "Ticket #[id]: Answered by [key_name(usr)]") - _interactions += "[gameTimestamp()]: [formatted_message]" + _interactions += "[time_stamp()]: [formatted_message]" //Removes the ahelp verb and returns it after 2 minutes /datum/admin_help/proc/TimeoutVerb() From 73956e0e88af9a5dd2379e32c4cba6eb8253344a Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Dec 2017 17:20:42 -0600 Subject: [PATCH 291/328] Automatic changelog generation for PR #4171 [ci skip] --- html/changelogs/AutoChangeLog-pr-4171.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4171.yml diff --git a/html/changelogs/AutoChangeLog-pr-4171.yml b/html/changelogs/AutoChangeLog-pr-4171.yml new file mode 100644 index 0000000000..612f5ad379 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4171.yml @@ -0,0 +1,4 @@ +author: "psykzz" +delete-after: True +changes: + - bugfix: "Fixing the broken turbine computer" From bf94dfd2815131ce6af4e41c44f1666f9d2e770a Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Dec 2017 17:21:31 -0600 Subject: [PATCH 292/328] Automatic changelog generation for PR #4191 [ci skip] --- html/changelogs/AutoChangeLog-pr-4191.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4191.yml diff --git a/html/changelogs/AutoChangeLog-pr-4191.yml b/html/changelogs/AutoChangeLog-pr-4191.yml new file mode 100644 index 0000000000..5904f70b86 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4191.yml @@ -0,0 +1,5 @@ +author: "BeeSting12" +delete-after: True +changes: + - spellcheck: "Occupand ---> Occupant on opened cryogenic pods." + - spellcheck: "Cyrogenic ---> Cryogenic on opened cryogenic pods." From 3128e8d3b437bfa8161afed3106c2bba081f6c9d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Dec 2017 17:23:32 -0600 Subject: [PATCH 293/328] Automatic changelog generation for PR #4196 [ci skip] --- html/changelogs/AutoChangeLog-pr-4196.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4196.yml diff --git a/html/changelogs/AutoChangeLog-pr-4196.yml b/html/changelogs/AutoChangeLog-pr-4196.yml new file mode 100644 index 0000000000..49ab9fdbd9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4196.yml @@ -0,0 +1,4 @@ +author: "zennerx" +delete-after: True +changes: + - spellcheck: "fixed some typos in the weapon firing mechanism description" From 4d29723302d039b259d3566752acfb3e7dfc5c05 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 3 Dec 2017 18:25:54 -0500 Subject: [PATCH 294/328] Update lighting.dm --- code/modules/power/lighting.dm | 9 --------- 1 file changed, 9 deletions(-) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 635a17056d..9f12e25bd2 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -242,12 +242,8 @@ icon_state = "tube-empty" start_with_cell = FALSE -<<<<<<< HEAD -/obj/machinery/light/built/New() -======= /obj/machinery/light/built/Initialize() . = ..() ->>>>>>> fe816da... Adds emergency lights, built into light fixtures (#33213) status = LIGHT_EMPTY update(0) ..() @@ -262,15 +258,10 @@ // create a new lighting fixture -<<<<<<< HEAD -/obj/machinery/light/New() - ..() -======= /obj/machinery/light/Initialize() . = ..() if(start_with_cell && !no_emergency) cell = new/obj/item/stock_parts/cell/emergency_light(src) ->>>>>>> fe816da... Adds emergency lights, built into light fixtures (#33213) spawn(2) switch(fitting) if("tube") From 222346bf30fe30c90f020a12fe1b7525032dec05 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 3 Dec 2017 18:29:08 -0500 Subject: [PATCH 295/328] Update say.dm --- code/modules/mob/say.dm | 86 ----------------------------------------- 1 file changed, 86 deletions(-) diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index fd17800d5a..7ffa7f8ed0 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -1,88 +1,3 @@ -<<<<<<< HEAD -//Speech verbs. -/mob/verb/say_verb(message as text) - set name = "Say" - set category = "IC" - if(GLOB.say_disabled) //This is here to try to identify lag problems - to_chat(usr, "Speech is currently admin-disabled.") - return - usr.say(message) - - -/mob/verb/whisper_verb(message as text) - set name = "Whisper" - set category = "IC" - if(GLOB.say_disabled) //This is here to try to identify lag problems - to_chat(usr, "Speech is currently admin-disabled.") - return - whisper(message) - -/mob/proc/whisper(message, datum/language/language=null) - say(message, language) //only living mobs actually whisper, everything else just talks - -/mob/verb/me_verb(message as message) - set name = "Me" - set category = "IC" - - if(GLOB.say_disabled) //This is here to try to identify lag problems - to_chat(usr, "Speech is currently admin-disabled.") - return - - var/list/replace_chars = list("\n"=" ","\t"=" ") - message = copytext(sanitize(message, replace_chars), 1, (MAX_MESSAGE_LEN*2)) - - usr.emote("me",1,message) - -/mob/proc/say_dead(var/message) - var/name = real_name - var/alt_name = "" - - if(GLOB.say_disabled) //This is here to try to identify lag problems - to_chat(usr, "Speech is currently admin-disabled.") - return - - if(jobban_isbanned(src, "OOC")) - to_chat(src, "You have been banned from deadchat.") - return - - if (src.client) - if(src.client.prefs.muted & MUTE_DEADCHAT) - to_chat(src, "You cannot talk in deadchat (muted).") - return - - if(src.client.handle_spam_prevention(message,MUTE_DEADCHAT)) - return - - var/mob/dead/observer/O = src - if(isobserver(src) && O.deadchat_name) - name = "[O.deadchat_name]" - else - if(mind && mind.name) - name = "[mind.name]" - else - name = real_name - if(name != real_name) - alt_name = " (died as [real_name])" - - var/K - - if(key) - K = src.key - - message = src.say_quote(message, get_spans()) - var/rendered = "DEAD: [name][alt_name] [message]" - - deadchat_broadcast(rendered, follow_target = src, speaker_key = K) - -/mob/proc/emote(var/act) - return - -/mob/proc/hivecheck() - return 0 - -/mob/proc/lingcheck() - return 0 -======= //Speech verbs. /mob/verb/say_verb(message as text) set name = "Say" @@ -165,4 +80,3 @@ /mob/proc/lingcheck() return LINGHIVE_NONE ->>>>>>> 36414ac... Datumizes saymodes (#33013) From 7e28ac775c5cfde5dd272d85747be939db5c2f34 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Dec 2017 17:29:44 -0600 Subject: [PATCH 296/328] Automatic changelog generation for PR #4200 [ci skip] --- html/changelogs/AutoChangeLog-pr-4200.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4200.yml diff --git a/html/changelogs/AutoChangeLog-pr-4200.yml b/html/changelogs/AutoChangeLog-pr-4200.yml new file mode 100644 index 0000000000..a2321590c7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4200.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "You can now lay (buckle!) yourself to a bed to avoid being burnt to a crisp during \"the floor is lava\" event." From 1297cf907eb91ba1b0b24404a15bae01f895f7a9 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Dec 2017 17:30:04 -0600 Subject: [PATCH 297/328] Automatic changelog generation for PR #4201 [ci skip] --- html/changelogs/AutoChangeLog-pr-4201.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4201.yml diff --git a/html/changelogs/AutoChangeLog-pr-4201.yml b/html/changelogs/AutoChangeLog-pr-4201.yml new file mode 100644 index 0000000000..127a8b26ed --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4201.yml @@ -0,0 +1,4 @@ +author: "Robustin" +delete-after: True +changes: + - tweak: "Igniting plasma statues no longer ignores ignition temperature and only creates as much plasma as was used in its creation." From 2393b7759baceca13d0d85c247dfcd4d785f0300 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sat, 2 Dec 2017 18:12:44 -0500 Subject: [PATCH 298/328] People jitter when revived by defibs --- code/game/objects/items/defib.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index c3ccd1a144..358ffd3e10 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -545,6 +545,7 @@ H.set_heartattack(FALSE) H.revive() H.emote("gasp") + H.Jitter(100) if(tplus > tloss) H.setBrainLoss( max(0, min(99, ((tlimit - tplus) / tlimit * 100)))) add_logs(user, H, "revived", defib) From 985c8ea86ba23410a65850f21519e3bbf275e37d Mon Sep 17 00:00:00 2001 From: LetterJay Date: Mon, 4 Dec 2017 02:14:16 -0600 Subject: [PATCH 300/328] donation --- code/citadel/custom_loadout/custom_items.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/citadel/custom_loadout/custom_items.dm b/code/citadel/custom_loadout/custom_items.dm index 529a643347..dcc8934173 100644 --- a/code/citadel/custom_loadout/custom_items.dm +++ b/code/citadel/custom_loadout/custom_items.dm @@ -110,6 +110,7 @@ icon = 'icons/obj/custom.dmi' icon_state = "festive-w" item_state = "festive-i" + icon = 'icons/obj/custom.dmi' w_class = WEIGHT_CLASS_SMALL body_parts_covered = CHEST|GROIN|LEGS|ARMS From 4f8323a7355e9794612c46a31e3e753b9b189af3 Mon Sep 17 00:00:00 2001 From: QualityVan Date: Mon, 4 Dec 2017 05:50:36 -0500 Subject: [PATCH 301/328] Fixes missing eyes being absent (#33203) --- .../mob/living/carbon/human/species.dm | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index e374bb9187..5072880c01 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -453,9 +453,9 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/obj/item/bodypart/head/HD = H.get_bodypart("head") - if(!(H.disabilities & HUSK)) + if(HD && !(H.disabilities & HUSK)) // lipstick - if(H.lip_style && (LIPS in species_traits) && HD) + if(H.lip_style && (LIPS in species_traits)) var/mutable_appearance/lip_overlay = mutable_appearance('icons/mob/human_face.dmi', "lips_[H.lip_style]", -BODY_LAYER) lip_overlay.color = H.lip_color if(OFFSET_FACE in H.dna.species.offset_features) @@ -464,13 +464,18 @@ GLOBAL_LIST_EMPTY(roundstart_races) standing += lip_overlay // eyes - if((EYECOLOR in species_traits) && HD) - var/mutable_appearance/eye_overlay = mutable_appearance('icons/mob/human_face.dmi', "eyes", -BODY_LAYER) + var/has_eyes = H.getorganslot(ORGAN_SLOT_EYES) + var/mutable_appearance/eye_overlay + if(!has_eyes) + eye_overlay = mutable_appearance('icons/mob/human_face.dmi', "eyes_missing", -BODY_LAYER) + else + eye_overlay = mutable_appearance('icons/mob/human_face.dmi', "eyes", -BODY_LAYER) + if((EYECOLOR in species_traits) && has_eyes) eye_overlay.color = "#" + H.eye_color - if(OFFSET_FACE in H.dna.species.offset_features) - eye_overlay.pixel_x += H.dna.species.offset_features[OFFSET_FACE][1] - eye_overlay.pixel_y += H.dna.species.offset_features[OFFSET_FACE][2] - standing += eye_overlay + if(OFFSET_FACE in H.dna.species.offset_features) + eye_overlay.pixel_x += H.dna.species.offset_features[OFFSET_FACE][1] + eye_overlay.pixel_y += H.dna.species.offset_features[OFFSET_FACE][2] + standing += eye_overlay //Underwear, Undershirts & Socks if(!(NO_UNDERWEAR in species_traits)) From 00279c71f09588a77d92a451ef23cfd95bc407f5 Mon Sep 17 00:00:00 2001 From: ACCount Date: Mon, 4 Dec 2017 13:53:02 +0300 Subject: [PATCH 303/328] IC fixes (#33215) --- .../integrated_electronics/core/assemblies.dm | 4 ---- .../subtypes/manipulation.dm | 15 +++++++++------ .../integrated_electronics/subtypes/output.dm | 6 +++++- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index 5d457dfeed..a7ed8e7c11 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -196,10 +196,6 @@ for(var/I in assembly_components) var/obj/item/integrated_circuit/IC = I IC.external_examine(user) - if(istype(IC, /obj/item/integrated_circuit/output/screen)) - var/obj/item/integrated_circuit/output/screen/S - if(S.stuff_to_display) - to_chat(user, "There's a little screen labeled '[S]', which displays '[S.stuff_to_display]'.") if(opened) interact(user) diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index 813b77d6c2..62f15d927b 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -302,15 +302,15 @@ var/max_items = 10 /obj/item/integrated_circuit/manipulation/grabber/do_work() - var/turf/T = get_turf(src) + var/atom/movable/acting_object = get_object() + var/turf/T = get_turf(acting_object) var/obj/item/AM = get_pin_data_as_type(IC_INPUT, 1, /obj/item) if(AM) - var/turf/P = get_turf(AM) var/mode = get_pin_data(IC_INPUT, 2) if(mode == 1) - if(P.Adjacent(T)) - if((contents.len < max_items) && AM && (AM.w_class <= max_w_class)) + if(AM.Adjacent(acting_object) && isturf(AM.loc)) + if((contents.len < max_items) && (!max_w_class || AM.w_class <= max_w_class)) AM.forceMove(src) if(mode == 0) if(contents.len) @@ -372,11 +372,14 @@ var/target_y_rel = round(get_pin_data(IC_INPUT, 2)) var/obj/item/A = get_pin_data_as_type(IC_INPUT, 3, /obj/item) - if(!A || A.anchored || (A.w_class > max_w_class)) + if(!A || A.anchored || A.throwing) + return + + if(max_w_class && (A.w_class > max_w_class)) return var/atom/movable/acting_object = get_object() - if(!A.Adjacent(acting_object) && !(A in acting_object.GetAllContents())) + if(!(A.Adjacent(acting_object) && isturf(A.loc)) && !(A in acting_object.GetAllContents())) return var/turf/T = get_turf(acting_object) diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm index 7cb2479ec9..7f61968c04 100644 --- a/code/modules/integrated_electronics/subtypes/output.dm +++ b/code/modules/integrated_electronics/subtypes/output.dm @@ -17,7 +17,11 @@ stuff_to_display = null /obj/item/integrated_circuit/output/screen/any_examine(mob/user) - to_chat(user, "There is a little screen labeled '[name]', which displays [!isnull(stuff_to_display) ? "'[stuff_to_display]'" : "nothing"].") + var/shown_label = "" + if(displayed_name && displayed_name != name) + shown_label = " labeled '[displayed_name]'" + + to_chat(user, "There is \a [src][shown_label], which displays [!isnull(stuff_to_display) ? "'[stuff_to_display]'" : "nothing"].") /obj/item/integrated_circuit/output/screen/do_work() var/datum/integrated_io/I = inputs[1] From 3689b3d5fd7e885147b3e344beb0a528443a64e6 Mon Sep 17 00:00:00 2001 From: Ashe Higgs Date: Mon, 4 Dec 2017 05:54:32 -0500 Subject: [PATCH 305/328] Mechs now require fuel to repair (#33225) --- code/game/mecha/mecha_defense.dm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index 590c19b504..065415cba9 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -242,15 +242,17 @@ user.changeNext_move(CLICK_CD_MELEE) var/obj/item/weldingtool/WT = W if(obj_integrityYou repair the damaged gas tank.") else - user.visible_message("[user] repairs some damage to [name].") + user.visible_message("[user] repairs some damage to [name].", "You repair some damage to [src].") obj_integrity += min(10, max_integrity-obj_integrity) + if(obj_integrity == max_integrity) + to_chat(user, "It looks to be fully repaired now.") else - to_chat(user, "The welder must be on for this task!") + to_chat(user, "[WT] needs to be on for this task!") return 1 else to_chat(user, "The [name] is at full integrity!") From 1cc3e3371464ae0c7258de587c8df55382fab3e4 Mon Sep 17 00:00:00 2001 From: AnturK Date: Mon, 4 Dec 2017 12:14:08 +0100 Subject: [PATCH 307/328] Holorecord disks. --- code/datums/holocall.dm | 128 ++++++++++++ code/game/machinery/hologram.dm | 195 +++++++++++++++++- .../research/designs/autolathe_designs.dm | 19 ++ icons/obj/module.dmi | Bin 15674 -> 16071 bytes 4 files changed, 339 insertions(+), 3 deletions(-) diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm index abad0dba1d..75abc87080 100644 --- a/code/datums/holocall.dm +++ b/code/datums/holocall.dm @@ -1,5 +1,14 @@ #define HOLOPAD_MAX_DIAL_TIME 200 +#define HOLORECORD_DELAY "delay" +#define HOLORECORD_SAY "say" +#define HOLORECORD_SOUND "sound" +#define HOLORECORD_LANGUAGE "lang" +#define HOLORECORD_PRESET "preset" +#define HOLORECORD_RENAME "rename" + +#define HOLORECORD_MAX_LENGTH 200 + /mob/camera/aiEye/remote/holo/setLoc() . = ..() var/obj/machinery/holopad/H = origin @@ -184,3 +193,122 @@ /datum/action/innate/end_holocall/Activate() hcall.Disconnect(hcall.calling_holopad) + + +//RECORDS +/datum/holorecord + var/caller_name = "Unknown" //Caller name + var/image/caller_image + var/list/entries = list() + var/language = /datum/language/common //Initial language, can be changed by HOLORECORD_LANGUAGE entries + +/obj/item/disk/holodisk + name = "holorecord disk" + desc = "Stores recorder holocalls." + icon_state = "holodisk" + var/datum/holorecord/record + //Preset variables + var/preset_image_type + var/preset_record_text + +/obj/item/disk/holodisk/Initialize(mapload) + . = ..() + if(preset_record_text) + build_record() + +/obj/item/disk/holodisk/Destroy() + QDEL_NULL(record) + return ..() + +/obj/item/disk/holodisk/proc/build_record() + record = new + var/list/lines = splittext(preset_record_text,"\n") + for(var/line in lines) + var/prepared_line = trim(line) + if(!length(prepared_line)) + continue + var/splitpoint = findtext(prepared_line," ") + if(!splitpoint) + continue + var/command = copytext(prepared_line,1,splitpoint) + var/value = copytext(prepared_line,splitpoint+1) + switch(command) + if("DELAY") + var/delay_value = text2num(value) + if(!delay_value) + continue + record.entries += list(list(HOLORECORD_DELAY,delay_value)) + if("NAME") + if(!record.caller_name) + record.caller_name = value + else + record.entries += list(list(HOLORECORD_RENAME,value)) + if("SAY") + record.entries += list(list(HOLORECORD_SAY,value)) + if("SOUND") + record.entries += list(list(HOLORECORD_SOUND,value)) + if("LANGUAGE") + var/lang_type = text2path(value) + if(ispath(lang_type,/datum/language)) + record.entries += list(list(HOLORECORD_LANGUAGE,lang_type)) + if("PRESET") + var/preset_type = text2path(value) + if(ispath(preset_type,/datum/preset_holoimage)) + record.entries += list(list(HOLORECORD_PRESET,preset_type)) + if(!preset_image_type) + record.caller_image = image('icons/mob/animal.dmi',"old") + else + var/datum/preset_holoimage/H = new preset_image_type + record.caller_image = H.build_image() + +//These build caller image from outfit and some additional data, for use by mappers for ruin holorecords +/datum/preset_holoimage + var/nonhuman_mobtype //Fill this if you just want something nonhuman + var/outfit_type + var/species_type = /datum/species/human + +/datum/preset_holoimage/proc/build_image() + if(nonhuman_mobtype) + var/mob/living/L = nonhuman_mobtype + . = image(initial(L.icon),initial(L.icon_state)) + else + var/mob/living/carbon/human/dummy/mannequin = generate_or_wait_for_human_dummy("HOLODISK_PRESET") + if(species_type) + mannequin.set_species(species_type) + if(outfit_type) + mannequin.equipOutfit(outfit_type,TRUE) + mannequin.setDir(SOUTH) + COMPILE_OVERLAYS(mannequin) + . = getFlatIcon(mannequin) + unset_busy_human_dummy("HOLODISK_PRESET") + +/obj/item/disk/holodisk/example + preset_image_type = /datum/preset_holoimage/clown + preset_record_text = {" + NAME Clown + DELAY 10 + SAY Why did the chaplain cross the maint ? + DELAY 20 + SAY He wanted to get to the other side! + SOUND clownstep + DELAY 30 + LANGUAGE /datum/language/narsie + SAY Helped him get there! + DELAY 10 + SAY ALSO IM SECRETLY A GORILLA + DELAY 10 + PRESET /datum/preset_holoimage/gorilla + NAME Gorilla + LANGUAGE /datum/language/common + SAY OOGA + DELAY 20"} + +/datum/preset_holoimage/engineer + outfit_type = /datum/outfit/job/engineer/gloved/rig + +/datum/preset_holoimage/gorilla + nonhuman_mobtype = /mob/living/simple_animal/hostile/gorilla + +/datum/preset_holoimage/clown + outfit_type = /datum/outfit/job/clown + diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index afc463a60e..d6d8c93ed1 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -47,6 +47,12 @@ Possible to do for anyone motivated enough: var/temp = "" var/list/holo_calls //array of /datum/holocalls var/datum/holocall/outgoing_call //do not modify the datums only check and call the public procs + var/obj/item/disk/holodisk/disk //Record disk + var/replay_mode = FALSE //currently replaying a recording + var/record_mode = FALSE //currently recording + var/record_start = 0 //recording start time + var/record_user //user that inititiated the recording + var/obj/effect/overlay/holo_pad_hologram/replay_holo //replay hologram var/static/force_answer_call = FALSE //Calls will be automatically answered after a couple rings, here for debugging var/static/list/holopads = list() @@ -64,6 +70,14 @@ Possible to do for anyone motivated enough: for (var/I in masters) clear_holo(I) + + if(replay_mode) + replay_stop() + if(record_mode) + record_stop() + + QDEL_NULL(disk) + holopads -= src return ..() @@ -72,6 +86,10 @@ Possible to do for anyone motivated enough: stat &= ~NOPOWER else stat |= NOPOWER + if(replay_mode) + replay_stop() + if(record_mode) + record_stop() if(outgoing_call) outgoing_call.ConnectionFailure(src) @@ -101,6 +119,18 @@ Possible to do for anyone motivated enough: if(default_deconstruction_crowbar(P)) return + + if(istype(P,/obj/item/disk/holodisk)) + if(disk) + to_chat(user,"There's already a disk inside [src]") + return + if (!user.transferItemToLoc(P,src)) + return + to_chat(user,"You insert [P] into [src]") + disk = P + updateDialog() + return + return ..() /obj/machinery/holopad/AltClick(mob/living/carbon/human/user) @@ -122,6 +152,17 @@ Possible to do for anyone motivated enough: else dat = "
Request an AI's presence.
" dat += "Call another holopad.
" + if(disk) + if(disk.record) + //Replay + dat += "Replay disk recording.
" + //Clear + dat += "Clear disk recording.
" + else + //Record + dat += "Start new recording.
" + //Eject + dat += "Eject disk.
" if(LAZYLEN(holo_calls)) dat += "=====================================================
" @@ -145,7 +186,7 @@ Possible to do for anyone motivated enough: dat += "Disconnect call from [HC.user].
" - var/datum/browser/popup = new(user, "holopad", name, 300, 130) + var/datum/browser/popup = new(user, "holopad", name, 300, 150) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) popup.open() @@ -215,6 +256,22 @@ Possible to do for anyone motivated enough: temp = "" if(outgoing_call) outgoing_call.Disconnect() + + else if(href_list["disk_eject"]) + if(disk && !replay_mode) + disk.forceMove(drop_location()) + disk = null + + else if(href_list["replay_stop"]) + replay_stop() + else if(href_list["replay_start"]) + replay_start() + else if(href_list["record_start"]) + record_start(usr) + else if(href_list["record_stop"]) + record_stop() + else if(href_list["record_clear"]) + record_clear() updateDialog() @@ -269,6 +326,7 @@ Possible to do for anyone motivated enough: else playsound(src, 'sound/machines/twobeep.ogg', 100) //bring, bring! + /obj/machinery/holopad/proc/activate_holo(mob/living/user) var/mob/living/silicon/ai/AI = user if(!istype(AI)) @@ -321,15 +379,24 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ if(outgoing_call && speaker == outgoing_call.user) outgoing_call.hologram.say(raw_message) + if(record_mode && speaker == record_user) + record_message(speaker,raw_message,message_language) + /obj/machinery/holopad/proc/SetLightsAndPower() var/total_users = masters.len + LAZYLEN(holo_calls) use_power = total_users > 0 ? ACTIVE_POWER_USE : IDLE_POWER_USE active_power_usage = HOLOPAD_PASSIVE_POWER_USAGE + (HOLOGRAM_POWER_USAGE * total_users) - if(total_users) + if(total_users || replay_mode) set_light(2) - icon_state = "holopad1" else set_light(0) + update_icon() + +/obj/machinery/holopad/update_icon() + var/total_users = masters.len + LAZYLEN(holo_calls) + if(total_users || replay_mode) + icon_state = "holopad1" + else icon_state = "holopad0" /obj/machinery/holopad/proc/set_holo(mob/living/user, var/obj/effect/overlay/holo_pad_hologram/h) @@ -365,6 +432,128 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ clear_holo(user) return TRUE +// RECORDED MESSAGES + +/obj/machinery/holopad/proc/setup_replay_holo(datum/holorecord/record) + var/obj/effect/overlay/holo_pad_hologram/Hologram = new(loc)//Spawn a blank effect at the location. + Hologram.add_overlay(record.caller_image) + Hologram.alpha = 170 + Hologram.add_atom_colour("#77abff", FIXED_COLOUR_PRIORITY) + Hologram.dir = SOUTH //for now + Hologram.grant_all_languages(omnitongue=TRUE) + var/datum/language_holder/holder = Hologram.get_language_holder() + holder.selected_default_language = record.language + Hologram.mouse_opacity = MOUSE_OPACITY_TRANSPARENT//So you can't click on it. + Hologram.layer = FLY_LAYER//Above all the other objects/mobs. Or the vast majority of them. + Hologram.anchored = TRUE//So space wind cannot drag it. + Hologram.name = "[record.caller_name] (Hologram)"//If someone decides to right click. + Hologram.set_light(2) //hologram lighting + visible_message("A holographic image of [record.caller_name] flickers to life before your eyes!") + return Hologram + +/obj/machinery/holopad/proc/replay_start() + if(!replay_mode) + replay_mode = TRUE + replay_holo = setup_replay_holo(disk.record) + temp = "Replaying...
" + temp += "End replay." + SetLightsAndPower() + replay_entry(1) + return + +/obj/machinery/holopad/proc/replay_stop() + if(replay_mode) + replay_mode = FALSE + temp = null + QDEL_NULL(replay_holo) + SetLightsAndPower() + updateDialog() + +/obj/machinery/holopad/proc/record_start(mob/living/user) + if(!user || !disk || disk.record) + return + disk.record = new + record_mode = TRUE + record_start = world.time + record_user = user + disk.record.caller_image = get_record_icon(user) + temp = "Recording...
" + temp += "End recording." + +/obj/machinery/holopad/proc/get_record_icon(mob/living/user) + var/olddir = user.dir + user.setDir(SOUTH) + . = getFlatIcon(user) + user.setDir(olddir) + +/obj/machinery/holopad/proc/record_message(mob/living/speaker,message,language) + if(!record_mode) + return + //make this command so you can have multiple languages in single record + if(!disk.record.caller_name && istype(speaker)) + disk.record.caller_name = speaker.name + if(!disk.record.language) + disk.record.language = language + else if(language != disk.record.language) + disk.record.entries += list(list(HOLORECORD_LANGUAGE,language)) + + var/current_delay = 0 + for(var/E in disk.record.entries) + var/list/entry = E + if(entry[1] != HOLORECORD_DELAY) + continue + current_delay += entry[2] + + var/time_delta = world.time - record_start - current_delay + + if(time_delta >= 1) + disk.record.entries += list(list(HOLORECORD_DELAY,time_delta)) + disk.record.entries += list(list(HOLORECORD_SAY,message)) + if(disk.record.entries.len >= HOLORECORD_MAX_LENGTH) + record_stop() + +/obj/machinery/holopad/proc/replay_entry(entry_number) + if(!replay_mode) + return + if(disk.record.entries.len < entry_number) + replay_stop() + return + var/list/entry = disk.record.entries[entry_number] + var/command = entry[1] + switch(command) + if(HOLORECORD_SAY) + var/message = entry[2] + if(replay_holo) + replay_holo.say(message) + if(HOLORECORD_SOUND) + playsound(src,entry[2],50,1) + if(HOLORECORD_DELAY) + addtimer(CALLBACK(src,.proc/replay_entry,entry_number+1),entry[2]) + return + if(HOLORECORD_LANGUAGE) + var/datum/language_holder/holder = replay_holo.get_language_holder() + holder.selected_default_language = entry[2] + if(HOLORECORD_PRESET) + var/preset_type = entry[2] + var/datum/preset_holoimage/H = new preset_type + replay_holo.cut_overlays() + replay_holo.add_overlay(H.build_image()) + if(HOLORECORD_RENAME) + replay_holo.name = entry[2] + " (Hologram)" + .(entry_number+1) + +/obj/machinery/holopad/proc/record_stop() + if(record_mode) + record_mode = FALSE + temp = null + record_user = null + updateDialog() + +/obj/machinery/holopad/proc/record_clear() + if(disk && disk.record) + QDEL_NULL(disk.record) + updateDialog() + /obj/effect/overlay/holo_pad_hologram var/mob/living/Impersonation var/datum/holocall/HC diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 03424346e8..1c0c12a02b 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -799,3 +799,22 @@ materials = list(MAT_METAL = 300, MAT_GLASS = 200) build_path = /obj/item/device/slime_scanner category = list("initial", "Misc") +<<<<<<< HEAD +======= + +/datum/design/miniature_power_cell + name = "Light Fixture Battery" + id = "miniature_power_cell" + build_type = AUTOLATHE + materials = list(MAT_GLASS = 20) + build_path = /obj/item/stock_parts/cell/emergency_light + category = list("initial", "Electronics") + +/datum/design/holodisk + name = "Holodisk" + id = "holodisk" + build_type = AUTOLATHE + materials = list(MAT_METAL = 1000) + build_path = /obj/item/disk/holodisk + category = list("initial", "Misc") +>>>>>>> 78fe2bc... Holorecord disks. (#32868) diff --git a/icons/obj/module.dmi b/icons/obj/module.dmi index c24f7c4c16c4fefddbb43a5faaa71c469fb45556..f5bd612c225e248c35ce085aae9c27cdddeb944b 100644 GIT binary patch literal 16071 zcmcJ$by!@@vo1O~1P>%=fItESf_w1b!9$P)hu{H1a2p0la0$WPg1ZNI*MZ7`2u-z5c@NHxSi{(LgPp(nFpWIxm+HV#V=m z^iM7WzMsiKM^%2e>0`Q;f(A#dYuzr?o-wfs z@O7ZpLb6Bqa8wWnl;`zSrA$=MMQca}(h}_@_TR~ z%1|*t^dg=t0q^r<&}*q!)(XQLI&&Ose=5$0?2@NnJ0JYya3eP?-ceY=>LPtFv{7av z$$0j{&nR1n&c6V~r6s9{k5?MrZz0jG%PZLs@eyoBHF#Ib`{U+?#k2F+4n>JDB}4Nh z){9YknT}~na++mNMb6)6Qlq_Ub-OMV8ttiyOgNLuFN#5hSv}b5& z*wjAI?Qz^A)3R~qzK}Xu8=$yQESn9Qa2Bf)mw;-Ke`5NeKLzIS6t?X(1H%jAgBkNK zO<1lqyi8KB$)&S@x<2j#Ea}f2W{?1eUypgDq)80IDYF=G%jF0(NHAv^u~~5g z>_{=lF+1xb-ne67n*N-q_fBpzH^(PbH3XF|mwL(idF+eYLN+%yoAPa}Q~H7kY2G4C zL)w}z9GedXpRAtt)2n~D$}p45Oiz_oR;CaUq2lLvy|6Q|Z%*88cBhGSRB|F}tl^#0 ztCuoo<$QT`&s&Bn8+xykv?@NFe+-H%lw!DaAEVEy^IaGfSDCJSYJ zaY23?gizRq$39&~Fz1I_eEj%%FxYrC&k5%?zVYmuz)18QgY)JDzr}3}=cARC^Snjk zDPq5ZrBuI478;Kw&mY4lN-?L<`Q!b@*ie>DCUouyMxbp=QNzth3|V?lRcg5Sv32|* zl)fGjNS#%{JS2avKxa!ZEfqR1{LpUubeCA34L-Uq`IhkJ`8$l`j|o(ZW1%k>6qzXI z^~$QhtMxWNdUwkJ!bB%YLbuqC>lD#|YMRD=K&_8^KX)8J*|d~G1%0_k9M3ieRnlL@ z^BIfw1t)%VdP*_5v@~)PEHSRUPV^%trc;@AV~E)5WSPqNTcF=+UU}fg_BNmA*~Zs8 z{iaH4*jDi}=u`QE>ggGJR;Yzt^T1#-R!7_8x!H-wh;h6nXLU|d!TO2G$=<$dEJVO_ z5fxSsw(=vBQiOQG-e#Fjh$O5tWR@tl{dTXScRH^+Z=><&b9@86K`hpzCH1ov59vs=wxV}Ty@QQo(J z09w0SKnCxM$bgymmcDN++#`yMcubvAd8WQbs`x&@voafQHLf!-I%;vgRWO-T!K$1j z?)~`DqpJcrzri1y2)#n9@ZZ%uYVKI;+XLg$`?hiO~yqsGDeMyfr+Ut zl20~b)&HE|ls=a-H~#|F;KxX*u_C(A+AqW9mLx~p+T4Wxs)6zJ`>jU`{aOvc z_W+I{kJDZXw3Az8Jqnwbmp4honfdnWc)P+&b8c$UhCj$tDwng$ z|AD#(fDwxVOy~q$WMQE6zUF>q(Zir3wQs1U4GX8a!G2zS97(^HzI}YoUkqkc{*egK z{QNwv@MnngxHttQ(HJaZhN6evLC9E|JW70Dn#g9WOWZtT*C|!}&}^351uTr1HWZT| zI*BFn)Hq%Hd*_!tj^Dz~zfc*>N5-kc)x2|6RnKkgq3V&~5z;I{-SBHC1zE6(U80o~ zlAJH8&GRk;6ld`YhIQ|s?{u5Qv$46Usot9B=;nWZc1A$9WJGxXW5+S+Ynz~M_u|Hr zTKogd!^1-Z@XclmV0O~Hj~f4;0|N#@auuS_dNt|KD8@b}aK&En5S-8GJJvl%f2p67 z!%Fp%eK;~i>H~GkTx;_;Hdl1O5NKOaEwu|a2%!%u8R^5da_PN^xIg+VhBs)z^)%Z_ zC6Aez#44u>b9M`Uv?09hR(CE3)+;VMMSqs#f0Bnxe|7ag&vq(k4J1aweNW&y@|+9k z-V{(jDoE>1-=tboQw62~Rso+~L1 zN#?*6R%<-hW`dDEt1VEXE~Q9ELivseYXN+ecJ(X_&}v7ZIrs~tXhz5xGCZ8{98hPX ziRM9NQn>^wPa)4+g#ba`(k~E!&+)V2^&)52%0ARC?_@JTuLD8f$a$^CX!$v+##s&8 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 literal 15674 zcmcJ$1ymeu*Dcscu;7H?kc0$?-~`uT!685(xFom+*T%h(kOcPtfuO;)8z;ECyK6Vn z(DYQ^?_2+TYwo?X=FZH|TD^*{?yh?3sq^f!&)%mZ)m7z*2xtjFAP|wlTbXwt5QZf1 zdW44q?CJVgd;$Vta(ip(y2^ZVG5>7s} zw^QQY7%_8vG(v7pk?<_|OX4RrXz>2)*}X_c-^xHH3BL!=Q!e-V$Lmnhb7IHQ6rX>r zXcyHoeeYUR=6_wRmF8Ay6~D(q#KbN2M!UEvxx^v3<>kZgg2nGjqq+ifx>ivFIzlJ% zWYz(nz8DHJN5B1o|K^iVVvzE9y~$m|NTHeOXq)V}y;D;+RI@_0WGeyex=WA3cWs6K z^U_Q{fx&+3FPc|FojSbN2xWiX#AS=?hyo)1R2==cAJ1f2aBvrFT&>7))mSWo?eIij zuJA|41-)7bti&>7AP)af56)U@eZ67~5uoQj`#PMr|11W_hupdHxIoX-&-{u-+5N4Y zx{XBux`RwQZSpc1od&NxV8dmHhG z2rihPWSt?-TAcAj{h-Q*6%WaEqk2Axcj)j))Wv-CH>3G;Tf+0@`uV4)=ZUbl;!z5Q zd0AG7K_+R~B=rNjMWMGFw%2b4yHpv*cfS?G__(=LCZPn%8oa4E^_i}o3@yI8?9o05 z_;1aoZNJm|ieK6zYK?-_K%hq;1sN$V&-B95Dr_+_9&i1+dKd1INu_U=&gF)#1sjqlO0-_Qc1 zwl*2IloNAdeiLTUBfQ-=gzBW&(@${N@Pcf~upVHy)kI(r1g+?Gg6>HbS~iAtCHn{tNmw`h*WUY>TDBHgkbAsQ~rqo-Fu00BVLl7A>L>5VYyin~^9rj*(Zn2qh|>;Mg*eVFWd}@XS=?{PE7%%#|=h zg!4(NseH}YN)nx*E)FEGa(+5Bv_8%hrL~i`4X&m=Q~HUs^yd}tMF!o6>IAv1dEL_A z@v2=ulv+2BK-ie1$vB_3zqd80k7}4E&cV)yeO^1xpskxrM*01?1|0V$ij=d&GpdXv zhUAkzI+Ib2E-Vb(3x~p#D2Njh655pL*ZSftP8UBI2TMcO^UI_+wzqlR_9jAV^cyQ^ zmuri~Kz6_8q)&@6vm?LJHTM2V!GZ-o6dW0Oh#Xc}a8cvcdTS%XG zo%iTNtM0H5EDFf|p3p_4h_nbQXFAg&y+MNM$P?G01@V5W+<17d#`Xi$-|uXVQ1rO3 zPf>O0GdUNBus;*_83d{I{{83A3C;t5E}<( zllE%o%PS7(?PsG^Nd_=;!MU|ZQKbI?XvNSdP?>UEb1`ua(D`QDv}%KC-#dT)P!UZ%Iw@&V@d<|YkGeHHEPvr%I%d_ViZu)04Y zAE{>W=jP`dZqNF?Rzs--kDJfyf&Ya(Pac7KVj0$z%*EH#(!1!5S(r?yw@T}lY?QEd zYYk*IcyvE}ry~oj=HsihRJ*Ue_Y?qv;y#{wu(X3Q_Ls!w+MPlkdA+OgK9?D^yB! zDNu$B_D?H3pqn#Deuk@?oAb$vRAXafvX~D)6FL`zAjmgh)Ub8s zgv!&lz%=%c*;aP;vx!3OGBA4*2vsgdB{&_j688k{qvO(8#es+e36Kr+=Ao32mk7a;xG}0}gVcFiV zgP4W|98&$-+Opti+<78SOcW3>O35!52=O)6(V_Ya#;qdzwzoSY$DY>h+-K+KURx=a z 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 From 2587b99a6921cb53d61a409113205b8d699aa1b3 Mon Sep 17 00:00:00 2001 From: AnturK Date: Mon, 4 Dec 2017 12:28:11 +0100 Subject: [PATCH 308/328] Adds quiet argument to playsound. (#33185) * Adds quiet argument to playsound. * argument name change --- code/game/sound.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/game/sound.dm b/code/game/sound.dm index b150c1c148..231a346f2e 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -1,4 +1,4 @@ -/proc/playsound(atom/source, soundin, vol as num, vary, extrarange as num, falloff, frequency = null, channel = 0, pressure_affected = TRUE) +/proc/playsound(atom/source, soundin, vol as num, vary, extrarange as num, falloff, frequency = null, channel = 0, pressure_affected = TRUE, ignore_walls = TRUE) if(isarea(source)) throw EXCEPTION("playsound(): source is an area") return @@ -11,7 +11,10 @@ // Looping through the player list has the added bonus of working for mobs inside containers var/sound/S = sound(get_sfx(soundin)) var/maxdistance = (world.view + extrarange) * 3 - for(var/P in GLOB.player_list) + var/list/listeners = GLOB.player_list + if(!ignore_walls) //these sounds don't carry through walls + listeners = listeners & hearers(maxdistance,turf_source) + for(var/P in listeners) var/mob/M = P if(!M || !M.client) continue From e36f4a5b2253bf926692215175497ca7ed76ff45 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Mon, 4 Dec 2017 06:29:39 -0500 Subject: [PATCH 310/328] SendSignal optimization --- code/datums/components/README.md | 2 +- code/datums/components/_component.dm | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/code/datums/components/README.md b/code/datums/components/README.md index 476d820bc2..574e628741 100644 --- a/code/datums/components/README.md +++ b/code/datums/components/README.md @@ -34,7 +34,7 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo * Lazy associated list of type -> component/list of components. 1. `/datum/component/var/enabled` (protected, boolean) * If the component is enabled. If not, it will not react to signals - * `TRUE` by default + * `FALSE` by default, set to `TRUE` when a signal is registered 1. `/datum/component/var/dupe_mode` (protected, enum) * How duplicate component types are handled when added to the datum. * `COMPONENT_DUPE_HIGHLANDER` (default): Old component will be deleted, new component will first have `/datum/component/proc/InheritComponent(datum/component/old, FALSE)` on it diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 39980b4f9d..8437d0a7dd 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -1,5 +1,5 @@ /datum/component - var/enabled = TRUE + var/enabled = FALSE var/dupe_mode = COMPONENT_DUPE_HIGHLANDER var/dupe_type var/list/signal_procs @@ -133,6 +133,8 @@ if(!istype(proc_or_callback, /datum/callback)) //if it wasnt a callback before, it is now proc_or_callback = CALLBACK(src, proc_or_callback) procs[sig_type] = proc_or_callback + + enabled = TRUE /datum/component/proc/InheritComponent(datum/component/C, i_am_original) return @@ -172,8 +174,7 @@ var/datum/component/C = target if(!C.enabled) return NONE - var/list/sps = C.signal_procs - var/datum/callback/CB = LAZYACCESS(sps, sigtype) + var/datum/callback/CB = C.signal_procs[sigtype] if(!CB) return NONE . = CB.InvokeAsync(arglist(arguments)) @@ -185,9 +186,14 @@ for(var/I in target) var/datum/component/C = I if(!C.enabled) +<<<<<<< HEAD continue var/list/sps = C.signal_procs var/datum/callback/CB = LAZYACCESS(sps, sigtype) +======= + continue + var/datum/callback/CB = C.signal_procs[sigtype] +>>>>>>> 4e01bba... SendSignal optimization (#33220) if(!CB) continue var/retval = CB.InvokeAsync(arglist(arguments)) From 77ef9b08164f1e6118942857ff3377b528260f19 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 4 Dec 2017 15:07:28 -0600 Subject: [PATCH 311/328] Automatic changelog generation for PR #4207 [ci skip] --- html/changelogs/AutoChangeLog-pr-4207.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4207.yml diff --git a/html/changelogs/AutoChangeLog-pr-4207.yml b/html/changelogs/AutoChangeLog-pr-4207.yml new file mode 100644 index 0000000000..692dca99ed --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4207.yml @@ -0,0 +1,4 @@ +author: "Xhuis" +delete-after: True +changes: + - bugfix: "You now need fuel in your welder to repair mechs." From 7150e738e7587e267a9b10e97c58f57759cca9c0 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Mon, 4 Dec 2017 16:08:49 -0500 Subject: [PATCH 312/328] Update autolathe_designs.dm --- code/modules/research/designs/autolathe_designs.dm | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 1c0c12a02b..3aaebe55be 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -799,16 +799,6 @@ materials = list(MAT_METAL = 300, MAT_GLASS = 200) build_path = /obj/item/device/slime_scanner category = list("initial", "Misc") -<<<<<<< HEAD -======= - -/datum/design/miniature_power_cell - name = "Light Fixture Battery" - id = "miniature_power_cell" - build_type = AUTOLATHE - materials = list(MAT_GLASS = 20) - build_path = /obj/item/stock_parts/cell/emergency_light - category = list("initial", "Electronics") /datum/design/holodisk name = "Holodisk" @@ -817,4 +807,3 @@ materials = list(MAT_METAL = 1000) build_path = /obj/item/disk/holodisk category = list("initial", "Misc") ->>>>>>> 78fe2bc... Holorecord disks. (#32868) From 1998c3ff5ca95c522e3f5b591f72a37ad26b8f54 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Mon, 4 Dec 2017 16:15:14 -0500 Subject: [PATCH 313/328] Update _component.dm --- code/datums/components/_component.dm | 6 ------ 1 file changed, 6 deletions(-) diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 8437d0a7dd..0284d2c446 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -186,14 +186,8 @@ for(var/I in target) var/datum/component/C = I if(!C.enabled) -<<<<<<< HEAD - continue - var/list/sps = C.signal_procs - var/datum/callback/CB = LAZYACCESS(sps, sigtype) -======= continue var/datum/callback/CB = C.signal_procs[sigtype] ->>>>>>> 4e01bba... SendSignal optimization (#33220) if(!CB) continue var/retval = CB.InvokeAsync(arglist(arguments)) From 84fe88153ea396ffeff2441af68ee2ecb89d51e7 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Mon, 4 Dec 2017 16:17:43 -0500 Subject: [PATCH 314/328] merges #4208 --- code/modules/power/lighting.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 9f12e25bd2..920d2f5b52 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -321,7 +321,6 @@ else if(has_emergency_power() && !turned_off()) use_power = IDLE_POWER_USE emergency_mode = TRUE - process() //Force a process tick to update the light immediately else use_power = IDLE_POWER_USE set_light(0) From 371ceb8d239134acf2812fb7e28ae7913c64bc91 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Mon, 4 Dec 2017 16:21:41 -0500 Subject: [PATCH 315/328] Update components.dm --- code/__DEFINES/components.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index f672188533..4a50214bb7 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -80,12 +80,8 @@ // /obj/machinery signals #define COMSIG_MACHINE_PROCESS "machine_process" //from machinery subsystem fire(): () -<<<<<<< HEAD -#define COMSIG_MACHINE_PROCESS_ATMOS "machine_process_atmos" //from air subsystem process_atmos_machinery(): () -======= #define COMSIG_MACHINE_PROCESS_ATMOS "machine_process_atmos" //from air subsystem process_atmos_machinery(): () // /mob/living/carbon/human signals #define COMSIG_HUMAN_MELEE_UNARMED_ATTACK "human_melee_unarmed_attack" //from mob/living/carbon/human/UnarmedAttack(): (atom/target) #define COMSIG_HUMAN_MELEE_UNARMED_ATTACKBY "human_melee_unarmed_attackby" //from mob/living/carbon/human/UnarmedAttack(): (mob/living/carbon/human/attacker) ->>>>>>> 5182128... refactors riding datums to a component, vehicle refactor staging for mech overhaul (#32249) From 40cf3ab656d3a53636e1620b2e999b808e7d9e10 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Mon, 4 Dec 2017 16:22:24 -0500 Subject: [PATCH 316/328] Update robot_movement.dm --- .../living/silicon/robot/robot_movement.dm | 29 ------------------- 1 file changed, 29 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot_movement.dm b/code/modules/mob/living/silicon/robot/robot_movement.dm index 8959c8245b..a1f0dbf4be 100644 --- a/code/modules/mob/living/silicon/robot/robot_movement.dm +++ b/code/modules/mob/living/silicon/robot/robot_movement.dm @@ -1,31 +1,3 @@ -<<<<<<< HEAD -/mob/living/silicon/robot/Process_Spacemove(movement_dir = 0) - if(ionpulse()) - return 1 - return ..() - -/mob/living/silicon/robot/movement_delay() - . = ..() - var/static/config_robot_delay - if(isnull(config_robot_delay)) - config_robot_delay = CONFIG_GET(number/robot_delay) - . += speed + config_robot_delay - -/mob/living/silicon/robot/mob_negates_gravity() - return magpulse - -/mob/living/silicon/robot/mob_has_gravity() - return ..() || mob_negates_gravity() - -/mob/living/silicon/robot/experience_pressure_difference(pressure_difference, direction) - if(!magpulse) - return ..() - -/mob/living/silicon/robot/Moved() - . = ..() - if(riding_datum) - riding_datum.on_vehicle_move() -======= /mob/living/silicon/robot/Process_Spacemove(movement_dir = 0) if(ionpulse()) return 1 @@ -47,4 +19,3 @@ /mob/living/silicon/robot/experience_pressure_difference(pressure_difference, direction) if(!magpulse) return ..() ->>>>>>> 5182128... refactors riding datums to a component, vehicle refactor staging for mech overhaul (#32249) From 7e1bd55f7c4cf10ce9d615f7fb4889de7d732072 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Mon, 4 Dec 2017 16:23:58 -0500 Subject: [PATCH 317/328] Update speedbike.dm --- code/modules/vehicles/speedbike.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/modules/vehicles/speedbike.dm b/code/modules/vehicles/speedbike.dm index c4e9e17e11..e05504b0dc 100644 --- a/code/modules/vehicles/speedbike.dm +++ b/code/modules/vehicles/speedbike.dm @@ -15,11 +15,7 @@ var/overlay_state = "cover_blue" var/mutable_appearance/overlay -<<<<<<< HEAD -/obj/vehicle/space/speedbike/New() -======= /obj/vehicle/ridden/space/speedbike/Initialize() ->>>>>>> 5182128... refactors riding datums to a component, vehicle refactor staging for mech overhaul (#32249) . = ..() overlay = mutable_appearance(icon, overlay_state, ABOVE_MOB_LAYER) add_overlay(overlay) From 9396424277becc0e0b9151108f1295ef605dd6ae Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 4 Dec 2017 15:29:47 -0600 Subject: [PATCH 318/328] Automatic changelog generation for PR #4209 [ci skip] --- html/changelogs/AutoChangeLog-pr-4209.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4209.yml diff --git a/html/changelogs/AutoChangeLog-pr-4209.yml b/html/changelogs/AutoChangeLog-pr-4209.yml new file mode 100644 index 0000000000..ee1613d170 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4209.yml @@ -0,0 +1,5 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "You can now record and replay holopad messages using holodisks." + - rscadd: "Holodisks are printable in autolathes." From 6c01835eec54c2cd42006f28d81fe8c26114d03a Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 4 Dec 2017 15:32:19 -0600 Subject: [PATCH 319/328] Automatic changelog generation for PR #4184 [ci skip] --- html/changelogs/AutoChangeLog-pr-4184.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4184.yml diff --git a/html/changelogs/AutoChangeLog-pr-4184.yml b/html/changelogs/AutoChangeLog-pr-4184.yml new file mode 100644 index 0000000000..f97a70a206 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4184.yml @@ -0,0 +1,4 @@ +author: "CosmicScientist" +delete-after: True +changes: + - rscadd: "You can make plushies kiss one another!" From 1a40fe16bd7c42214c33b7ce893f3a37a126d5fe Mon Sep 17 00:00:00 2001 From: deathride58 Date: Mon, 4 Dec 2017 16:38:39 -0500 Subject: [PATCH 320/328] adds species_organic to cit races --- .../carbon/human/species_types/furrypeople.dm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index bff4d8554a..79bbee9db1 100644 --- a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -2,7 +2,7 @@ name = "Mammal" id = "mammal" default_color = "4B4B4B" - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,SPECIES_ORGANIC) mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "snout", "taur") default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "body_markings" = "None", "mam_tail" = "None", "mam_ears" = "None", "mam_body_markings" = "None", "taur" = "None") attack_verb = "claw" @@ -24,7 +24,7 @@ id = "avian" say_mod = "chirps" default_color = "BCAC9B" - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,SPECIES_ORGANIC) mutant_bodyparts = list("snout", "wings", "taur", "mam_tail", "mam_body_markings", "taur") default_features = list("snout" = "Sharp", "wings" = "None", "taur" = "None", "mam_body_markings" = "Hawk") attack_verb = "peck" @@ -45,7 +45,7 @@ name = "Aquatic" id = "aquatic" default_color = "BCAC9B" - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,SPECIES_ORGANIC) mutant_bodyparts = list("mam_tail", "mam_body_markings", "mam_ears", "taur") default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF","mam_tail" = "shark", "mam_body_markings" = "None", "mam_ears" = "None") attack_verb = "bite" @@ -66,7 +66,7 @@ name = "Insect" id = "insect" default_color = "BCAC9B" - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,SPECIES_ORGANIC) mutant_bodyparts = list("mam_body_markings", "mam_ears", "mam_tail", "taur") default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_body_markings" = "moth", "mam_tail" = "None", "mam_ears" = "None") attack_verb = "flutter" //wat? @@ -90,7 +90,7 @@ id = "xeno" say_mod = "hisses" default_color = "00FF00" - species_traits = list(MUTCOLORS,LIPS,DIGITIGRADE,PIERCEIMMUNE) + species_traits = list(MUTCOLORS,LIPS,DIGITIGRADE,PIERCEIMMUNE,SPECIES_ORGANIC) mutant_bodyparts = list("xenotail", "xenohead", "xenodorsal", "taur","mam_body_markings") default_features = list("xenotail"="xeno","xenohead"="standard","xenodorsal"="standard","mcolor" = "0F0","mcolor2" = "0F0","mcolor3" = "0F0","taur" = "None","mam_body_markings" = "xeno") heatmod = 1.3 @@ -220,7 +220,7 @@ name = "DataShark" id = "datashark" default_color = "BCAC9B" - species_traits = list(MUTCOLORS_PARTSONLY,EYECOLOR,LIPS,HAIR) + species_traits = list(MUTCOLORS_PARTSONLY,EYECOLOR,LIPS,HAIR,SPECIES_ORGANIC) mutant_bodyparts = list("mam_tail", "mam_body_markings") default_features = list("mam_tail" = "datashark", "mam_body_markings" = "None") attack_verb = "bite" @@ -234,7 +234,7 @@ name = "Guilmon" id = "guilmon" default_color = "4B4B4B" - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,SPECIES_ORGANIC) mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings") default_features = list("mcolor" = "FFF", "mcolor2" = "FFF", "mcolor3" = "FFF", "mam_tail" = "guilmon", "mam_ears" = "guilmon", "mam_body_markings" = "guilmon") attack_verb = "claw" From 9cdaac3640914415aa4e555bfad361bb2fc307da Mon Sep 17 00:00:00 2001 From: deathride58 Date: Mon, 4 Dec 2017 16:53:49 -0500 Subject: [PATCH 321/328] updates tgui and adds the missing lighting.dmi --- icons/obj/lighting.dmi | Bin 82437 -> 86078 bytes tgui/assets/tgui.js | 34 +++++++++++++++++----------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi index 75b12418404df411364020d5e65c1d68da1020d6..a17ac1c22ee12c8bdde8e8e9584f9cd2933059ad 100644 GIT binary patch literal 86078 zcmb@tWmpyAw>CbTMnFnJIyNEQ-QA%`Nv9y)4IZe0vZdgcVL)C^5MfMPgA`STEc zUv?$r6x;ijYe2~A#bp@Y@1ljWKgEB%8OgGrT3W&jW>WT&eJaYZiBBEeMKce6geT30 zO*sh^{Y-v)@EAl-9Uk2fEEN;`Yp3xLq=w3XKGPx@pG+Jaw z9ag+a%t5igM8~b8Nuzmt@YW=0)PP2_@xWi1E=2pNSBA;LvfVk8eFZbQBC%KDC;KY_ z^+@tU`vlQ$0xOJ8hRQDb8(4`sX@H_zvzq759}|Rh`)|0-B%Nh46~P-m%+K6LSlJH9 zx>?dsWbs?7SP7e}y1Y!@X*#ar#|;QtZ-zdE;)HYo?XTcF72( zS2Rj1>9O{itgSxN_c{FGGuf-d^IG@{N}q4^lHtPS`R*bFO=+4LA=l(PotZtEoKju* zrt$N5CT%Yw1oF1%RdZ;Q)VI-gm5;UgWz>7m|z8@TrdHI#~=YE$>E?-S^MGpOG8WG-oC=TOicfuoL8%N9q8~ z3$S~CLiOHPhE_YsKi(dP>y3=~%}lQf9=|LMM8B=a~^B-1_z+~x(E7e-y&{w9|{P7-?DA36c?NfoBr*ea2!G!^!Ci$ zdWg&__Z;QLb=fVNFugBX&~?v&TZ2dcC$>NGDqLX#bqm9^)*6&O*5g9iRgZ z;D@4kfQ}aR<-$1%R(*8k_wFr0vY>^{cVz0PG01DBu1azC2j>)eP<=#3$IJ2n$~#S= zcHw_+D4MFsE~@yXuMPkdfV`BrhDXN1lBbWxWvl4p%uWWU<<$VxSng+6a)lI1*s5mb zn1T0H@wGx}o-MY0>8vJGZJ?LE_u*9ea(VM_6YtLX;s)dW=m*Wn$0kC?XDmkSRiWI1 zk{sO!&UK^5v7ERP&#ItlH0ORIWJ0N1n;D$vBbzNd=bru|aj8c-y~$IUBCr++RHr0ITEfec97(cG=a)z$&@vQRsU1eaz*x|H2jFA6h{GU@jGN zO}bsIJ7jM;)kRER#*9bjkUqOcxsv8eO%^5zCsKWdAcpIANtkOWktvAvozJh_1l$Xha z08`W&0t_{+vgzs$o4tQ3J7<4-mwr0-;26bl-NAc?KGf>LNwjhX0Ax*~LFxFueh1DR z5C%p@K_^)S^yM}=gI(h4VpK(>n({2HUeOhj%QV+fve`D0Hb@r6K#dFR(6+1NdJ7M$ z;DeaKp8xRUI0sq)mVxKty>{!JycCti;3&-Awl7&VeuUuxy-0oSwq3o6%p%ru9hK`aAJ+z+3Tz>6bToGe> zR~JRT@AxO11^vZSm&_@v&5NhS_(aq(aDa&tFTs!Q%aunjBObD%_?;6rCi-K0OW7EU(&CjGxVDk&+GAH&hWUTB zSgIf_R-eY0DkYCbnJJ`ciD`}PwklVB!l3{S0hOFRSm6LXxZa{G_m0j<7ST}#VM#oD zP9p|xP+swU2EbdQ{I;qF_xGOT0wqzg{{K3l6iF2v(hSAWof|n|VTVw5NwpkDl_L}< zhe^9xQ&ww+Oo|E{2pHUw(9wCx(yHFE_M-hewj@*w(VxpEt45ji=!RnI zC$qH5qwU?u&-~YRpApF}v7EoQRN_&C`)vGo_VKaqw@0i<%$-NKAWdJeAso{BPn z@e~IzgKoCsJSyCJjjWs6>{hz$eP1B@@XEZAzsw(2Fucf<^WfW5S$56SD|-FVy(79! zKK3{*;L}?F>anrh9(I_H56AZ~F26Ufd|I7_D0VuE{2=;t{gC~RGVCh=r0CB*2WH#% zePEl*)eb95>1^hG7C$_f7w#7W5$jjKF#1D)RGvd2*kC)^EBE2v8}e$T!jh8xpQN@% zTlD(+i27HFDR+JCt}|zlqx~#gdnu=1>e)|+$Cx&TiS2A1)s$(;G3~xsGIXwp7(Mro zBJmkBQ>+H&ZS+9LmXpyS-Nc$`1Kx~YBV>lT#uWVeHzq*%u)=#PHk(IHH5!oz?T-66 zOP(AJ8@E$Y)tUsB7OB{C;7Mx#D-3b&zO3<$hmG-CbhaOp%(lIjY?XhM>tA`!`O))& zkDHM$A!{e(5ot4}?X+p5-%ZHH9|ah@Nk(>NT}B5A%c?fwky{!Leq9!parBqh)(BLr z%HRPfS4gNSdX+Dky+;R6=CZ$xmO`k~>i;J&my^}w7|cW@+VP;v;FDkW7n>gsx7KHS zA2nut2!s}t6%~b->r^8(yB{L~larH1kFeXq^74XNd?3Q#`0EWO*%#ke$c=hs%l=!- zST?^e=^ikK_H{ddwNie2x?Ca{@b@i{doOyzF^}2eGqm&b_iFTBM~{$^*p35>PaZtqy!*18h&SA4tnQ!NCO4z1_=#r0lX zavj*xeM)|F!HVy_pO}IWoDm7Y&_ulbXMcZgj+1N~93sbc#)+vF?WAdU!9N$gV@u`w z<)*Wdv`7H(o-UPm@V#F02_&cP7eiHx*;|pG0x$OJ!RHB~==kgzrYP(L7>P1l7^pcJ zN=qa$+{KN-k@z|AQvps2R~(Ng;>n5_c@^h<-FI0Gl{lQ;^V#$q%^c%lTK&-p=5Fxf zz~9i+keaPfN-rVQTaQx*( z#&0?Ggq61OS&#E!3q~~pV6nv!ukdo`VvL?m;!G-gK8u%jEBK*R8QuGTu;wY5242-B_jOD)Mif#8ofDyQqoLM!o!)q)zG~}MMCFVv? z;&3T_*DdM$eneJZ`^T)FIw-C)E~&O-+8<{7JhfyHt^>@Krb9uOeE!qrMQ;P*jPnd7 zoaO&K`R~>V&K;sqnz5Oeq77|1WiJ%=R`(h>hnrkWWsz-8?! z0#7g{pV!(N4xcsa1_iiSI8q)vBkPv%67F`Haewn>LY=v7FIec_UN$6@U}r=hmE_f; zhym>0o_De;0cZtr$+kZu3bT(+gkW*Z-Z3pW%D3}JCc|}n;r zjM8dL@>=DI()u!lfVKs5D%4*J1lkigHFOyW>>$)?GZl96*lB+&tKk7(?C}`>iSnu7GG_u5$w@FOoDOG+0!Cfjkr zuzq-d^a1>JQYoung|;$x69mF%lG8hoU()*e`mOc%WqLjwD`&r}Ulx3T10mK+7%p_K z#=SQpQ*q{p&O~#-PO#w}`}SydyUXc%c>B;)D_o1VS!OY*v5%>CLBB8LHAEDpIYo7y1yNx>YMhNA{ynq23=AVQeMI+IQ7sbNjA4PI~iDv0aet=yPm z_qLCrTfojaAXIV2$g5}|1~n>qh~q**|ojOGkoll`oC@m`>91G0K~gk5-P}3 z|1VJO*@~|%vS(PiJUQ8OFOqHWGg^iRUG;y95~;5p963)Jh(Lww)q%8cJ-_Kv(_28y z`5n6G{~jcbI))|a1)@RiNkjnC&c|!~Or82~{95KempM-yw-mg?+HC)tZ;Kr8Hk2Wh@um7$(0U_nf3WlU*mOI#R1$}F0ajpv7qtJca|&*VQtF(p zGZO);qANpZ;hXH%kY8`Qzdy^)AOqbNO$Ptm$sXmup&qnm2LyT$&)e?>H+uDHw_G8t zowYMdQm3LAlmE)MO>EA!#(|d1E$0DCE_4yhaix}j>*22cQA1f9F5N|V^vV-E!5)lN zL2*LsuBApm%%8hF7B&eL(kWo;RWan1%?p2%#Il{wH&{-0^pIbsdv=&jH+ZxWU}=;g zqVUhbUpo{ch5aqE5kvo#m_aW{{_~H&1OHoJvr1zRvOl=Exk>aQW@r7=Jp6Khx)cuhvS4=e&rw8+N*8`Y zoX=zcZLgW#uUUp(T3CSE5e6hDoHVpL#n3Clzs~$gJytoBgO+hW4Z{;|^1k1GyqE*% zD3;a-PFDL02$;#aaRM5PFEcsqxt=(#=3*XEw%flZ+X59RFP11lEga@F1;HV{I{sj|gCW0%{ zaL*1{%*YBq{e(vbNaTaS>i!$_eJVpCO9dB0AQQ+=fRT>Q7cC=}z+ZRe2ipq`Y_7in zMvf)d^S@`}KL*c5`2WlZ((1qUCR-ZUC3#906bA$2g_XjnZI#nD)tGd}i5g7a%Z^w= z&MyyPm+L}**%Vw^MSu`YW9~lLGxcf{(M3+u9#vN>VMao`e?C84wC$i!D$4D^6q@R;xR@PKn8 zWrI-2^4xUu;cEM@Hw3mH;vk;`*y#w-y4c|8y!??A4eEi1v!d5P2Q{YIEeKJ%b#nwd zAUO@+Z^+xsS}%sWB7uygCc(8P;;hy^jqB{T)y|fR@V$kRU!MKSx_P!3O75O5b;XV| z&}-gfHnaUK2Os?c9>-^Z_9toY4U>HlLY0&x(lhPukFmHCOeTPw-?Cpd&HOaQOB#`n zf*B#RO`|}EaT}%(!RWOaLNPpg0Mw=S9YRWfFO@Mb{4o;NL3`=;2g_eqs+m|luYdBe zy1WginU*HR%?~2AFLOPOEDz2*`q=Tnh7PY(!InM@q;}ytBFQJLpSph?T1)U0vJS7~ z4x$J%a5(xnY+;;d=AeuzQAe8#t$qJaGPc?&>nzqXlfUR&1ww*GpP4r{)9dk{X9Eh* zKnL2G>=aZrUti%8vigMj8n|eCofB}G#ElhRhGKEte6zxl1>W1)$o$~$TeyC_V~k?2 zw7E!acR5(N9*s&{=^zlg>iSgTe=%(M&x~cwYjdL6Lv7&vzyX*6@p@QLmayWSA{KxR zx~Il>Q=mdgw5J>dHwDRU_&$rGfhXqR0 zGOZ-!Xq=gb8f!SExBhe>Xq3{2UuS2ZpT?4}9YXCIj!O5KyZ8iQ|pnxRd2RAUr2RC-L*->^CPGYeX+Y znZ5o@#L<=AkB4(zjl1<{JG0orBrRVcrkxJUf&B&z6XYlGEmuFX;K}W7501;{MDOoE z7?z7VFMIDj_*`Aj^!fk&Gn374uj=(=?a>_kDXIIYkVEfC9T0^t7Wl}?6N$F&f)dyX zEfN%wnAzCM!wq0m|6BogG8dsx_TK8K@!077h1trGCn5Xo&<9ge+x<0{B+j?-+Cl;^ zi#f;w9W=XcmV6VqmPVyt4WLWD!L;XxdjH}0J?uaQUM`x`IAYB~`C~`Elg_r%+ZTlq z@pqbokitf%HabSUf@eTtN3=&50Mo#?V< z(&z=JdeyT8CN`9oAB$Ixr@LPo_lc*wd7a4=XqD5;YmThe6NExgyS`OyJqf?B9Y(ja zs)jY&Zwq}^%J3@vJ$L6#i}IE7UFBBJeo9-~xf+MvZ=2qg##q!qxTW2X`Lt%&n_@gG z)ZH&FhD=Bya{|Z-=2XyuPN_9Eu2SW$LQ4D0UxVRTpW=Icj(Qm$PZ+xUkMWGbU62wu zY`Jq2Lm99wDl5GmJ}$eNa<_9{zglQ^Pys0%z>PD+3gEIcSamCX9Ow1_e$YYy9;A(C zBwpE#!ssGEGaW!n!N2~2|t?PA`jd#|k{ zJAN}j0dqjp8e^=3y?oC}5~Ix2>}*Wjv76`m5`E*YAwdUK6NbGbGr_lNo%$!6ZTlyx zrsjRD*ygyXSPMAD*HTx_N2;PNs8#03^}77%zT{GlyvT0wLLycgFyuB9axWhHhD^Z> zL1Slx#_lv+RB13TT||uYbnjjDo&I5d3?QeO81?@ADjcVKJIo=H27w~JC~vkCr|`KP z8!iRvc-U{)X{TX@w#$o1Y5gJ=753UaKL<%T4>RlNi>C6~(350ke=|2(0_O%1T%l#s zAro7ZgbO0 zv&hFZDII{X(RkLAifl&UorIqHi(Hp)iWPGOpHRP2R1qeciQ-C$;`Z7B-+>5p={ee; zPNBIBJY=!&8WPx2p}idHhRz%yWWh;gOXAlju;bsnotq@uW1$W6k5iDf2~C6QLZDFp zV7Ea1%;Xm30Du$K+6s|Il)n(_GYXw0 zAeJgVbr~jppIGbsVU6*M(y7AKpNdHLmkaa2dL>V5i$VZY2lxqGbu0ajz>d}qmXpI5 z(0!1g+Fp-x?DHfPW7CR==w7R*A?!nEi7*60(N-OgPVIOiWDkNT@DQ*V>|T*2pslLO z(TLdr(rUPPy9cRj>24#5!v2pB)(&myAD?u`YBVjkgtCYpb^__WQo9eaWTR@>3K%Kn zl2rgyz#uhv6(=B$>>%d-{g;=(lGk=4TS7RMg8{m{!m|XLw7axZ;1N~qMF#}%PlDmS zv{L7PJ6?x`Bu>)*W16+gIwh69jx*ghT}`7HrAi1d0CU^&{e)UeNXr47;(3!Mn}VN{ zs_l}Dfi4FUP1Z3LPI!mtc00!xu(w1fy7ryMwBo*lREJ+=;6pSRi=63VRP=}-MxCat z8Qp|#9X6L~XshVJ8w7Qi@H{h1rCH>hmw<(y-{GesU!{)m=?ikoWb37{Zl$U^U>23O zrqkpDvgtxckjku0_T&hC<183kyH@5h_$K*d1@#shr0sUxWYM5SqyaJ1%&&0*$oTZd zzfR6{x^P3pj5A7#cAU1)bF`v^)z>2(Rn?=s6>&o9U1HVsys$X?Qr`SW3!tKfvwfd{ z%lx*WL#)Y8zN*RC{p{${-!E*iF0(>=`Qy}dnuilgpXK+E?2+I3CF?*OChT=W1z-F>3 zOZeu&{^h-C^W%p7x&Fe^&BlJSgOMu2{gq!JPgT@Wh{g_8nR81xOeTVWvMg{BT_vy^KlTl8L{@$~b}s0PX~cj+OH(Aw7B{YSNz zTZ>s)y=rQ1R^N_XpQeemyto-&u&~(l==^E&8~}TIfSC{XnGLyr#pTPiUL*WhqlhQG zKrP!l*C^IeR!@p4fgU5j5;xR9qw2X#(kOOu^@PL*V<@+B=Iz!k4d-K1zNMgP*LjuA zk_ll`esM9J!}C>J;Lep-$a|5cP=ogwK-kOND>S7{3pW<)DtgJeSB3)#_}#uh&%F}` zh>a#4u>xStVMZuJ%4JKWNSnZR;k&rCjHd3C&!cXnLP9tis+*%>L$cb(1;ydaVL(cq z9Y8;%&M(T8u9TNF@c(){Zwq7q5{>f@h^hKULuiK17S+6HRj%Yi zV30pZf#IFz^7$FKe~e#@Kisr@=wI3X+iqfMt|A50balU+ZWh#-q0cw_@ooC&+|!W* zMu}ykv%!?Uu+SsXGu~H;{i4a@0*|#-Q`7UWCHA98?I-xb7VZ8nrdLdaG zEWZ9hdhGXy9m7IV4W`Y_2?89Mrh79A``<>1ZgwBX>au`r~pg}arblNL)9uVcT&Y383*@ql&>z|gmLL8ZW(bB+Vccc63IIb;7oba zaqta4oPdZx5R`Inqug&kkg;sN;j)gSrB(db>}l+GFlmwRp1w2< z9NyO6cWL?{Ovai5wfY9tc@DQ5sFO|&pPD+K0YAoiJ4)B)d8$g*E;)0_qdy^lC%vcf zf(F4T#isVLw6M_ZyfA`YStX@^yFyTrM8!RxUV&)H__8b|ONVcl^RxixYleb@h-yu# zxD-@l1Wp)NCd2c{x~zCdOy0|wklLsY27UAN!SkZYg+zet+!|YN^pfm4qq)N+?TS@=A6q}(Wsg$0(I0JW)Szc=+j7o{89c@07oz@IM%$;^l?omOojnc!Rm1kj0`w?M#WE|`IT7x;p-m5 zgl~Z}%1n4)Id3zv?!n}xDMZ$~UX?9Wneov#$$7&kb;;V5EwMPzq9KwA>-(wW!aS0H zN9^zO?d4|!2|>mrf%!#%F63f!f*vG+OjwYfBjP-cSQu7f2C_FMEo46X@fv%GWzffZ zn8=#sOa7@Dm5_POX;g{b-ArecQ`svK$v35h>m5nzO}sk+r-|KhnrK@8+gB{jK^Vrc63vuq4g03H8=!qvnhdmw}iq; z9$sFajT1{^Eh2oYY^;Nrh|JQEG2e>g9|NA0YNSR@dotRyd3@A9dZ2kGfZM&H}HYdA#;5e-PG7gz8ZhMgqOd+y26U}G?wqr(~97!l?v$F+6MzsoE_ zG(x3-*R#NXwZ>islXf=cqTmy(0F<+wu79W{_I zi#>PwONAan>Y(Xt!kLCRmZf|GtemI0RU&~&Tz{so&%~ILEOr+9&f)xDRtWx74zG=w zgStJoyeX#Y!-qwko3nOlOLiZ8*RReYvFRp@%H_&LK*Lzik5e&^K%yf+MZPOXi=G@d zms&x!6c!bUD=UM{b4R3kz56xG!7~cW zlIL^kEzm9J9z3?1~-pGoK6Id&RZ09ufZ zh=;$c}bm4n5Pv6hEzziv|w0Tem1LmwAQH+zyW-y5XT z*=Z`@Soo7hei}!4LPPTRX!~7z_TBP%J*x*~do!Zhh$WhhsKb)&ogd4AD76bEqur}% z_^FRrE;Jt<95SZQk4Vep>ow$~T5%SdP4nsW(yOm5+3<(*k^M46zN#ZjG<*pwo&p7~dJbvZY>rRkl7Ej=smO zvuvSL@&tN)if1P1QLcQENv%WOCL#KJ_=+~6ojIs^W|i7z8y~J8N7FzChr7D{NjVjl zfg`nh@98-w_7~JuR(O$95Z7|)Nxc>vT34ULs?)lK_nYW33e+FHM10I_k~ zjuo9*`Y2_36_d>qw*m5H5=b4m=p;lCAPNGr^)HA&{t?6BNk<8NSGk@px-c~hgCE*$B&3#MVEYi@ zFSU*t zC3ftgS=22?_gE9AtEVl`j%9*0QOSph?=GKRZVt8J$Ol=$S4FbU(@&{g zx?nB)tG>g6b4FtDD-lI%xlVB7a{`J%^`kTTMe3L>&GaP21Tz$gySa?-xAV+wmdvqW znb)I6@@asF^1$QVoW_A=B->pCq-munQT%98PA4mKZ|A!c+D+tSlz!_PZ8lV8!h{}g zHb~g$cr&~!BjljTr<-&sGT!l>*I+L~I<=I;y+iMuF@pL77HQyI@Fk*rl{SL92H{Dr zF(K)feEc+KX)K5m;z|6}Heca~KXN0UpPjqy31!T!MfYeJNZ44nDS^{{JCCc&p|*Kb zMH;*?%=TH}H^C-RX+os~>I!@5+Sj%km3 z!iB`rGp22)!`3Zj&0&ggd0qF2*|pPT4w2Rc?mZZ6KpyA>#H8`$k5hGbO^IQ7Q&5tC&~#k*BJ>)44t8OF#5rrj>;4x7+EJp8F<$ z-xHvUzlx$21>%NhR5|(r8lA3aQ^S>rhvYHMQ#nQJft%=jtEynsz{dQP9{!zB49Q~- zbW@xFQAh<8x6+xp>XNg>rgpb!`)xwFT{qirWerQn4e1an)6$iHovv`pzc3VlV!b8t3D*Ym2Sj%94rGCT2qs5qQjbdnqzC%x- z2e0sX&zt)7n zN2;6Vz@Z`n@^;lLjJ-0gdC~EB&9M>YWdqQ5z*-A|4sJtl&LJ~RAi#8ZJW(MdgU!Fd zcH*k#+;(K0RSFuI zu9nIhXWNP3xEt2jjNKssAREQ3J~KSajukysbr-%#h3ZJCr0nEO>^%n#Ncv_WfFS~# zLITtMB8%$Q?l`x}+|OT3i+cNNHJu3tZ6VEJjqicIRIYW{TNpfso~0miJ*N}4r;Ja9*nR$VE>IZ$%;77} zwt)2;BiewgHtAuIDGV{oBPkXLeH9-5eaFxRd0ice`K1b}^UoA1LO3`;Fb}%~YnSX5 zLUVt$QEYVZbHO06PPJJ|IXoAPhXSHQD;R=9)1r(4IFfG$qojOl*5@{+d=8oBr#nER z_x11J&@LrEp`z?pa1>T;ZuPlE+;?joFO5u?r5vGv7Fe@J)NyNjRP^`aRze%rLUOen zX!bs((IZ0&>8z!R!X_TSKLZ6Yp+~V_Pnpp`6^6mTcNr?|b)K!BTauF<^_PR1=g%;7 z`y!|uVjOVt2(n-vsA7Z`c{uM*X3-Io1dn@z91kqj@W3V}Wa*K} z#ck*$>2qtWTmwl)Eb>mGu^YzKp>G_5GI6KNFpm3^=SLj}zmdc^Gm6?18=mFQkl(pQ zO<1S{Ohj&CFQ!P5Gq1%HXdOyyGuB)%ZaFXusI07Ta1U_Ze>auNogO&@V;Iu6=oX!i z-aww-%qW}2mR=ccdl&a1P8oEk_;IANVosJ#RsCh6EpDUnRdEM`A z$&4f>KgO1*0(bX(oV8~oF|ZRdqz#(;!vjRrnpLlb=aTTQ{2uQa;xDfzOo10P;}(P= zt{`bFG|I2_sq?5P+yl0HyK*0U3|Mq&aQtaXG4@NmWCBZh(eE*?nk>VRZ(7lK4TEni z8iZ;q7TR9JdKHNvQRca;E^d6xU??-PYv6ftamnsuh}Y#&edCifquR3^DlB~Cj>4skmiAv-sDoww#A;g|ajxrUv%;Z4|1dm3bs8J)PN zx;qW>m|`=uO|+B#3*;wXtqPo|RcUEE$3`JDmW|e<9%Eyl(Hio7gG&ays9$9Cn8p_g zkuf@}^6!^`PoI4_&4QeYrZi?WJr4<4#&~;(x?j%pmu&odfLfv*S@f*YG!DknplBxf zS(9c(Up-U9Izx;O0g24UyW}W>Lhuy~Bl+5&8HlS>?PYt7xE&=$1+?ED*OpYhWXl)< zO!&fg4`1!e4injEUeGui9pAUZ9J7P=o*=XJcd{!mU+ZSUH~n*;2WGB4!B|ZxMJ>K7 zqd1Bjt@<}EefzbUXcU$z-7M!&GHe}&qcEE8T_U>LKdt|3ICFSu&^AF2!-zo26OAP1 zIZBru$S+GURi(e27jS4>z)p1*eUrefB#)#cH2n&xxf4_f#r!y?VVA7$us-izLzjH9 z0W=w_kUG4kj&)LMvO~>aAF28FlV5b~{4v`fUHUelcLO;{8_H|l!FMe&r8lM_$ThrQ zCg^O;pzay4@73E`$BgUAvE~HwvcLaY-uqxbH~LukE2vC(GichrT1@n@Z0~4qXL$qj zW_Wv2G4bOIb8(t#eRgc%a-$g&j?%F?gs4I;VQN3Rs zWxg1=L&n?c6)cEqfFa9S6M?jIK&a&LlX(_Z+ccZ`9I4D)d&ysJ*<@L3zh@aDbhs{IjD{HgRi!-CEg%{lrR=2W-HqqRqa4pa0z<*7 zbRA5^%c+V3s=C%J6eVj8s9wGAi6cW2B)AeLOZo!6TigJ7s~vm_9EMQ(==zwV%+K$a z?js0M5y4Ji%tBJ)e0dOc?+^}f1opr$7e)p<6&eRgd3?68zy6Rw%-NFS9k-HewL?00 z+nz+)0)mL>A%3c^WuPEZxI<-+k$Pi4)EZmESEZ#)P z&7vw#qz;cjSk9#+0A3B0K;Y9Y#k)S)4Expt?6S7c&ZcOXR}B=pX0-C+gkJSRp1K#> z!GF;iGQz14+cp9()S;$B=>@gqtse$GWFF)|ft>vO5Kw$8x4fT-a7hC<_U3DE%(e3a zZmvZtfj8x)wlLraT109f{(c>_@O?uyOZf!=+4+3>}>ZBZdciM!iUjxWjKI`v7aeJ zicOu}@$Tt63l^BcNh$ftmm|*Yl!ue4uOiSQYsah+mKBe62Ddp(!>#_=dc*)faBnz` zi3HFUT#1Y9pMIgUL`EDyHeiT7e8rEE&zset5X3JUL@ahvMczjA>+BV_gbKVbgvF-& z)uW^Ut_#Dh<407}4mAwg_p2>%A%4I%dMx0@8q;Mi>ho4P^9?&8@dg9&7Gp6P@4SJA z-rc}?2~T&1sw7gJUh_Jbf%hUBWs>_XmQH*rFFhpAYZ;5A1}^(>wXE0*>ImW#IuPW~ zJQ(_ec-pUb%k~Hsvv4J6!2QB*eFI@eY!RP)qgqW}vwi&GnMYdSNp18K+a#A^GuEH? zwfBGWlaSqxNeW(}J~vt+R@K8h%yU~n(ypLzJ@M(rMUSTpG;r>Xz?t6XmK>Z&rK*oJ9J>duQz*)pH z#c;JTyN-^ZgU7HWp-OxL;oWBUiC?lSz-;Q3st8OwS{8FZ!bCAh@+f-YME=-el9;B=Yu^Z-W|_TzKN^GiboGTI0+QbRo*3r@bIaQSr$=qUPgV7nzH+-n zOMmWmAmloi{5hLyylRbh1XzkX6>4@31Bw@M?Gnm8bgGR|A(%xjEbXa8XX*hhXi*|a3{Ei5D1bGG`I$LXW8Hm0fNIq2oT)e-QC?1+}*ju z^M3F1-E;1_KlYs2-I<;)?W*dk>frCb+K*qH9y0iT3NOYB$XsodAb3OOz+?EXN!#`(09m$xHNuozbh?hta6aelUmvC7N%ni0ZGN}!HLDc(9 zRFY>2mW;aE9W4Bq6=91edZM`(+}gnQ`xXPtz-r5zOwfj_b{#ZVXQspH7@OeDSW61_ z5DsQ}d>Z>2+hVE2J>-4#YCBya315%L^nIrZ3*%@S`aN&W=8tTSQX4ZDQAmWgB$G;|*YH^QR8bj09C`$ayX%aw(vvo*f!#K?kcy)V$#l*mcjc48c4wx5asd2iS(~_|pK;N1oM}1fq z%&jXZSNP15@z@Ln%gSwAEfQU|-=l2&rEhIn1s_=W0oL1#VO}$`4^AKOI$Fiy zhNiZ!mvS=7+R~KZd%uF*dn^sU-e2g}EkXn-&0(^*WUR#N3x{5gi)myL+v*K%V;e($iHyV>^ zqlUB~r^75=8j$o%MV!8Yo;-3(wuQOda9Zlk!?}04dw!RE89{uU=AyK46}64+<4rSB zAw^+6;^r;e?P@+nifxWxREqttm%yW_$0j+swA;nw;ohDbU++doG$JaF6cWd4CB;$_ zEo>#r!jD-&)aud}l{-x8d;MAvbuE>O9j)am1D3!LF|7hs7Bgi$acQ`hYH+OpS`)dtj&x4bFZ>lGnq#h-uo|#Pm|I-o<1y`L-5z+nOpEzYeBlR20Bb-E`>% zdrMeAsR`QC1EwKe+)4Ph{3ygt317LpDgBY8rmlNfiSdDw{^>n?ILjQIBc7Vb36o>f z`xU4A84kt)mX2?a4HtZds?O@|yHYwi*bc-Ga&qFWI9$)#ff1iT~YgY&^ibn^3sk4aP!`gPZq+~Bk< zgtcM`$fR>C$q}3Z?`g#u2_&g#yf?6Q><{m!_gAMZe&Pu93v`GKn6n9NSQQ*P z@TpYlhR#|}nsW=0@LIkwtx`7zP7?7B-t8tjAaab<=H~4T3DUHaZ@VAU+zf&6w_zxC z+-(71`MJHjZzvMN`N|*WAv0d+W}}IrG$Bw?WT3%ZaH;X^88%!LGxUr5arL>u@9mAY zg-~6AtEv29VrKkoK8-ulVZN`f59pY~d~hZ9La_YF-M7K|$G>a!f@DnD_oj~S)RY1u zxRp$juQLcK$e}_2*K2$YjCkFL9dpK3DicveE8Bl&7A`toch!JqbV2R575y1dS4?aCcnj_L*5>K6- zf9~4p=rNUxS?Hxar27SjxHgO_cy%?J@(blvqX||LRoJ@b+1nV{^zP+}z@i8v!5idG z${Ct!GNrjml<_R@q2yutP2i7wor6@ez{KUKsA${ldb!R-GD|X#P_xGFYiosbyNeg4 zB}>$DW76NMrcQ;<0|O)LZUQfB=f2=v2>U3_|8=l`AFw-zH623bqLo~K&~i%vIh?j? zoD4GZE_)L}lJvv4|1}8Y?s-5IZ3wGkpy1Z2^Hsyr#mK;${F&(?0s)@Q9YtrxuB$&V zqj-F17>+oOlt9!wgkQWA1IT(m+E*PC7j6iWoY5~T{QDU!UlunA_SgFynEfw! z4V{PHHum08K@GPJwmRC}eQ85XQRWsm{TEpNWom?tMb1t1}F#&d4w|8RsCrco-sxEZ&p#G+tnRL&Y@%`>=69auOoECkZd<*|F`y$jr)v>ye z&Z1jtVKs~h`*Rxzn^(hKVzDqq1OMVjrL7}gauy7?`SV(uw~>=OnES+Omy}+_)bHh^ z1whuI(0Bt;$lvEbX%);5)V8$~zb{hM#8z#5IU=@B;Gce6_}CO5sU7_X49jRLzbGe+ zDQ^(L#_KGpo04aW)gPFdL3tB#8uXJ9P2wFx|A~@DT!^u(HCCX%gzspNi(`$GW?>O3 zK=BMIvZ{g`jWlPKD5g=V%wL#uKzm@=3n+0goiCX2qE{IBd?ta)=(mQWr*9-3@$;GG^b3c~xC4X={UyE|c9!yyHaNhqmdQr*i@#`> zG}bU5-9Gc74c?EY4F+l|nQYDnQ_A0`yfJ;LRez$on)mpijR1Joc_s=oUm>)ni_(Vt zr0gH7)huMCM9uKgW9OHMqqAu_Jm>0?AP&#|5dB9Oh$zr@v*-q8!o80E3&SawqnSbu zipzmzGLN0XK~j&%Fm*KAdqi}6W<9w$<~RCUWvp$#V47Y&lxvbdi@3P-e{)3 zBSA>>MW<}5Sj!Nh1z3h|7uengCmU@EBmom3DEau%H)12~mK7i>dvt!o)F&y`nV?Y$MEL|D% z*G^mhOO#M=@9!Y#sQ#8iR%TDW@We{Eu|OAtG-5Bg7hHUO>qHFC@4CbAd?MPvZH5Pk&{9pw`^F9`mE>Y}FNIM?lV*f@+Jwg)ltK}N|5 z@ovM6T5Ukbb>`8ek~J+;vSl}3X_*qd&qC8(j zOOlED>ofjBqg(N=H^G2F=$5=zkjZfnABq>XQC__!J+sLZc-EED54rBBU{e*jbXHXk zHXC9aId)&?DAYNWzQOd~24)gpkiWdReRgLxs9OAYA$QfcxS#^7^pMa^_OJN-(Rbnw zZm|(FZn(y!k@QhpU6ak=IF@2W%qnVD3O)CT^^gipD=w%KKl9c-xnb33wq7k!b>Dp$ z);E~%EA$oDa#Ev~%Ql}Vy8aUpahy9q#87?-$@p~xLEn)Y0@V3z^H7mwj~g-0G9cBC z0*4DR?sc>kM5ReIb@d2WYCzFr>^ubvnzveOLi0duA5_rs4vsr_(_ zl9a~Zy_Oi6+P@X{UCi7w-o`wnus)z^qsucFY#MV|ny!xgkdJP%5;knJN=v0EFw#-v z@%c6wmE|ti>x59qH{=X%!eLSRDhZ`JDAh;V76 z>yh$XpF~+ej!nHJ&lmIwbX0#;YnJmgDEx743f`sWsq)Z?~DBF5Hg z)KN^M^y{)GbqO9dOFPS4W`^Ar(_N|t8>nNTNmME1Oqy|fHZccNg}-Im#zd~yv6}-9b9%X$rRYkz%*lfZVvI^{5^*dQ&_<47 zmL+iEo>a8X7qoSr*&VbJ)pY5Z-pk`PF}A6-UAiC4yZ$!D(jb;O>S$y<3;zwOOM}{4 z3KYTFcCs{UIRu-V%{f2b8x~i4iMDJz3V6}vtezqJ=88pkFk^Pl8_`>kV7bXPxdfJ) zjfYCaEbUl9Kb|_gcz@dd8gK%VOouckGYd4aNvNDTMa2y2#dGR#DYie+Ncp^Td0zV> z08Q*wtUC^j+3#(co?h7B0SDNn=hcuCD*AllvX;%OT2`wNkI&SSLZndJf>K=c-46zg zDg(!!_}zBbVZEHilVn}5rWo+hcWZ}rGWs7C*@VMR_RTPx6W;H zt5Ff(%!x~)y(R2abDz90pP%KK3(agZl|+lT?8vytg%Nq4vm*r036}7PX4X*iH#TVzY&j8)4PQpJX{Dvm$dSov>g196MJE@Kd*)t7JLN6 zQIWhv6km0J9iHB)prKP9u_M*}bLnzLWcWOmiVZKe4(1NPBs4M)!V?`-&ud)$;@T)t zeF(qM{zBDcF5rVFL|d6xVilq2fh=2ZT(+IAZdhovOo!O2qtJbdW+e*Wx-n8p+Pa40 z4)#Ack0e)k7C0OweazfCufIXqZyFW3Jvb$#QyfqIcFXUw&S8?mstPx=AG2yc0Bfa zM99KjD`62#EAICK)zp5822rfBh(Nk$(I#;9`s9`za5k(G-Mq(KrB4keK!k&Bodm?)Erb}d@jWqjsTk&Fb3 zByl>&h6!C=Im#R#^g=(-~FLyE1yMp~_fG}dGx zGOD#*56?1-9#*{uhxW^fVvM0`ffHj$;Q^cBRi&GEM)DbDi0^y-o4YNBr@bhk{QD1> zmiv8L#*AEL@=Ef5br=svF*CP9&xY%^j)&sCS2&2`zp#Tj z#mE^gg#QAzy*?!<5+i#j6NKrL{%>R}xG-%_$?i?(#R%a;dk_9d)T%#IdgvD=5sP4! z6<0>}hqq!e^i8|KbuX`cXTi<8H4vvys!jqmBu=Afr-Elg$=F9xs>aP`b+GT_naAHQ< z#W=BTMpl2`XaZLJX^pv{vQ28ZlUTB>!uM!Q<1AFo*>tlKdm-HnI&q}km5K5j<>=4$ z4A0zs7Y|R#D>NOODpICNn;OrW;W~PoC)zJtLFpa(}=JT-*<@V{h|%9@JXv`6o|Pl7qTkF7R#*8ZCw$bI&*`}CK4Z( zzD@3pvp|SRUeJBCD7aX&33P2t3pBtPE3}EGXd%~lAwxQUe#}K2LE!XO7zH!le?75E z9gkLwC~u7>G8Y}@e(vte%fK*9iAse@*gr)QCLPU)&p|H-R2?_qEA~D1 ztqF(22^W)dqK{?w@Aj9!cr@`N(#gdo3%Xkd8VB9O8^-Ow1`X@9rKI!kLq_f_E?2(| zgA)85caSlqxGaz!E~*X@7p>x}Cdt{|&rFwB=dS)>%D>=KtoQbA+dG~y#Q77`li}qGqbu;6zNsG!k(sDWrd1uvw+A?NcYS~pT9%6Dtf4a`ya>7S`{aY`|Dd^tn4f6qd1-Hjgs>ASS@E$+v z?hqvzL6~>fY<5cYsz8?#<+BX^F4APdnN^6#?P0vg>pc%dmShN@)(amDv8jq%zMk=e zWlBWNFCUMqcL=~pDdFio(Ks!~7X(`fBR#eDcR2RK(cfI^Wq-SdtGv_`w1RGiW$rXH zCru<@y+3&QL+w%X!gWrdO+Nz@>avmYc@2~&BS2jF#e#@#H+gfjp(Oj(GVwDcthd}) z`g$0Z&!w85LgWfrS&t3$H;1C9=~vy6zwTrPzE(o$Ljw5&o(JjUp(E`WHM1d7{gQvJ zNM#jhK8FN5bXd~sS$w$TG(C26dR(7V_eRJW-3u5H(5c^_^94PLz(;yhvZFq8Sh#o>S}!7U>%K_Sy~OWXuWEY4MHN=nUP+%eoyK$}FxSwX zN_Z}McfPx1X2ufZQ3a4`@b zb1hW|-4A^9-Fes4A>*DQ+?7*O%d0>4hHmXLat~d|k@Z#CirOtSvs6>Y$qmkb3-`Z4 zhx1pju{5FqW7lH@aQ9*0?tSelJ-GfOBg=A#1soyvnp+9E7T6Wz>yP&Ni3v(6cL3^t z9A-wowiRKg&8-SgO&q+@OxAuZt$`C``E)bV1I#%K>BghCc&s+u(lLgb6I->*RE5Aj zD#LbXa`a)-4eQrO%K)Ji6{Bl%1Tv4Nm0NnFmG|wcZ&`J224WZwJiidQc1v^|J+VSM zF+e2t?iu=dp^dNu9TSO1$@_ok0<`mV%eZ0=4 z)R%HjTtnI-FqB5p5~yTy!ojG)ElMptjre_tKUJZs{wI8-jTbJotR!=MJ0+*cR2st? zRI@Z+d2m1IdjIi#`w6|vQf~ky-6_2QK^3y?`@jcFe0WJM?4G^YOf}``3d*7YA2>-2 zRx#!R0-Wu2htUcdIJ%f|e2s}%1n8+v8pHmV^KNIC#c#(3> zI2{HM=sdE+7XrkIC=GCqEk|*HpdxbxBm5VS4>7SCdcK%B$hDVPh-!5_mG4pbwf8PGs_l+sC0}GZUjwu%Y9qy34=;u!# zxR#nit@wN8)v5pH0w4hAyo8>P`x)i z;QQD4ud~jlY)@3*LD|?CRsl z#mFZd-YJIjPNIm>2L8qM5Imfy*H5c!KanEG{BFtk078zDq#1U}75+e4;|G65smG_WObaI(O1ya$+g3~1b!}#y;>XInL zUcFVEJjOu0Z<6>A`p2Mn1H&$?N{}c4yfs$`Hn}W_cTWOUNfDQ7ih^m5UM~9e=s;X6 z+CQv?$EK#rS*bhvYHfHdJ4dB8u|sSkeW<`WbFgRYe$nr( zipbL?4;V^pQT7hxjEI=lk69Mvi^)0D|Nb> za6y<4aiGe%fZ8|I^05qJN5PG+2(rurdgL2Ca4qYCx+#}WYN{`w~C^ z6bBPGWPz{lPk zMa7VfpisQ|3xt+~kPwCG8au6ORuqGeD`(5g>HlFjv`NIyj^^?8^(t#5TcHPpMMUXx zF_%Ynx>)9tqkfj^d_eVq(fXzeUIV z4}*Ym{vSFAh52GA5ue%{|2^F)cu5V~BcK94BjXhN8ZtNk=Q{XQjGz@1W5r+VYcYr% zQIrU=0a7IOgIdK!6&)X!O=~h_aB3;!3^F!1#|Ier4L~gEVk>$<@3(JTpZ?IPWeA z<4WE+ot)Mx(Q8F3mQGC{#{ridXEl|T<3cugCHxBqfz;E9bIYLCCk6LL_Kv6%Mu-9S z0bRxRzCwV0cU_y4ymv1Q)FDA@s3LS(_HwC?jDdS^`2Q$@;MSn&T_gb9Er8PV9jWjo zCZ`>xOLqB2Ah_naJD%~>+e=`M_#mOr?9G;!x}TdrZ7Tpzf9akH3hR0e8u!PIdcXP_ zF}`iIJ6$XT*7O4D1qB#fCIi4dO47sc%|~G-HG})Vfxy}09qf4Noe-ZXR_dcK;`!b3 zb5yWRJXhk@9m80(HJ6xb{!8dd=Oq|+zq!lmtXgUzcegUinWjZG(92BA=UO5O&fDF& zae7dDaF7CjM#f$kO4Y+-$i87m{W%(78#?Q|P6YRqQDo(Lu-rl~b^@|bV%@0mrh91FTaccBl?%DCP8tCD8JQR0RrHpg< z4|!9wWPCmPpLLN)195TDksnZjiQy0dsgH=?mpang@88&PaU%S=yw&*h=~D&gf_Y_| zb#=QX?>GUaIEFn4Sc!Z z9$F3?{2#-iHtN4>lJegrrF48Hc%W-VzhdLaub*daKBXNpJbtxxS zq7_eW30i%^cW$KNL6O3d8v8vk=O=1qwOtW?e^c;*ka5!+MBuO9h{`$vAhD|aMOSZ^v6)C-CF%Zw8_ z1;?R~p^W@NP7~;zbIMs44-5mpAE}&gZCP9(=1)Eo<6s4MfPN2W`&%`B6F!^kQ7C>h z0^-1k^fTEfB~{gVW35+^l%MNVsMKyMPV%h|+3TC$($byKH;t$}|_nnzF%4k^^M`1M=N{*=3l;9%L!w(TU#fk`_M5E@)IDP!%*mt3F*Qi^ZHN~13 z+3eh`!-fmup7Z%l8%@vv$Y=2BBL8E4QT}Uw{cCR+{V_i>_x(*@jRBO*zo3|z4*2vG z3v+zHlXA!Nz`|}cK>%AVYfU^LY9Hbua$M!!Z3bC`SKrAy*6UKgBfs01dxG68zW>`o zJ`@bWXQb^u2@}y__+CXgWzaXpJ)Qb`1W*#4>&Z;Y6F;sXa`a?8 zFI;7nmN*#Fs?Oi2dAhvKyZp&+~KqGdpEzgB9^jQSmca7%9A*ONs)+ z?Mc37gK8!U5c^}YZQGI4{7{4+Y?a;y3JwB0{O9S(^WDnVk8j|wHXrr=3SV|?t^~zq zragLNgdtWtFuZ>KG`S`*P}w6Bn%f=R^kc(WujGoDSd%;UsC!>i4Y=AEo$&;>A|>Mc1dEb$AN$Z&%NHo->x9w#-3 z4Pb;?dgO3^J!e-wMF7;C9OOak9jxWWl_KVZ+__d6bcV!gTYf6^{+P+ZEPIp1z$btu z^V@rI*1c8R!8B*WHcJymd4m9=?HyNFB*pMlp%zN@e7H(Nl*+D)1tbDsi*F_+dnWfA z;&afK34Q6s_XI3?T| zX!x!%Xi`y8NhQk1=g!o}`A}it)V3aF?&T9iaL*|QIt9ukZa(i=pHe(JJ3CXW=*Ini zy?->?*i2D4 zx}5_v0gieZV2*P|STdat81(m_5-ETZf;l)KscRSSq{+hw0$6H@Iz061(C8#mfZP7T`!ElAkc$|xOfS8jLk6M$XU0(phr`*L)H^xwMN5;+a z?QyMjdv-+el$0D8Bx!Pb+7RsczwlX2+yCa~X3Nm~;S{#&TrYUvaNM;#OJZ{;Y^^KN zI7-3M=JS$CwL=<2hw1zzjo#|!TRytiw+`SQkrq#S;1TjjLWp!3;=bA2gzEYHCc!qmRlAz3%yUu->y zJ{H4VAm1S1F>0!hQ(A0Yo$)$h8InGV2l>5eqE!Q@i%rBneK|}-P1DAP9d{Ul>msCJ zMgagd6>^!<_+iPmHXoRClKMVizRpr*Fp?KF=&f5% zoqigeXOu7Ar$7{6>DDF84v~cJ0_`Jk!aZ^3d^fOv7XdvJIOk%#II{bx9qU?N53wPMHJ%zntV zc>Em971N8zQS<5!!d=aq*^~jts>VgD>@#WUr<3omT#V99mtFf!Mq+TF7ThPF+E*v^UcP&%5h@#wGgWP=ynt{dh?t)f`d;-*E|N#r|qT#@L8A z%DA*`|7#%I%Hi4g*g+?|B!H~#`9Y~;;K;oZ*$~}r2E8m}^`1Skb1SkHCx8-3DUOA* z|0fC{@{+zsIEz!@?#CXw?d!lr17$9~+$#(NB2-xC_LCWb5DQv_cD%_f=0Xa_B6V0E zxkS-M+mBzby_j|(UYHPD?yoVw-*vBe$T*1DFE?+ai*!Nxk*hr3!339B185m2Bvl@l z)<7TkX-p#akAi}y1e%DcPFlIg1qV3*2rmr6!0Zfuw~=#!3HlVgl9VhLo3J-hxS*q%$Wshf(t2dhoy==&nX$S<9JBW?qBi2~k+^|b~m&-M-XSjJ-UiD#mV8FI9l{Q(>M zZAYgfeGF`j)_(l-H2WXhL0NTmNphc&ncXoync78!Td3!WhNg)jGltsF8`;tGz|H3=-bs+51P1TO5w>j${GF zu7q^RE<($QE?M(ojOtl^QSS6jap&FIGP&Tq9NjBWK7e3Wj!0s=t!6a=cA2#J zGiIEqyH_)L+a;-dRWXp)CXn33-$oE*tUwxp(+@nN+fhjG`mx2U^s0tqptcz$4$Z+lL;9+G0eORO-nt#(Dwh zy`ZZ8efe_mZs{VoHy4REyjcXRc<~`e6BN6LW4mtvup>9Z zNLasD%KYL*sGn|_VYw()fqpM*$7e2zCr)sZ;!EUeHZW~=x?IAWB`gIwrM+Daxr1HL z=3PHV6zHMpLOzG0Ol=*v5DPcm<>B`ZNIivU%|@wt9X8~jKH&AwU#1eT%Xz^gH;}>h z{k^gKetE^jqeeIukRXuUYGo$ZR)X~-?!T@ccJh& zkU&+%THa`Io}Z72^4tmnP%`Yg2IO?E`wpf{hjvfzuiNWF@(x|Uql2{S&Dt} z_X#zBFPOWL0qUW9^nZ+w0lgq0wy#9#+SqKX6KlFoTAbySJM0PWk4E><=l@kkbFZE8+WPrktI?a+5- zI+W5|RJZfGX3^U7q?f@J?*d}+7!I76an zS@=KT0L*>sWN71}FaOFBa7hKE=j9Bo^@%DDva9di8%?#wvS|~T!EaJP2g;3qJS9le0-WI+auX^4Xu4hVjYoCIr4Tjvfvnc8-(M&fhuG89<^1 z{!G49lao7x$gqdy`96Q`yJ}6LhzORpLR-6ykkhc+cMVHS0$Yuc0g=DQ6S#sHSxFg2 zxE3ucG)D6({wJ?~$P$HwI(tP32b^}b-CsBPT_Sy~G%UB-sd^$YGAL|oCB#C7@GyZ1 z{c5A+VxyhrhnwBKtau%GV8Qcr(DiFM((D_zlE{LsS@bRYTVn~*c$ToVkw_tdm)>60 zz?3CPL9HphiY^aQg zZi6I2s0~Ss$cI>K_Spw*D(73g@i3mT7Ug|?$C1kWjU=O;Zu{wlS!RZQA9^)(`Y-2R zFSNPaHI8-^8Mq&hB8LL3b{Y7WA!HYAp4_#XCHDKvH(o*;WF zmn|2Cw%$$HRUbaf=5{NyT|McA0+FbOx`ZuL_FDK!q^!}^-$usY>Z+&-dyq!ICc;s_ z_-O1IomHF!d-W+B0Ce29vx3mzZOtsIhmR|&yFQ3c-2pAd_*RJQAjSxeDj5`-t2a=T zvU3rF`bX4l&Za@1MN9+T5gl;YK0I^u2BIi4ogWQ!U1&)!KNDvgaAvwiDZB$D{s z8VpK|7A91TN|^<{5}GD0P0n7~T7kfK7|^>)Xf zp-0Nv92IzMHrX1>X=V&yCOXz1PNBffo}UzhByw0@P7{Bt^lwYRB#5mNCn7A8cfX8r zxjC-3%^`qZU+k+8w7NDFMGq#S{X(;^Uk}dk@QoWtzl6s7T5$Yr(Daig(pT;}7oA_o zXVdRCM%SRMd9gws{(!pbag;AjV%P7Iq?o&WwnJm)e*Rr#yBmvX5GL9zlSpxnq7;{% z@W#Oe#>U?`x?F0A!fUe>Hkix@p7nJ-%Bm) zK!g;R-nc0fJuOl<)c-VgzV~JB=pj`s95phn#|7j0XF57M1~<#+%x@%DtiSG^C9rri z;zxc7jhf!qI&9jP zBCqA;7ww$Ym^-RWkc-JgkOo_8)jM0k9>;g`9~fYs&k627WnjI@eM@`6i@QNn)g%)G ze}6z|f(m>D!n=XUX%ul($>M2ooHoLkc5v@1+~@d=Z9wY>OQA?pjde|m0NwdOp|c-76PLU7!sO@2t$El$ zMoAF72X6?v!>Y9djgbjZvEoJ^-H|>?ys~pd{U`L+e(yOnyW$U@Y{styXQ*h zRy(&S(RsSs+Jiq3Fwi%toCz({$Jh|g($|5fSTisZawH|>wv`cB!;t3cV>MUtN&utk z>o~o93O}x3q=L`%IP^v`q!~`=vvzsS7BoI2w#PK z|4}1}#(Yek{o`WuAfs=z5noI4ix8p_V=+p_Q8}ey$Lxvrwr2?>9$zpd)RBSQ=2;kQ z$qj`>_2WXOmv`m@JK##f4>?AOML&-1(;*PQd@CAP%@8S^2A3p4azOC#a{)G2KfRs* zuH1i8`lTV%UW(C=xgg5S!8)aM|Gz_6`d1TCvbYZmv_%bm3&mn@pO#IPHApFc$i zo7p6B7;wO94!yOG;NMH1;M3ut2F!cy{rVI-OTEyJC6p1<(~KlacCliFC%Bgu1v$Uo zAmYj~G8?=bRq`CiZQ&y$e@E?WKS;2GUiaOqvPHy^5sR;8t*EhnpJ0HZ4((dndCwY4 z&qhvAePStS>!`ZboR@}g7|X^N{g_>p07;V3%B;h<3fS5DdCCaKK@uXHb_|V>Ay8&{SGK&X0wp)6(b` z`!dQ#wNVpmX)32rpR4ESB5&oI8%Im6_m?#RW&$-hjwa#btGwRs|M zC$E@%m5BInLPt#_t#Uoi1e~~7eb&fsgtSe4_6@P(>DKv!Z{qO@eF2}gO|{DLe(LUG z115ODO3$df_GDG`V4m2g7yW7I<8E z(fy^vL>(}al9O8rB|QSM=^Np!Vb~zAd25ym=r4EnPCRa>x}3cUJ?q}o-Ew(Me%SKn zFRNK@w7CIGSgd!g_%>X3FXNVW>XUxZrwgQFSxgrmeup%ZP~~0bQh|-PrR)sb*r;nN1*HE* zME`exeF811ho5w?vY;+K_TxGj$t45fD%5Qz2d!-YTK3Q8E6v|f!yFn=?>>*ntiABt z4g;6*=Vfn4&_Z#YC0`Fj-Vi;hujo=n8gU%o$eZ`wX6FwfV#2D3JM~^+TSP|CAU`|{ z{=Rrtlc)9nrz)z5_GqTL2>4cJW%>fa#+l(3P*-SudWVB(NBs8hvd3^tXw!m^D&NQs zGQL+W()H!iDJ@hvSER<#7X#HO?B$}oT{b~JDpqg zIV#z-=+Zb+H)Ao1Fl?g#<^o_~8-H^La}1~teiPiCWQ8W~HclZOL` zM0zQ13jAPGbFO1oTU7ZGwdZRNR&xdJH}vH7%vZm)u}aQ^V&>m2(l-fO&68EbjhkkA zzW;OIwIfscH9x#>$UJ6TIRKo4I6 zGYeY#W)6V59|{Va>6`4~10(q7Ja^^0t8^*1{>?4ISga< zF;PUTS0GhF*XywNw=A!HKmh2u8DeR0acH~ze7@R^F zdKAz?AOMaZeuWqCh8ubDD6eFR%*eaz+a1RwXsM2QiS8Zjagnpjk)q#MB3F&G&Zgf;IH?>oQ6~xobgLqUg z1F>`ySKi9HW21s=IAd>j%t-)K;-tYD=W4z?@kn;8{H)2l0iX!qXLXd<@n#jyo^y)%hW)*!JV zAj==cx*^E|bym!kzr&evGkkgfZV?l@Uf!Io0x#AUp+DU&7cotcTPey>-kgX2zSf>n z|1l$<2*y<0@Z8PKt>&bUDRUmILA){c;k8=mflgqS{?dHx`HnACW<)BqbP!ncv~6_o zL>w^FSr<}^9?4vbL4KIExTBaT@Z-}59F7|0aHYIRn#By_bdeQXKb@Vj?T-Kj7`(Su z=sf;?x6IZ&T+~2`ed?!a+};kv!6#sKVn~N6{xtmt_njFP00Uuqf;N_pb8bHe6$p%&J8#Az7XlXnFk`T;bm-m|ARU{!fz>}$MVNifSy0-W>& z^2s|(r3=~EW94&ntG7nUZmxIFA*Z!v+B~Actark>5ZYZt+9}U-spee{+P1qea$#Z+ z&oiZlGH0a^NfbX`eaf-N3iN$LiY3%wt3USP9p|~sj{;Ma$f2#X8$%gHoDH~k-ql~j zp)64f{vuE~4n$tCd%S|i5Rb(a?YWKgWb@sLEWhcU?H9-6$Q~T}MAiV4_kWx}d1V>C zFu+hyyp%)ys)0!6yzJ)McD>vdUS8BbSpA{(j6&C^*k#F{f3z;|diHK^nCw%IXtc|; z_dS)(Lv%B?_Wxn(D}dVSo_KM0x8f8p?h>F#aVSu%SaElk&=xE16u08;PH2m}ySuxG zke7b*{%_uy$xL!{ZnAgJUHk2xy^kj)H>uEbFNIUdp=sDxeM z#Jo;>4yOuvY^NDt4gk;}nNOMx+;FwGbpv={{{qG4Aj1l{1}n?kyR)aJQRd4{AM8`) zeKoMswUH|zw)?nb`DHXiAZiTuN=Z#EXlx|f+uNHu8=425x3gcaU8wa>043k7NIolQ zLldJEG!lH=A~G_>Dfb8X?X#w@!3TD*gdMCZp>pqGVy<+hnUPTQ<5*iT*F~P z04X4IB7)XEFH|*L7;9m}4Gklek#0PHLeI$~hSNwa`8zew{d!}|9(2F5kmPoydj|k) z0&!}1d z^+zm^DOL?BrgrPJM8;5z6OAGiXb6rAgRBVn#PH8S=Ui8?>UZQrdl zJQ!a30f+nS(JE`61FMoE)1+BBIg#NO9R$f@ zRH86?C8Bj47u)Ki-=5jP10f$(^LZ$FY}pJjyJT+9hJ43D`BMThoO$$+3=3ZSepvW5 zbvm$VM_0X@>8%Wi-H5BZ{OahkWebptp(q4k@)d=%g59Bum-)d)Al2$8k(40bQFXQr zC^G5iV8v+@*B&p{RVSg_YVRu>gl&N3vG(~^D5k#A5iwkF`!sv}XhxRBk^kQoHvzD2 zT|FPa@a33Nu@D^KSyRmCY-#dDp&)-NkPHj(ZRwiI{-HI0P9Lt<`9IE@%~$H5!nW55 zt^=Wg$*HM-tQvlwdF5VvEmRw^aB*GSc07NEfeHQn@{115Gf~VRHZC6C6RE#Yyv|$n zOD?SsV3JQ!s3&mw_J<`C+VeIC}=U9z$5=8I;D} zetyet`|2-@Gf|h5exJK85Z5P{K5vXow{3_oC)*_5$$(Q~`p)ulFlt5WXvrFh%1Z5R~|ku(Ae6VJ^k^s{o)2p@&$p3SB8R$gDd8VsbOc zzRCSON*ruO)!gZg_x`l7?xMnrOa)-(8!BhxB-rDSF$O=7Nmr}{0>M~S(A<3A*aEld z)lv8W@4?GbwlHygf2VVkR2t2lV0>GS)((4o+vqS^Lq`*~;kBFpeJ?dd(ae_JIou?C zmt-YwIR3m%GR50$9MP_vneU+*8+fE;=Z`&et6O+73P@@UR}}p}$?n5Nf??%#e_f*& zD3$NfXXB>V`W6Tq-&zhv-J*uQI(JM#^9l(7;Iq|V8F*4dy&Qq3b;&>Td`@(`9^5~< zDk4UP6Vnaay1e#zZZ=uD2;-_9I6Wd0MsvVn<3R}V-w4+#mH}t|t<++5D<$zX+H5@&s;JRcR-b3IS&nzHizW|MidV`>K!9W&$ zeiLAC7$-Zc@)0QVkmwx-yxxilA7PFiB0+jd-`tZZ8ux7+Brq6RsOd7WFJ3jh-650&8qYAs%g6uh7DZ<1!$PM*obeZSY6AN_5e=pdW$&xPtfZq_$5~Kjhx3D=e@cmDweu!6`d0M%!Izxh`Cc z!$E-e;}YHF$D`nlCg+0;_e4CjHdh5ScuiU5DhfZ%kh-~UgCh+`OS=JI9fOUlk7Dx% z24Zg<#mp;svp+@YoDgv_cyahtFs*Y%d_f~^3o%5aqZ=A(yJ&bYzMugkF+|EJ3ja92 zI7m_-7xB-%s|=i1oOcGC=uenm9H`#wRPr@v%fu!>>yKev3Ne6COKhD)qo6VPS;pIFWEb{#% zr1L|tLA#V5p?(l|cS!v#4$gu6Evi9d?L~U&9ZtC}G4VxF`xX}VN-7op-kCM}E56jl zP9Sxj3}&7&iZZ=yu$*qtl5)u5)mN+~mC0NpoSc`~J0p-aG|3VAf#vp>|NUxP0UZx1 z3O~k07u6~J@r03S;No|7ul0cjD8so%c$Fw^aJ!%1^UD23ZykyFz;X~>Cowf7?f{;m zclC+OB>5oMj%xA9z4D7HjJCkIzlA~fbM+tRYwgGy+;pUpnzYC#P;xI3Mz5HBG8uD{5_3G6BULrQ}S`q|~jEDdAZ+iSa z;44*q=ifS(mCY%r4}uNel-Luo-O%3#=n#yK7A+ff<@_^$A1pa>c>Y0_+r;pHeBAi^ zcPIY;JB>$*`o9tWJ7?)G_u&1PU^ZQWm!f#cjWBPrjCar9f5SXtvJ-kQR^8@%e3VSm zv3;;#R?_hA!0($^ED>?|-K~GamF#wHtBG4<=#SJMD)kK+1=bK#EzGq2s|RRyTEpmh zyxK_z03~ONRd2p9hY2qj`&Yd@FMxtJpK9fFsdfCp&Y+#19si52v|Pxk^}4qOp8Msa zdgs+)Kkz25>k8V+XQ^7DBv=wv?Ne=QoQG4#Lt6^Dve?&i zTp_ChzQESlsQP^DQ+AFAPkQC|Gsc?|z2LzX>wObK)tlqfc4Acojm-Ty{jNB8796_B zzp<<9UYo0Qq)6E!H9=GWFK^&$fhR7Ua(`~n=1*W-$)9l1Etkiho$2jDd-jzQ&bWN( zjjM}}wMUzk>&KNcffoYP@9Dm|!Ov2l51csV8pnXe=ZRQc~!*1>fzJF#;LHp%dBCQZdV52tpK zFsLz{n*Cl*!eAMar>>y&CcUBKic+7qSf{0+%zY4@*7UTOvgYM!Z%x;DMoh%`_0LUm z_0EA$x-ftwIW3LGC!mqgbfZ~33?*K7coX^1v4w%pK?@{5VFcVKZh0xya>azLbgPMdb@3*Bx4c#gUb>u5kwb}89 zN`1B2w6^w@-2RbLUdnPytW?&B@nk>MPX>qlS!F&hyfxMDvp91i$8P$e$NRlQOAL0Q ztOB#L8pbb3wb^Xs_i}Q!!qJxR>8s|eY?O8-_%Sw1ge`NDJq`>NvktsHJ;lX{T)0tyQ%UJhzsgqn19lk&aL?9#p|KrkD?~EA{50%c? z)(mC*HTGNGVhdG8TIUHA`pEK}bU%v|Xv0SXBOhr2c^xA6y|Acs;m`3+ezNutX!p$D z4wq#OCA~t2+q@Hpx|Dd=Sls5@VYmD|4}=?6dM)xTNITh9Rwijm7CWIw%!8=~PuUAY zVLuoPkA?#x@fo(DxTSv*k`yfzBHn`#F2kbSveY+tojGW;N3eH&p;IM`2JwEh8bJPN z32f47E8n_%wW$EK-Y?q&F4e}P)P2)NeIY`x={Lvf_y73+VJIr~sV+?HBIEitC2hJX zdo|S28_^J%3RjPyA7gPgV0_P8hl2yeKR?+_@H2uvc>We&lJA5{BSbgl|Z@flwqKS3fdzg0|D6zJ}zR;|D1Z&kKi&Rc?GjQWN#sQGxO zesqxQB6t4dPS>0)GbHH{B5CmzHzu9@7g8{WDVd0vl)C7L{zlDY>_xSjpA}LOcrw{@ zGX$L+7e{T2eqVNgd9|o=OYavyEY(~*JKo-Ee5i_iSDUlwLYPtf#bztVYKP|LqK$F6 z_Rg${&F?GZrFjJHkw9LqPi()M#KfZAuj>;rM5w}SW?6NZ1C8VyI{*ZM}KUaAwcd##{e1lG0|`|m2B#n-D$`_ zA_v|kL)Th;DdodpEtj;E(9lv@Z<3L2_(V5G7n`5!`R}=wVSG74Sn1AbWXe<$KN_ma z@Sii<@WMzn1ybCDoaI&u(Ei^VWe009$+3iZV(w}ihx-*jom<^D=6MrU##+Kmr-0); zJR+EG8boJ+6m*p=HdA-WG)MOd`ww%uJ%B_F!w~#y-N+M~cxj0F#TQ{poT3_T`cNtJ z2XjX%QA#mTy1x-AWC-;=qFDU6NBoaLk2}{YHow@r(|zKC!HqDsdHl&0`~pf=zQth| zaLOBd&1BEgNLo{s$edprRiETQwxHP;F@DdQF29AlkU+zboyv(K^N%4hw2|#=L3K~a zbh1p5qx6eT(Uda|-S=K@rRaH9n?JsbOI{cvu$w}~pTEYP>;i>zN;?lKOqikh{R5up zU>9*s-w9pmevs}96{GfB1g#EgpNQB41$tXT1dlB>C&l$Ul`NnJ$iHtw*3|t*B(0`W zPft>4e)4|#x7XfdJykQ|`-s4v+Dob{okF%}g`2V%T@9nR(~c0lKr9s{#~7DqCy$Z{NU z=UZ$_j{ddyo}QrfWr(9Wx?+1(YzOzWyTImj-g#$%AvyvlO`xx8dXmwqc+yD10j6vs z!4O!_j~U_a?YJ#7=~G?mZi6-Nesved*57Mzu8bY=_1V#LUxXZ%SiZ?;)m~*x&SpP( ziGKB5IRw*K)cWL-d{_Xno=ypB7(lZXbPWt-T05{L-aK;WY}o84^v~Vz41)ZMvQtf30UP#u094Z#)%#Q-BVvB z0Xxe*Z4GO@ZN{XnIJJwAg_=vgnMseW&Uv!!gn!K^{i>2UQ_MU+ z*wLG*20!(T7Ektt9IFYNI~cDvF443^mN8UaXtBA*sL?a5i2j$0MX@>*Q=KEb&nsgp zIkJG_1gv+6g;`=@JJ>skp9kOtR?;W2bV+d%yjk1{+mO!AWTFt0}=8 z7)ltG)tJSJL==^lVBq)Uaym`Q0dRd~yN~A~JdMNb`6Qp>HJH2<%Am|WTglz%@G7wr zJOQVOKdEiH(H@aOPk{98;%GOXK*~46)%jyB%~tZ@TH(4TkYo|HRA#Q_ zyUQfX4op-sO2=GL51I}nY@Md^| zS(gV4?$PCkNowv3B>vV1p|eDpyg7H6i=p|)QUVu#zxeZ#5~ZZVJPbQ$zQBjMbm4Xx zo}-4MB_^@q8I=*mX3J;_ps$eOuPZ3hV*Vocy8_^JxhjVl%Pw-c<5qVQgScWHLBVYI zf`L|vNP`zh%BD-?zZ`$y%MrxKNFJ$-V8Hjf=tLnUp2!m~MVF6cCTz}hlvv7j#u*V0 zZUs3Zki}98=YsQMaYW#gA1)n62GFVSBy$c1V9xxGGXuMX;h^1YH86`i*z1LC3+y_K#YWqoeVc2z$tmK^zu|_*;#QXA6DZ zk0je=RrIMr6ELD%_DuY}^(X>As*OZaISnI}OfdsA&;*}Ix&Hv$=pOxV|Bu&DV7E4wN>X3fvMB=Sy`+-zI^pIbtsDxEgQFA>0t_|&JG*M z2Av&JFGU#SZSOTU!S{La9jv|C9;z02Ics&#K=?^H8vVZJ!NNGZ(r_yIH!<z&L>W^h(Db97Yg$P5L|Brvm3e92XZi4t}#D65o%? zR-wqTCPA&5%=^iVptjD_cEuZ9~SBlB5?eaHWyy8<`^sfJbe7;yN#pA0`Xl8obqE3QH%yWK4!# z#MXOpKo=}{g%kNOnUxKN$V$e8gL_0)Z^U5(1u37U9N)MMIqEH}A9ng7)z?CY(7Tx$_|vxSa1;1?VKp_;W@Lv?(WakpWefbKYJYh+fHY=58a`N7 zX;&&QTM^fa)!Vps!W`gdPkn0^pAXL;TM86Yg3K8eJqxbx)Hl-pxm22qA)HCABhiAs zxRZG8f|+lO!d#DkGXLG<$y$4)X z0SY&vw0N3t4)2Sk@Tm_Yaxhl=>#wqzstP@!;lj0YvVUQz@=DwxKvKV`1{7l>lm z(fvltEToakOHU1N*A1z^b7-J?eC5Mp#snh23st>?f^D5)kLSsJmBU*59Ou5l z%lhy^;5Ait%mMQCUJBit@i&0Ggv+H6(es zfx^!E=SMhbWIYS+J+BN+mpr&s$8SA@C%N#!I+n zRo-FFe65v7j;VDi7&V4DPopwd(@ZS$Uc9uF@KqYqKviwh2MvUuz?82^^i=Unokngt zdLJ<=9D|KG0ZyQ=crB$91sQqQ#X&(w`%Xo$Df}AQ6f^b!9!C1*qlLM$SemRR)zRQ? zvq;o~?kmIJWopNjbFLx+8~IYMqt^%;xy8L z+vg9a(dDsYRary`D$dZ^K8IRb7v(#aFc(gzG;2BcznYl-e2V43srhSUz{!$>YO{IB zxpH;Wt#~flv6jnJl06QCfyev1bke-vkiJM`6A0Hno%wIb{%O@7ti0afZnZ29V zX#A&4$}Qj!^R-zr&f)Z#(*!DIX}_Hd`Hh(C$s$q|$@%56{5tIRjXV}pn~Huj-P}x@ zeUPArc}ZUjZ}TU6P-qk7A!yq+Lzg+7U;JqCex@`MyWkC~0w+2o%V-UyO2T&4^pNg1 z3LgVHIZwja8DowuzR^&&#V9o_y6RK1^^EP>^B(>+j9F4?tAn|w3%i-50%VtP_9t?I zsv9@T3vD(2dlE1u70WX{UZizZbyA47++=#I$(%{CuUGt?v6#Y48IvSM*vf#OJ4K2k zMOoq78HjHsWUou%wImlk60dlh)$`hsL@gf)f%vDOM}OVmr*WK9$>eSaH>b=6-W1W zWQlv(Vp_(#I7wcD6-eI& z5kMLOM)*q2*RPan+%Q*R;<2QrkK#NUu4c#SXg!KOq!xgoQM}jDOyN}-`A-AKV5;dQE9cxLL?Sd)tC|iELXV3`q z*LslHG{JPAQ&4lpyO#P9k8RZt^H}sFv0(9{_Tz93OeMW~J>E#TlNo*CmHiTYotqSv zx!r@xQd)orqW-fb@DCU18$7hy-d`^!Cq_1zzd@Sh+5CT$$MUe9S66QJuzv6-bPC&N zZ56Tk2y49-X#bCxMYb+Ou3>qiwGzGbUNN+(cW(xUJ zHiThrJ6Ya|j9d}d1AkhLIU43Ky%9(h`IH7VY|a$bmzK(g6Q&Y7TZ)-Y65nq|O2P!9 z1i+DQ21AwT-oNItVBn-NMDnv0kOv%F5n0msN(zU1iQQyQkB1d=B{AeIBCN6RdNpy`%$48%wD%e_^AXM=efPFn zNETts;BW4Di#4_Q)rgJ8-&E!VL3P3^Be{<{Em~Ss!!2|$F=A=d6aIWHutd;y^DJBCE(HO`mJ?F z%fDvBBO^ySLM=TKH^L;sxRs16^ZolTkKupKvaa2dkq3fa{GC9GFmP&od*8wrU6|Yl zapArB9#EnD^@RBW{L7GyiN9i6>TZPV;rs-bF5_zEkzqye*Uy2@kgxe zh*$}OUQ8olkCG`#ZN_iX5qfxKHhNkr)=3Z0;+(|i)G!q#1o-ta-5nIROfROZXokFx z%dzTjbe`QU9foXR&cQa9gnHNnPc^MWB{Ke>(LNr24I;#ccEhh-zH#v(oev5N@(6b< z^FEM*87@H>poeVrE_Or1B{XD+_B!JY3I<*t`x#+X9sa3$G~x>y2M06Decz^*K( zJyJXc3`+v{RDms%1CI_qELBs$D@-ARL-Edf%+V~X0HW8H8@1OVNqhrxPLIn#-FNx{ zZFWc>gK4}GfT6#cgWy7gQ;-F zkLBeu^X2sqy+H|qm%rD>*<0{)*n;Hx-3FHlm*ymLs=(^}c1p%yfOd?rRN)NF=3+XX z3r~4JvUFhEGrWcxNdKwWhPN9(@};{k9q1&J3w!$;9j4OxBZ|J+D81`ucj0RnObB-7 zm!sF5awz z31@Z>2S9wF>BHQXNLdXphs`F&%&lozwr4BL$OhhYiN1}WSjNX{liM;&kRZ$P4jc@|-?#!~4MCIsm{LIp3;Ik30WXSuf3CG)@mLp%__Tk( z@Qm)d%mT{1$zxhd&qyBsSM!*_fFbj)FU&B0gUY%;aEPC5=XSSf*sYBHiy9!32iR=* z{IFcvSIcaStn!K6r=;~DlDS`?i3l6{SeE6Ovk!HJGd+!JQ(VGk33sDn&^@G>@Y2}w z(n!^JX>_&&EWFyHiEj$p%!O@lsCbulP7|%UK6L<~n2`uovIwq>7nA9FTwR`C`yH=;=0PY8`lT}%msk!8Nanr3Sqfb zSQgAS>QwP~u{)Upa-F%z8@tC}Sjzg%k4R_fown`XdEnEC+F_Z(`;-Ak%~^ElfS!hVhgU9e3x$06KBzy}6u8g+tjT#&IcePG5dZ=| zU<}wMN4ymg-zKfIAmK|(VUp%+u?bIxuyh3T z$tV6ImoD9py@@iZ3M)f)k%Rhb8}?lM3LL>NBb3ckhmzgx1q8uY(ZGkF1Mwx^{(_w? zGLWg}Js$o;F)Ic3U?KkLwBb7{+5Ej||H+8(1h#Nm?rm+?=Stfh2q# z>XIp)P!2B#&N0NZwi9~Ilog)+j%RwZ88q>}ux4?+QH3W)KAu8#mzADGl!J*pB8wb8 zUC3d-S38cHf~0mCER(xcoWb=+m3tne)4lYB-OwimfoNx4HAXx7GN`b=xor12s@)KJ zBxd)@zf^bI{P1$6I)Z@=!#Y`S&LU!qT840K3{g*EZ?Gwdak#I_ys^yfRJF-TZV|I# zAQFd1?sHOosBW1Q(u4ox8teyh5WI)}VV#7kzmYXy6cLlfR;TPd$X%78o3H*Hb532l z`sP(hGZ>Z29mxwXjV)6b&-=p>G|gXgE`<~j`x1P!Re$*W~&1GjORvr_}m7i^0HjH ztA%l7ZN3BE`^4fHG^V#)x=2ms<>}AAh6!gg64{vYgtky-TOKgl^M@NNH7YsJzCIRC z#PWN0O3c?05G>+20Q7qOU;(lZl~^nb{x%%l6(vPq{*MBFajoPKK+4HEnV6^bXUJg- zjvqh2fQ)93x~2=sR?kvMpbk-Z^g7`%i7_#JKOAAWiCocE0H~%2t$$8&Cb2Lvy{Zl}i#TPZ$PHDzS5se4VsyyQ?DRwGVZtd`LZoPOVv@ zdCtS8bObNS-05O+a-+{Z{(*hoz)*p%rvKIg1m=9w5pdtux*!Wbeyl5S*wQg@+F1WV zZyG={@>+SSs5?|C@aAV&M~d5E;=^!gmh7{v`E4m?pnJ8Sfz4MXzY4|&L=(_yZdjw# zEi61`AwsS};p$IjaBs#nl2AK77WSwzWN9=t7~5S)59jEk!^}rP2U~A06yH`hP5jVi z(oyl>X{^-CesCf}G!G#u<$!<+FI1sT&sJMACRjPXN(7;6GMX##&8g?d=pP&qZk$?` z({)szo~CF#p*Mj*6dqB?pXIr6t)ZX%s-WycdhQGVIF^R;GEu-Y=nrsX zxC0=1`Y%XP%-^J@UCP!N%;=Mng+=&6nk?_pXo5_BgS{GAm}623+GR;KfiYh5yY7E5 z%j*Kzxe)ELVO1d4C4I!4953$G-MZV(44JUu=P|)iWPsGyz+b_fcaYrc<$Fv0drlU&8TpDN%+KPR3>dPTS(j z;OjuLrH>r`WarJ3)aJKWV}5=kATk|KXvV+)WoMEr^3v^`UG3~x`SI`w$z2MHTYCfc zbLl^_>`o_yq+8lo3&qj^`p%W?cvCnvi=k^wzBQ9Y5<-$M%vDyu{z036FstbUf;_%H z^@gov$qFXyIWk?*eTZ0h*#Erq?+uEtk52&oPYM6~n4TA0;YNqKavi{H?E{H1 z9Q?0(5!FoaSq`cfl#RFR&M&{z=!+f;A7@l7C0By&?T~bn{gI2!t)ex|X)2322<2>; zC!`djgO}6WJ>7;?N^zl$NatxErwm#wW-(%=B$u3TYs@tPdpiZe(wBjB6!75e7hNH;^lom^V1oIG(g>{5_ z4f+UPZx3*(+W&f*R};HCRhA5#JtXn;88W$ZP08-AR~(v6s!<(1C(-%PhUjxwxGYZg zmz#z1ll(}vQE5gjzv>sGY$O@F(bIvg?%)5+MBx!JAd&S#?5!REcz?PS@Dq&!3t><` zf|^5&nmijqg6@fH#=trADHP2{>+4p}zO8;;@f36TEb!sQ;wOH_bFp?`P(C-YTvc-9 zVz^~`tFpKaVOYu6ru*u1uXtzSD;0aEgIIbV&v7VQLpe`*!LOj3m+wlp!pt6H1VIwa z+Md~^@2Kfm$8A%XESD7KCChbi?RAu*yx1(ayk(^xL?|D+XafvX9viWVp6++fiIQ4# z!ha{*{E;4RO%fp$^y8f=I-nK(h`8HU5!H>XD|G+l{66Y9FUq#0)MDvVOWjceRxroz47l(~{{ zSMN-6NC#m|+8IZUq=6eELOMA>3@4I8j;s0SxzwFGadgCF6;TT4=)cG-AvGG965%1q zZ|-Z5^X~S=#ZvB4(dM-jviNJrX2ov|T-yAr%ftDsjvudWAK6kNz!dYG92xj~B0J+w z;oihTTTT)3+-AbI)kDohW%FKZIi$Ff0R9XcpF2mF{`Fw)`qEHI=gO|D8P+ww`qZ;% z@F8(B**ciGXQp*YUo2SA)VWZ-7?0bx_p5W52sIH!iDLfZrZid_5lW zoTEHG8E_a}5t1}pFgd*9x_tn0)9b~VLh!pvHmUPq!blMr5gc8}%4ua^K{OQ%_eBa# zDEppdH9+t^IPr614s8e<6(6%BxB6(aYOb%(VTk1uj2_{qpWQ;9QN|FGy3 zS4BVF_Sc;3D8$Cgoa+ARPM(~LY5gW28T|GuZAP6kHeTq$t8h!PQOqEDmKH47Ns5IO{ zD%kM1u{tn>I8ts_)Q}40WIc`Co+YGvGa0MVw50%2(Fs$NDLflAM8Z>el5@zb|43A5FM|d>+<`)k<&up+;BN z!HZD&`tGaIS;85i#iWblpp=~?9J#n9>laUwEO6VipX*+({ua?y7ue!2Y;L$z;0|e0 zMG2^@=Crz+Xkg$?WV!MQ)DI;~tfkxd^DP^D7TQLK^+wMk*XJnf>aB+5Se|Z#F1s#S&K0BP+EL%O3336Dyxf^-;(5M#MDIMMBps zy{Y)ivUNH0Lcj=Yl{(!h4PGkoRquAzTd=!?Vv$M{i*>#iun4;WQVB_=1JySs3gSu> zahjO^7{e@75#6l*SKkf)oPE;s`&~O|L0jwYuTLj-R}nv*KRO0GymM?i_w9IGt~nRZI%(f)V@1#q;>b+m zQ?6k3;+Q5!m7BuN+7TAXQo(ZfLGHdkn;i#!L_K{akyaktyc}EEUg$KB=^8IlF4kVI zT&XhKJ0%fl0v$#*L|F%LHh9|umrq9^%a>c3&9|Q$rYL~f>S-z!&H5dD&VVJ&+dZ!2 z(N-5|DtrS}Zw&qKf@8GN%uh)u_9V0o?z&eZmC1)Y5pOAy&lkghf zO#4rnpGhx&ml1BZshXxYmhwct10<1`@MC2`T3|Ck%l!gemTm72!6TP0MwPRiGLG8{#Q^fMg%Y}FFq>b5#K zSzp&oTdq#`qTTrM&Uz~OPRfe~Me6&>5WLKyTj!`j1Gjtb4~g8*8h(y%<}Zw&*@~Z3 zX0n!XKcfs`QX=XiS-Exz-D^NNB%@(PzW30>b6&A2&vs+cdgB^$0eP5Zy;T&TY;?7( z!BqA2Ek)b3)z2T&c5385OUgQ*^6iPrd+N}+F$!s>idC^9)gVjHBV^pM(|}fh1LEh_ zYOCrm#peq$)ev=6o>JDa6(MA>ACd7|IsV7`VTqmQVa$cO&zCUigjhi@3;`0lLvJq@ zqGXijrz0nXrOh13(csHC8v8ffV(>m`oJaBxf}A0@$T0DA11*8{W+!xbSDj@wc|{@* z0x)7{*2uz;YDYqtH^L&m)ibWsa*^DTt};_TkG(Q693QaRo&lb&7%wm**yy?J~IwC+Ye%s}Rc2^}vg*A}-dIz(c zvEg30giliGt-Drmxy-|ji|wtVGSZy{eV(KCuuPSKr)`CSPUnD-d%=c~)wK&WtAfV; zbl2vyD>z}d3n02l8cAcs^I^bUwy-cl_8Ksyi4>`jq{jaE208!nH)Lh%<^o_R`!*=b zK)e3)+^i#C?99^$=p71tED|fz#H$An!l0L@Q((1M`=R<3BJK2*;p~SaH&v~cZ1JVd zq0HAkiTm8=Ef8(6%E4<@O^#c};RW!Oe$GA0;B)=wnMTJFRV}^OGdbFxR3{p0@HjnE z{Q2Qxdt0~h?ZGZ8Ex~F*O8w`BMX!C8R%itPZnc9R_3`fp6b_zoWs#z$h7=<5gcu>* za%jmR#NQm~O7OB@kP8}kb>?~&L5OInpDTq;VGT0H`wYw<0QGD@8H$4L9hSf|G-ncz zV&gxunG`q9d`8RZYkGRWAOB>@@ZNIFuYnkTpegYW?)#T zjw6mBZ}7ib0Db&_Cz$JLiWDUr36HCsoi6vy(-@28%KBlacD2|VubD2#c#a+!u_f!X zQ-LQ2icu$49}bMwP45$$;@EWhD(1FfDUme|gYC>z;-F0;TagCKw+AiF%>yqt)-Q$^ z*9WgFLTdeYaDj*3Viyo}_$f#A*BKlWS7I4XXFhL?Z>Z#UQ~-SRrUK-vBG@}g}C!)rw>dc zKnH418E*q4$qNflkDiAhFsBh)4QPtG;(M)9)6fEj0Phix3w&M*6rG}bAASNzjd~U0^q2c1|%{!jM zu&(<(`*R@ci)ETO!t=Fub6+WIo|hUdHx7W9%+*~|=c0;5=Y0OY;@%>1Tw_3Wf0}sA zLxwH@H=4K<98w^G+>l3a5Y=wglL#V*a`FXEg0xUVgIFxfm@!HHsPGHc7kbtU4bw|{XyILq%bc~bo<4g1n z&9NTEw=X00CDG+9b>J}?w7FbitgD$!bVJlXGCX+nANEGsfmOPrwp5<0=`r0OunS|w z8Z>Ku&ghBU44Yu$%d()f_PKaU9pQ3Kz8uV@)cr!TcraK@XYfJxEc71KY&ktV z9%2tvPqT-{Mv<5)Kkj{#^XT1b!`_wh;t);=YJtYcLWb|D;fB47SJ9yZ2T(Z7$E_zo z9=4Agr%2vTuG%pW4Bf0TS(-mv-UzdYwnqiUBEQ_o0jzN^7jYI|1q5h7CtSCWu%>>{ zZ}vF}gw{sbtuiGKsHQ8+MR2ISxIMk;8=JSzPJ91etz0h&7aO_^AfQQ17Bt)1@^87$ zwoR9`vl>vZ@}l|4bL7MLR9fxXtRrfRfC+EtIt>mVnIAVAE#j}Q`BwbkET(@76aXGy z`>+&A-yT-~fGYL$qFu^?O?a>VXHvevPLqF5ibeFj^G6!I_8`C9q=4hSy1dcZ3WXHg zD^>Qnts->%EAKq}vDTG`@aPBTxMW*)j+uS5jv_H@ZzchJbkug}Q#YVOu8)UFBTIDD zOM5jtL~@Rl39kwc?IcW|qar_Cp&f*cO-mK=Det*pbDhfm>48RIM6KmOlE2}GGvVAA zdujO7qqs1H3`Z1!79fJ~3H}n3=~W zU3V1&eXfmQzW`-xql6qWs);o@Od|r1552)4T%pk}b-_-i?Mmp0K^6)6M!=!M%jFA= z%MJs8J^?;~$#wrA{q}?yCaoKm6#MH9HCvohf1jC~w@;C}1EB){miS;ETtkNwf%Stc zXY^MtXdZfx8Tg-QKK&<}sJ(J4u?tUU4+@d%xsLW}ZY*XVm*y_8_OWQ98IthPXaEl5 z(Zv9XKswC3&`#g-pjqSUZ_eLQ9X=L++mpQ{Pao8~5#k+t%VAx`%RxjbqZkapOXn@5 z-_2AL6k=-5ah8`CQ=WuKSg3^i7+4;voM%pyhaDKSIHSlN|@ea#l zx7m0n6+tO0qN z*0)%BUVGiBsSz=ShPI5c5|(4DwcVHS3s^5LXCNxPwHwy9+sDe3v-Sq9fJ)D1ZbCoA zCe&V~&)p{vnQNS9@d&HI6w4EU1*La=w;PkcD%(Y z$msr#;0`tIJV+0=DaBx18H&n|0FBF36WBX2_S3&yKfBy?`T_lb@*VX9eKu99;}=67 z6??89qi^p$-e!R+!H3?sUy3b5BN>$O3S=Owt{YffrTrgiKvXmL|A(lrjEbWP+8x}3 zyDjd)9fA|w-4i^xy9N)z-Q5x(xCRTsU4py2yWM%eYd_|kIWx1nvt3KhYOL%s!1*Xu;*y4X~K;bVi=et~Cavs$9K)^k9qbo_5F&3!lws@8b_KXZz{e%JYW zePsS}FgKi{ox8C)?iP2tEHihS3Z=bG-8P4bs>$|qw+lt7RlAiR?c`JGtnvg<#LXrPU!(ZKAb^jwt@jq}!RVj3_gw_;JyaD^`&^deJ72?O*))(Y%EC0;rB1S zjA(Qr0j>*f%D8?%KRsLfHg&XvS+M2l{-OHHozpZV<8Um=y`7&@V2jhT;EU~OO6x6* z)HkxMRvXb{5w?zldpP~0)zuNnd|E-yKTAfWs+VAw-N=eMcFyGn@@VGAv#3;r-q+vx zVOyO!WdUuGU-J6~HIBXfdVh`Q_|g)!XO9KEe!^R!BZlvNopSwifl?mu#G;XZ6IZ_2 zVA^|L_c1pT-l53x1ixlK#}CHze@7DJWoH4PygU2bUca7I!|pn-)t&ENdSpIMj=Hp* zEqr&?^+8Hi5P$>^?7*p>8h)C2dIWu|33dCppliKQyLCZx9`wUj3>R+>(fY|qdF_v< zVyZ@V0wK}$h>eth9V!cX)c=qv06MfG}OEW8&46(vvdx$Z`qf|8& zcO{{fCisXJqu&QxC?cy7;bf=(7Xm>xej}`PZjU*5{S|nUTo?FEWGPB0sZmMeKKehOl;;qB}edpZPrq`vef_ zy@gwRCNq49jrk#RI_b3J`%wAa_l^9_4_o2u;_UVGxlN}H?ZUQd@|$DXZF9Ip!!&hV z%IJ;n_!*fmHtNKp`wQ3ObCg9wANWL|uFo=z#R(Tw(N2zH`@xtSc~VseEW1{~e_$nag1(e7fFvOEsU<{Q=DLq5Jb<6nxWKcajItN(iU^eICz z$(m=fbb*>{loqaKj$G=RWJvt!r)8>={^hoO1iVPccR(9N`lX( z`Jo{*cJ+`c1=mKwmivoN`pKT3ODnN`dmH3D>$#AD zR6A0?nWqEvI1X z!{dzT&`jR*HG&@SrTK7HHXOjFq5pDJ*LU9QrM;4{-$nGrQm(yV2)r%qdcCve@K0-v zgDLjT(D#DnLhEO~R%c|g@sqn1Pqk(OlMgqY7X)5k1w9qy`ih<&O^^c0yL5cEw$_+7Zx#Yv1tTOQBnM- zvgGn(;aGXrJgTJ&MQo|l+u)iwb=KQu^6V5?WcxBGg5kjU_iUegSgA0FcA^N?2CSJY zprS*?eY*BD+wJcf79$97&U)nIYZ@|UZzR-Ul8EsaeIiG>G6`Ck2NH|vlu}}NNxSHQ zAaqKxoxA50;w_~bak^Z5)bY0Yym;u86`eWK`=Lnfs8v_V>yodOb_n?sh%qXX)9k@g zIC|qlrh*OSnlT&|BNW{#GMP``>9QIhBkk56x<3iaEBS0e|0?tM|?R~l-)W=pTb#@??`Wq*VAs(GB%h@Z({VVid>^CQ$cI@Rmz%CSBxew1ht zgWwg@H*!+#0EO*R=S%YZhPBc53%z{Az6_4i?7I66l@s>(>YZ(odG)82YbHSyDf(&# zzkf*I$k}4QKL`202A#f9@xKx-Jy-p4@~fKzWeB!307U7vE(5BPwROU#?e$_EmY>m% z6HwT9dga-`!^ASyS4C2!Phm~;+B;@M4ZE}Byv_5e{RrJ>>`C-<{F2=`z=qJ37Hb-u zW`UhC4eNUiP0qcE+_wGvpDr4IX(fzvgA`%Q{tM9qiu%TOEuz!M+}05g;u30tjzAK)W46gg2`^VM zw4R*W!!U@z$_mfQ5<+4K$E_UxkvdC(2H8Vnat>Yo@OwD&By$N7@<*M`OPUXR4 z-!zMTJi94!t0qfY<2}vN2MA&nS31{+mlz41I6fM_-Y+hGz4W2=f5ij($cN_M-+$@1 zj-G!m8;&KR>~vWy2fvFfz5%7m5@1S7NQea)Hjn^Vf8bA))Z`!#KYw5dS&1SGjy%rpS~#o5m4|h zkhWN6P>Z6U)y3B^M>m*E{WimhYyHGGnazOz`yfxoLiSv+^bO*3#$-$vrd2vl<^%Dt zgYOi91Ck7UwygV-)RiY_zmryLrSb+A2wq(u1$CACkROgCo(Ro3(lC7|gJjfteS43f zndwJRvQPxu1?Q?Z2=hXi2V>lh#A4}tLkX~Yh&Wn4I##5sM0APgi?qld+sAix{N~8S?u*S)chLlG$OC_Bzwfku6hOw7o z%YE%uh5il>26*=fxo?au22|{kgFD6~Y`v*`+-K@g{f!gf_erla?9=(z-u);C zjjiu5rFoTJ*m55g5dhcYwdX3En}F5Wn3v3p5tuh;g`cE?V^3jO_s0_9EJuIR3efUU zUZL%~&`)NeaAf+KlC6ENXFl*cWGKpv9(t?QwHl=_W_>;%ROa$fLJb51UCaZ|Ei=n6 z$cR6}dgOo*8?8Ae?jJ{*t~5OZIy@oKq7lex_Ur(*D2YV$^L8BU1X3=*BR{?LZWu}6 zN#C_B3MDi-xTd}PGxX8iDL@aSf}Drg1q2P4TP9tGFEgy)jwGMUAcc3QBVE|2J0DX>4yHqPo;JF4227Uk|=JFI;J+L6Q4 zxI+`)yWa95#gAOeb{o<&OHoZq?y|-|9DGFopBYm+X_8_!FvZ->eQlP@%gzg4JVNo-Z02R<#9{P@uc2 zHg)?A{EHg@wFQr&K#NM~4zj17&HVG$PJXy-N+Ev=jQM}o+2+Weib_d<_`iddM*|9w z&T{36?ox*G+7i3G`YeH4o6ZBAVdUOX35ApOM}bY@`zb`aC}=~=M;YMzQ7H4&CEf5_ zKg&)pflDE&wAB%F(kNT#!?y7LB#X%`(6&xzVj>q|s&K>B(>HTDzY4x!`^tDf!2^Mfd@adGtgf%<;k6qQ8)PcIXc-+$298HSJ$o?YIeknJ0GY9h|{OK znjIR7q_q2vVf{m{b@lyfqHW%%EtVM^bD+NMcbi+aT@UR^GkX&6-F8iZ4w;#Gxc=KQ ztn)5OCIK?cL`;4vF9V86o9n&RUiH!$b%?jd93o=mI;rB)Cy7Zn$d0zc$O+SgsC|VuWpDNTGrGeiHCeX)UWe@QKjJA($?3o^8=kB1bLXuXD zJbW0RmRkv#@t#meV{yu6spby*wX3yDlRPLt;)UhWszC3@mrTE(y5)->3md3Mc~xw* zeZdOUx+fa@)A#3YRidi>R&c7$PD8m|%)^71z;u8bd*UnnW;UscD=9kIQJH=1`z@K( z7QNs^*vNz6U$O*p97}@QtqjFG;Tcw>UL@ptU$BG$OxeY+o!1ug7Gk4;r@rD2h9Pf_9w^B^t!GLWDV5#8BF}e#I8cQ`6=_x-FL&1sh8M8+}3|r?10aJda5w1 z$s-x=eXdjHLr*J@%hh5wb2T-Ez<4vG>jud%pAEQyGu7_`)>-1mjfGqnJuJuXhcsgy zP5oWG$$e1Ad+BB>i>KxBxyH|LT~e5Vj6_IDFnRi}2WVoKF!w|szO(HH1xnes?=OLo zmgL4=-z$=+`Q)s~^ZZx>C=Yb6>uv;@=|=BfLBY8F!w}0QHf%pn@Y;ZA968`=R>Gh6 zay2n?3Y9F9KSDg=_2n=kD4R~1K={}Hi5(HVpV2krs&bcw-{r3(s$t|XaPvs&PKt1!3aw2J5CTM!Y+spC6zS);Xbs?uxJqli_DS-c`=E_Qu8d zzHyqrYykNX%Z~tv?MJ-o=LN%;Tz)rnKUEeYu)P-^TG(eG8)+cY>&@%$-eae!aNG6f zdHXlCt?fumj1thJA#$1J>fj|-gPh)TQ)*l9s943Spf7oZ;7gKYd^l6 zdiaj5zAZM*PX2YX)mU9+X{|@71xt^e{guq8Zk6y2)73*y#wJ8~&6U#(7S8r=d>l8=s!js~cMjLTnSju~WJ1 zSgw-e&mpjTHAi7zisSuSH(}E4UU1&L^>WtA8r79Shiu=B^q=v#xgDKkXvRvJMWA3o zT=>bi_W}LgAvmR6@KEu%WB=ZA4Na|O&RcejJ|&dL*zTLrOZj8 zCp`<378s$VbP4Gnsw-_W=TFbfKRa ztgLEu(N-pfmwN0W-~QT97K5nwLjjXvJ>NDYXT|g_AXBiRCVAN=H_26R?RAExhop}! zj6FIZdg`X|Z3@7F%^*yX{ckN+@~6#xxnbr_3KF6Y3Aed_y~p#SM!H8_U-6i1#^*jwQ2TdX?>x0*aW z@QaoKlYl!I4*@CdHx)QYD|vGwjK473y;ovI85XVHj*|~%YR*EH27ac*bNo#Pe0#a|^n^ zuVV>h;p*+HF_l^|{9(1J0`GmQ{RSRX0k88X;RWTG4=e-xnfMVoKX+_ba;=0sdh!mQ z{zrZ8Eqf7Y#X(8G>ef7G?3i`?p=>|>Hg2zvv9^$=$vIl}ypqZ#N@(=7CJpV3+-Ncq zxl_L~2><$5{)hl5@AH8`iw(gbB(7fRSLZU}vsS9V^LoiA7Ns;ttWr$3>vw2<5cjy4 z62J{?zjP?k;^!8QOx6dv|F;%kpuqfU?J4^!ao4IQ`qcn~b6+7<}D*I1^Cwb?{g#hpFO1qtX=#2RrI9&zzt< z!?8d}Z_tK)f1)J5axyawGZV8NDY4`a4icIuloM%ay0syr9vM!uv!)wTTvA9Mg?W-d zioD_6hBpLO>LS8aKF~^Sx(wDSGD!nVRYCXzPny79Y|7={6;l3<5j_@d&vciU0oEe6 z)k>x=*v%);W*U@Luw+ysg*jpfBbKuWq8)S`nXTzf;`&FCR#vR2Xd+euGr-S~K$eL4zbjzz zkoc$Uk&(knohd7Sseibz#h*3p(zA=uqPnqd)oG|@ zKWu@A8gWyuys|Ln^2u|!Fs1nDAAHU^X;YCrS{NLg93^1Hf#-Me9p)hQA5WX*Sa~n_ zmfw)}if0;2I8R4SmoxL1@IUlg|KX9*eMfN_5eK!)zXfv}N=&`bNURnUfthU(*?j&lnpKWjTq za?}@ept`-D3U$@rdLmz>EsF6o)z^7jARUPD2hrG z=7x*p?27BGh4$(v-_J|4*=3Hp{E%Xf9BlCs?96kI z5KV@Np|gKu(sR;`jh8ZPMLSw>+td*so0`QGoDnU*rkR>T#)0CL+fvu>U^E0B*pL*M zh@WeJ9!6?xy9!0;&Nh$(u?Bxfc0Y;;Tes%BAAs$&OMH(0*Gnz3n%SZ_vnp~!Z9I*{!hc|`2)-gSY152VIsEGX$2)IYs)T$z=67582)_id z{aJq5j+G70+d7#W8_eYxhN5`Lz!VC_a0Rw&2Q?3)i&9~UyD?(GRGR6C&CA>a1l0dh zl~YAEySlKJG3$}G`_zP!V_1yOWUPfbDA4?ioY5SuHb+Ch>X1Tl?cj)Z>b&GF6M|eT zeZG)FVHn)a2;2@03$~OJQ$T0I%CW*xs3TGQ9jO`CTtb#%;HDpelX)EBPloA0@dYJB zC5~g$s5{12Ju{*}fhz=v$Z-mS^AN^AmK=e#(oSm~8}ePonr)oPqDq|wXUCJ#Q?D4CFa^>?X_dln$oJGke*bA=9 zCr78M5|eTpdibThF`jDVc5m4#Lx7oOjCo{`eQvsGx=!aX619y)b>4%f+3hKxJOgP9 z9){nPlbQ=_8herd+lx-EBOIKH0zqa^^g6-NJdVd%j7xB$#SDXap`NJBQd~vthiGM9 zXQCX!w%q0?et=V}N-it=$=39gY3qAUYSkbPYwtX(zXRMe^As*16i9+#qHX%r{PcF) zRCm$mVrmlo+Z8Tw*k$fsbibTWlZ7)Dkw5Bm@$p4vjzdGTtrI<%jXD-97|`awe z7~&03=cg^;#C&eJjYW!;+i;d*x#be3WZ(vHdhQU|KWr{{BSMLcLQ_+OIETX!jDl&Z zDDPF-sI6!%yF_RJYBT8@*G7&kU+lLicJ$&AoOjnD0nikBb&-C8kw-;dUb77hoS`tJ zk6S}IC)%N{Dfx`c55hfOX^3O(li2oh=?wLa6|qAJn4N`HZJFM_2s;JIPUwd@cG@BT zJv;BtA~rS?5;Q{k{O)H|1xDat*u#R&G@A9V-9D6ZyI3_fBuyI!vf8#ce~j_`z!?g2 zOdI=WJg5S-$xBIyOsF}$qyWFTo|ZJJ@as)dy101uwP2ImIKAcCY2v}YluSB95wcQ8 zZmIfJlFGfW%U-Xg6`%9_<}}Dud70CpSAcvv1NEhaG0RV8Z8=5-n(D4(td$-YbQP+! z{>qV-bo^Ie(=r>v=*n1OW})yd-a0gT5I^MKwXa)IW}EfhKN^>e;9PI*2~ok3Bg8@A z$4PEvMWHYXD&Ehc9`f*xMG|0|-74s3ak{nsAp&s)(G2f=YI<94`wIq|vhcH10ZG?E zOLg(3v<_LI_DfUI_!|?0XdhIWNqO+aMehdz9c!Kz}79`&lZW$wzNoKCIseK|FMGu?=@=kuEI(P)9D343oaf)oAg|MkJ#W zO*flyk%*V0BOqlWU@~1EEfvRek|HnUvb{I@&sV6~#8}B!t5yC~Z1D*6vLF7=>u0Yb z84P+h-T0)K;DVUckZ5`)g%`$53#Rftb13RL;fApczsX~YLO4DbrQ-jLRcQ`g+8&~; z70pV+4LT+jG+DDV53c^J1@%(~&xhBjA)}ju+N=vG?|g2nH0%* zJ-_V_1yJ+%-7$(V-&?tEX46q8)jmNj0DY?^In#2``Arn}?}2VU9-c zucAnrn*4mlnF936yuWGGYhl!GftJ$`X2pngjyqYM!U9ouZO5%a0iUYBvLvT1vvrJC zW>PRo5dxeaauTN%ag8kAuHv#&u6O@Xx`Ou6b`+kd>hm#Rki>*VmrxZ*E{MA68EK}> zrW_knTsxgRG{{w# z%Fzk8wx^j%E)Zot2st1#k*_2O|FVIu&iaig-rh%96O(Sb5ZHL~C@e%S%AnlG`O7vo z`TKG3o}A~ZmiWH6y~UK94NooT)OMCpEKs*A{cXW|b$Y0Mh1q^gMPfn%k((1Mu}jID zB3WZ-3J1SE=1~$_(LV%SWe&fTHLvLUTQ{$yqxpRni2xs{XoQJOL1Y(WO&|-=M9^8O z3POz-3@sXVHGldgPIrL#6C7|1J>f}T$hrqa52 zX#GUe^wn6^_M3WlTlrpNg;t}-uec}>=5PWul0)gznG79jE1#TK~YsG5y2zsjzQrgYSk3o`wCCNgEeHd8#F;CJ8S>N z@(y$EBoL!AjsuATcEboAR}CX5J6#O^>@Eve4ZtkcUYgyGpovA1_B;v?m}p7!fW> z`+M@l%I>lIxg2J-@#yY+3$kNY{X>)6gV%G)Wht`4?U$8*I8QAjjUg{}rEN}9PlbM6 zJUR`QMw0~<92;^7i8A7Mu{nk6&5&d+jAuc5yKMdx*&V8Cj_6M$g0`@19bdGb?b@*q zW)X8?xydeD;Y3ND8I=HNEbIG_0f~hOH%;@4CaCCrk$wW7gQ%FC_6JkTzjN)e1_$uL zc=5H`2@qA1ADY9|-?*8M*oNz&_$1GTb{*mKBsg}5@~DGV#9HQhNUuc9p0KI@NW*T( zZX97DojoO8NegGAM*d9a2(ID(rGVxyeZ{jG{`Vbizgn!*sv^XY>9L2ZfZr{YzpY)T))K zK@=~9Hl8U(s0)(7_%7LkQj2m&i@}oTsDP^d-~!uZ zN%qhR`-N1V4i?Q_ObEjo`&)NJX9FLQ(4ODdJ&For!!wM^=0=DJ&b)n1I|y8&k9 zQavbCUm9C-b0I?3-EuQDsCVZYn}K>NB-)oK@_+0aloy5us=uwN+jU7%tr+$e^pQ|yJpktr->@dgCTO47X%lN8G~LUZfn6fCvnb#J4#GNR#3mNMTLDYE#8%! zU;alVfa;As{=+<{PF+L!&ErdE0y1x~$FntjXyc)&D8QC(z8IuXp*~LSVUwOzoW5WS z$sP#v5%_TEOX`2m9Mq}Pa=w(W?Ogq}S?Q|at(~L8YQfj*=*DHIa&G*_nVJy>k}gOG z)umr=>o4c*fInK&6!eQ$)|w7p*7E^;#4TBYQPEJJE{=gxifP9P-*>HA2>9|o$&;P} zIS=*~nvW=lH{Dx_C(*8sMqNWzCY<`(4Y4<;%u5DPIi<2_}ZrQgU9WkgSrK>@Yq1Lew)X< zl7l6kGF{WT>lfC*5fdcV)T$+_%@vJ#iw{LANamOo2&UJpBnGfAOy6!rU z{e4UQz8h^#G7OpwQZmrda@SbmcH0V{c2DUXz7b#^`){5;n0DU(Cf}=Cs8&3jqqZ|> zVZ10DW{rIDIdwsTposK`v*7%tTuwaaCWj704$z*@dRiiu`750NCCi&klceAE+sCXj z1o4M2;L=iKfdBcg`uJ}i{N*N-F8p@%U}83*-Ff1)t-c$DRz2>zPl0AYIaJ)&$X|Xq zDaLi}BFLz~V_Nd)e(+I(nxUM|h>K~6Pv50YN~y?p3-i5cF{~(dpdVPgaY-V@n85ngpFeLU_W20r|~cV#wRFbysXsqBwQS78guJS1zjn zL=x}y%r_T9NQuM-s|eBCqBZXO&yJ~+FLhn~FrqG7mMRT}b4$A8qY4zo%sWAha{fV| zPSbBqK%l8+fxI}Q+j+AoOrsX1h01b*4j_t`OASk}k-zuoO!l@xqLhY>#J?&1Y`ORV zqR_ZMav`37(0FBl=B*e(cr!XS<^Yo&aukrh+UITXg^vqysgh;D=}RIK-=DkdNarmF z6_bVH9$u#0C#UTz1|^OrD_w}rIUOT$;PR8j>WOCErbtjHqUN7mRORsMmxTxe+BJzp z`d#OKHemDL(O!p*M~c1*_kCjFoU++}Qg|cjSnq(lgjrPwbR5@$#mE&e$mia2z<5M; z&{B4SV@Nn-+Tu4FL=ZL=X}Besu&X+T7W zf9QM|b=U?geeGe-eeLW{)(~V~3xQLCf0s}utL^eE0&Ra};5xueFclx;h)Xh*b@)O6WupHU>Rj?3*@V&;O(7@gb0G#LJcERS zDl6=HzeMOBZO`3GHcPWZP!mYn3f<|ET|TspJp|r;&AGp(ii;vnh@%w5V%ltFZ>eW< zGc>Mq&&g1f+DIH0Yw&r&xVAZwhRPFHZMFap}qy*K-1L~S&$A?s> ztaU&-=PAlc>80j5#JRq)HjcWMAcP>U7WeCb!Ijf5(4xA4&QB3=RS|#-8ToAI^Pjaa z`#CObZLOTTT)V%lEGgr>wfWWT^lK-Q8gN+L#BxEq7+n6wwi~poT8vBjxZ zHDF~HO@k|CT^ik>E~no*_x$?N@CW$=e!F@i(zy+h^|^-;srb1Pg=C~%=9JUVFLMoZ zG7KUqZ%e^Xc&H4V6a9ZdbEOWnPH>Igir5J^GjiYYouCl+lLdKnJ5N&Iw)WYtFK&Y1oAw={*>D3P6^i z)Wi@KRfhWb%1d8ya&X{*{~XZLdgcclplu^D_XC6Zw<7_n+VpLurLp~Vg)Gk;{rBLK zx7|)2-!F<$Mb-MgwTbCVnxF- zlgrMKfSq!pZckVimi$M0daM@A3wEH)qB;EAx0P-X@ zDFpRzNIHZzD?SUao~vKQRn=8+(9dksUehU{<|9*~nWoUJ&5R$fU?f#TwySWeww&j@ z^qo66_ozQm$8oAk16a5*n)a1GUiQ5akcJN14}49Y9AoQqE`mbPumHH{8U-mSDU5Wm z^W_;Fd>HKP%*?Wmv2m;;Uvx%B1~|4~zI-9`i+whg`|oVG{o`vqwHT2v=RZF20i=SR zh4GKkh>LHJPyEs4578CK6umGq6u!yMXn@aRuQl5cnxxYAJW!iuMA}Yu?#W)00RvHv z)0Skz@t2D=O>W16f_?Sr@(-ClMr2`y5cJPrGK4UY9@AcwecG_%VYicM^4X6$>&~2N zvfrhHTLLKuchH5?ORDFc6z9m6&(46;T^L;`#kHa0e@T(emNT27d%CZ5NSNZYTsD^@ zna!A=g)k`9R7p@VE7!usR4U}7Al7S7qaal2WBn~B_vzuUZTJP4?|Iify`g&|qMXh^ zP?~ec8>m1LT^=$;d#~ywQCW!?_!FmAzSUkIEDa7oRz{|BU0y}l;Af{vss6(&9~IjG zJSQgR?LEn2ut75N+8$*mC@y0Okt!-H4VRRI-^B+M$;1UZKo28eaP{TljpMLN-e`AD zjS?JvMi%T!n>qo-y`TCHre!W%!A@oB%n*e7d+8{0E#?!L&q9BSS6f1B* zBUKs*wpOkF)_g3}a_73pDm$GIs1+*ANz7iufh&$(0n=>~{y`$p5LmTP45DNqX*kxx z7-3aKx}LsOQW!snHw;jx$B`!J#1`)d4xj!c_ORVpp3)lV0F!Yp32&C+^_4%lDkb-$ zQF4Rq2)Rt?nMs_wXRs>hKcNakZ$s|~p5My!pYASb2w;}!QepW?1*Q=a2wE$+jxFRe zqfdx1Ar0}9iioIW9Y+Cf;ED62HPm^Tp)FWG5NGN{6>qQRMK##R!vD z;1TaFuA*DaN;Yrk=vh6!6Vq*j zFhj|aB5i&K>uh6?6RJg&D_78bfYzM8%QjQ3mj`A7By2@iXw5!=K9pROKS?xXuef_f zDMzWiheLQDiu3AnI+scsB7NOOM^Bgg?La5ZnDhCEb!4BS8`>1;CBVDL%Po0bsyZ<{p)SDU>T ztK>ZhmbgqGqD!}8y#_nvKrV}F91&l>LJvrgprD(s37K&fM?~X09z+16u-c!80TH4p z$n4b49lo#x7ee242?s||(QSraD4U`IFXjw{DTi~)q$L($nQ ziEz+6Q!*OyozRO&zso5SLo+f` zY_XJh4U91JaIKO+J%U;z5<{(cl={*?p<2YQz2YRA5Da!SKQARjKFymi}ppwJpl&Xw>j~@DF{FkYMEOq^4-9B}DRfRd|^1W4drJADa z$8tMm%?yuKEOtt^+FUMRXZ} zMg0%#L!uQ;D%?plxs%zFWyTA;#|?blJk3^a3upxDNV{QN6T7Zfc zr?n10;QT$7YxMS-rn>sozRz|5T9?~Leg9LkfB$A?M!aI5W2J(f3G<-VOMzQ}KA3#$ z1B(AalL&J~MFvwe;9pzJ@9%2heh!t%Dz)-5$Jau1l=^S((!CKT zZ^oy&Qi$pAx+p?qCCFb4<1#H(Sx$X-y}oB! z_c|iD+r%g!?!Z$Tf6)w6p(dDCN1{{FamvZ1-MDB=%XTZ5RG?JWKfWF3T z1GyGF{6JI=2i8j$N!il2uU9$D$TmW-;7-8;m8c#v-_H>W+wAr zZ3MFBEOG&TA_m)#E}vGFBqi>b2Sj-m=7ZWV9lkZ|ryuU^@jucc@2X(A-pp!~Gp{)Q zbfiaWeL8K6O@F?-LV5%{>V_@US-xEo3O<+U{QtO!K9&ePME)9S_Kyd@60hDs9 z5uTOS=z_&1@4*D__K-h`q|wm_Sf53l!s<+d!4DtVIls?bxdZbEozV5)@^RVwp{O-E z6XlNGJFANmmvHA!-M_0e;SLgWJSeV<67f2}d7$_y7_ih%uNtRVuz~!`XnU{18 z|ELO0auAOoyJw)Oa51L|!*MRj#t5V@;)+Z%j1!u^)glH1`R*D1fDjw>A@*z+zIOnD zR60ktiZ_S3Er;gp(A}+6481k^>^ON?uzZ!7oYqeyohcxF6lKN1N48`wZm1P))k=Qa-DpZFIfa*Wh zP+B3ct)j2JI%w-_tew=i@#fvJ+|Jv@BG>Jm6HG7|4OHx-ApRzd{7_|)5T?Q{W=IFs znT@<|V`I>+J`fMRPKsT6r(7ZMyrO&yau2t2Oepdt3R_Wn3W(5>5r#80na*oRbZQIT z1|v7WLA!Jb1Y$z!71(%Ik))>G>6f<;``%X_9OQ4pX6vI80#3~|49?%oaG%*%kxc#| zm|qyS*DD1jQAO^3H>)xfHK0?pb0Hor`3S{_>tCL(4IC57-Ap(yCa^uP#mf;e#VKUd zYPcN_U|sF{MFwAq?W6Fn_-^EJo`4fUJYRtjuFpb+1tSTA24{bxDls`{4#K~N6rdD$ z{^BC%5}`oAb->G>g~8gmsD7&_}iH8_DU^c51%D-%`b`UCc+d{I|}iG zK`sITqd_K;9b3OE1kf`mT!_<8?p0rI{;tqc*^W0Ui`~KRbe2TISWk=#VqWC`kM{{M z0C^ussxemLf29tgZ&WeeZBzbF&49E#gNF=*obY&Z zNE}eiHI_yRY;IQ_bgzvHoHr0rIq!)$J+8M;i0LPmePM!pxA*sxtPGqz-r=ya4aVZym3@ z;pmL^U1^9tyP}u$Q0~?XBkwKDeO%^1)~nD!A0EI7iW_w26Bvua(~=D>f&El1J~Ze5 zTIYf=+SBA|oeeGeDdoWWWE3mV0HpE;;>mH(`0_1QV+TmE%4yaUi@yL@&fprKpL!s7 z`zW!Ek1@v|>0Hg2Ip4%7U7#<^BaGHXaBunxt?LMkf5|!ACf`}N5dfj|$jz7;^f)~6 zG6~5Feh+)R#?1kN4p$IoA|~99TQ#dKi80#QhJ6gKBe0&yRE`c zh~d(pQe289vv<_hDj<(9rA#k6-e>08p6;(nzK~P;jiV?LbP@WYzxRuZF$(z_>U0%V z4gbq~vi2dn{};n61vqsI0y)eDxW%a+f=a@l24mSRhIvOyyuV@K)U@}=>N$B8s;S=m z!)#)BcfBdd9IzipzHS0bu&%sneSi2b5$Y#Yo-9L;+E9AAt8w<8fT{RKdx9vWIaN*T zU7noW12V)?Fs32Wr>d|_&*-_O{}mgEVr||;zBh}4vKoEKhBjvE-LTPyCkfYJV}((9 zCkmAxlZRa9NCgZ!YG&t%=)GzS5Q{M`XrrymD)YW7s#y4Byr(fuavVF4DIbDS>4FJ6 zg$*XcHA)REz+@<9=q3g&YPl-qKJu*Hn1E{kd2^Tl>ZW&R$P+8O9l21V;#$XNtBcG02KCnJw7FVmcs_wewx~i+&I_>v2_)UI$t59>{ z)=(M#QnzV%93rgKK*BcdRvKO~Y$@~-YKuK^bBQT&9bcYT5L4xY!$N$Aoo_*b7KFsZ zLSE{YnM9W?8-~|OHYC)I#8Z{v+t-JZrx4E zw`cn5({G+~3TLs{?qleu&PDa!a^CVX-Cm0^?v<$9VhSqj0Y3%jWv*04&CdBc+#bRf zWiDGxEMRaN$3>K+Xa12-Mgt_%jLPAY-#cL*8dhOZ(JIB54+2#tuawv^m0neI-2AybmMi)s?iy-$KssZeTn8VD~%50>utV-y==w0d` zD^aqAcN-&lc63=H$saVi`v_~{@?}A9s)J5@bdZX)DOsgvz9~rk8kqVOEl-HALO2}z z$g6{6ElraoOf>KkHvM5&5q%8%Fx8IGhV^SrOW$^Ej&k{Tr@Uc4y9j1sl#ns5b83gA zfxBv(7+gl49swAS*Q?|w6|_Ty>nvO{@H+WF$7N%7WY~X2<9cV!#O%5WuX^GMsF;bl zo+q(Bb;!K+HJ}Zzt3UIt@2t`(U-l|5w#@CLq;zWWeZ9%+S<^_bA}tpN_jIjn*~LYIGaJxlTy^rM#Y~wNF>-Hxe+OT z&Wx#MRt3vKYQ0RTnj)y7QdElFOr+{Qe`ROAR+Z!M0G3*l?pDoD^ByAUZ*B`mud8;oqguKsTd4r*`x?mXJN5V z^+qjYrps&}etkt1a);zq=FHFd`*Th7<`%Sy=+ly!b_J_V2E9)d)WRJaz7=FPJaG&e z;?`$O{V9OVM(cA2C`JqU8pG!%IR~aK2miL?epoNRfv=E1^qfyao%sf+Hh5P9%J^NDj0wQlCK#Idl{;kug0tjP^`{0*eE`3f# z6u0ieOw>at8jFc4h#HL)ZJhq&C=j$}`CnhAXmQ2W#T5jJ7Ha|?pU^+wqb!sO9jjzQ z7ZP#H(FKS+al%D4!nBy5iJwKj1if5ac?DTQ_@NOXn$)B!nIr_Z^^E= zyard171J3d`fJB;Xz;iOR+rx}DRT;1wSFaPOPX{7W?zglVw{jGif(-n`H_nCliz8eL|eBY*aZ z)kVITRkC8<|7sFjPuHPJew%D0y4S~cwy}=wG61R#x%E!UQRl|TcQ1jLQ-fdqI%;Lt zD8jCaF$@tpXzJcUL$>~*yHCeT8WRPaAYSG?0T_P>E;!em))Mh{{6(N(hVxV}biT=0 z@|j@dfv-}nJ5-a-^13piMl<7*jQL*_rp2gvBnD@qH51EkxW3W*cHwl^MU^r`tMW<; zI0W^_Jv&l``tc<{b5cICys4B@4Nj+3uwbWPLzs7b8nXop5NHnao$Qd8{EB_0DDBBtfvlUml zP^C)Ecp{{vLA~vHrm}ultg`B%FDnd99*sL0lS(nGTvmV4qGvU`HdJGEN|qk1C zVrE^!E7XSZztdAzlq4am(e;lupMCO|E&Fq7ITyiPr3j8K@y}|TQ{a33K0#jI^c*OP zGFgE;QOKBfxZ<~I%Eoz61k;PvI#}2c0e4$6p^>xPBb%7+1u-FVWCaIEif06r=Xx+^|Y&2|SDAv5m^PhH(tnxK7>k0gw0+)a-8}oqc-2Mc;h6k$cvs;rF#kJ$~ zp8eOc3fQ&&uoKQ;n+$E|{k;wET+(RP{Ksoa?3(*G9};tJee*Qiqg-7bNuzsVROm?c zKhdkpjdmV=@WTnDf!yft6(}E!wyduKvW5C{?vZ%AmqJbQYtO){Ja24x4pJk=CQ7@T*ge zQbAYjVZPaLz9WzMfn0@gGCh%@+4A9b8B7o|j)1?T@6(=tq2af7Pl*Ex63=%KT$C+gV#%tItCS{vB7s(Hsr{%#_eLT59PcYK6Q9^xi;<;3o`NsnSLFuQ~gE-C> zR&qnoF{^8WMKkv+Ub1>TM1wq?@YsIa9aHhZ+sNvLCyK}t(J&rv!nZij-#zADyvj6R zUvl`Q#)Ziueg}rchu)Gy;Y6ehtU{%Y<#iu1(^a}xLs?#!ppHCW=Hg`&3q_O1Lkjmv zDoPFJD6_$embdCD7p{YFTBDL7%Xed=6>7!GM4|c=%VAavhEEC^)zm_)4)krqh^IOX zl?baT?T#7j2$R%o?9qrrmKGP++ql!LTVIi>c(xnBChy4S5~BXvIHJgx#miIXyW;u% z(U7?bY_U2}M;57Jeu_r)G_zBHtuzN4d@ng0xp#4=ouh5A5ut;1!-`uIgRxbbUkqic zD^omU4qA6@c`SCffGR4Fgm+s{uMC(6@UoB^-hFRSu2M<)@VKGwZ69uPkDJ5M=x5VA zEY$7*X5#uER;Kfj@KIs5w!hvvYmePOPS>;9IC8s4`8E$tzy8B>aaw~z967fT3D+rk z%0GDMTX~~Ub%o5Nk-Q!JLRibca`^Y|CrFK1S)CHAYt6>pgj>gQJINiVA0vPN3 zxlP`eFh(z!6xevjO>Q#G+NJnc14G%c70@xp=0~c8{963^89DTY2U`e|yjuj(GqEt+ z@a&=~okwn$dxcege%x4;uod$BWv|jM{v3qF1UdC1d(6^M-Cb2w=D1%k1&F)xljgo3 zIqAX0Z6NhsyVm`SKCyFr~K-*O1F!w3PL?0GAXy2 zE#tAR5t(lzwPQ}5?bPzL!pODzd&T(E?uu;o#kT=nzwI2vkif;s-md5fkq_fvd2~&2 z&^7j?gGzk{Ds@AA*B$5(Fy&7c-^N^i3M9u0_8=4*T3#%&qd7nWy-`G`u^}TCR$9nG zs!&)RO-xgHpPPe|qin75Du+9Y)oIREIN{>u1iBk*F0e?flw|dS;bB~-9mLPqCr){R z6L?2ltE<+f?*h$*?~k9`0xiQPn5!7Tn}!d1t(>W&2s6gB%j+|05s~Lb_zC3Etf-4G zTjqCuYM4n8F-NRpw=Yj$P&d*XKlS(?fp-0hK6)^I)DRx!joid-!sqt*e8L>wej&v~ z6w^n}-*oAYqkjnaZn$@Z-fbP1PBff=HMowfAj!{8V=I{AIA1wxB7j+%!(KUc4hwrf!J?9dK()zbedN4i&syMnd|MP?v+49B{>pHx=;5s*7))%h!#wDo2?lRg7AdH-2p z$%@p4BMxDNViRw=7XsF6SJUOTV}e*gcwqpmeT7FDKoJV^n2UhbP6C}<6CwZGEi&W` zITLDUkLrQ&YdIKovnUa{v{!@b1%D!9?dI6(t&6xtCc+_c52X_#_cmhxIv9R22ML!a zo3Op*Z)-yWK3u|W+%QV9tYLSyQ&Puol~>4CAWp$KO5~Ai+fA_EGzfx>c3H#25k_xlVTDU~A8vAuh`DHV)H56SL|Em9p zU(9xPiSzAxdx+bVW!;|fZl+1z*`?xqc;3Ce=U}R9hQzYVqIHwsP!uT$gfPsj+3YgZnO)|wt8j{UJ6@SB>2Tys$_-UrHy!dl&$jo zfJn!-9BcNjExI)H$zA@zjeocPI67ZwcF2|T@wz^&^7)ypP1N_?vcEhkOGMFs89IEM z;BC*2`fD_1n7B+5dOCLB2I@?8oZnk&TPUD#jd}^YG`7I|5jsD~e)fF2gsd>6${(_z z0h;OtCku#XClWT9$0Wt@ti|GW|NEeTuY;HN{Ld3W#W=&J7LXpuS%FU#F7{vmFEur~ z>&xGrcJNCFncs?F>`FcbJ8pC!X&WhP4k_4k*X30PE5_DYrim0s3%is%xQVO&q*uI0NkC+ukliHICrP|=F;KAnqEyJleV+!N8s z5Nc_m_Y%;dFQDO(w_kl9yrh6Y>AkML$g64MvOOx1tPPHch?L(tK%2^r8FNry{EGNH z{)S`5fsjmw^g*OLIYR~3ls8aZ@dHRL%>_mR<%4blownCSRab>v&p#h9oni(5p1~pe zOx!R7F|VQG*ceicNqSub368ULXl*}mG6 z74gX8_{l3r!3a_sukI12hr>k`&Y`{R!D6}K6s?`i?)VD#g?Uk5;`yibSGqez%&W%! z>Vk6!5{DNB5>b($Xb2bTIai%rx?f>=Yrs_TuXaW|Na_+vxh(lb9(zuRIyyD(m7CFZ z)DMLd*11QG=F|^OI!XZddwp`bmh!n87nYVVl>N`cCq~yh2bPB{Pu`f507poytkSfg zC0LPZJ*g9`AuY`-Ugiej_Zm zmH}53v@+wKx7qydP~^ch{_E%$&EBdN(NV{kp{c><_fxH@P3`O0Vz6y#vr4*Dm5l2#<| zwUjk!gO;x%G%f=J!B^-o*D5ub8r0HiX+?7HckK2GrcFa!&FS>nwH2V9QUaWMA@W$d z&TAJ75OkCjV!#Y`JZ!RYcFQ2`!vPwhGDsm-l>%zuGwzbtQ_nAN(9>oh2DMq0kR6>M zIOpb0jv_b;Gm?&LnqvzG39EMu2~129!;eLF=(%lv*!y&RtEEb?nq zE~2AiKD_n*{vbBTCuGU)qGRLHTWMtM?q1Qk#?#wMB>?Mfn%me4wxS{Pf&yjU6*(G9!>;=%- za4$ZrYW5WwG?&FBg&r!6AyQ&)rHB9-Wd2e}urpbp7j@dF&kOQ|JWfAD?rq?d(s~Hc z-c4J#xM$+avmz@sL*Om9a4Ao=a2<66tKoWoP~Z=ep4b3m>vy6zGtoKJjKA?t$Gs1b zUTgNg3;05IT*h&nf#T&+|2AD!3+VH%WjI9j5Mux^-+8fqy+jQmKKhytUjLdMziS`b zQd=t$@S~&#@fN1s+q`@F#)$cG} z$Q80dyZR=X2tYp+`4^z z?vT=bIp0z3eC;e`Uf@`uf`%9nSr>XbVcN01K9BU>z3U9-Qw%K-AT?g2NW}y zl-zj~iCD?c$vc24Lzz41;EfBogW%Qoul4M8wX z3I$0IU1kwp&G*H)YjSfKWP-11;e%Djc4@mWd*Wyfv)Ynp>V>Zn)OsT|O4uTr9CYYYWC;=aQndC?>Kxik>CC4OiDCCQ@ftinq977Jc#8*RzCb5v(n8sTl{FY_k5Gh7IUEHs9I&Du1vGpD- zUx&@8Hb4{|zvdBu4^+vt<32bQM!XB={M-?3aztOz)4z6C=oD4S|xbKHB~ z>+_8kdvd!9h1Uk8%*-r$g)`r#v@Rdqmik6SWkOE)RBnIK>25>aiNr=as zL=?Rp2(Fr|;7>3QbrCc(K_OLRgg~by-QCD%FMePZj&Yw8nU}J%O0%-%I!W-NjFccKC?Fr# z6JF>3UdGTYkt-9|8ejDrZ$~>l);zLu6Vr51ivN>2DQ+(5R21bs(=3Vf#H==U$@mK- zaTH{aZPh%3+y`o*TN@7}(*gEwEw5U*D>sjZsk!^+yLN_ue(8vf)Bh&c@+RF4a|3N9Q$V0 z6F8H_tBn3N<2m6T zWsKqLGUR2rnOLSFeK@uj7MBkFrng)cF91NNbC0ULZfx?kvS+%28BG$JMIceiC*Mn0*eU0W2T~Pk_!d3XApYYkdx= zbk?`1nwIhozYWQw`~KceDb0jbE)vihMqe0rnHVCQXJS%EoyJGUZ??1zUGAK|$Jv*= z>p%7!t@YEr$sN3{95-Z17WeudTfR-bnX8H;v1jMp)D>$2Ln>d?H9c@UKOD%K3szUDg$FXI1qbf92 z97x;m&`{c9nhyYCJs2+Uuc(Z7(c34hBU`Xc&j-kMH zELw+|bz(~5KHtD6$|~!-Yc4KxRn&Wqj!V-7I<#T6SW4A419$iJO%v=r4g%}(Jppfi zmhwxFy9To73DFqw_%W1OgeB|k1zaosDOLp1KDtkFk>#MAo=R0Vv%=qfA65d*3J)Y? zki+7hNla+Oq!`pi^bjs|Bx0%GwI(AM#Rf&?)6IYHrBvV48Dvz6#U1SX!{_$IAH|}A zlP5&OZo*-8zeDpt66QQ5S2}~tq_=2*sv!8*>P#RDsulZ(<>>VbSn1u(>8$g){qTrJ-YS3VVKE24s+AfkW#ry8_LMdZj6_dw`wSSie zRh7~HO`)5!Ay!Ttan6Te-8zBzrhPRnw6+NJGM#rYw9+Bu+4Mjf(7PVx#gwA49 z$xR2JsG;1pw8D3^a~5C0G*E8OS&p^IW?00ot28eA$}gXv4ABl{%ThU|lqiMzg2rBP zN|ut&m-Fs%zye1F(&zrp!U7WEj3GcTof2OA+jV%K& zOAz-th^8)J>VB9Y|$>`QKMsG3uQgN?~To{@B+Xl5eoVQ(*4b&t7Wb-PAtf zutDOAG!jfJ?g4<&WbWkis3nA%CcK>&`mV(*GSw?DgNC&Mse@U2`nDguLIP z#6-)FiY5+{U>n!K;xj} zN3}A5_lQ!r5s>7=)fvtXTYtt5@c3i|Wf;ZXF*Gs+lew7UC6GE1GP`xJ`V1T);4TtB z3$=Xw?kDUKL{asKXwW803rHY6Qdt+s!=@~4G!ozq&dSQ7xrLiIAbl3L$B&7R56@wk zq2Ty5a54&ke-elI`bbHbTJ+ioz7)zBY|iyJ$?2}XDm7@WVW!ZL4jg#ie&){thBb{5 zfB(AJt>-^|={(&(`@{ON-H;zW^vX0|O&gWPFeLpF^MC;_$yY8pZQqki4x^wj&Z=P! zoG43&$APMWp;X>qcHDokd?eAc_`TQ9j*BGW1JFR0-*2b}dBw>xh0jbG(GZe-Ri5&b zdHrTMT89!DfI9X|!q<=eVN;ky-eNs9eTxzVhIbF$4@HYm@+~3cegF6^EM>>M0Xg@=1|mxTFWK1q#MW3^bhSAtgO=48o7q$@YkA7s-_ay#x^`S&zGpDLXl`_(Bj~9&}DNi0>)7LMRo^$Z0<2%yrQOohK+sj2_ z<8LbOyVrW6)^>IYlvay2Py22}KWPXDEC+MtWUkf9>`#2)%9%wu6yV(KOQeJ)oBi8bFYnik6`}H=qP- z@UL@uA6! z%Io@AS*ze@`R#GLY-Zxh)3@uCFA>nTg^kKmzW)B>R{y?hxmN~~3G^1;&u)z$%WIzt z`U$0Zwgw`aupKPaYZ&w?yoLP<5n){+BM1*5wUY|P$B|7#;82` z4CLa+D4W0W%aK4B?|YYfDdrI(=Z$UL0);CRrz`P6X-~(}G8uq$X+NRqO3OsOZz_4! z)zuRWsjrA2Rb;0arbHwpD5^ta6mXp0M3a2li_bFyj)Z3+o<76 z%cmE@?OoiJVm=%#y6hdyg7euT)Rv83`7rQhr=9oH#w8qW`@0_y?;7jLUrB@*tjte& zI#I4y2wH~GGjY7|i{OWaIUlpe3O5RG#VS_{khu7^$qjIDa1Kr;f=rFe1uiF8tiNOe zVO_zXilAa(e7i?y@AGmpb2T--oj548t?+YexZuqGB*6OPSX-^WTxhV}pDeaI^kJ3w+*vF;Rd{QFFfsF{3@|h_ zjLNzC^->6WbJI0CnkYuy)zu~Lf5CBev=sMEHStXDD7WzPUFf;}a!a0v*+V$=%)_bf7CEfBTM#4%c}2S{PG8e8QHk45ogP-R3Lih(rFNwC$P{GUq|W zLf__9w{vU}l+jyI*aAxjvG~H3>3Uzfn7c*PkK`m0fnx&1$pfOb^0^hiTxogl zx#%WcEt}=LX+7gH@bSz&ik4FFHH-uRx7?POZqU6Ci=|PMJq3^}&(Rx(xTQEBG56IA zEYZ0vh8s3H;po02*%XmOLqiMj)mKnJ0vI`qHwbqvA+Wlh(c#aDS8Tr=gQSZg5)u;Q z{qXx8xsAhy6?9d=L7m zaOo~KaM2&w59d)hJ>bD?kEgv^h6IG`+?z)Q2HhTtJ%}PZ)xkAGi;mbYtrQx;!px5R zCX=1g^zqBI@5fIp!`^UN`w`mZ`*<2L{Jgxp*(z(44oj2Ie!)_STTTy1DhTNB6-s^n z5f&C!IXi9Sz4e4oxBMsg%4g3)d(e5*t1aw$*ivbeqQa$@0f zqrs8_3;3>`9lNB;O}Jt(yS6vlWQli;4*2S6>gceGNs3`TC~AlA!Nk;RB}w58CkIF8 z=f}?JS22Yn*N0jkq%Qj3(?sFXh`uhC0~rdi58k~G0;9Pvfmd?}%MeiGjgwth+Or=R zDV32H!9sM&i|P>C1d2d2b*3S8v*;SmPaE;7+~dhB|*+=!nmhq>z9RHUD0Bc z9!0y%9c^Bte9-sQ6V@I4Vv1=$}aZx?8 zxj7TgK%PffwiNWtndBc0d)FZQf3R=59Hi&z}EpEY(n9Q9TE*zvt*e=n6bdFmNC1d3K7g~YFXU-Q zhJQlZWkM%ogaw_adD3_jb|(?X)o~!aO!`eFoSEyhX;Le+6U$}p2Og22r+8N8dysj1 z69-ost?Y#)n)i-vO6kqGsFcWsfmDt>R+Z-=#h6&#`bmaKD`E@3VRuE!jrQtr0prs^ zxI!4Z^;oU~0Jyummszw?11Fa=nJ0gu7?>YDLL-p5_^?1xXjW~5hBRh-`w!W=$TQ=D zEY`4phWkUtgCl(a8f<_V=)tIj?*TMJomfn1i$oNOwLE zD9VR%Aovf`N=QH*Iu4h}BQQw|nPbQ0{5GyeD*-FeFgf^?%`edzl|5I;;*|kSbbjEAcY%@Ci(mf{J65W( z1j(e{g{ru`RB6AL6O-XB2HPVpXlokC4nC;zSaPo7vrzd0TV;Ki-``=AFc1m>WAkcL zbA`cFUKYZ^wZqEp)oP_1H+K7FA^-#$b#MH;3@njol#8VO2s60T^1ik%KDxC=iDG`e z>i{y6R{CF&J+UJZ14}g|P49espqbz-xoDKPg8Om@>{i z+f)Ga-uxACU(8G2l>Le(%b(zihR&l;DxhK#fvAQ1fj0LCqtd?Va#JM0&(DuiHbDIB z?2M3sf#A~sDg*)n6``aL?g zQQ2-TV)B_zUSlI=7zTlgrlw}YCFjGO@}!u_!r%abJ+NDu->j25AO&5J0I2HXET{mC z&%<1JB(p=YxO2AJwk0sw$dB+d*I@3MA#-JJ$S9JeqydtA*JEoUkfQ1|F-v^$?5OX7 z?8c7?Q7qoA56W8C$Bvr-w7q(1?|!o^qN~zG)izU25u3aFFa4`!l|P&=#1T>+Psf z`k+0qL~vXyRu0efj<92Q`CR?bCU%0e{{fI22WY!d+BX>c_=wur+IoT=&`$O%#*D9j zx$T{xRVM&;2jzPe@Rx&h$r(usjF@9%V*!9gHKBL4D@@PKEdEIx`5GAK{rvhQ4gkQp zrwaNjd|L5UeVA#|$WUTUD}Q?K|I6pSkBGtyE!uY}PfYAOu?KDvM3&{&2b>yT@+p#K zCH^oUJ9$+hAO~2LbM58g0K9l~@3lZq0C-?oWB&orzk-}i?e3tt7w#jKZr{5%;-X>n zb?Ad+TVO{%Alk8KM+e6X4FrKYnI9^3shGZYkjX7bOTkpQ{H#W9E_vfG6Q z_kOTB0_QrpY_|}gXX_tPRO#rVDP?`8Qyg)GMqw|h-qCl?@uSFjZ4!XGa zYlZ~+5fu;;0d1?r;g?&G>{+tjI_m?CFVHA*#uM}$6IjV=>ULIHrWe`$R z$5z|+pZOVTD_ww*xix6P8N(TQcyJXI6izNLBP=TWzsS5ZD`B9Zh-z#U=P{|p1cRNu zTsem^MleX|+q!MQPRjtZ%;}>j{^N4CU7>T7*JKd>#|q%LxpB~UrC3}oBM%?VL-&Ar z?~19`*sE=fT_O0wAgcKk0B&T$=sRln;MmD{`(qy+Z!EYsSZ~bpgT&3i%5Ka06a~G4 zi5PL7vy+qVn=4d+(ZH?;EM|Ly!*9J3=?*eXOa^vJ|KhimAbtxjcL0JDSN!T0ZcV2> zSxQTA)T=%IAbNHXPzvC|(M+q$jL;74Tn^Tn)Kb3(g6Exh>s_8N@xtOL_}6#;eETrC zHMaMfgOjr>mW}a`m-e7Rp|UI->h0mwII&CY?O<`mcxqhu>4H8MLSmOc)VrGeh;l*c z)Ksn6U-+rc>|8mt(kb{yO-)Agt-rw+>F80!DgOf|3KD8zYt?Hf*Y(IiJ`&9DoCw5S z|D|t0q)-5NqMYpa!U0NWsQtDT2n2&B{%@5fh=zcOD~lu-HV8S+p2G0c_U+3}aKCj$ z+r!U<=piqe%ToNaxGJKi|MZc4`L#vg$Ii-Va2UoCVP>4meUXWW?y^vi*VKgJ35HW^ z)&2C~GGY_}z>YvxFCYf>3<x=|XiFsYHy^wLJjf=08Kg8n!k)s7U)iOo`Yv{9l-$r5}<;pX&H`s7&;6$kOcRw@v4j~a0ZYl2HVmDYjLh~QsQ8gL|A-k`Wt5_p{BJdqF~pcQ`r z%hB=MN&IeZ{s+tprafT^P&r~hH>mi@k-$72A%FL-LG_({m_K;Ao-?ODvm%m#CDaz38E-9MdqN~@N_!b=R0 z7xUvU%|o_kK_)TWM*Q`!4NDvxb)wI#RNF`3mN;ND9IQFJRZ&u+Iy=5x$=_>CEUVX( zrYH8X_1TC=vJm*)J3A_HvOXQRKGF^!`Spv@o;)=)9z7kb{`f@gerq5#^t|8ZQ>2x+ zViE=&!o)-u^Qk`Kzl95MHiG{Ub>?BiAB)y(eqZmXm|D%|&LdG2upK!MxQX6W7SJaH zxrh@SY}K`Dlv(HsVjY^4W9EO}Vg^z6Vy>M+SB~%~Cx|zQ0Kr?1iPVjr6dXPO=3l(G z`ybSJo}W;cl(%CNiG?J2^(?oMVuPW=*OOVK`@3_3B@ogf`I(5(Sr?#Ipr1Z$r>v|j z&zJTPP0@(Dbl#MdSQH$yvap1K++1F6E^xjxx-%#TT}2TeT=FCO1-5izeM7LNp8RQb zb%39OBj*ofl&m{P6?1+BFkn!*Z4nt~uJ5BgspTVmD)>)&d2G!;_Dju!%k% zqT2%1c_#peI-V9~o5#)ioTiZ{GYfDNKB13CXtqF)PaN)xi?U^a>ZeN3v++cob+rdO(K=HA-79`lnz1gB}HBXczXtVRuV#)JY4uCi5A~ z_O4Y=7=5B#iTVA!EG5LN1$usGaj$o{K6BLt4V>>=S;W{dX0udR65LE%sXw)BKtc{a zC1E4X)5WxR?%cwRPy}&_`&#!LQ*G3#UUG4I&UiM+RGDpSw=X0QLXIO0I z;z>2=>|WCV(9I67=#iC!U73mz zyx+Ifkh_DTy=3SZ+qw8BZQ0|SF~gHx`jfI|wx28G`q+4R6M4#M==0;aa3KA$GkI}w zafm!e>t65kl9m5vIvB>TNb2rs{d&)yg@OJ#XkoJW852%B&VU86X0{|*+VOSfhHr2S z=l2z5ZOn%b{|9quj4Q1N&@eDI=InFYjv&);mED(jSBGLj1`n9k1CF$=Qo)U}i%5lI z^d~a(pKkPrG%T-MNUinO+rY2GRi~Rbfnr$!k5zdK1Qd?e z(_T;ft8`k(OZV={y@UqAMILnY4KX5EmP9UM+_Z6x9848Pr+&Yq$eIw4kcxg(bT7GnJj|KmJ&=7bK4&$-$|I$(JflF68xJt6qAL#U*nocYfc8ZEH+Lj|&I(bSCK^(rl$P<{j( zI;SvIK9BW>Pz{Q(kuUL!-3hfKA1jPLU4)~qb86KlBJ}cyH06JP^pqj(c=SHs9XyjQ zLxPyeOgcN!%x`VVk6K?zQW>9^VwGvLU(cz=;taEAe&s^Y=RTLDB3f8FFhU>8keN<8 z^isbnd@l();ge7F#vgdPTMcE<>KY0s<)NAZqrGU!K$53wD|-V_&SZhJNiPgg18T^?u)wViQ@pwE z>Ujx{z6C6advF3N6DQ;iT5!QUQAcJ=2WV2&wxe>q-MI*uyx$Rd+|o4kAMZ}j+t!oj zw>E#^9vnmwbw{2qM;RjL3-a}ayaMBrAx+hLanupaCb=NhhUqWosiDbj3H-r)1RV3Y zq-7{0QtQ6|N^=9ofRFI4-`NpqzhnHTEb?Fs>1!_}j;bs*q^kafovC=YOR zp9ttrmQwOb^TeyCXw@LNPT$( zxN!>5(0+L*Zy|B;a>!d5k-rXGPiTS@@+W~I&c}}*2{Ui-J$CIYPR2%~hXXL4K7H!e zfw^ncONS$!7BSw9yt&u-Lz+(4WWYEV!`l`!1y*W5|mG5xm6&#sH*_nV=KN&J!syJ%9h#k>kI7Nob6p(c z5D2~_P5?=q-Mzi6^d4&{|n%!l$QVi literal 82437 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 z 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

qa?h#oULz8hQ$Pwg~d)jA}MZR2A{J?Y14 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 diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index 16752bdaa9..096a7af3c9 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -1,17 +1,17 @@ -require=function t(e,n,a){function r(o,s){if(!n[o]){if(!e[o]){var p="function"==typeof require&&require;if(!s&&p)return p(o,!0);if(i)return i(o,!0);var u=Error("Cannot find module '"+o+"'");throw u.code="MODULE_NOT_FOUND",u}var c=n[o]={exports:{}};e[o][0].call(c.exports,function(t){var n=e[o][1][t];return r(n?n:t)},c,c.exports,t,e,n,a)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o2?u[2]:void 0,l=Math.min((void 0===c?o:r(c,o))-p,o-s),d=1;for(s>p&&p+l>s&&(d=-1,p+=l-1,s+=l-1);l-- >0;)p in n?n[s]=n[p]:delete n[s],s+=d,p+=d;return n}},{76:76,79:79,80:80}],6:[function(t,e,n){"use strict";var a=t(80),r=t(76),i=t(79);e.exports=[].fill||function(t){for(var e=a(this),n=i(e.length),o=arguments,s=o.length,p=r(s>1?o[1]:void 0,n),u=s>2?o[2]:void 0,c=void 0===u?n:r(u,n);c>p;)e[p++]=t;return e}},{76:76,79:79,80:80}],7:[function(t,e,n){var a=t(78),r=t(79),i=t(76);e.exports=function(t){return function(e,n,o){var s,p=a(e),u=r(p.length),c=i(o,u);if(t&&n!=n){for(;u>c;)if(s=p[c++],s!=s)return!0}else for(;u>c;c++)if((t||c in p)&&p[c]===n)return t||c;return!t&&-1}}},{76:76,78:78,79:79}],8:[function(t,e,n){var a=t(17),r=t(34),i=t(80),o=t(79),s=t(9);e.exports=function(t){var e=1==t,n=2==t,p=3==t,u=4==t,c=6==t,l=5==t||c;return function(d,f,h){for(var m,v,g=i(d),b=r(g),y=a(f,h,3),x=o(b.length),_=0,w=e?s(d,x):n?s(d,0):void 0;x>_;_++)if((l||_ in b)&&(m=b[_],v=y(m,_,g),t))if(e)w[_]=v;else if(v)switch(t){case 3:return!0;case 5:return m;case 6:return _;case 2:w.push(m)}else if(u)return!1;return c?-1:p||u?u:w}}},{17:17,34:34,79:79,80:80,9:9}],9:[function(t,e,n){var a=t(38),r=t(36),i=t(83)("species");e.exports=function(t,e){var n;return r(t)&&(n=t.constructor,"function"!=typeof n||n!==Array&&!r(n.prototype)||(n=void 0),a(n)&&(n=n[i],null===n&&(n=void 0))),new(void 0===n?Array:n)(e)}},{36:36,38:38,83:83}],10:[function(t,e,n){var a=t(11),r=t(83)("toStringTag"),i="Arguments"==a(function(){return arguments}());e.exports=function(t){var e,n,o;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=(e=Object(t))[r])?n:i?a(e):"Object"==(o=a(e))&&"function"==typeof e.callee?"Arguments":o}},{11:11,83:83}],11:[function(t,e,n){var a={}.toString;e.exports=function(t){return a.call(t).slice(8,-1)}},{}],12:[function(t,e,n){"use strict";var a=t(46),r=t(31),i=t(60),o=t(17),s=t(69),p=t(18),u=t(27),c=t(42),l=t(44),d=t(82)("id"),f=t(30),h=t(38),m=t(65),v=t(19),g=Object.isExtensible||h,b=v?"_s":"size",y=0,x=function(t,e){if(!h(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!f(t,d)){if(!g(t))return"F";if(!e)return"E";r(t,d,++y)}return"O"+t[d]},_=function(t,e){var n,a=x(e);if("F"!==a)return t._i[a];for(n=t._f;n;n=n.n)if(n.k==e)return n};e.exports={getConstructor:function(t,e,n,r){var c=t(function(t,i){s(t,c,e),t._i=a.create(null),t._f=void 0,t._l=void 0,t[b]=0,void 0!=i&&u(i,n,t[r],t)});return i(c.prototype,{clear:function(){for(var t=this,e=t._i,n=t._f;n;n=n.n)n.r=!0,n.p&&(n.p=n.p.n=void 0),delete e[n.i];t._f=t._l=void 0,t[b]=0},"delete":function(t){var e=this,n=_(e,t);if(n){var a=n.n,r=n.p;delete e._i[n.i],n.r=!0,r&&(r.n=a),a&&(a.p=r),e._f==n&&(e._f=a),e._l==n&&(e._l=r),e[b]--}return!!n},forEach:function(t){for(var e,n=o(t,arguments.length>1?arguments[1]:void 0,3);e=e?e.n:this._f;)for(n(e.v,e.k,this);e&&e.r;)e=e.p},has:function(t){return!!_(this,t)}}),v&&a.setDesc(c.prototype,"size",{get:function(){return p(this[b])}}),c},def:function(t,e,n){var a,r,i=_(t,e);return i?i.v=n:(t._l=i={i:r=x(e,!0),k:e,v:n,p:a=t._l,n:void 0,r:!1},t._f||(t._f=i),a&&(a.n=i),t[b]++,"F"!==r&&(t._i[r]=i)),t},getEntry:_,setStrong:function(t,e,n){c(t,e,function(t,e){this._t=t,this._k=e,this._l=void 0},function(){for(var t=this,e=t._k,n=t._l;n&&n.r;)n=n.p;return t._t&&(t._l=n=n?n.n:t._t._f)?"keys"==e?l(0,n.k):"values"==e?l(0,n.v):l(0,[n.k,n.v]):(t._t=void 0,l(1))},n?"entries":"values",!n,!0),m(e)}}},{17:17,18:18,19:19,27:27,30:30,31:31,38:38,42:42,44:44,46:46,60:60,65:65,69:69,82:82}],13:[function(t,e,n){var a=t(27),r=t(10);e.exports=function(t){return function(){if(r(this)!=t)throw TypeError(t+"#toJSON isn't generic");var e=[];return a(this,!1,e.push,e),e}}},{10:10,27:27}],14:[function(t,e,n){"use strict";var a=t(31),r=t(60),i=t(4),o=t(38),s=t(69),p=t(27),u=t(8),c=t(30),l=t(82)("weak"),d=Object.isExtensible||o,f=u(5),h=u(6),m=0,v=function(t){return t._l||(t._l=new g)},g=function(){this.a=[]},b=function(t,e){return f(t.a,function(t){return t[0]===e})};g.prototype={get:function(t){var e=b(this,t);return e?e[1]:void 0},has:function(t){return!!b(this,t)},set:function(t,e){var n=b(this,t);n?n[1]=e:this.a.push([t,e])},"delete":function(t){var e=h(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},e.exports={getConstructor:function(t,e,n,a){var i=t(function(t,r){s(t,i,e),t._i=m++,t._l=void 0,void 0!=r&&p(r,n,t[a],t)});return r(i.prototype,{"delete":function(t){return o(t)?d(t)?c(t,l)&&c(t[l],this._i)&&delete t[l][this._i]:v(this)["delete"](t):!1},has:function(t){return o(t)?d(t)?c(t,l)&&c(t[l],this._i):v(this).has(t):!1}}),i},def:function(t,e,n){return d(i(e))?(c(e,l)||a(e,l,{}),e[l][t._i]=n):v(t).set(e,n),t},frozenStore:v,WEAK:l}},{27:27,30:30,31:31,38:38,4:4,60:60,69:69,8:8,82:82}],15:[function(t,e,n){"use strict";var a=t(29),r=t(22),i=t(61),o=t(60),s=t(27),p=t(69),u=t(38),c=t(24),l=t(43),d=t(66);e.exports=function(t,e,n,f,h,m){var v=a[t],g=v,b=h?"set":"add",y=g&&g.prototype,x={},_=function(t){var e=y[t];i(y,t,"delete"==t?function(t){return m&&!u(t)?!1:e.call(this,0===t?0:t)}:"has"==t?function(t){return m&&!u(t)?!1:e.call(this,0===t?0:t)}:"get"==t?function(t){return m&&!u(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof g&&(m||y.forEach&&!c(function(){(new g).entries().next()}))){var w,k=new g,E=k[b](m?{}:-0,1)!=k,S=c(function(){k.has(1)}),C=l(function(t){new g(t)});C||(g=e(function(e,n){p(e,g,t);var a=new v;return void 0!=n&&s(n,h,a[b],a),a}),g.prototype=y,y.constructor=g),m||k.forEach(function(t,e){w=1/e===-(1/0)}),(S||w)&&(_("delete"),_("has"),h&&_("get")),(w||E)&&_(b),m&&y.clear&&delete y.clear}else g=f.getConstructor(e,t,h,b),o(g.prototype,n);return d(g,t),x[t]=g,r(r.G+r.W+r.F*(g!=v),x),m||f.setStrong(g,t,h),g}},{22:22,24:24,27:27,29:29,38:38,43:43,60:60,61:61,66:66,69:69}],16:[function(t,e,n){var a=e.exports={version:"1.2.6"};"number"==typeof __e&&(__e=a)},{}],17:[function(t,e,n){var a=t(2);e.exports=function(t,e,n){if(a(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,a){return t.call(e,n,a)};case 3:return function(n,a,r){return t.call(e,n,a,r)}}return function(){return t.apply(e,arguments)}}},{2:2}],18:[function(t,e,n){e.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},{}],19:[function(t,e,n){e.exports=!t(24)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{24:24}],20:[function(t,e,n){var a=t(38),r=t(29).document,i=a(r)&&a(r.createElement);e.exports=function(t){return i?r.createElement(t):{}}},{29:29,38:38}],21:[function(t,e,n){var a=t(46);e.exports=function(t){var e=a.getKeys(t),n=a.getSymbols;if(n)for(var r,i=n(t),o=a.isEnum,s=0;i.length>s;)o.call(t,r=i[s++])&&e.push(r);return e}},{46:46}],22:[function(t,e,n){var a=t(29),r=t(16),i=t(31),o=t(61),s=t(17),p="prototype",u=function(t,e,n){var c,l,d,f,h=t&u.F,m=t&u.G,v=t&u.S,g=t&u.P,b=t&u.B,y=m?a:v?a[e]||(a[e]={}):(a[e]||{})[p],x=m?r:r[e]||(r[e]={}),_=x[p]||(x[p]={});m&&(n=e);for(c in n)l=!h&&y&&c in y,d=(l?y:n)[c],f=b&&l?s(d,a):g&&"function"==typeof d?s(Function.call,d):d,y&&!l&&o(y,c,d),x[c]!=d&&i(x,c,f),g&&_[c]!=d&&(_[c]=d)};a.core=r,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,e.exports=u},{16:16,17:17,29:29,31:31,61:61}],23:[function(t,e,n){var a=t(83)("match");e.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[a]=!1,!"/./"[t](e)}catch(r){}}return!0}},{83:83}],24:[function(t,e,n){e.exports=function(t){try{return!!t()}catch(e){return!0}}},{}],25:[function(t,e,n){"use strict";var a=t(31),r=t(61),i=t(24),o=t(18),s=t(83);e.exports=function(t,e,n){var p=s(t),u=""[t];i(function(){var e={};return e[p]=function(){return 7},7!=""[t](e)})&&(r(String.prototype,t,n(o,p,u)),a(RegExp.prototype,p,2==e?function(t,e){return u.call(t,this,e)}:function(t){return u.call(t,this)}))}},{18:18,24:24,31:31,61:61,83:83}],26:[function(t,e,n){"use strict";var a=t(4);e.exports=function(){var t=a(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},{4:4}],27:[function(t,e,n){var a=t(17),r=t(40),i=t(35),o=t(4),s=t(79),p=t(84);e.exports=function(t,e,n,u){var c,l,d,f=p(t),h=a(n,u,e?2:1),m=0;if("function"!=typeof f)throw TypeError(t+" is not iterable!");if(i(f))for(c=s(t.length);c>m;m++)e?h(o(l=t[m])[0],l[1]):h(t[m]);else for(d=f.call(t);!(l=d.next()).done;)r(d,h,l.value,e)}},{17:17,35:35,4:4,40:40,79:79,84:84}],28:[function(t,e,n){var a=t(78),r=t(46).getNames,i={}.toString,o="object"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return r(t)}catch(e){return o.slice()}};e.exports.get=function(t){return o&&"[object Window]"==i.call(t)?s(t):r(a(t))}},{46:46,78:78}],29:[function(t,e,n){var a=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=a)},{}],30:[function(t,e,n){var a={}.hasOwnProperty;e.exports=function(t,e){return a.call(t,e)}},{}],31:[function(t,e,n){var a=t(46),r=t(59);e.exports=t(19)?function(t,e,n){return a.setDesc(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},{19:19,46:46,59:59}],32:[function(t,e,n){e.exports=t(29).document&&document.documentElement},{29:29}],33:[function(t,e,n){e.exports=function(t,e,n){var a=void 0===n;switch(e.length){case 0:return a?t():t.call(n);case 1:return a?t(e[0]):t.call(n,e[0]);case 2:return a?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return a?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return a?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},{}],34:[function(t,e,n){var a=t(11);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==a(t)?t.split(""):Object(t)}},{11:11}],35:[function(t,e,n){var a=t(45),r=t(83)("iterator"),i=Array.prototype;e.exports=function(t){return void 0!==t&&(a.Array===t||i[r]===t)}},{45:45,83:83}],36:[function(t,e,n){var a=t(11);e.exports=Array.isArray||function(t){return"Array"==a(t)}},{11:11}],37:[function(t,e,n){var a=t(38),r=Math.floor;e.exports=function(t){return!a(t)&&isFinite(t)&&r(t)===t}},{38:38}],38:[function(t,e,n){e.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},{}],39:[function(t,e,n){var a=t(38),r=t(11),i=t(83)("match");e.exports=function(t){var e;return a(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==r(t))}},{11:11,38:38,83:83}],40:[function(t,e,n){var a=t(4);e.exports=function(t,e,n,r){try{return r?e(a(n)[0],n[1]):e(n)}catch(i){var o=t["return"];throw void 0!==o&&a(o.call(t)),i}}},{4:4}],41:[function(t,e,n){"use strict";var a=t(46),r=t(59),i=t(66),o={};t(31)(o,t(83)("iterator"),function(){return this}),e.exports=function(t,e,n){t.prototype=a.create(o,{next:r(1,n)}),i(t,e+" Iterator")}},{31:31,46:46,59:59,66:66,83:83}],42:[function(t,e,n){"use strict";var a=t(48),r=t(22),i=t(61),o=t(31),s=t(30),p=t(45),u=t(41),c=t(66),l=t(46).getProto,d=t(83)("iterator"),f=!([].keys&&"next"in[].keys()),h="@@iterator",m="keys",v="values",g=function(){return this};e.exports=function(t,e,n,b,y,x,_){u(n,e,b);var w,k,E=function(t){if(!f&&t in A)return A[t];switch(t){case m:return function(){return new n(this,t)};case v:return function(){return new n(this,t)}}return function(){return new n(this,t)}},S=e+" Iterator",C=y==v,P=!1,A=t.prototype,O=A[d]||A[h]||y&&A[y],T=O||E(y);if(O){var j=l(T.call(new t));c(j,S,!0),!a&&s(A,h)&&o(j,d,g),C&&O.name!==v&&(P=!0,T=function(){return O.call(this)})}if(a&&!_||!f&&!P&&A[d]||o(A,d,T),p[e]=T,p[S]=g,y)if(w={values:C?T:E(v),keys:x?T:E(m),entries:C?E("entries"):T},_)for(k in w)k in A||i(A,k,w[k]);else r(r.P+r.F*(f||P),e,w);return w}},{22:22,30:30,31:31,41:41,45:45,46:46,48:48,61:61,66:66,83:83}],43:[function(t,e,n){var a=t(83)("iterator"),r=!1;try{var i=[7][a]();i["return"]=function(){r=!0},Array.from(i,function(){throw 2})}catch(o){}e.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var i=[7],o=i[a]();o.next=function(){return{done:n=!0}},i[a]=function(){return o},t(i)}catch(s){}return n}},{83:83}],44:[function(t,e,n){e.exports=function(t,e){return{value:e,done:!!t}}},{}],45:[function(t,e,n){e.exports={}},{}],46:[function(t,e,n){var a=Object;e.exports={create:a.create,getProto:a.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:a.getOwnPropertyDescriptor,setDesc:a.defineProperty,setDescs:a.defineProperties,getKeys:a.keys,getNames:a.getOwnPropertyNames,getSymbols:a.getOwnPropertySymbols,each:[].forEach}},{}],47:[function(t,e,n){var a=t(46),r=t(78);e.exports=function(t,e){for(var n,i=r(t),o=a.getKeys(i),s=o.length,p=0;s>p;)if(i[n=o[p++]]===e)return n}},{46:46,78:78}],48:[function(t,e,n){e.exports=!1},{}],49:[function(t,e,n){e.exports=Math.expm1||function(t){return 0==(t=+t)?t:t>-1e-6&&1e-6>t?t+t*t/2:Math.exp(t)-1}},{}],50:[function(t,e,n){e.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&1e-8>t?t-t*t/2:Math.log(1+t)}},{}],51:[function(t,e,n){e.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:0>t?-1:1}},{}],52:[function(t,e,n){var a,r,i,o=t(29),s=t(75).set,p=o.MutationObserver||o.WebKitMutationObserver,u=o.process,c=o.Promise,l="process"==t(11)(u),d=function(){var t,e,n;for(l&&(t=u.domain)&&(u.domain=null,t.exit());a;)e=a.domain,n=a.fn,e&&e.enter(),n(),e&&e.exit(),a=a.next;r=void 0,t&&t.enter()};if(l)i=function(){u.nextTick(d)};else if(p){var f=1,h=document.createTextNode("");new p(d).observe(h,{characterData:!0}),i=function(){h.data=f=-f}}else i=c&&c.resolve?function(){c.resolve().then(d)}:function(){s.call(o,d)};e.exports=function(t){var e={fn:t,next:void 0,domain:l&&u.domain};r&&(r.next=e),a||(a=e,i()),r=e}},{11:11,29:29,75:75}],53:[function(t,e,n){var a=t(46),r=t(80),i=t(34);e.exports=t(24)(function(){var t=Object.assign,e={},n={},a=Symbol(),r="abcdefghijklmnopqrst";return e[a]=7,r.split("").forEach(function(t){n[t]=t}),7!=t({},e)[a]||Object.keys(t({},n)).join("")!=r})?function(t,e){for(var n=r(t),o=arguments,s=o.length,p=1,u=a.getKeys,c=a.getSymbols,l=a.isEnum;s>p;)for(var d,f=i(o[p++]),h=c?u(f).concat(c(f)):u(f),m=h.length,v=0;m>v;)l.call(f,d=h[v++])&&(n[d]=f[d]);return n}:Object.assign},{24:24,34:34,46:46,80:80}],54:[function(t,e,n){var a=t(22),r=t(16),i=t(24);e.exports=function(t,e){var n=(r.Object||{})[t]||Object[t],o={};o[t]=e(n),a(a.S+a.F*i(function(){n(1)}),"Object",o)}},{16:16,22:22,24:24}],55:[function(t,e,n){var a=t(46),r=t(78),i=a.isEnum;e.exports=function(t){return function(e){for(var n,o=r(e),s=a.getKeys(o),p=s.length,u=0,c=[];p>u;)i.call(o,n=s[u++])&&c.push(t?[n,o[n]]:o[n]);return c}}},{46:46,78:78}],56:[function(t,e,n){var a=t(46),r=t(4),i=t(29).Reflect;e.exports=i&&i.ownKeys||function(t){var e=a.getNames(r(t)),n=a.getSymbols;return n?e.concat(n(t)):e}},{29:29,4:4,46:46}],57:[function(t,e,n){"use strict";var a=t(58),r=t(33),i=t(2);e.exports=function(){for(var t=i(this),e=arguments.length,n=Array(e),o=0,s=a._,p=!1;e>o;)(n[o]=arguments[o++])===s&&(p=!0);return function(){var a,i=this,o=arguments,u=o.length,c=0,l=0;if(!p&&!u)return r(t,n,i);if(a=n.slice(),p)for(;e>c;c++)a[c]===s&&(a[c]=o[l++]);for(;u>l;)a.push(o[l++]);return r(t,a,i)}}},{2:2,33:33,58:58}],58:[function(t,e,n){e.exports=t(29)},{29:29}],59:[function(t,e,n){e.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},{}],60:[function(t,e,n){var a=t(61);e.exports=function(t,e){for(var n in e)a(t,n,e[n]);return t}},{61:61}],61:[function(t,e,n){var a=t(29),r=t(31),i=t(82)("src"),o="toString",s=Function[o],p=(""+s).split(o);t(16).inspectSource=function(t){return s.call(t)},(e.exports=function(t,e,n,o){"function"==typeof n&&(n.hasOwnProperty(i)||r(n,i,t[e]?""+t[e]:p.join(e+"")),n.hasOwnProperty("name")||r(n,"name",e)),t===a?t[e]=n:(o||delete t[e],r(t,e,n))})(Function.prototype,o,function(){return"function"==typeof this&&this[i]||s.call(this)})},{16:16,29:29,31:31,82:82}],62:[function(t,e,n){e.exports=function(t,e){var n=e===Object(e)?function(t){return e[t]}:e;return function(e){return(e+"").replace(t,n)}}},{}],63:[function(t,e,n){e.exports=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e}},{}],64:[function(t,e,n){var a=t(46).getDesc,r=t(38),i=t(4),o=function(t,e){if(i(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,n,r){try{r=t(17)(Function.call,a(Object.prototype,"__proto__").set,2),r(e,[]),n=!(e instanceof Array)}catch(i){n=!0}return function(t,e){return o(t,e),n?t.__proto__=e:r(t,e),t}}({},!1):void 0),check:o}},{17:17,38:38,4:4,46:46}],65:[function(t,e,n){"use strict";var a=t(29),r=t(46),i=t(19),o=t(83)("species");e.exports=function(t){var e=a[t];i&&e&&!e[o]&&r.setDesc(e,o,{configurable:!0,get:function(){return this}})}},{19:19,29:29,46:46,83:83}],66:[function(t,e,n){var a=t(46).setDesc,r=t(30),i=t(83)("toStringTag");e.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,i)&&a(t,i,{configurable:!0,value:e})}},{30:30,46:46,83:83}],67:[function(t,e,n){var a=t(29),r="__core-js_shared__",i=a[r]||(a[r]={});e.exports=function(t){return i[t]||(i[t]={})}},{29:29}],68:[function(t,e,n){var a=t(4),r=t(2),i=t(83)("species");e.exports=function(t,e){var n,o=a(t).constructor;return void 0===o||void 0==(n=a(o)[i])?e:r(n)}},{2:2,4:4,83:83}],69:[function(t,e,n){e.exports=function(t,e,n){if(!(t instanceof e))throw TypeError(n+": use the 'new' operator!");return t}},{}],70:[function(t,e,n){var a=t(77),r=t(18);e.exports=function(t){return function(e,n){var i,o,s=r(e)+"",p=a(n),u=s.length;return 0>p||p>=u?t?"":void 0:(i=s.charCodeAt(p),55296>i||i>56319||p+1===u||(o=s.charCodeAt(p+1))<56320||o>57343?t?s.charAt(p):i:t?s.slice(p,p+2):(i-55296<<10)+(o-56320)+65536)}}},{18:18,77:77}],71:[function(t,e,n){var a=t(39),r=t(18);e.exports=function(t,e,n){if(a(e))throw TypeError("String#"+n+" doesn't accept regex!");return r(t)+""}},{18:18,39:39}],72:[function(t,e,n){var a=t(79),r=t(73),i=t(18);e.exports=function(t,e,n,o){var s=i(t)+"",p=s.length,u=void 0===n?" ":n+"",c=a(e);if(p>=c)return s;""==u&&(u=" ");var l=c-p,d=r.call(u,Math.ceil(l/u.length));return d.length>l&&(d=d.slice(0,l)),o?d+s:s+d}},{18:18,73:73,79:79}],73:[function(t,e,n){"use strict";var a=t(77),r=t(18);e.exports=function(t){var e=r(this)+"",n="",i=a(t);if(0>i||i==1/0)throw RangeError("Count can't be negative");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},{18:18,77:77}],74:[function(t,e,n){var a=t(22),r=t(18),i=t(24),o=" \n\x0B\f\r   ᠎              \u2028\u2029\ufeff",s="["+o+"]",p="​…",u=RegExp("^"+s+s+"*"),c=RegExp(s+s+"*$"),l=function(t,e){var n={};n[t]=e(d),a(a.P+a.F*i(function(){return!!o[t]()||p[t]()!=p}),"String",n)},d=l.trim=function(t,e){return t=r(t)+"",1&e&&(t=t.replace(u,"")),2&e&&(t=t.replace(c,"")),t};e.exports=l},{18:18,22:22,24:24}],75:[function(t,e,n){var a,r,i,o=t(17),s=t(33),p=t(32),u=t(20),c=t(29),l=c.process,d=c.setImmediate,f=c.clearImmediate,h=c.MessageChannel,m=0,v={},g="onreadystatechange",b=function(){var t=+this;if(v.hasOwnProperty(t)){var e=v[t];delete v[t],e()}},y=function(t){b.call(t.data)};d&&f||(d=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return v[++m]=function(){s("function"==typeof t?t:Function(t),e)},a(m),m},f=function(t){delete v[t]},"process"==t(11)(l)?a=function(t){l.nextTick(o(b,t,1))}:h?(r=new h,i=r.port2,r.port1.onmessage=y,a=o(i.postMessage,i,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts?(a=function(t){c.postMessage(t+"","*")},c.addEventListener("message",y,!1)):a=g in u("script")?function(t){p.appendChild(u("script"))[g]=function(){p.removeChild(this),b.call(t)}}:function(t){setTimeout(o(b,t,1),0)}),e.exports={set:d,clear:f}},{11:11,17:17,20:20,29:29,32:32,33:33}],76:[function(t,e,n){var a=t(77),r=Math.max,i=Math.min;e.exports=function(t,e){return t=a(t),0>t?r(t+e,0):i(t,e)}},{77:77}],77:[function(t,e,n){var a=Math.ceil,r=Math.floor;e.exports=function(t){return isNaN(t=+t)?0:(t>0?r:a)(t)}},{}],78:[function(t,e,n){var a=t(34),r=t(18);e.exports=function(t){return a(r(t))}},{18:18,34:34}],79:[function(t,e,n){var a=t(77),r=Math.min;e.exports=function(t){return t>0?r(a(t),9007199254740991):0}},{77:77}],80:[function(t,e,n){var a=t(18);e.exports=function(t){return Object(a(t))}},{18:18}],81:[function(t,e,n){var a=t(38);e.exports=function(t,e){if(!a(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!a(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},{38:38}],82:[function(t,e,n){var a=0,r=Math.random();e.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++a+r).toString(36))}},{}],83:[function(t,e,n){var a=t(67)("wks"),r=t(82),i=t(29).Symbol;e.exports=function(t){return a[t]||(a[t]=i&&i[t]||(i||r)("Symbol."+t))}},{29:29,67:67,82:82}],84:[function(t,e,n){var a=t(10),r=t(83)("iterator"),i=t(45);e.exports=t(16).getIteratorMethod=function(t){return void 0!=t?t[r]||t["@@iterator"]||i[a(t)]:void 0}},{10:10,16:16,45:45,83:83}],85:[function(t,e,n){"use strict";var a,r=t(46),i=t(22),o=t(19),s=t(59),p=t(32),u=t(20),c=t(30),l=t(11),d=t(33),f=t(24),h=t(4),m=t(2),v=t(38),g=t(80),b=t(78),y=t(77),x=t(76),_=t(79),w=t(34),k=t(82)("__proto__"),E=t(8),S=t(7)(!1),C=Object.prototype,P=Array.prototype,A=P.slice,O=P.join,T=r.setDesc,j=r.getDesc,R=r.setDescs,M={};o||(a=!f(function(){return 7!=T(u("div"),"a",{get:function(){return 7}}).a}),r.setDesc=function(t,e,n){if(a)try{return T(t,e,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(h(t)[e]=n.value),t},r.getDesc=function(t,e){if(a)try{return j(t,e)}catch(n){}return c(t,e)?s(!C.propertyIsEnumerable.call(t,e),t[e]):void 0},r.setDescs=R=function(t,e){h(t);for(var n,a=r.getKeys(e),i=a.length,o=0;i>o;)r.setDesc(t,n=a[o++],e[n]);return t}),i(i.S+i.F*!o,"Object",{getOwnPropertyDescriptor:r.getDesc,defineProperty:r.setDesc,defineProperties:R});var L="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(","),D=L.concat("length","prototype"),N=L.length,F=function(){var t,e=u("iframe"),n=N,a=">";for(e.style.display="none",p.appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write("

$NJO!VYE-mKrh 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 BPnrM# diff --git a/icons/obj/atmospherics/pipes/large.dmi b/icons/obj/atmospherics/pipes/large.dmi deleted file mode 100644 index 77fb29e4dea61003a8992c2c58dc6f4e119d0340..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8198 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 Y14^_v&WBDU!vFvP07*qoM6N<$g0W9TKmY&$ diff --git a/icons/obj/virology.dmi b/icons/obj/virology.dmi deleted file mode 100644 index 882e54402cf2d808dbdbb3c3485bbdf2ea7aef41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1907 zcmV-(2aNcMP)004jp0{{R3yS$IdIXO90R8%B!p*gev&+Y&J9321M93~|tF)=YiLqi972h0F7{{S=pGc*5Y zGbf@aMn*;>BO@jzCMhW?D=RB4EiFMoK{z-#F)=U}78Vv372E&-0C@oaNmV`8?lt!$ZOq`2GJ3Bj* zhD(TfGM$S&d2BFQSy`o)P%JDgIyyQbAt8TqH;8&a%BvfXfku{!PJ(qhnvGKA5g6$J z0004WQchCV=-0C=2JR&a84_w-Y6@%7{?OD!tS z%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5DYG~~C$S{IC_Xb!iHkEO zv#1y-YRJWzR+N~V3SncYC0b#8K~a8kYH@L9UOIL?=0MTZoWx2X(?|yiVlgT|EsdbP ziFt`RmBp!q9SBoM(1E5{9Ejw&yyVg(;z9(bGCm(?I4di-`niB35ddeGhWUCh?1umV z1&~QZK~#90?V1f&+cp%2?Pvx9Y1(ae36M0~iU~H=v zuTUEB%b{RvyVjPj0k2#t*xA{!Helxc?d`txcr38B-#4`nuez-VFXR1PJcE(%)&&L* z1r5H(+29RI8X>g-#@8hsC&%}9hy9_2??Qo%LqX&GgT1}IH*ep*d-v;awh@9AO3TUd z!l0Q8gBFekEhG3lh+hN5Ag)kat{*`oFGtYK#Rw|rFIOJZ2>RyIERv+1Wj=Y;k4mx9 zfM?EokS1x&FE;*zzbQQofrFA5IU@_DcaAW{9zYep214TWvkojOF$;*(OO(@?v4FS` zAKWDE^->sRI3_p_uRavuFT4kFV4T4u#~$!2m1FXqz&D3Kz~x!p$1IIQ;t@;9JW7)| zBrXb4m_E1~=^OCKc>x!L8!LYeiz_P;okPAk$wky?#5eEs|B&k<@Xot@u*(NMa_{*c zaOnyRG9T>8SD?wDHQ(!RJMukDhJGsla~WhJ8>s_2L;eQ^7QPJyw)_tY%v@uTq)S6I zXvzPez`}=6V9WoYz??s743d0qNJo(7e?u~Y^msIA$^X!xF@JpV2%7UhF@i>3j-WaJ z6C-HKA5GU_weon+2i>#Sb3WL3EAH~aE+6dj!7d-{^1&`2?DD}bAN(QiJ^yoY@A;pL zcWR@|q)_<#eXbGeKvGo@0;df5K^73F6u2k|m}7x=Zqk7$@Xe#_P_McH&zu)%+#ijP z)(!aOP{2l&*o2FXvhjzp)PPrB7EJIqnm}qY(KImSbZX(Q<0sgH{dj%*%^nyVsQB^m z$<)SAc!7;id4ctKUZ6LK17I;Y8GW?!j}GoW-f(`>gFm=zJ^b%^^BOW<#8U?^ud$!z zQzLKopcGjKymBm{${Gu)U#?#$n+^!G^+(8b&M zGwDDwNdFz4knM*q-pZgWpNo{Ohr*7$vB|+(8q|!Q{KYvETMzRy`2X4Y`FWZ$_LUlB zY_a^tb#Za=?N5cbHE7T0z`!NT^E0l&U;q#7@@v!JB`X$J%jNR=`g(bFwW53j1}*tq zg#YHt&+C*AZ^h9IulF9yZwtvLP2(F5v z_E%8834_Lb5Dg^kFVNlH9X_(ZiNS>Z1G>Mz$4B;k^9IfNoG_5%B*8fXvxLz}QWUF) zhlj_QQdy%;_VE&^0}z7^)S_KKXmbS t249dHDIa%mq+ZTnUAi~2_y>3k{R?T1+5xH;7|s9y002ovPDHLkV1g}hkmvva From d883ec31147cbacf386f7d1d71e89e3318a4c37e Mon Sep 17 00:00:00 2001 From: ACCount Date: Tue, 28 Nov 2017 11:38:11 +0300 Subject: [PATCH 200/328] Moves pipe meter sprites (#33122) --- .../atmospherics/machinery/other/meter.dm | 2 +- icons/obj/atmospherics/pipes/meter.dmi | Bin 0 -> 886 bytes icons/obj/atmospherics/pipes/simple.dmi | Bin 17641 -> 16600 bytes icons/obj/meter.dmi | Bin 1975 -> 0 bytes 4 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 icons/obj/atmospherics/pipes/meter.dmi delete mode 100644 icons/obj/meter.dmi diff --git a/code/modules/atmospherics/machinery/other/meter.dm b/code/modules/atmospherics/machinery/other/meter.dm index 4edced52b3..a26b379735 100644 --- a/code/modules/atmospherics/machinery/other/meter.dm +++ b/code/modules/atmospherics/machinery/other/meter.dm @@ -1,7 +1,7 @@ /obj/machinery/meter name = "gas flow meter" desc = "It measures something." - icon = 'icons/obj/meter.dmi' + icon = 'icons/obj/atmospherics/pipes/meter.dmi' icon_state = "meterX" var/atom/target = null anchored = TRUE diff --git a/icons/obj/atmospherics/pipes/meter.dmi b/icons/obj/atmospherics/pipes/meter.dmi new file mode 100644 index 0000000000000000000000000000000000000000..7eabdc9de8bacbc7a7da12bb61435962f3b013a2 GIT binary patch literal 886 zcmV-+1Bv{JP)SgjZ0lXqnrh$ZyZFi7u4ZG3Rj$>;^VV{vIOm+l#3nU#x9j;*#wi-LrL zjDiIUmMFN!KtinvwIP-{Z13AJX_no(;;tr@ju)S6N2e?Rm0dTbWoqK39oQ@7Ro z_Foi;9h%~j$q4`e0wYO8K~#90?VQnW!Y~X)DbN-I761RYOG3pqjU-i_;CMRcVbXNF zsJ6S*xt4l30001Zh9Ui%35H=fz8KyFaQsbodWhh(5`y`=!09Lb>4%W^b0mcFZh`YR z9qRr9f8*mgP9c!@3yguu)1w|Ph!OZ7b9RAw%IlZulGU%%wS^up7$WHmIOnn%($t?3 zhWjsNxaSJEX902W6aqe4umNWW#)*Z{upqe4wd&{PH%Ny3>l@W}W$f zG=oxoi~F5%r{x(`uRz9s|A=0wz_N5+fo0jRt8arfw$ZL%R2yDoeYXnbR-*G}t=P-~ z000000DuB-eyyGS~wq&c$@X+13TT}8oIaw(hRCspmm0& z6YY^N(DZU;j%s#o`6esKG1K5nGf`? ztG5Eo2LJ#70000$3-d=p^+UNl0A*XGLIAqPRE+>0k4Msbl=}Cj_3H)D(A&(dUn>BY z%b>)+FRfoI0P__nPiS`f_oemg1z@=X*0)jXFEZ<`g!N_)006)sU$$vs$}-vt?f?J) M07*qoM6N<$f{GEGzyJUM literal 0 HcmV?d00001 diff --git a/icons/obj/atmospherics/pipes/simple.dmi b/icons/obj/atmospherics/pipes/simple.dmi index bc04b708c5fec7e0cbd4f61d98ac46ef2cb5c14a..952e6499e30ff1a7e4a8289a7b1db7d7196b2d89 100644 GIT binary patch literal 16600 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 From b23c92b056e77f6a7f53ab47e3b9cfbb537b4f5d Mon Sep 17 00:00:00 2001 From: Cruix Date: Tue, 28 Nov 2017 02:13:57 -0600 Subject: [PATCH 202/328] Added bot path data huds --- code/__DEFINES/atom_hud.dm | 46 ++++--- code/_globalvars/lists/mobs.dm | 1 + code/datums/hud.dm | 18 ++- code/game/alternate_appearance.dm | 4 - code/game/data_huds.dm | 8 ++ .../gamemodes/miniantags/bot_swarm/swarmer.dm | 4 +- code/game/machinery/doors/airlock.dm | 8 +- code/game/mecha/mecha.dm | 4 +- code/modules/clothing/glasses/hud.dm | 4 + .../modules/clothing/spacesuits/flightsuit.dm | 2 +- code/modules/clothing/spacesuits/hardsuit.dm | 4 +- code/modules/mob/dead/observer/observer.dm | 2 +- code/modules/mob/living/silicon/ai/ai.dm | 1 + code/modules/mob/living/silicon/silicon.dm | 6 +- .../mob/living/simple_animal/bot/bot.dm | 129 ++++++++++++++---- .../mob/living/simple_animal/bot/cleanbot.dm | 1 + .../mob/living/simple_animal/bot/ed209bot.dm | 1 + .../mob/living/simple_animal/bot/floorbot.dm | 1 + .../mob/living/simple_animal/bot/honkbot.dm | 1 + .../mob/living/simple_animal/bot/medbot.dm | 3 +- .../mob/living/simple_animal/bot/mulebot.dm | 2 + .../mob/living/simple_animal/bot/secbot.dm | 1 + .../simple_animal/friendly/drone/_drone.dm | 4 +- code/modules/mob/mob.dm | 11 +- icons/mob/aibots.dmi | Bin 52510 -> 49803 bytes 25 files changed, 189 insertions(+), 77 deletions(-) diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm index 3c3350d6ab..2decc918f2 100644 --- a/code/__DEFINES/atom_hud.dm +++ b/code/__DEFINES/atom_hud.dm @@ -16,31 +16,37 @@ #define DIAG_BOT_HUD "12"// Bot HUDs #define DIAG_TRACK_HUD "13"// Mech tracking beacon #define DIAG_AIRLOCK_HUD "14"//Airlock shock overlay +#define DIAG_PATH_HUD "15"//Bot path indicators //for antag huds. these are used at the /mob level -#define ANTAG_HUD "15" +#define ANTAG_HUD "16" + +//by default everything in the hud_list of an atom is an image +//a value in hud_list with one of these will change that behavior +#define HUD_LIST_LIST 1 //data HUD (medhud, sechud) defines //Don't forget to update human/New() if you change these! -#define DATA_HUD_SECURITY_BASIC 1 -#define DATA_HUD_SECURITY_ADVANCED 2 -#define DATA_HUD_MEDICAL_BASIC 3 -#define DATA_HUD_MEDICAL_ADVANCED 4 -#define DATA_HUD_DIAGNOSTIC 5 +#define DATA_HUD_SECURITY_BASIC 1 +#define DATA_HUD_SECURITY_ADVANCED 2 +#define DATA_HUD_MEDICAL_BASIC 3 +#define DATA_HUD_MEDICAL_ADVANCED 4 +#define DATA_HUD_DIAGNOSTIC_BASIC 5 +#define DATA_HUD_DIAGNOSTIC_ADVANCED 6 //antag HUD defines -#define ANTAG_HUD_CULT 6 -#define ANTAG_HUD_REV 7 -#define ANTAG_HUD_OPS 8 -#define ANTAG_HUD_WIZ 9 -#define ANTAG_HUD_SHADOW 10 -#define ANTAG_HUD_TRAITOR 11 -#define ANTAG_HUD_NINJA 12 -#define ANTAG_HUD_CHANGELING 13 -#define ANTAG_HUD_ABDUCTOR 14 -#define ANTAG_HUD_DEVIL 15 -#define ANTAG_HUD_SINTOUCHED 16 -#define ANTAG_HUD_SOULLESS 17 -#define ANTAG_HUD_CLOCKWORK 18 -#define ANTAG_HUD_BROTHER 19 +#define ANTAG_HUD_CULT 7 +#define ANTAG_HUD_REV 8 +#define ANTAG_HUD_OPS 9 +#define ANTAG_HUD_WIZ 10 +#define ANTAG_HUD_SHADOW 11 +#define ANTAG_HUD_TRAITOR 12 +#define ANTAG_HUD_NINJA 13 +#define ANTAG_HUD_CHANGELING 14 +#define ANTAG_HUD_ABDUCTOR 15 +#define ANTAG_HUD_DEVIL 16 +#define ANTAG_HUD_SINTOUCHED 17 +#define ANTAG_HUD_SOULLESS 18 +#define ANTAG_HUD_CLOCKWORK 19 +#define ANTAG_HUD_BROTHER 20 // Notification action types #define NOTIFY_JUMP "jump" diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index a9ffde59e3..89e4481284 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -24,6 +24,7 @@ GLOBAL_LIST_EMPTY(pai_list) GLOBAL_LIST_EMPTY(available_ai_shells) GLOBAL_LIST_INIT(simple_animals, list(list(),list(),list())) // One for each AI_* status define GLOBAL_LIST_EMPTY(spidermobs) //all sentient spider mobs +GLOBAL_LIST_EMPTY(bots_list) GLOBAL_LIST_EMPTY(language_datum_instances) GLOBAL_LIST_EMPTY(all_languages) diff --git a/code/datums/hud.dm b/code/datums/hud.dm index be2b5c620c..837e7a6a95 100644 --- a/code/datums/hud.dm +++ b/code/datums/hud.dm @@ -1,12 +1,15 @@ /* HUD DATUMS */ +GLOBAL_LIST_EMPTY(all_huds) + //GLOBAL HUD LIST GLOBAL_LIST_INIT(huds, list( DATA_HUD_SECURITY_BASIC = new/datum/atom_hud/data/human/security/basic(), DATA_HUD_SECURITY_ADVANCED = new/datum/atom_hud/data/human/security/advanced(), DATA_HUD_MEDICAL_BASIC = new/datum/atom_hud/data/human/medical/basic(), DATA_HUD_MEDICAL_ADVANCED = new/datum/atom_hud/data/human/medical/advanced(), - DATA_HUD_DIAGNOSTIC = new/datum/atom_hud/data/diagnostic(), + DATA_HUD_DIAGNOSTIC_BASIC = new/datum/atom_hud/data/diagnostic/basic(), + DATA_HUD_DIAGNOSTIC_ADVANCED = new/datum/atom_hud/data/diagnostic/advanced(), ANTAG_HUD_CULT = new/datum/atom_hud/antag(), ANTAG_HUD_REV = new/datum/atom_hud/antag(), ANTAG_HUD_OPS = new/datum/atom_hud/antag(), @@ -28,6 +31,17 @@ GLOBAL_LIST_INIT(huds, list( var/list/mob/hudusers = list() //list with all mobs who can see the hud var/list/hud_icons = list() //these will be the indexes for the atom's hud_list +/datum/atom_hud/New() + GLOB.all_huds += src + +/datum/atom_hud/Destroy() + for(var/v in hudusers) + remove_hud_from(v) + for(var/v in hudatoms) + remove_from_hud(v) + GLOB.all_huds -= src + return ..() + /datum/atom_hud/proc/remove_hud_from(mob/M) if(!M || !hudusers[M]) return @@ -77,7 +91,7 @@ GLOBAL_LIST_INIT(huds, list( //MOB PROCS /mob/proc/reload_huds() - for(var/datum/atom_hud/hud in (GLOB.huds|GLOB.active_alternate_appearances)) + for(var/datum/atom_hud/hud in GLOB.all_huds) if(hud && hud.hudusers[src]) for(var/atom/A in hud.hudatoms) hud.add_to_single_hud(src, A) diff --git a/code/game/alternate_appearance.dm b/code/game/alternate_appearance.dm index 9b74020488..b83204119d 100644 --- a/code/game/alternate_appearance.dm +++ b/code/game/alternate_appearance.dm @@ -30,10 +30,6 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances) appearance_key = key /datum/atom_hud/alternate_appearance/Destroy() - for(var/v in hudusers) - remove_hud_from(v) - for(var/v in hudatoms) - remove_from_hud(v) GLOB.active_alternate_appearances -= src return ..() diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 10ff185fd6..1afd2953a0 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -50,8 +50,16 @@ hud_icons = list(ID_HUD, IMPTRACK_HUD, IMPLOYAL_HUD, IMPCHEM_HUD, WANTED_HUD) /datum/atom_hud/data/diagnostic + +/datum/atom_hud/data/diagnostic/basic hud_icons = list (DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD) +/datum/atom_hud/data/diagnostic/advanced + hud_icons = list (DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD, DIAG_PATH_HUD) + +/datum/atom_hud/data/bot_path + hud_icons = list(DIAG_PATH_HUD) + /* MED/SEC/DIAG HUD HOOKS */ /* diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm index e4e4205db8..7005b26b12 100644 --- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm +++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm @@ -101,8 +101,8 @@ /mob/living/simple_animal/hostile/swarmer/Initialize() . = ..() verbs -= /mob/living/verb/pulled - var/datum/atom_hud/data/diagnostic/diag_hud = GLOB.huds[DATA_HUD_DIAGNOSTIC] - diag_hud.add_to_hud(src) + for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) + diag_hud.add_to_hud(src) /mob/living/simple_animal/hostile/swarmer/med_hud_set_health() var/image/holder = hud_list[DIAG_HUD] diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 449b9ea8a4..58f37e5945 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -119,8 +119,8 @@ if(damage_deflection == AIRLOCK_DAMAGE_DEFLECTION_N && security_level > AIRLOCK_SECURITY_METAL) damage_deflection = AIRLOCK_DAMAGE_DEFLECTION_R prepare_huds() - var/datum/atom_hud/data/diagnostic/diag_hud = GLOB.huds[DATA_HUD_DIAGNOSTIC] - diag_hud.add_to_hud(src) + for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) + diag_hud.add_to_hud(src) diag_hud_set_electrified() return INITIALIZE_HINT_LATELOAD @@ -242,8 +242,8 @@ for(var/obj/machinery/doorButtons/D in GLOB.machines) D.removeMe(src) qdel(note) - var/datum/atom_hud/data/diagnostic/diag_hud = GLOB.huds[DATA_HUD_DIAGNOSTIC] - diag_hud.remove_from_hud(src) + for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) + diag_hud.remove_from_hud(src) return ..() /obj/machinery/door/airlock/handle_atom_del(atom/A) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 2f98b2cc4c..34b1eed312 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -137,8 +137,8 @@ log_message("[src.name] created.") GLOB.mechas_list += src //global mech list prepare_huds() - var/datum/atom_hud/data/diagnostic/diag_hud = GLOB.huds[DATA_HUD_DIAGNOSTIC] - diag_hud.add_to_hud(src) + for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) + diag_hud.add_to_hud(src) diag_hud_set_mechhealth() diag_hud_set_mechcell() diag_hud_set_mechstat() diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 0fac1eff79..93e2fa5254 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -62,8 +62,12 @@ name = "diagnostic HUD" desc = "A heads-up display capable of analyzing the integrity and status of robotics and exosuits." icon_state = "diagnostichud" +<<<<<<< HEAD origin_tech = "magnets=2;engineering=2" hud_type = DATA_HUD_DIAGNOSTIC +======= + hud_type = DATA_HUD_DIAGNOSTIC_BASIC +>>>>>>> 069f909... Added bot path data huds (#32967) glass_colour_type = /datum/client_colour/glass_colour/lightorange /obj/item/clothing/glasses/hud/diagnostic/night diff --git a/code/modules/clothing/spacesuits/flightsuit.dm b/code/modules/clothing/spacesuits/flightsuit.dm index 30afa31f60..79886b1446 100644 --- a/code/modules/clothing/spacesuits/flightsuit.dm +++ b/code/modules/clothing/spacesuits/flightsuit.dm @@ -1079,7 +1079,7 @@ light_color = "#30ffff" armor = list(melee = 20, bullet = 20, laser = 20, energy = 10, bomb = 30, bio = 100, rad = 75, fire = 100, acid = 100) max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT - var/list/datahuds = list(DATA_HUD_SECURITY_ADVANCED, DATA_HUD_MEDICAL_ADVANCED, DATA_HUD_DIAGNOSTIC) + var/list/datahuds = list(DATA_HUD_SECURITY_ADVANCED, DATA_HUD_MEDICAL_ADVANCED, DATA_HUD_DIAGNOSTIC_BASIC) var/zoom_range = 12 var/zoom = FALSE actions_types = list(/datum/action/item_action/toggle_helmet_light, /datum/action/item_action/flightpack/zoom) diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index c371973506..202e2db5eb 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -457,13 +457,13 @@ /obj/item/clothing/head/helmet/space/hardsuit/rd/equipped(mob/living/carbon/human/user, slot) ..() if (slot == slot_head) - var/datum/atom_hud/DHUD = GLOB.huds[DATA_HUD_DIAGNOSTIC] + var/datum/atom_hud/DHUD = GLOB.huds[DATA_HUD_DIAGNOSTIC_BASIC] DHUD.add_hud_to(user) /obj/item/clothing/head/helmet/space/hardsuit/rd/dropped(mob/living/carbon/human/user) ..() if (user.head == src) - var/datum/atom_hud/DHUD = GLOB.huds[DATA_HUD_DIAGNOSTIC] + var/datum/atom_hud/DHUD = GLOB.huds[DATA_HUD_DIAGNOSTIC_BASIC] DHUD.remove_hud_from(user) /obj/item/clothing/suit/space/hardsuit/rd diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index ca6b504294..bb4c0f559b 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -32,7 +32,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) var/ghost_hud_enabled = 1 //did this ghost disable the on-screen HUD? var/data_huds_on = 0 //Are data HUDs currently enabled? var/health_scan = FALSE //Are health scans currently enabled? - var/list/datahuds = list(DATA_HUD_SECURITY_ADVANCED, DATA_HUD_MEDICAL_ADVANCED, DATA_HUD_DIAGNOSTIC) //list of data HUDs shown to ghosts. + var/list/datahuds = list(DATA_HUD_SECURITY_ADVANCED, DATA_HUD_MEDICAL_ADVANCED, DATA_HUD_DIAGNOSTIC_ADVANCED) //list of data HUDs shown to ghosts. var/ghost_orbit = GHOST_ORBIT_CIRCLE //These variables store hair data if the ghost originates from a species with head and/or facial hair. diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 0fb044429c..ed36e62492 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -25,6 +25,7 @@ see_in_dark = 8 med_hud = DATA_HUD_MEDICAL_BASIC sec_hud = DATA_HUD_SECURITY_BASIC + d_hud = DATA_HUD_DIAGNOSTIC_ADVANCED mob_size = MOB_SIZE_LARGE var/list/network = list("SS13") var/obj/machinery/camera/current = null diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index fa8447885d..5de09011ea 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -33,7 +33,7 @@ var/med_hud = DATA_HUD_MEDICAL_ADVANCED //Determines the med hud to use var/sec_hud = DATA_HUD_SECURITY_ADVANCED //Determines the sec hud to use - var/d_hud = DATA_HUD_DIAGNOSTIC //There is only one kind of diag hud + var/d_hud = DATA_HUD_DIAGNOSTIC_BASIC //Determines the diag hud to use var/law_change_counter = 0 var/obj/machinery/camera/builtInCamera = null @@ -42,8 +42,8 @@ /mob/living/silicon/Initialize() . = ..() GLOB.silicon_mobs += src - var/datum/atom_hud/data/diagnostic/diag_hud = GLOB.huds[DATA_HUD_DIAGNOSTIC] - diag_hud.add_to_hud(src) + for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) + diag_hud.add_to_hud(src) diag_hud_set_status() diag_hud_set_health() diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index d5c839ffe6..b19bc401e3 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -48,7 +48,7 @@ var/frustration = 0 //Used by some bots for tracking failures to reach their target. var/base_speed = 2 //The speed at which the bot moves, or the number of times it moves per process() tick. var/turf/ai_waypoint //The end point of a bot's path, or the target location. - var/list/path = list() //List of turfs through which a bot 'steps' to reach the waypoint. + var/list/path = list() //List of turfs through which a bot 'steps' to reach the waypoint, associated with the path image, if there is one. var/pathset = 0 var/list/ignore_list = list() //List of unreachable targets for an ignore-list enabled bot to ignore. var/mode = BOT_IDLE //Standardizes the vars that indicate the bot is busy with its function. @@ -75,17 +75,21 @@ var/beacon_freq = 1445 // navigation beacon frequency var/model = "" //The type of bot it is. var/bot_type = 0 //The type of bot it is, for radio control. - var/data_hud_type = DATA_HUD_DIAGNOSTIC //The type of data HUD the bot uses. Diagnostic by default. + var/data_hud_type = DATA_HUD_DIAGNOSTIC_BASIC //The type of data HUD the bot uses. Diagnostic by default. + //This holds text for what the bot is mode doing, reported on the remote bot control interface. var/list/mode_name = list("In Pursuit","Preparing to Arrest", "Arresting", \ "Beginning Patrol", "Patrolling", "Summoned by PDA", \ "Cleaning", "Repairing", "Proceeding to work site", "Healing", \ "Proceeding to AI waypoint", "Navigating to Delivery Location", "Navigating to Home", \ "Waiting for clear path", "Calculating navigation path", "Pinging beacon network", "Unable to reach destination") - //This holds text for what the bot is mode doing, reported on the remote bot control interface. - + var/datum/atom_hud/data/bot_path/path_hud = new /datum/atom_hud/data/bot_path() + var/path_image_icon = 'icons/mob/aibots.dmi' + var/path_image_icon_state = "path_indicator" + var/path_image_color = "#FFFFFF" + var/reset_access_timer_id var/ignorelistcleanuptimer = 1 // This ticks up every automated action, at 300 we clean the ignore list - hud_possible = list(DIAG_STAT_HUD, DIAG_BOT_HUD, DIAG_HUD) //Diagnostic HUD views + hud_possible = list(DIAG_STAT_HUD, DIAG_BOT_HUD, DIAG_HUD, DIAG_PATH_HUD = HUD_LIST_LIST) //Diagnostic HUD views /mob/living/simple_animal/bot/proc/get_mode() if(client) //Player bots do not have modes, thus the override. Also an easy way for PDA users/AI to know when a bot is a player. @@ -117,6 +121,7 @@ /mob/living/simple_animal/bot/Initialize() . = ..() + GLOB.bots_list += src access_card = new /obj/item/card/id(src) //This access is so bots can be immediately set to patrol and leave Robotics, instead of having to be let out first. access_card.access += ACCESS_ROBOTICS @@ -132,15 +137,19 @@ //Adds bot to the diagnostic HUD system prepare_huds() - var/datum/atom_hud/data/diagnostic/diag_hud = GLOB.huds[DATA_HUD_DIAGNOSTIC] - diag_hud.add_to_hud(src) + for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) + diag_hud.add_to_hud(src) diag_hud_set_bothealth() diag_hud_set_botstat() diag_hud_set_botmode() - //Gives a HUD view to player bots that use a HUD. - activate_data_hud() - + //If a bot has its own HUD (for player bots), provide it. + if(data_hud_type) + var/datum/atom_hud/datahud = GLOB.huds[data_hud_type] + datahud.add_hud_to(src) + if(path_hud) + path_hud.add_to_hud(src) + path_hud.add_hud_to(src) /mob/living/simple_animal/bot/update_canmove() . = ..() @@ -149,6 +158,10 @@ canmove = . /mob/living/simple_animal/bot/Destroy() + if(path_hud) + QDEL_NULL(path_hud) + path_hud = null + GLOB.bots_list -= src if(paicard) ejectpai() qdel(Radio) @@ -430,14 +443,14 @@ Pass a positive integer as an argument to override a bot's default speed. */ /mob/living/simple_animal/bot/proc/bot_move(dest, move_speed) if(!dest || !path || path.len == 0) //A-star failed or a path/destination was not set. - path = list() + set_path(null) return FALSE dest = get_turf(dest) //We must always compare turfs, so get the turf of the dest var if dest was originally something else. var/turf/last_node = get_turf(path[path.len]) //This is the turf at the end of the path, it should be equal to dest. if(get_turf(src) == dest) //We have arrived, no need to move again. return TRUE else if(dest != last_node) //The path should lead us to our given destination. If this is not true, we must stop. - path = list() + set_path(null) return FALSE var/step_count = move_speed ? move_speed : base_speed //If a value is passed into move_speed, use that instead of the default speed var. @@ -456,14 +469,14 @@ Pass a positive integer as an argument to override a bot's default speed. if(path.len > 1) step_towards(src, path[1]) if(get_turf(src) == path[1]) //Successful move - path.Cut(1,2) + increment_path() tries = 0 else tries++ return FALSE else if(path.len == 1) step_to(src, dest) - path = list() + set_path(null) return TRUE @@ -475,15 +488,12 @@ Pass a positive integer as an argument to override a bot's default speed. bot_reset() //Reset a bot before setting it to call mode. var/area/end_area = get_area(waypoint) - if(client) //Player bots instead get a location command from the AI - to_chat(src, "Priority waypoint set by [icon2html(caller, src)] [caller]. Proceed to [end_area.name]<\b>.") - //For giving the bot temporary all-access. var/obj/item/card/id/all_access = new /obj/item/card/id var/datum/job/captain/All = new/datum/job/captain all_access.access = All.get_access() - path = get_path_to(src, waypoint, /turf/proc/Distance_cardinal, 0, 200, id=all_access) + set_path(get_path_to(src, waypoint, /turf/proc/Distance_cardinal, 0, 200, id=all_access)) calling_ai = caller //Link the AI to the bot! ai_waypoint = waypoint @@ -491,6 +501,9 @@ Pass a positive integer as an argument to override a bot's default speed. if(!on) turn_on() //Saves the AI the hassle of having to activate a bot manually. access_card = all_access //Give the bot all-access while under the AI's command. + if(client) + reset_access_timer_id = addtimer(CALLBACK (src, .proc/bot_reset), 600, TIMER_OVERRIDE|TIMER_STOPPABLE) //if the bot is player controlled, they get the extra access for a limited time + to_chat(src, "Priority waypoint set by [icon2html(calling_ai, src)] [caller]. Proceed to [end_area.name].
[path.len-1] meters to destination. You have been granted additional door access for 60 seconds.
") if(message) to_chat(calling_ai, "[icon2html(src, calling_ai)] [name] called to [end_area.name]. [path.len-1] meters to destination.") pathset = 1 @@ -500,7 +513,7 @@ Pass a positive integer as an argument to override a bot's default speed. if(message) to_chat(calling_ai, "Failed to calculate a valid route. Ensure destination is clear of obstructions and within range.") calling_ai = null - path = list() + set_path(null) /mob/living/simple_animal/bot/proc/call_mode() //Handles preparing a bot for a call, as well as calling the move proc. //Handles the bot's movement during a call. @@ -515,7 +528,10 @@ Pass a positive integer as an argument to override a bot's default speed. if(calling_ai) //Simple notification to the AI if it called a bot. It will not know the cause or identity of the bot. to_chat(calling_ai, "Call command to a bot has been reset.") calling_ai = null - path = list() + if(reset_access_timer_id) + deltimer(reset_access_timer_id) + reset_access_timer_id = null + set_path(null) summon_target = null pathset = 0 access_card.access = prev_access @@ -579,7 +595,7 @@ Pass a positive integer as an argument to override a bot's default speed. else if(path.len > 0 && patrol_target) // valid path if(path[1] == loc) - path.Cut(1,2) + increment_path() return @@ -691,12 +707,12 @@ Pass a positive integer as an argument to override a bot's default speed. // given an optional turf to avoid /mob/living/simple_animal/bot/proc/calc_path(turf/avoid) check_bot_access() - path = get_path_to(src, patrol_target, /turf/proc/Distance_cardinal, 0, 120, id=access_card, exclude=avoid) + set_path(get_path_to(src, patrol_target, /turf/proc/Distance_cardinal, 0, 120, id=access_card, exclude=avoid)) /mob/living/simple_animal/bot/proc/calc_summon_path(turf/avoid) check_bot_access() spawn() - path = get_path_to(src, summon_target, /turf/proc/Distance_cardinal, 0, 150, id=access_card, exclude=avoid) + set_path(get_path_to(src, summon_target, /turf/proc/Distance_cardinal, 0, 150, id=access_card, exclude=avoid)) if(!path.len) //Cannot reach target. Give up and announce the issue. speak("Summon command failed, destination unreachable.",radio_channel) bot_reset() @@ -712,7 +728,7 @@ Pass a positive integer as an argument to override a bot's default speed. else if(path.len > 0 && summon_target) //Proper path acquired! if(path[1] == loc) - path.Cut(1,2) + increment_path() return var/moved = bot_move(summon_target, 3) // Move attempt @@ -899,7 +915,6 @@ Pass a positive integer as an argument to override a bot's default speed. . = ..() access_card.access += player_access diag_hud_set_botmode() - activate_data_hud() /mob/living/simple_animal/bot/Logout() . = ..() @@ -919,9 +934,63 @@ Pass a positive integer as an argument to override a bot's default speed. /mob/living/simple_animal/bot/sentience_act() faction -= "silicon" -/mob/living/simple_animal/bot/proc/activate_data_hud() -//If a bot has its own HUD (for player bots), provide it. - if(!data_hud_type) +/mob/living/simple_animal/bot/proc/set_path(list/newpath) + path = newpath ? newpath : list() + if(!path_hud) return - var/datum/atom_hud/datahud = GLOB.huds[data_hud_type] - datahud.add_hud_to(src) + var/list/path_huds_watching_me = list(GLOB.huds[DATA_HUD_DIAGNOSTIC_ADVANCED]) + if(path_hud) + path_huds_watching_me += path_hud + for(var/V in path_huds_watching_me) + var/datum/atom_hud/H = V + H.remove_from_hud(src) + + var/list/path_images = hud_list[DIAG_PATH_HUD] + QDEL_LIST(path_images) + if(newpath) + for(var/i in 1 to newpath.len) + var/turf/T = newpath[i] + var/direction = NORTH + if(i > 1) + var/turf/prevT = path[i - 1] + var/image/prevI = path[prevT] + direction = get_dir(prevT, T) + if(i > 2) + var/turf/prevprevT = path[i - 2] + var/prevDir = get_dir(prevprevT, prevT) + var/mixDir = direction|prevDir + if(mixDir in GLOB.diagonals) + prevI.dir = mixDir + if(prevDir & (NORTH|SOUTH)) + var/matrix/ntransform = matrix() + ntransform.Turn(90) + if((mixDir == NORTHWEST) || (mixDir == SOUTHEAST)) + ntransform.Scale(-1, 1) + else + ntransform.Scale(1, -1) + prevI.transform = ntransform + var/mutable_appearance/MA = new /mutable_appearance() + MA.icon = path_image_icon + MA.icon_state = path_image_icon_state + MA.layer = ABOVE_OPEN_TURF_LAYER + MA.plane = 0 + MA.appearance_flags = RESET_COLOR|RESET_TRANSFORM + MA.color = path_image_color + MA.dir = direction + var/image/I = image(loc = T) + I.appearance = MA + path[T] = I + path_images += I + + for(var/V in path_huds_watching_me) + var/datum/atom_hud/H = V + H.add_to_hud(src) + + +/mob/living/simple_animal/bot/proc/increment_path() + if(!path || !path.len) + return + var/image/I = path[path[1]] + if(I) + I.icon = null + path.Cut(1, 2) diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index 4eb225360a..efe289b222 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -16,6 +16,7 @@ window_id = "autoclean" window_name = "Automatic Station Cleaner v1.2" pass_flags = PASSMOB + path_image_color = "#993299" var/blood = 1 var/trash = 0 diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 62fb2e772c..463082adda 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -21,6 +21,7 @@ window_name = "Automatic Security Unit v2.6" allow_pai = 0 data_hud_type = DATA_HUD_SECURITY_ADVANCED + path_image_color = "#FF0000" var/lastfired = 0 var/shot_delay = 15 diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index 28a64838f7..707d77e2ac 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -17,6 +17,7 @@ bot_core = /obj/machinery/bot_core/floorbot window_id = "autofloor" window_name = "Automatic Station Floor Repairer v1.1" + path_image_color = "#FFA500" var/process_type //Determines what to do when process_scan() recieves a target. See process_scan() for details. var/targetdirection diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index 3e15adbfe0..1052542f5a 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -18,6 +18,7 @@ window_id = "autohonk" window_name = "Honkomatic Bike Horn Unit v1.0.7" data_hud_type = DATA_HUD_SECURITY_BASIC // show jobs + path_image_color = "#FF69B4" var/honksound = 'sound/items/bikehorn.ogg' //customizable sound var/spam_flag = FALSE diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 57cad4570f..03dbc240ec 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -25,6 +25,7 @@ window_id = "automed" window_name = "Automatic Medical Unit v1.1" data_hud_type = DATA_HUD_MEDICAL_ADVANCED + path_image_color = "#DDDDFF" var/obj/item/reagent_containers/glass/reagent_glass = null //Can be set to draw from this for reagents. var/skin = null //Set to "tox", "ointment" or "o2" for the other two firstaid kits. @@ -342,7 +343,7 @@ //Time to see if they need medical help! if(C.stat == DEAD || (C.status_flags & FAKEDEATH)) return FALSE //welp too late for them! - + if(!(loc == C.loc) && !(isturf(C.loc) && isturf(loc))) return FALSE diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 170659ef29..0cba76edf5 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -31,6 +31,8 @@ suffix = "" + path_image_color = "#7F5200" + var/atom/movable/load = null var/mob/living/passenger = null var/turf/target // this is turf to navigate to (location of beacon) diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 82eae37f82..b8b2621875 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -20,6 +20,7 @@ window_name = "Automatic Security Unit v1.6" allow_pai = 0 data_hud_type = DATA_HUD_SECURITY_ADVANCED + path_image_color = "#FF0000" var/mob/living/carbon/target var/oldtarget_name diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm index f7ee4ac29a..e4de4387be 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -102,8 +102,8 @@ else verbs -= /mob/living/simple_animal/drone/verb/toggle_statics - var/datum/atom_hud/data/diagnostic/diag_hud = GLOB.huds[DATA_HUD_DIAGNOSTIC] - diag_hud.add_to_hud(src) + for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) + diag_hud.add_to_hud(src) /mob/living/simple_animal/drone/med_hud_set_health() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 9a9b161e51..dd32042849 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -42,9 +42,14 @@ /atom/proc/prepare_huds() hud_list = list() for(var/hud in hud_possible) - var/image/I = image('icons/mob/hud.dmi', src, "") - I.appearance_flags = RESET_COLOR|RESET_TRANSFORM - hud_list[hud] = I + var/hint = hud_possible[hud] + switch(hint) + if(HUD_LIST_LIST) + hud_list[hud] = list() + else + var/image/I = image('icons/mob/hud.dmi', src, "") + I.appearance_flags = RESET_COLOR|RESET_TRANSFORM + hud_list[hud] = I /mob/proc/Cell() set category = "Admin" diff --git a/icons/mob/aibots.dmi b/icons/mob/aibots.dmi index c6ee57391304754056d911db409c7884afee3d9f..873147c91c556aa49bfd549051f133beb2e1c6ee 100644 GIT binary patch literal 49803 zcmbrlby!sG_cyxf7F0@*5)}bq2$5zG1XL6d5DT>*>te3i>^=9s*S+popS9L!z17juV4&ro1pt8I{=K`p z06+>}k^^~W7i9E63y~X_hmH=Xx;O0+s$5^e3SW%YGf1CYZZ*`4_>;jC{11~xZp+C zv_vO(PK_bsm96$0ChnxkckPc{c)DT}0)vmhpA-qWOpU3JT-^If!ZxuGW_>Q=2RpqG zr~SL!t{`#=4ueINKWvdK-zYxcr&0)*$?eHXeJT+XYV~JZ?Vao6fljlEEThsIQ|3XD z@j@%=4*lh1+jEj?tn_7VkIHUUssKN5r8{=Q_AgyxzB4A_C?>^UJmQ+N@$uwu4tHMP zyESmfWisvKWMlas~BSlYIF+H5uA@R5P3r=e5oXY_jfi4aKMxXn zHUy|r9AQRpYZ#82>xH;CyZs!pKE%x&ZJ<2v*&h}3)DRSy!=f{ zbwr)pOvi?0-P6E#!K26|B-1MtY-lj#bDC@!q@FEosKG`eE&8j#Y|QOqS!t=jnv+Ngpxav)Tyk|fya@YLTWFl*)o zS6ylg@j+wHvz!PC{oEN&4@9}a* z1qL$7-fp}8jz9Fl!pnNv8(E)_E!rM@~%>v$uC@B^g)i>EY=iFzN;M>I|41?df!z+DqwNO77`&ju2-ezr#eH zeG@l71^Dw)`}5W?J^{clY85{n3e?#RX6k=$khj&6oc($xw6yeAHUE&CtE4o`uXFEH)&c`GI*BOqx%p>~lUVL<`@2*~TimsksN?A|$&Ea?W2=Rxhw<9kR zw`icP?21%po!Fvf`hO<;ye682JlS8N2g;o$g}zYLvp`Kr&qQ#Lc(tle$?hGF$KmQ- zF5~d{nI#)`)oz!|92^|=?5b8){7#cUgAx;2Z{5BmxV+d`MnJNwUsC3jlQF{WczY^?xFV!*2c=sWb?hFHZVn=w8 zN8+`3s&DG4KvplGrjB9dPgU$Ohp(|QM@MyGFf-y+i2}ex@NC%<&AAelm6zB20(zzt zG{+bzWma7_$sIpG+n08C^i%_yxICv0 zCf4|W!3ZMQgSbrGM%Na#i3m*mOf3t)6MAiLp)8ikk7u%|>TxJBCz>(&cKB3H%AWhR zdQL>uoZ(N*`(%{H&(gt1`a;GDvR6KrC_Bf3Ru=wu7cM zY#*Mqy+9w=EedWPoF|>!UozF@zdLxl$M{7t|4EZu0KiUr=V}~goM2@ajFZ+Uo!ATa zgCBp)&7HPLKPM?bt<)_X{ZrC^5`}q5Q9nfTE-tP~ z#M@GQynlmce^Z(olkVT;UulU$>Ub|+WmWu^T;zqp`|&7*XBc%xwGu{i{wf(pzjTVU z-mU$9TmNN{=@EwlZz-zhh)DnG6+FE=jehcg({sl|9~#TUWL!UgREIR`CR1TVF(bsc zgP?#yVZTL#KZS=$qpvVKN(ZZ0^_*tPw3Z{>o6P>%_F5?=TC1SRKR#-!VwB8$4P~@P z@OidHgEUVfQP>Zfi!}S8ITnYmI9poo=xR`TGrmv8k6OM2#1>~l$h(BE%pYa&w9hB? zLvOZLBZ>@!^+}cbYy%r1>r;6EYHVxjd~NZP<^k%ri<~_o-GJ&*7#wR_#~_wvSkrz) zl1FTKI>>*0@4YBn^-u3z`86n!ru)#xNF3pl3_E9A^&~1-)A+vA9f_8y_MS`Vg6MOv zhBE(1^Pm!r5GOAgGi?VV5hLc@5$y15Et5+*lg_h`=X!{dC6MV(g2 zE1-DlI9rVPor(_7J~4euL>Yt(FsIJ4g*lw zMmA-8KAe1%sJ}o@mparAOR4dWH z;y*0ovoKkK_W&1gQT>aK#BWO(?*U+$(Wzo?`WaxKaA;I9<Y%HypddTg1>w}QN*MLP=;;O>{Da{ zfar#IT($4C6<^n&Jhb$NFN6onp5#%x@-FU^G~RMf8iK1`)h5<|*iIVbiNlInUf?NT z0dFd%fT(3q<=13udMxZdqK>!tJ9`SGHq-O|@QJpMvmmH&A)$@x0z)fr^ z?zQ20qeIO%+SvD17Q5XsplNUrtciJ9-E$846=Kgx; z+qD<)AT$7Rj2wCQq3DB2&J}ya7vKzd1(Ld8FaLwPd>Q|}l}!trz2XMb|G1HFMwOPB zXnmAO;9J^(WLrZerY`%+FIEfsd>y*peEitKxDgr-(gJ|~^-E#2Le4?kPH#+wG#t^(l zboaCvvl-q0@sSm-9Tt_I~LQH?guN-)T z=uJ-T30Qu4uidMXqJatXY#(DKJFyahe{h(L=So`@a@5X?ohgMcXMaM2 zw$g~JiA5&01cQncNt^E?=V2C$5tl}Oz6hVi<>lqwM4JVPo*r6sCW}vy2OW3a*VMGi z;5H`%)`m-L_7=OEW#u(oVKp+QbgZoViinWc|J z)Y6&?AzDDQ%Dm#q=7|GGH%DKjt$Z4d;V<`PoI;#B<{zqR9Fo<$^}LB48rrB^u8h3f10+{eFjY z!xIw@67X?Dm_>Jump?n|E8o+#VY(G=@BPR7Z$s;^3v=h4Hme~1*#u~2L>xCD?rJZ^ z_`d-xVEWIwvsY^W{ndrz=5ws`fP7?o;NN^6t`x7czca-I$9Nbp@rSbyLKuj z>ww_;-+i_92EFV_vMm)IAJ4q3z8Vu7>)+Y=Fr*{$k|ZU($T%qZPJoWFaahslD1d5C z=pHnGh%-*XGouR;MIQ1S$gs>=5Kix$>f$Wzd4Fu8Gwp711P3u)*N{42$0`B#n_^aC zvsJfuj?8L((sRm!F2zlXw*kJd%?d(Wdt8Jm>-8}rGqhQIM-Nwgn(oc@)u13~@hc^e zC0pocP(T3$PF6Ep9ErZNe)76be@oxHA@k3w_PciN9ZsA?b7rgr1rQS}5p)P`-g*OV zhHvZPl+L5|O2{Zt;3#eyeN~PjQ|@l@OfzNB7fR411|Ju@L1fpHK=0+0Ak6VlDSKd?qt5pybVe)8E^5i8?=Nzy7_pbC_^%Ig$_)RYQ zwZ6kQMvP4gJ_8Wr`KZ``PAqUnG^ahi=}}T=7RMom{|q*Pb|SYo_CIHuHi8Wws}KAN zeImpHn1j}6`>9adKNAU}1vf;#(ErIk{Gq=0-x-8NVph0;NOiJwtyZYs$aP;11X;$@ zx@WP{eDD6-(Ggy&mfrTT@Tn+zZ6sZq_kTUH!)qM?AYi|uq{Q9a-2CCC#LCJ_gf@iY zKWFQ19PA2OvWMR~!UEj)T8d30qx=7TgxN#ni<12HuV*-42jWZ~C^Q>S{N%Y907xcn2GS>;o@8AC(dH?t!_NHr|ZhGK&0CB!O zF6=Pcr`q5fBJYv@cK_YD@7GUhh9WFMJJOkO@yk^KixfN^@^N`)LfYeUOv8RbyQkO0 zj0oCg22##epESD_ig<79>bW}-w%`;5>P@%MW(a>Y{;a2M-hw;2j}x)i2(#O%ut68C z^l9)UbWL)Xt8HT6G;a-<0+we-t7}x-b?9;4_P7uJqxXO_Xr6w|bIGkbpVn-E9!j+R zt@mZF$6b$qX7VaT&a(g-6)(Lwz+s0SOn5D&7wY9}QPVM$VIL{Jlv(Q+Xv{k>(AQV# z{64kM$#&w3Ey{LB^CLzM(#O|gXl4J?vo3}5|C`Gi=A9%CYA^{o@ab`({cv%m*WSlG zp8@CFGu`fha>HBFh-LZu&2sK4XV$l>7hQ6SS>-1ABG_d~**ZElMER34OQ>&15e{bs zsNpm2f4f>-v}R^yq1h{cbHK9LnHn-ZZ9XtOOa`2}p~eQmg$HXv?u?2jH%{(W8lGN* z9xJZ!NWEkxL%n~`VKEgis5f%BF)j)L%mBH;(f#+9`Fjw?BBnNQ&{n`_? zdYjh3_Bgcj&Q4Vh>&o0IW2*+-n$N}d%Hh`FOq2@;bJ`8%+1|TnU(fZKMH7?esyF2C zItGXkiM2aWnJoO!l{YVcKQDYn(B3^oL9bsA{yg|{eqo`ZhAEVLASofeu2)oua;Us{ zsyrNA014Ali4lXtonRit`ACX#UJ>~Pg4;^DvOIRgLu(FL6k z$|y4Si(CLWGa%&8gp_g39YBS= zl5pGnEV!ASxnm1i{GD{6r17Bp1})~!JC>(&ijhRT%qHwLYTJ&Pl3 zgQnTTupeGmqCqXcutwVMNozkL{q;JB>fi;!x;f0OWT~#Qn)CEg4~KbNz=H}f(9*dz zzzz`R839mmI$hQg$G1C0VnAd2QTsK`?akFeqXAB%xrob-0!W}Ya=@a2^b%+REGB8g zkq&oA>ZDK1+!lUrr)-gkWgNX#w^}CYwe4-9i8dlSLY~uQh7&!Yvze#Qu*HK{XPm<* z`OD-kYxQMmRKic-bmt_nB)Fdkl4fn2m4u-3LHo@`MM?GFVmE%h53+I40l6lPu_zF7ea^ z0F0PqVLsEM3<_9iNgjo%%Nz%T))CM-os|DDeBk?;TSwMPdN+FDj+>D>w7H}bJ1o{B zGAona(e;?Io@?$FmYk`Wq&mEci0!xpppsZiNVs86<8wpTRas(HHK?D{{>;Eym#g#yZX zy5i)d4_TX~x?4@K5B$IYd*dZP5i@PaN%m{2Ml9YwM3{9T1xw z>_tfQgFM%j>CV4?xYwlij<5tlDuO1U9=lf8!rn7}(C_rHQj)70F%~&8LZSuFWJk{M z+@2mR(+tFDL#r>TPNiuQ&Ml(r4!I8l(&LbpmLHsVVaG!z)9=^%mWTb%yKPYbY4|B; zjfW*M&bULyj_tlwxYcm6>4m!vyjCafx4m|sJ7B&sJhRKmu9x-~b|eQ~mX_W;O|}Rw z`JtbfPZz}OHWUjx=7k&`XteZw( znFgC!OT9}ldXg?LxG$(hL|HHcXB{~Z-+pfrI{JJnDbpqvqeVQ zx2rXf_OVJ*QiGd-sr|R#Txeaq(-Q!jIP^_8c&o`woxl}T#KLmc9c>7)gP$;~ zm)|QO^n3Of@}!p!P`-P#xqOi`TYDDC-49~GLkdi@dYK~ z=99X5pd)H5{TL@X1TYf$(-^3K*Q6ol)JeV@hY=L|-SJ3^07K%X%Jubm+3FMLpJ(Ng zTUZC7^w-DA=qxNOZj{{6I0_Z5^xBbYyh49e{;b+8oQ;UJ0qT943}`!Q4#(_codVK! zDh#2gtB6}H`YN?Qe}ST~0OA5>3BSeWz5k07;m7FlI#qURO637+_}s0zmWTD@aP-FR zvcs-$Kg@TP`TEow>D|4(Ag?NQbVym<(G@{K8lR)hR~`o+Y@Z+8d%$_k*G7b1L`1}> zdT3kpbB3bNhffFRCv^`2V7C>+jekVpsCd8lB>f98zqFK7TzoDlC`e0$3^?h}|MvQ= znB`C&RQWGH)ApUvxh&%hfRO5g)?!DZh*ftk=(I-)-ncP+;o`;7ZZ7#imFZzLLCTD9 zVm~od!gJ-PCzZL(@z%sQRil=t(TZpBqH2#tq1{(%%gh|4QFA)3Mqu=sf$@%e38AgM zodmdg^=c))5#k00(knEG!@?6s;Rv?+^`}2Z!jZ>xv9YlaxxZS{DLq0Ul*~>#U_j;3 zb(u5a(6WE!N$X611VZb*tJkl84-KW(H{dY#bzACYQAh0!3=EhzQ8w|4DHZ7l#e5@< z9TaTS%>(B`pD?IDetiDIg$sd+$Y^dwg;lEgNX#(qUnG6B<}g+>x{-bdvD>jCKrMUk z;lt-G0&avlXSdG&dryIxbZHRbbG`q z+6(X1=ql3==lYFYIF8K58D?Z|Gkp4+y5eOHy$T@<`v>Gq4;rfcp1F#Cb%U6&Bptj9 z^FlOAXL0|H@aXVz7XiP1{i>X-6cO^TZxa`yV4}!^Bn_A2zp=S=4JYV~yv!>$<^8O>b#HUBWT9U7 zYk85&f7r>3`*;A*7k=plloKpQMaVDbzJ2@FqGjAiB%224Eo$2jv>Jp^KE34n^|%m)BdZAssgKjY>2 zL!F-(l6a!hrYFjUaH@7Y6*uJCm${2EMU%}RUaWijiB`E~f2B}cpSgT%gwjU@rO|En zD@irj9E|jgRC_|e(33+s`Sq^8tTS5&OrMPTj4(cxOGWyE!z?T>XMHN~X}Mqm_p>k7 z$br!rC9klznDNc9_ljKRsXe~k*w|QjTGXqAcNEdnKIP)mCip-IhbwT^l;f>hFfu8x z0&2E8l$&gOqXI+fSC6ae7eSl~YK8}9)3ouBTm?od;5@T)vxOzL7w4`Q)rRaKaX|0F z4$(EvnK7VG!3um9F2 zOJVd=J;<$Q2%0GQu#rscpyG+LFO;|t33Ed8pJ^lf6E{#t`I|JgPvE<>Xj;KteIhk* zx!4d>zr~F&YL-YzNs)1x4a^mZsr5M`6}vp~=EH}FfAr&%aJ9`na{1!K;I+YKG_qNh&xKy*A2*uTJ)c?YhPV5Z6l3l>fC%wg zi&>g_#g_9xxwYx@5^(Fg_tm_}3w1wOgTb74p=mWM(EGzio0)~>5+d#^6(BZXEAX#* zdqk1Yxb$_z2vFA5jqQD+jl_0HbzG<0r*Fp{eRPQ#^-J?|qZb#tiRdX;v9?Q)HZh)IgqTTb+ z)8Ob^9PuZ7AACFmn_JEds=VjA^3G?y*l5&~pP9R$m-?G{xFp>ghp@k^t}dYjM#0@5 z-en|>2n|(!@#0#sDVi3od~O`oVsKrMi# zv>}**6F}j(_w@+EAilvdh~=)dPDf))oO zRsYC<+`>ij+)Tx=D>z~4}fy8`aA0N)uIqH)-H z^|rD8Wvcc15TTz6$oYe;H>bb~L?|?CE(Ek-iGKY4Qo)626vV(wbR~ zB-`XBW*q9Bu|4PpUP{?JIo(dF*eECwvzbx=g5%BsGgsrw5VbLz*%~}*nW5A`{l~6U zkVH`#SY{=*);{-o9V!UijBbeL>7!k_yhs%kH;85BRG0fPafKdjrI zl9&UZcKhzkm=KC}K)GYsk)2+(?M02l>1e<0YQ~ukwwEvVAj&e_j z2P`H&p8Ri2!Ae>r^EwpD1HmsqLe~d7G)?R-8W9FWbc%VG9!T7x=d!c2r$!VszJl=)hpui);AU~Wmpyg9cquOR-GQ${qbh^xw2hYG=tCZE z+UFa4Y=3@gVk)}<)ar!f@>m58%R=7StH$4Z=!ae<;Ij|d8`%hb-|APRH$L(VLd`yr zuQL|4G6_68OIunYu);PH|F@_C|2Nf5KZ^(K?4Czq z7uH`Zvd-wa^<7{NwD3GEO*w3A4*xWEi^H?z#+{+Po$f%(q~bTJ+xo8O8vXry%ktk4 zP41~Ogp)d}OAuq0jpl2yoR0~QA#Y}41B8G;(|@B|rk}XH#>a)hs5b>LfH;ckG`SLW zmIHtA^I(VU2W@y*pck(GD;Q#n^Lv{2;)MZKaMczMFJoQ4b_0*q0%RBcH|X7VIkiy$n_IZ*p*Xcsv`-Me?o7YBzZ;2YS2&&3{siBZd$ zCnrk)3T{xkkRyMV!MlBiabA}FRAtRQlS)#SQ(nEHCr9`5)eavM5lmPi`KJ#>5WROV zuzo!3?a26CguM3d=8-{4_8LF0A>`$MZKSj;Z(;$JYu<|-G zYxFibYABIdgCwQXs7l}&ih}wSS$%#tjsgAe`)4V|LQ6Aek6iy!ez=d%HINi=T>x!m zh$^K@@<`4AJRcVfIt&Ou0%%>)J}^;=lm>Q5bG}1@(4CBMgKI!?vc&uZoX#X z%n&?>whj5v|I zjWj(%b?`W-7Pr7)8~_ z0yGz<=tF9%y`?_dJiqs|+X7kV2PS_gfhbz2cGe{Nu^Dnv+UzKm(fOheZsYaj?m2S! zNww<&_YMq=;2JK0B|V=6&YTj905E(T?$urDt(75nZDBD~B~OC>I1_Y~eG_AU1!+7N z^z|}JFOC~5iTv4WPxvB-43xf=^`WLnOyu~8hot`bR8Tluk*LWh&#fvzij7o9_z%pD z4^ZSEPgL|-W))5QIg^O~T1YP4h2w!rw0uFYKND9^5kYF0epUU;$om?mo^zg?@_F=` z9QhR88B%m!US4L9-2HrQtDV?uIKyb{f{<^*V&-1h%zf08bKKi{PnM!(OPEtT<7U06 z6yvC77aZq$%iwX7?w|m@l3rQuHFWt-)5;%x=0t-FeW-%=l0Imc;-@0MyEU_y?I>my zmNj-m&u=G1?%y!?=bdQkYeKopHJO*5g>-@K&fSIYwPd{3y}TU68M3qU!LvkcVx^u4 zr$a;pWRGKbQV+$zC1yo>g=$>exnX-dv-p|p7n1l5xiy2Cvysj8pT7g8!5--4jvI`QZ294YmZl=d0AnMCE>#|hAQChvJ)Oe(vA+M%dUz7r9A zE7<00r3n^!tRmtGp3IFqu=F+T3SzLzrXE)0S-n8)P%qv-q#7mYG^r*iA&xJFbZpyg zexhSF#gaK00Io7o3#6}O&C2gEDN(S@2BuZ+U55%fFFiu&ip?iQrb+hfd$Lq)lC~wh z6h6!MgERN5A|>s3f~mA^Py(ya{_Tj zpeh(ecp7*SvJ)B_8dJ)Y2$CljWhBK4DOJTlMR-{0cslr46?L@c%9G6nYS2I-k8?KQ z+T+AGbt|>Iy1%sVF}5Z@XSBcK%WO!i_gNTlJ)t2LW40_76>d%rD`X)NJ zwUeqV2(YPk9LO{Tc%`Kc6ZbA1*Dh7~aPt1&IjE76Hzq-f#>^vZV~BH~;z-gHAtVQKpIDaz(`wHo28uA<}$7Dev^6ywJzulhh z$-N`Y#Iwf)e<=j_R`bZQPq4tHAI9h34I&A? zM1Lv|WSA5p)B8_mWjM*j>k8!cAAk?|l4(4|4d-j|i%n&asv>)7*-pj~L8ojo>~_%L zNL~JYN;F+==AJwMDswoePS7c%%8ZDwM6r5y&`gyvJ#qtWj7cZ7@DVQ zeQG(-dP!htcqt~3JkIX05TnY%#qh-a7Ra(a&&Db2i?lv=Rruj6dq#~Yd{%WK^)}o? zeKah4`w55uz@K+aQ=y!-it0FbkNrxsRY!Zd6~zh-A#rw7zur3NrSKDF3bA+^J_Sp6A^bqf-U z=u2;P;fej)tU-kzW~H0PluI*m^0QB-Z_o26hX39oMy&>n2dcEEsfDx7%rA5-57x?q z5zY#ZOvQ#JVL7kX4O10Wt3 z@`z0mTZ*&@l2BU3tR5wwR@;xyHlnoS7po6#$X zy^WY|xVg^rtAP0$0T0rNCWi2*E(>E)sd~?!U!{!@y;z#mNX%eE4Z?0`?}phm$KmFW z;*s5JkM2E-cbFw+%4*asRU9(M3SJmtjXjc3OZJR`sfS##{LUH`SEhc^_^6B zh&$o-;lh$?!JsPu(vPd&93Lv#@uKr{2d zeEGfjyb~m}nbTc6&9TyZbRB-2&Or`3&p{7R*VXvl148~sUJ$-#FKx}Y&>;K$I9vs$ zt};nycBGA-JC~cAD^_ICkq3SeB(A|@r}ErlRm zM6sVCADABWkJiZ3t#TJO1`~$&XCNWS2GZkMp452qxket~dVCrQu>j z$SDNPsXLfw9EMkto16D9B55)sP3l^UOBs}9Jo1X9Zc6Q*6eLgVa9U05A`x~bBHPD# z+BCH!mOK0Hi~yl8Np*o`$Ya-DgOI8CdKbTDbw}o+%Ozr5FBP;*e|A?Y7+L-UTf2~X z>cA%ovkJX*Yy8(%5gz)+O22x7=*ok%6hm)K482*-P!S}2k0rYyEIa)Kz08do{ejpT z5^+#yupg={P5X?dMY&bHu3TbVvhI1`+&Nc*--O6`G;<<)#EA^UNayw!|4xD|tY7l)_JmZT3I~I8)e!bo| zt9-b_IdZh$|GN3pI5EL<%GK_2eO`g`)@Ja^pTY9CA;d_cLrt2CoE6r6(e8mYrj!(tqx$XJNCbiVGp?+xY`Ji7HhM<*tAlP(mt(vnftccUmz8KwH_jco`WX+o zj>vk$jXaz#xs$5Bc$Ce_rWAL9UZ8m-_xba|Xy;sBbOa)ao5DeBEMS(Zq4qznT6RJ+ z%;+_ZYH;$QQX3bsc*HN5QIwegY_~FUR1ULJep}~%2^I%^`23m1u$cYl?TqASd}&!g zQ~NIiIRbeL5iT-WC@)Go)sY0LkS88%=8gLVAH2UZ1T*#Vk{@1%HfInUgXqpGd2}Mn ztbAre5-$Q*u0;~VhnM(I3rYZ>q?RBDn4bzVY#<>UNE1X+`K6{1>C!bUm&F!GsjTme zq+m7`;>P!N?!guJPoF+1gC}|Q>zxmuTy*A-(lABbKnAFN7bEOvkTSjXmolxJeU;c8 z&L*kpfV^OH1m#IaX7K_(KUpb|& zyn@6P?1AGH&!`iA36kKnHCfcdd=~6p9i)rGrOUli*>ZaGQD#>|O^s&F#}`(nF^k!m zF`~CYwmKhrreWDaO2?b*h(0bvlRf(~bdd4n#O7?~L8;pukXA+6#U?jI%L9OesNY}d z&+fBjx^zi!RnYxx9G|&SIGpdm;9!cvvU;ZkkOh6i5pJ^OM>YM2`gPtZ39mRG322H# zBT5lhW~yHAT)A-Z!rdZCZygNW+jC7ah)0lvn>%W1^5mg7oX??SEiCns5PN?0XfCN$ zRR2>G*wd#^tM?3_JfY!#*_9b<=U99ACm|_`|Hh4b_d3{BOU!D4XYscPTg2zy>01>% zhq?HzW;|S&keqBd_5zn`XnNOf#lra+WMn~oyv;>}tY?v&=Z-;L_IL`!w^QRoQbK|S zSbzr5i#!eiQM=E?*8VksKqAc%+2SOp!~g@7e)v{hg@4fdnc3P$hQMa{3lA5Q0E>^( z+8h+mB}0#ILPVP5JNDUb8=hY&EGj81q%S;p+_upG zGc$`~6B4>yJS>x*v*C;WKq`6cJ~MOH$XO*(f>1@|@B^3Q+}n1RQsN76Ba0)V)~;cT z&R@FJ{?Y!{$Vs!Y$^Ea+znN!tzAI>S{qc3!A5CeD#!c;j$zK5I%#i9>sCX{xO~Y`^ zB?+Isn}lEU+$>!&1hMg#FSI9+I@{C=XTC3AzSOf{q)qIiisMz2+q1C{ZsuWT4y0of zy>S~%*F2ac%0A+_X{PYU8n<{BwAWy`YJztH;?%{NVb4#G`K$~GJv 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�M*`qO4*(GW%@Ql9v31Q?6aXcCDY!*lrV|D3 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

[jointext(words, null)]