From 070ee9b86adb6ae4bd3a852b240cb2519b7e7aa5 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 22 May 2017 07:44:10 -0500 Subject: [PATCH 001/122] Fixes shooting out of view windows --- code/_onclick/click.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index ad4a84529b..39926cd2fd 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -92,7 +92,7 @@ if(next_move > world.time) // in the year 2000... return - if(A.IsObscured()) + if(!modifiers["catcher"] && A.IsObscured()) return if(istype(loc,/obj/mecha)) @@ -446,6 +446,7 @@ C.swap_hand() else var/turf/T = params2turf(modifiers["screen-loc"], get_turf(usr)) + params += "&catcher=1" if(T) T.Click(location, control, params) . = 1 From 01cd2039e507014af92f235cb03f082081cf41fb Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 22 May 2017 22:45:54 -0500 Subject: [PATCH 002/122] Changes investigate logs to use a define --- code/__DEFINES/logging.dm | 18 +++++++ code/__DEFINES/mobs.dm | 7 --- code/game/machinery/computer/medical.dm | 4 +- code/game/machinery/computer/security.dm | 8 ++-- code/game/machinery/launch_pad.dm | 2 +- .../objects/items/weapons/storage/backpack.dm | 2 +- code/modules/admin/admin_investigate.dm | 2 +- .../atmospherics/machinery/atmosmachinery.dm | 2 +- .../components/binary_devices/passive_gate.dm | 6 +-- .../components/binary_devices/pump.dm | 2 +- .../components/binary_devices/pump.dm.rej | 19 ++++++++ .../components/binary_devices/valve.dm | 4 +- .../components/binary_devices/volume_pump.dm | 2 +- .../binary_devices/volume_pump.dm.rej | 19 ++++++++ .../components/trinary_devices/filter.dm | 16 +++---- .../components/trinary_devices/mixer.dm | 8 ++-- .../unary_devices/outlet_injector.dm | 4 +- .../components/unary_devices/thermomachine.dm | 4 +- .../machinery/portable/canister.dm | 6 +-- .../portable/portable_atmospherics.dm | 2 +- .../atmospherics/machinery/portable/pump.dm | 2 +- code/modules/cargo/console.dm | 6 +-- code/modules/hydroponics/grown/kudzu.dm | 2 +- code/modules/hydroponics/grown/mushrooms.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 2 +- .../mob/living/carbon/human/human_defense.dm | 2 +- code/modules/mob/living/living_defense.dm | 2 +- code/modules/power/cable.dm | 2 +- code/modules/power/gravitygenerator.dm | 14 +++--- code/modules/power/singularity/collector.dm | 4 +- code/modules/power/singularity/emitter.dm | 8 ++-- code/modules/power/singularity/emitter.dm.rej | 10 ++++ .../power/singularity/field_generator.dm | 6 +-- code/modules/power/singularity/investigate.dm | 2 +- .../particle_accelerator.dm | 2 +- .../particle_accelerator/particle_control.dm | 8 ++-- code/modules/power/singularity/singularity.dm | 8 ++-- code/modules/power/smes.dm | 6 +-- code/modules/power/smes.dm.rej | 10 ++++ code/modules/power/supermatter/supermatter.dm | 24 +++++----- .../power/supermatter/supermatter.dm.rej | 15 ++++++ code/modules/research/experimentor.dm | 48 +++++++++---------- code/modules/research/rdconsole.dm | 2 +- code/modules/shuttle/supply.dm | 6 +-- tgstation.dme | 1 + 45 files changed, 208 insertions(+), 123 deletions(-) create mode 100644 code/__DEFINES/logging.dm create mode 100644 code/modules/atmospherics/machinery/components/binary_devices/pump.dm.rej create mode 100644 code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm.rej create mode 100644 code/modules/power/singularity/emitter.dm.rej create mode 100644 code/modules/power/smes.dm.rej create mode 100644 code/modules/power/supermatter/supermatter.dm.rej diff --git a/code/__DEFINES/logging.dm b/code/__DEFINES/logging.dm new file mode 100644 index 0000000000..859f3e3775 --- /dev/null +++ b/code/__DEFINES/logging.dm @@ -0,0 +1,18 @@ +//Investigate logging defines +#define INVESTIGATE_ATMOS "atmos" +#define INVESTIGATE_BOTANY "botany" +#define INVESTIGATE_CARGO "cargo" +#define INVESTIGATE_EXPERIMENTOR "experimentor" +#define INVESTIGATE_GRAVITY "gravity" +#define INVESTIGATE_RECORDS "records" +#define INVESTIGATE_SINGULO "singulo" +#define INVESTIGATE_SUPERMATTER "supermatter" +#define INVESTIGATE_TELESCI "telesci" +#define INVESTIGATE_WIRES "wires" + +//Individual logging defines +#define INDIVIDUAL_ATTACK_LOG "Attack log" +#define INDIVIDUAL_SAY_LOG "Say log" +#define INDIVIDUAL_EMOTE_LOG "Emote log" +#define INDIVIDUAL_OOC_LOG "OOC log" +#define INDIVIDUAL_SHOW_ALL_LOG "All logs" \ No newline at end of file diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 49e03bdbdf..2d36d72ee3 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -114,13 +114,6 @@ #define SNPC_MARTYR 3 #define SNPC_PSYCHO 4 -//Individual logging defines -#define INDIVIDUAL_ATTACK_LOG "Attack log" -#define INDIVIDUAL_SAY_LOG "Say log" -#define INDIVIDUAL_EMOTE_LOG "Emote log" -#define INDIVIDUAL_OOC_LOG "OOC log" -#define INDIVIDUAL_SHOW_ALL_LOG "All logs" - #define TK_MAXRANGE 15 #define NO_SLIP_WHEN_WALKING 1 diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index dee63b902c..2bb9d61068 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -292,7 +292,7 @@ src.temp = text("Are you sure you wish to delete all records?
\n\tYes
\n\tNo
", src, src) else if(href_list["del_all2"]) - investigate_log("[usr.name] ([usr.key]) has deleted all medical records.", "records") + investigate_log("[usr.name] ([usr.key]) has deleted all medical records.", INVESTIGATE_RECORDS) GLOB.data_core.medical.Cut() src.temp = "All records deleted." @@ -458,7 +458,7 @@ src.temp = text("Are you sure you wish to delete the record (Medical Portion Only)?
\n\tYes
\n\tNo
", src, src) else if(href_list["del_r2"]) - investigate_log("[usr.name] ([usr.key]) has deleted the medical records for [active1.fields["name"]].", "records") + investigate_log("[usr.name] ([usr.key]) has deleted the medical records for [active1.fields["name"]].", INVESTIGATE_RECORDS) if(active2) qdel(active2) active2 = null diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index b8d777e42d..5baa169e99 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -452,7 +452,7 @@ What a mess.*/ temp += "No" if("Purge All Records") - investigate_log("[usr.name] ([usr.key]) has purged all the security records.", "records") + investigate_log("[usr.name] ([usr.key]) has purged all the security records.", INVESTIGATE_RECORDS) for(var/datum/data/record/R in GLOB.data_core.security) qdel(R) GLOB.data_core.security.Cut() @@ -696,18 +696,18 @@ What a mess.*/ active2.fields["criminal"] = "Parolled" if("released") active2.fields["criminal"] = "Discharged" - investigate_log("[active1.fields["name"]] has been set from [old_field] to [active2.fields["criminal"]] by [usr.name] ([usr.key]).", "records") + investigate_log("[active1.fields["name"]] has been set from [old_field] to [active2.fields["criminal"]] by [usr.name] ([usr.key]).", INVESTIGATE_RECORDS) for(var/mob/living/carbon/human/H in GLOB.mob_list) //thanks for forcing me to do this, whoever wrote this shitty records system H.sec_hud_set_security_status() if("Delete Record (Security) Execute") - investigate_log("[usr.name] ([usr.key]) has deleted the security records for [active1.fields["name"]].", "records") + investigate_log("[usr.name] ([usr.key]) has deleted the security records for [active1.fields["name"]].", INVESTIGATE_RECORDS) if(active2) qdel(active2) active2 = null if("Delete Record (ALL) Execute") if(active1) - investigate_log("[usr.name] ([usr.key]) has deleted all records for [active1.fields["name"]].", "records") + investigate_log("[usr.name] ([usr.key]) has deleted all records for [active1.fields["name"]].", INVESTIGATE_RECORDS) for(var/datum/data/record/R in GLOB.data_core.medical) if((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"])) qdel(R) diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm index 82e9d9a176..6c3d25d223 100644 --- a/code/game/machinery/launch_pad.dm +++ b/code/game/machinery/launch_pad.dm @@ -143,7 +143,7 @@ else log_msg += "nothing" log_msg += " [sending ? "to" : "from"] [target_x], [target_y], [z] ([A ? A.name : "null area"])" - investigate_log(log_msg.Join(), "telesci") + investigate_log(log_msg.Join(), INVESTIGATE_TELESCI) updateDialog() //Starts in the briefcase. Don't spawn this directly, or it will runtime when closing. diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 662f451e81..0fd70e7ac3 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -69,7 +69,7 @@ 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 - investigate_log("has become a singularity. Caused by [user.key]","singulo") + investigate_log("has become a singularity. Caused by [user.key]", INVESTIGATE_SINGULO) to_chat(user, "The Bluespace interfaces of the two devices catastrophically malfunction!") qdel(W) var/obj/singularity/singulo = new /obj/singularity (get_turf(src)) diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm index cdd05a3aad..0e46f20c4c 100644 --- a/code/modules/admin/admin_investigate.dm +++ b/code/modules/admin/admin_investigate.dm @@ -5,7 +5,7 @@ F << "[time_stamp()] \ref[src] ([x],[y],[z]) || [src] [message]
" -/client/proc/investigate_show( subject in list("hrefs","notes, memos, watchlist","singulo","wires","telesci", "gravity", "records", "cargo", "supermatter", "atmos", "experimentor", "botany") ) +/client/proc/investigate_show(subject in list("hrefs","notes, memos, watchlist", INVESTIGATE_SINGULO, INVESTIGATE_WIRES, INVESTIGATE_TELESCI, INVESTIGATE_GRAVITY, INVESTIGATE_RECORDS, INVESTIGATE_CARGO, INVESTIGATE_SUPERMATTER, INVESTIGATE_ATMOS, INVESTIGATE_EXPERIMENTOR, INVESTIGATE_BOTANY) ) set name = "Investigate" set category = "Admin" if(!holder) diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index cfe3719423..2a039cd5bf 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -152,7 +152,7 @@ Pipelines + Other Objects -> Pipe network "[user] unfastens \the [src].", \ "You unfasten \the [src].", \ "You hear ratchet.") - investigate_log("was REMOVED by [key_name(usr)]", "atmos") + investigate_log("was REMOVED by [key_name(usr)]", INVESTIGATE_ATMOS) //You unwrenched a pipe full of pressure? Let's splat you into the wall, silly. if(unsafe_wrenching) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm index e67db7fcd7..8ea2b34251 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm @@ -112,7 +112,7 @@ Passive gate is similar to the regular pump except: switch(action) if("power") on = !on - investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos") + investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", INVESTIGATE_ATMOS) . = TRUE if("pressure") var/pressure = params["pressure"] @@ -128,7 +128,7 @@ Passive gate is similar to the regular pump except: . = TRUE if(.) target_pressure = Clamp(pressure, 0, MAX_OUTPUT_PRESSURE) - investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos") + investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS) update_icon() /obj/machinery/atmospherics/components/binary/passive_gate/atmosinit() @@ -152,7 +152,7 @@ Passive gate is similar to the regular pump except: target_pressure = Clamp(text2num(signal.data["set_output_pressure"]),0,ONE_ATMOSPHERE*50) if(on != old_on) - investigate_log("was turned [on ? "on" : "off"] by a remote signal", "atmos") + investigate_log("was turned [on ? "on" : "off"] by a remote signal", INVESTIGATE_ATMOS) if("status" in signal.data) broadcast_status() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm index 26c3d25e85..c83b0e6de1 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm @@ -165,7 +165,7 @@ Thus, the two variables affect pump operation are set in New(): target_pressure = Clamp(text2num(signal.data["set_output_pressure"]),0,ONE_ATMOSPHERE*50) if(on != old_on) - investigate_log("was turned [on ? "on" : "off"] by a remote signal", "atmos") + investigate_log("was turned [on ? "on" : "off"] by a remote signal", INVESTIGATE_ATMOS) if("status" in signal.data) broadcast_status() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm.rej b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm.rej new file mode 100644 index 0000000000..d2bdc85865 --- /dev/null +++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm.rej @@ -0,0 +1,19 @@ +diff a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm (rejected hunks) +@@ -119,7 +119,7 @@ Thus, the two variables affect pump operation are set in New(): + switch(action) + if("power") + on = !on +- investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos") ++ investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", INVESTIGATE_ATMOS) + . = TRUE + if("pressure") + var/pressure = params["pressure"] +@@ -135,7 +135,7 @@ Thus, the two variables affect pump operation are set in New(): + . = TRUE + if(.) + target_pressure = Clamp(pressure, 0, MAX_OUTPUT_PRESSURE) +- investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos") ++ investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS) + update_icon() + + /obj/machinery/atmospherics/components/binary/pump/atmosinit() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm index 34fea329ac..df19b7f3e3 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm @@ -30,12 +30,12 @@ It's like a regular ol' straight pipe, but you can turn it on and off. update_parents() var/datum/pipeline/parent1 = PARENT1 parent1.reconcile_air() - investigate_log("was opened by [usr ? key_name(usr) : "a remote signal"]", "atmos") + investigate_log("was opened by [usr ? key_name(usr) : "a remote signal"]", INVESTIGATE_ATMOS) /obj/machinery/atmospherics/components/binary/valve/proc/close() open = 0 update_icon_nopipes() - investigate_log("was closed by [usr ? key_name(usr) : "a remote signal"]", "atmos") + investigate_log("was closed by [usr ? key_name(usr) : "a remote signal"]", INVESTIGATE_ATMOS) /obj/machinery/atmospherics/components/binary/valve/proc/normalize_dir() if(dir==SOUTH) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm index d6bc3bbdb7..85d667509c 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm @@ -162,7 +162,7 @@ Thus, the two variables affect pump operation are set in New(): transfer_rate = Clamp(text2num(signal.data["set_transfer_rate"]),0,air1.volume) if(on != old_on) - investigate_log("was turned [on ? "on" : "off"] by a remote signal", "atmos") + investigate_log("was turned [on ? "on" : "off"] by a remote signal", INVESTIGATE_ATMOS) if("status" in signal.data) broadcast_status() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm.rej b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm.rej new file mode 100644 index 0000000000..6fab304724 --- /dev/null +++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm.rej @@ -0,0 +1,19 @@ +diff a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm (rejected hunks) +@@ -119,7 +119,7 @@ Thus, the two variables affect pump operation are set in New(): + switch(action) + if("power") + on = !on +- investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos") ++ investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", INVESTIGATE_ATMOS) + . = TRUE + if("rate") + var/rate = params["rate"] +@@ -135,7 +135,7 @@ Thus, the two variables affect pump operation are set in New(): + . = TRUE + if(.) + transfer_rate = Clamp(rate, 0, MAX_TRANSFER_RATE) +- investigate_log("was set to [transfer_rate] L/s by [key_name(usr)]", "atmos") ++ investigate_log("was set to [transfer_rate] L/s by [key_name(usr)]", INVESTIGATE_ATMOS) + update_icon() + + /obj/machinery/atmospherics/components/binary/volume_pump/receive_signal(datum/signal/signal) diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm index 4b9c2c710f..3c6c7b2342 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm @@ -83,20 +83,20 @@ if(!removed) return - + var/filtering = filter_type ? TRUE : FALSE - + if(filtering && !istext(filter_type)) WARNING("Wrong gas ID in [src]'s filter_type var. filter_type == [filter_type]") filtering = FALSE - + if(filtering && removed.gases[filter_type]) var/datum/gas_mixture/filtered_out = new - + filtered_out.temperature = removed.temperature filtered_out.assert_gas(filter_type) filtered_out.gases[filter_type][MOLES] = removed.gases[filter_type][MOLES] - + removed.gases[filter_type][MOLES] = 0 removed.garbage_collect() @@ -133,7 +133,7 @@ switch(action) if("power") on = !on - investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos") + investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", INVESTIGATE_ATMOS) . = TRUE if("pressure") var/pressure = params["pressure"] @@ -149,7 +149,7 @@ . = TRUE if(.) target_pressure = Clamp(pressure, 0, MAX_OUTPUT_PRESSURE) - investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos") + investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS) if("filter") filter_type = "" var/filter_name = "nothing" @@ -157,6 +157,6 @@ if(gas in GLOB.meta_gas_info) filter_type = gas filter_name = GLOB.meta_gas_info[gas][META_GAS_NAME] - investigate_log("was set to filter [filter_name] by [key_name(usr)]", "atmos") + investigate_log("was set to filter [filter_name] by [key_name(usr)]", INVESTIGATE_ATMOS) . = TRUE update_icon() diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm index ed168c7153..958782d5a1 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm @@ -138,7 +138,7 @@ switch(action) if("power") on = !on - investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos") + investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", INVESTIGATE_ATMOS) . = TRUE if("pressure") var/pressure = params["pressure"] @@ -154,17 +154,17 @@ . = TRUE if(.) target_pressure = Clamp(pressure, 0, MAX_OUTPUT_PRESSURE) - investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos") + investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS) if("node1") var/value = text2num(params["concentration"]) node1_concentration = max(0, min(1, node1_concentration + value)) node2_concentration = max(0, min(1, node2_concentration - value)) - investigate_log("was set to [node1_concentration] % on node 1 by [key_name(usr)]", "atmos") + investigate_log("was set to [node1_concentration] % on node 1 by [key_name(usr)]", INVESTIGATE_ATMOS) . = TRUE if("node2") var/value = text2num(params["concentration"]) node2_concentration = max(0, min(1, node2_concentration + value)) node1_concentration = max(0, min(1, node1_concentration - value)) - investigate_log("was set to [node2_concentration] % on node 2 by [key_name(usr)]", "atmos") + investigate_log("was set to [node2_concentration] % on node 2 by [key_name(usr)]", INVESTIGATE_ATMOS) . = TRUE update_icon() \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm index ca90604ee7..a03a6952c4 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm @@ -167,7 +167,7 @@ switch(action) if("power") on = !on - investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos") + investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", INVESTIGATE_ATMOS) . = TRUE if("rate") var/rate = params["rate"] @@ -183,7 +183,7 @@ . = TRUE if(.) volume_rate = Clamp(rate, 0, MAX_TRANSFER_RATE) - investigate_log("was set to [volume_rate] L/s by [key_name(usr)]", "atmos") + investigate_log("was set to [volume_rate] L/s by [key_name(usr)]", INVESTIGATE_ATMOS) update_icon() broadcast_status() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index 8761211f72..26f02a43ef 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -173,7 +173,7 @@ if("power") on = !on use_power = 1 + on - investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos") + investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", INVESTIGATE_ATMOS) . = TRUE if("target") var/target = params["target"] @@ -190,7 +190,7 @@ . = TRUE if(.) target_temperature = Clamp(target, min_temperature, max_temperature) - investigate_log("was set to [target_temperature] K by [key_name(usr)]", "atmos") + investigate_log("was set to [target_temperature] K by [key_name(usr)]", INVESTIGATE_ATMOS) update_icon() /obj/machinery/atmospherics/components/unary/thermomachine/freezer diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 09c7a44c66..0324effcc7 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -286,7 +286,7 @@ density = 0 playsound(src.loc, 'sound/effects/spray.ogg', 10, 1, -3) update_icon() - investigate_log("was destroyed.", "atmos") + investigate_log("was destroyed.", INVESTIGATE_ATMOS) if(holding) holding.forceMove(T) @@ -388,7 +388,7 @@ . = TRUE if(.) release_pressure = Clamp(round(pressure), can_min_release_pressure, can_max_release_pressure) - investigate_log("was set to [release_pressure] kPa by [key_name(usr)].", "atmos") + investigate_log("was set to [release_pressure] kPa by [key_name(usr)].", INVESTIGATE_ATMOS) if("valve") var/logmsg valve_open = !valve_open @@ -439,7 +439,7 @@ if("eject") if(holding) if(valve_open) - investigate_log("[key_name(usr)] removed the [holding], leaving the valve open and transfering into the air
", "atmos") + investigate_log("[key_name(usr)] removed the [holding], leaving the valve open and transfering into the air
", INVESTIGATE_ATMOS) holding.forceMove(get_turf(src)) holding = null . = TRUE diff --git a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm index d8bd51aa5f..3a2894653c 100644 --- a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm +++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm @@ -120,6 +120,6 @@ if(I.force < 10 && !(stat & BROKEN)) take_damage(0) else - investigate_log("was smacked with \a [I] by [key_name(user)].", "atmos") + investigate_log("was smacked with \a [I] by [key_name(user)].", INVESTIGATE_ATMOS) add_fingerprint(user) ..() diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm index 16c786c044..d3fbc38208 100644 --- a/code/modules/atmospherics/machinery/portable/pump.dm +++ b/code/modules/atmospherics/machinery/portable/pump.dm @@ -133,7 +133,7 @@ . = TRUE if(.) pump.target_pressure = Clamp(round(pressure), PUMP_MIN_PRESSURE, PUMP_MAX_PRESSURE) - investigate_log("was set to [pump.target_pressure] kPa by [key_name(usr)].", "atmos") + investigate_log("was set to [pump.target_pressure] kPa by [key_name(usr)].", INVESTIGATE_ATMOS) if("eject") if(holding) holding.loc = get_turf(src) diff --git a/code/modules/cargo/console.dm b/code/modules/cargo/console.dm index 8e21b3d2d4..6fe923a519 100644 --- a/code/modules/cargo/console.dm +++ b/code/modules/cargo/console.dm @@ -8,7 +8,7 @@ var/safety_warning = "For safety reasons the automated supply shuttle \ cannot transport live organisms, classified nuclear weaponry or \ homing beacons." - + light_color = "#E2853D"//orange /obj/machinery/computer/cargo/request @@ -106,9 +106,9 @@ SSshuttle.supply.contraband = contraband SSshuttle.moveShuttle("supply", "supply_away", TRUE) say("The supply shuttle has departed.") - investigate_log("[key_name(usr)] sent the supply shuttle away.", "cargo") + investigate_log("[key_name(usr)] sent the supply shuttle away.", INVESTIGATE_CARGO) else - investigate_log("[key_name(usr)] called the supply shuttle.", "cargo") + investigate_log("[key_name(usr)] called the supply shuttle.", INVESTIGATE_CARGO) say("The supply shuttle has been called and will arrive in [SSshuttle.supply.timeLeft(600)] minutes.") SSshuttle.moveShuttle("supply", "supply_home", TRUE) . = TRUE diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index 60ff69a323..45269743a5 100644 --- a/code/modules/hydroponics/grown/kudzu.dm +++ b/code/modules/hydroponics/grown/kudzu.dm @@ -37,7 +37,7 @@ return FALSE to_chat(user, "You plant [src].") message_admins("Kudzu planted by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(user)]",0,1) - investigate_log("was planted by [key_name(user)] at [COORD(user)]","botany") + investigate_log("was planted by [key_name(user)] at [COORD(user)]", INVESTIGATE_BOTANY) new /datum/spacevine_controller(get_turf(user), mutations, potency, production) qdel(src) diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm index d12f9c52cf..61eb397b92 100644 --- a/code/modules/hydroponics/grown/mushrooms.dm +++ b/code/modules/hydroponics/grown/mushrooms.dm @@ -307,5 +307,5 @@ . = ..() if(.) message_admins("Shadowshroom planted by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(user)]",0,1) - investigate_log("was planted by [key_name(user)] at [COORD(user)]", "botany") + investigate_log("was planted by [key_name(user)] at [COORD(user)]", INVESTIGATE_BOTANY) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index be7e851a8e..04e0007a5b 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -412,7 +412,7 @@ if(R) if(H.canUseHUD()) if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.getorganslot("eye_hud"), /obj/item/organ/cyberimp/eyes/hud/security)) - investigate_log("[src.key] has been set from [R.fields["criminal"]] to [setcriminal] by [usr.name] ([usr.key]).", "records") + investigate_log("[src.key] has been set from [R.fields["criminal"]] to [setcriminal] by [usr.name] ([usr.key]).", INVESTIGATE_RECORDS) R.fields["criminal"] = setcriminal sec_hud_set_security_status() return diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 0623921d63..fcfc40f604 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -620,7 +620,7 @@ gain = 100 if(mind.assigned_role == "Clown") gain = rand(-300, 300) - investigate_log("([key_name(src)]) has been consumed by the singularity.","singulo") //Oh that's where the clown ended up! + investigate_log("([key_name(src)]) has been consumed by the singularity.", INVESTIGATE_SINGULO) //Oh that's where the clown ended up! gib() return(gain) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 9ed7796f1a..839535f6c7 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -291,7 +291,7 @@ /mob/living/singularity_act() var/gain = 20 - investigate_log("([key_name(src)]) has been consumed by the singularity.","singulo") //Oh that's where the clown ended up! + investigate_log("([key_name(src)]) has been consumed by the singularity.", INVESTIGATE_SINGULO) //Oh that's where the clown ended up! gib() return(gain) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 48fc254a8e..5bf4bab33e 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -131,7 +131,7 @@ By design, d1 is the smallest direction and d2 is the highest return user.visible_message("[user] cuts the cable.", "You cut the cable.") stored.add_fingerprint(user) - investigate_log("was cut by [key_name(usr, usr.client)] in [user.loc.loc]","wires") + investigate_log("was cut by [key_name(usr, usr.client)] in [get_area(T)]", INVESTIGATE_WIRES) deconstruct() return diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index a1d544c2e4..8f37974b2d 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -131,7 +131,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne var/broken_state = 0 /obj/machinery/gravity_generator/main/Destroy() // If we somehow get deleted, remove all of our other parts. - investigate_log("was destroyed!", "gravity") + investigate_log("was destroyed!", INVESTIGATE_GRAVITY) on = 0 update_list() for(var/obj/machinery/gravity_generator/part/O in parts) @@ -173,7 +173,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne breaker = 0 set_power() set_state(0) - investigate_log("has broken down.", "gravity") + investigate_log("has broken down.", INVESTIGATE_GRAVITY) /obj/machinery/gravity_generator/main/set_fix() ..() @@ -263,7 +263,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne if(href_list["gentoggle"]) breaker = !breaker - investigate_log("was toggled [breaker ? "ON" : "OFF"] by [usr.key].", "gravity") + investigate_log("was toggled [breaker ? "ON" : "OFF"] by [usr.key].", INVESTIGATE_GRAVITY) set_power() src.updateUsrDialog() @@ -271,7 +271,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne /obj/machinery/gravity_generator/main/power_change() ..() - investigate_log("has [stat & NOPOWER ? "lost" : "regained"] power.", "gravity") + investigate_log("has [stat & NOPOWER ? "lost" : "regained"] power.", INVESTIGATE_GRAVITY) set_power() /obj/machinery/gravity_generator/main/get_status() @@ -293,7 +293,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne new_state = 1 charging_state = new_state ? POWER_UP : POWER_DOWN // Startup sequence animation. - investigate_log("is now [charging_state == POWER_UP ? "charging" : "discharging"].", "gravity") + investigate_log("is now [charging_state == POWER_UP ? "charging" : "discharging"].", INVESTIGATE_GRAVITY) update_icon() // Set the state of the gravity. @@ -308,12 +308,12 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne if(on) // If we turned on and the game is live. if(gravity_in_level() == 0) alert = 1 - investigate_log("was brought online and is now producing gravity for this level.", "gravity") + investigate_log("was brought online and is now producing gravity for this level.", INVESTIGATE_GRAVITY) message_admins("The gravity generator was brought online [A][ADMIN_COORDJMP(src)]") else if(gravity_in_level() == 1) alert = 1 - investigate_log("was brought offline and there is now no gravity for this level.", "gravity") + investigate_log("was brought offline and there is now no gravity for this level.", INVESTIGATE_GRAVITY) message_admins("The gravity generator was brought offline with no backup generator. [A][ADMIN_COORDJMP(src)]") update_icon() diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index b75cf57acf..7f6bfb3026 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -30,7 +30,7 @@ GLOBAL_LIST_EMPTY(rad_collectors) /obj/machinery/power/rad_collector/process() if(loaded_tank) if(!loaded_tank.air_contents.gases["plasma"]) - investigate_log("out of fuel.","singulo") + investigate_log("out of fuel.", INVESTIGATE_SINGULO) eject() else loaded_tank.air_contents.gases["plasma"][MOLES] -= 0.001*drainratio @@ -48,7 +48,7 @@ GLOBAL_LIST_EMPTY(rad_collectors) "You turn the [src.name] [active? "on":"off"].") var/fuel = loaded_tank.air_contents.gases["plasma"] fuel = fuel ? fuel[MOLES] : 0 - investigate_log("turned [active?"on":"off"] by [user.key]. [loaded_tank?"Fuel: [round(fuel/0.29)]%":"It is empty"].","singulo") + investigate_log("turned [active?"on":"off"] by [user.key]. [loaded_tank?"Fuel: [round(fuel/0.29)]%":"It is empty"].", INVESTIGATE_SINGULO) return else to_chat(user, "The controls are locked!") diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 9d37173c9f..80f9a61679 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -123,13 +123,13 @@ to_chat(user, "You turn off \the [src].") message_admins("Emitter turned off by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(src)]",0,1) log_game("Emitter turned off by [key_name(user)] in [COORD(src)]") - investigate_log("turned off by [key_name(user)] at [get_area(src)]","singulo") + investigate_log("turned off by [key_name(user)] at [get_area(src)]", INVESTIGATE_SINGULO) else src.active = 1 to_chat(user, "You turn on \the [src].") src.shot_number = 0 src.fire_delay = maximum_fire_delay - investigate_log("turned on by [key_name(user)] at [get_area(src)]","singulo") + investigate_log("turned on by [key_name(user)] at [get_area(src)]", INVESTIGATE_SINGULO) update_icon() else to_chat(user, "The controls are locked!") @@ -170,12 +170,12 @@ if(!powered) powered = 1 update_icon() - investigate_log("regained power and turned on at [get_area(src)]","singulo") + investigate_log("regained power and turned on at [get_area(src)]", INVESTIGATE_SINGULO) else if(powered) powered = 0 update_icon() - investigate_log("lost power and turned off at [get_area(src)]","singulo") + investigate_log("lost power and turned off at [get_area(src)]", INVESTIGATE_SINGULO) log_game("Emitter lost power in ([x],[y],[z])") return if(charge <=80) diff --git a/code/modules/power/singularity/emitter.dm.rej b/code/modules/power/singularity/emitter.dm.rej new file mode 100644 index 0000000000..8b61066484 --- /dev/null +++ b/code/modules/power/singularity/emitter.dm.rej @@ -0,0 +1,10 @@ +diff a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm (rejected hunks) +@@ -101,7 +101,7 @@ + var/turf/T = get_turf(src) + message_admins("Emitter deleted at [ADMIN_COORDJMP(T)]",0,1) + log_game("Emitter deleted at [COORD(T)]") +- investigate_log("deleted at [get_area(src)] [COORD(T)]","singulo") ++ investigate_log("deleted at [get_area(src)] [COORD(T)]", INVESTIGATE_SINGULO) + QDEL_NULL(sparks) + return ..() + diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index 838cc19df5..06c2544daf 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -71,7 +71,7 @@ field_generator power level display "You turn on the [name].", \ "You hear heavy droning.") turn_on() - investigate_log("activated by [user.key].","singulo") + investigate_log("activated by [user.key].", INVESTIGATE_SINGULO) add_fingerprint(user) else @@ -197,7 +197,7 @@ field_generator power level display else visible_message("The [name] shuts down!", "You hear something shutting down.") turn_off() - investigate_log("ran out of power and deactivated","singulo") + investigate_log("ran out of power and deactivated", INVESTIGATE_SINGULO) power = 0 check_power_level() return 0 @@ -324,7 +324,7 @@ field_generator power level display if((world.time - O.last_warning) > 50) //to stop message-spam temp = 0 message_admins("A singulo exists and a containment field has failed.",1) - investigate_log("has failed whilst a singulo exists.","singulo") + investigate_log("has failed whilst a singulo exists.", INVESTIGATE_SINGULO) O.last_warning = world.time /obj/machinery/field/generator/shock(mob/living/user) diff --git a/code/modules/power/singularity/investigate.dm b/code/modules/power/singularity/investigate.dm index c5e119876b..aa77954afe 100644 --- a/code/modules/power/singularity/investigate.dm +++ b/code/modules/power/singularity/investigate.dm @@ -1,4 +1,4 @@ /area/engine/engineering/poweralert(state, source) if (state != poweralm) - investigate_log("has a power alarm!","singulo") + investigate_log("has a power alarm!", INVESTIGATE_SINGULO) ..() \ No newline at end of file diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index 1aab0dd407..890136d763 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -156,7 +156,7 @@ ..() if(master && master.active) master.toggle_power() - investigate_log("was moved whilst active; it powered down.","singulo") + investigate_log("was moved whilst active; it powered down.", INVESTIGATE_SINGULO) /obj/structure/particle_accelerator/update_icon() diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index 136f9162cf..fd3052cde4 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -119,7 +119,7 @@ message_admins("PA Control Computer increased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_COORDJMP(src)]",0,1) log_game("PA Control Computer increased to [strength] by [key_name(usr)] in [COORD(src)]") - investigate_log("increased to [strength] by [key_name(usr)]","singulo") + investigate_log("increased to [strength] by [key_name(usr)]", INVESTIGATE_SINGULO) /obj/machinery/particle_accelerator/control_box/proc/remove_strength(s) @@ -129,7 +129,7 @@ message_admins("PA Control Computer decreased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_COORDJMP(src)]",0,1) log_game("PA Control Computer decreased to [strength] by [key_name(usr)] in [COORD(src)]") - investigate_log("decreased to [strength] by [key_name(usr)]","singulo") + investigate_log("decreased to [strength] by [key_name(usr)]", INVESTIGATE_SINGULO) /obj/machinery/particle_accelerator/control_box/power_change() @@ -144,7 +144,7 @@ if(active) //a part is missing! if(connected_parts.len < 6) - investigate_log("lost a connected part; It powered down.","singulo") + investigate_log("lost a connected part; It powered down.", INVESTIGATE_SINGULO) toggle_power() update_icon() return @@ -204,7 +204,7 @@ /obj/machinery/particle_accelerator/control_box/proc/toggle_power() active = !active - investigate_log("turned [active?"ON":"OFF"] by [usr ? key_name(usr) : "outside forces"]","singulo") + investigate_log("turned [active?"ON":"OFF"] by [usr ? key_name(usr) : "outside forces"]", INVESTIGATE_SINGULO) message_admins("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? key_name_admin(usr) : "outside forces"](?) (FLW) in ([x],[y],[z] - JMP)",0,1) log_game("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? "[key_name(usr)]" : "outside forces"] in ([x],[y],[z])") if(active) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 1a308ed471..56fc6c4985 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -86,7 +86,7 @@ switch(severity) if(1) if(current_size <= STAGE_TWO) - investigate_log("has been destroyed by a heavy explosion.","singulo") + investigate_log("has been destroyed by a heavy explosion.", INVESTIGATE_SINGULO) qdel(src) return else @@ -134,7 +134,7 @@ var/count = locate(/obj/machinery/field/containment) in urange(30, src, 1) if(!count) message_admins("A singulo has been created without containment fields active ([x],[y],[z])",1) - investigate_log("was created. [count?"":"No containment fields were active"]","singulo") + investigate_log("was created. [count?"":"No containment fields were active"]", INVESTIGATE_SINGULO) /obj/singularity/proc/dissipate() if(!dissipate) @@ -219,7 +219,7 @@ consume_range = 5 dissipate = 0 if(current_size == allowed_size) - investigate_log("grew to size [current_size]","singulo") + investigate_log("grew to size [current_size]", INVESTIGATE_SINGULO) return 1 else if(current_size < (--temp_allowed_size)) expand(temp_allowed_size) @@ -229,7 +229,7 @@ /obj/singularity/proc/check_energy() if(energy <= 0) - investigate_log("collapsed.","singulo") + investigate_log("collapsed.", INVESTIGATE_SINGULO) qdel(src) return 0 switch(energy)//Some of these numbers might need to be changed up later -Mport diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index ea95b08269..d15a72a6b7 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -172,7 +172,7 @@ if(default_deconstruction_crowbar(I)) message_admins("[src] has been deconstructed by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1) log_game("[src] has been deconstructed by [key_name(user)]") - investigate_log("SMES deconstructed by [key_name(user)]","singulo") + investigate_log("SMES deconstructed by [key_name(user)]", INVESTIGATE_SINGULO) return else if(panel_open && istype(I, /obj/item/weapon/crowbar)) return @@ -284,7 +284,7 @@ if(output_used < 0.0001) // either from no charge or set to 0 outputting = 0 - investigate_log("lost power and turned off","singulo") + investigate_log("lost power and turned off", INVESTIGATE_SINGULO) else if(output_attempt && charge > output_level && output_level > 0) outputting = 1 else @@ -419,7 +419,7 @@ log_smes(usr.ckey) /obj/machinery/power/smes/proc/log_smes(user = "") - investigate_log("input/output; [input_level>output_level?"":""][input_level]/[output_level] | Charge: [charge] | Output-mode: [output_attempt?"on":"off"] | Input-mode: [input_attempt?"auto":"off"] by [user]", "singulo") + investigate_log("input/output; [input_level>output_level?"":""][input_level]/[output_level] | Charge: [charge] | Output-mode: [output_attempt?"on":"off"] | Input-mode: [input_attempt?"auto":"off"] by [user]", INVESTIGATE_SINGULO) /obj/machinery/power/smes/emp_act(severity) diff --git a/code/modules/power/smes.dm.rej b/code/modules/power/smes.dm.rej new file mode 100644 index 0000000000..cb12ea4fbb --- /dev/null +++ b/code/modules/power/smes.dm.rej @@ -0,0 +1,10 @@ +diff a/code/modules/power/smes.dm b/code/modules/power/smes.dm (rejected hunks) +@@ -196,7 +196,7 @@ + var/turf/T = get_turf(src) + message_admins("SMES deleted at [A][ADMIN_JMP(T)]") + log_game("SMES deleted at [A][COORD(T)]") +- investigate_log("deleted at [A][COORD(T)]","singulo") ++ investigate_log("deleted at [A][COORD(T)]", INVESTIGATE_SINGULO) + if(terminal) + disconnect_terminal() + return ..() diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 866041d883..b6c93979c1 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -137,11 +137,11 @@ radio.keyslot = new radio_key radio.listening = 0 radio.recalculateChannels() - investigate_log("has been created.", "supermatter") + investigate_log("has been created.", INVESTIGATE_SUPERMATTER) /obj/machinery/power/supermatter_shard/Destroy() - investigate_log("has been destroyed.", "supermatter") + investigate_log("has been destroyed.", INVESTIGATE_SUPERMATTER) SSair.atmos_machinery -= src QDEL_NULL(radio) GLOB.poi_list -= src @@ -171,16 +171,16 @@ M << 'sound/magic/Charge.ogg' to_chat(M, "You feel reality distort for a moment...") if(combined_gas > MOLE_PENALTY_THRESHOLD) - investigate_log("has collapsed into a singularity.", "supermatter") + investigate_log("has collapsed into a singularity.", INVESTIGATE_SUPERMATTER) if(T) var/obj/singularity/S = new(T) S.energy = 800 S.consume(src) else - investigate_log("has exploded.", "supermatter") + investigate_log("has exploded.", INVESTIGATE_SUPERMATTER) explosion(get_turf(T), explosion_power * max(gasmix_power_ratio, 0.205) * 0.5 , explosion_power * max(gasmix_power_ratio, 0.205) + 2, explosion_power * max(gasmix_power_ratio, 0.205) + 4 , explosion_power * max(gasmix_power_ratio, 0.205) + 6, 1, 1) if(power > POWER_PENALTY_THRESHOLD) - investigate_log("has spawned additional energy balls.", "supermatter") + investigate_log("has spawned additional energy balls.", INVESTIGATE_SUPERMATTER) var/obj/singularity/energy_ball/E = new(T) E.energy = power qdel(src) @@ -345,7 +345,7 @@ radio.talk_into(src, "[emergency_alert] Instability: [stability]%", common_channel, get_spans(), get_default_language()) lastwarning = REALTIMEOFDAY if(!has_reached_emergency) - investigate_log("has reached the emergency point for the first time.", "supermatter") + investigate_log("has reached the emergency point for the first time.", INVESTIGATE_SUPERMATTER) message_admins("[src] has reached the emergency point [ADMIN_JMP(src)].") has_reached_emergency = 1 else if(damage >= damage_archived) // The damage is still going up @@ -401,7 +401,7 @@ /obj/machinery/power/supermatter_shard/singularity_act() var/gain = 100 - investigate_log("Supermatter shard consumed by singularity.","singulo") + investigate_log("Supermatter shard consumed by singularity.", INVESTIGATE_SINGULO) message_admins("Singularity has consumed a supermatter shard and can now become stage six.") visible_message("[src] is consumed by the singularity!") for(var/mob/M in GLOB.mob_list) @@ -450,7 +450,7 @@ user.visible_message("\The [user] reaches out and touches \the [src], inducing a resonance... [user.p_their()] body starts to glow and bursts into flames before flashing into ash.",\ "You reach out and touch \the [src]. Everything starts burning and all you can hear is ringing. Your last thought is \"That was not a wise decision.\"",\ "You hear an unearthly noise as a wave of heat washes over you.") - investigate_log("has been attacked (hand) by [user]", "supermatter") + investigate_log("has been attacked (hand) by [user]", INVESTIGATE_SUPERMATTER) playsound(get_turf(src), 'sound/effects/supermatter.ogg', 50, 1) Consume(user) @@ -467,7 +467,7 @@ user.visible_message("As [user] touches \the [src] with \a [W], silence fills the room...",\ "You touch \the [src] with \the [W], and everything suddenly goes silent.\n\The [W] flashes into dust as you flinch away from \the [src].",\ "Everything suddenly goes silent.") - investigate_log("has been attacked ([W]) by [user]", "supermatter") + investigate_log("has been attacked ([W]) by [user]", INVESTIGATE_SUPERMATTER) Consume(W) playsound(get_turf(src), 'sound/effects/supermatter.ogg', 50, 1) @@ -493,13 +493,13 @@ if(isliving(AM)) var/mob/living/user = AM message_admins("[src] has consumed [key_name_admin(user)] [ADMIN_JMP(src)].") - investigate_log("has consumed [key_name(user)].", "supermatter") + investigate_log("has consumed [key_name(user)].", INVESTIGATE_SUPERMATTER) user.dust() matter_power += 200 else if(istype(AM, /obj/singularity)) return else if(isobj(AM) && !istype(AM, /obj/effect)) - investigate_log("has consumed [AM].", "supermatter") + investigate_log("has consumed [AM].", INVESTIGATE_SUPERMATTER) qdel(AM) matter_power += 200 @@ -507,7 +507,7 @@ //Some poor sod got eaten, go ahead and irradiate people nearby. radiation_pulse(get_turf(src), 4, 10, 500, 1) for(var/mob/living/L in range(10)) - investigate_log("has irradiated [L] after consuming [AM].", "supermatter") + investigate_log("has irradiated [L] after consuming [AM].", INVESTIGATE_SUPERMATTER) if(L in view()) L.show_message("As \the [src] slowly stops resonating, you find your skin covered in new radiation burns.", 1,\ "The unearthly ringing subsides and you notice you have new radiation burns.", 2) diff --git a/code/modules/power/supermatter/supermatter.dm.rej b/code/modules/power/supermatter/supermatter.dm.rej new file mode 100644 index 0000000000..784fbb78b7 --- /dev/null +++ b/code/modules/power/supermatter/supermatter.dm.rej @@ -0,0 +1,15 @@ +diff a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm (rejected hunks) +@@ -388,11 +388,11 @@ + return 0 // This stops people from being able to really power up the supermatter + // Then bring it inside to explode instantly upon landing on a valid turf. + if(!istype(Proj.firer, /obj/machinery/power/emitter)) +- investigate_log("has been hit by [Proj] fired by [Proj.firer]", "supermatter") ++ investigate_log("has been hit by [Proj] fired by [Proj.firer]", INVESTIGATE_SUPERMATTER) + if(Proj.flag != "bullet") + power += Proj.damage * config_bullet_energy + if(!has_been_powered) +- investigate_log("has been powered for the first time.", "supermatter") ++ investigate_log("has been powered for the first time.", INVESTIGATE_SUPERMATTER) + message_admins("[src] has been powered for the first time [ADMIN_JMP(src)].") + has_been_powered = 1 + else if(takes_damage) diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index fba7f241d2..8db05a0c4f 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -238,7 +238,7 @@ visible_message("[src] malfunctions and destroys [exp_on], lashing its arms out at nearby people!") for(var/mob/living/m in oview(1, src)) m.apply_damage(15, BRUTE, pick("head","chest","groin")) - investigate_log("Experimentor dealt minor brute to [m].", "experimentor") + investigate_log("Experimentor dealt minor brute to [m].", INVESTIGATE_EXPERIMENTOR) ejectItem(TRUE) else if(prob(EFFECT_PROB_LOW-badThingCoeff)) visible_message("[src] malfunctions!") @@ -248,7 +248,7 @@ var/mob/living/target = locate(/mob/living) in oview(7,src) if(target) var/obj/item/throwing = loaded_item - investigate_log("Experimentor has thrown [loaded_item] at [target]", "experimentor") + investigate_log("Experimentor has thrown [loaded_item] at [target]", INVESTIGATE_EXPERIMENTOR) ejectItem() if(throwing) throwing.throw_at(target, 10, 1) @@ -259,7 +259,7 @@ visible_message("[exp_on] has activated an unknown subroutine!") cloneMode = TRUE cloneCount = badThingCoeff - investigate_log("Experimentor has made a clone of [exp_on]", "experimentor") + investigate_log("Experimentor has made a clone of [exp_on]", INVESTIGATE_EXPERIMENTOR) ejectItem() else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src] malfunctions, melting [exp_on] and leaking radiation!") @@ -278,7 +278,7 @@ var/newPath = pickWeighted(valid_items) loaded_item = new newPath(src) visible_message("[src] malfunctions, transforming [savedName] into [loaded_item]!") - investigate_log("Experimentor has transformed [savedName] into [loaded_item]", "experimentor") + investigate_log("Experimentor has transformed [savedName] into [loaded_item]", INVESTIGATE_EXPERIMENTOR) if(istype(loaded_item,/obj/item/weapon/grenade/chem_grenade)) var/obj/item/weapon/grenade/chem_grenade/CG = loaded_item CG.prime() @@ -295,7 +295,7 @@ var/datum/reagents/R = new/datum/reagents(50) R.my_atom = src R.add_reagent(chosenchem , 50) - investigate_log("Experimentor has released [chosenchem] smoke.", "experimentor") + investigate_log("Experimentor has released [chosenchem] smoke.", INVESTIGATE_EXPERIMENTOR) var/datum/effect_system/smoke_spread/chem/smoke = new smoke.set_up(R, 0, src, silent = 1) playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3) @@ -315,14 +315,14 @@ qdel(R) ejectItem(TRUE) warn_admins(usr, "[chosenchem] smoke") - investigate_log("Experimentor has released [chosenchem] smoke!", "experimentor") + investigate_log("Experimentor has released [chosenchem] smoke!", INVESTIGATE_EXPERIMENTOR) else if(prob(EFFECT_PROB_LOW-badThingCoeff)) visible_message("[src] malfunctions, spewing harmless gas.") throwSmoke(src.loc) else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) visible_message("[src] melts [exp_on], ionizing the air around it!") empulse(src.loc, 4, 6) - investigate_log("Experimentor has generated an Electromagnetic Pulse.", "experimentor") + investigate_log("Experimentor has generated an Electromagnetic Pulse.", INVESTIGATE_EXPERIMENTOR) ejectItem(TRUE) //////////////////////////////////////////////////////////////////////////////////////////////// if(exp == SCANTYPE_HEAT) @@ -336,14 +336,14 @@ C.reagents.add_reagent(chosenchem , 50) C.name = "Cup of Suspicious Liquid" C.desc = "It has a large hazard symbol printed on the side in fading ink." - investigate_log("Experimentor has made a cup of [chosenchem] coffee.", "experimentor") + investigate_log("Experimentor has made a cup of [chosenchem] coffee.", INVESTIGATE_EXPERIMENTOR) else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) var/turf/start = get_turf(src) var/mob/M = locate(/mob/living) in view(src, 3) var/turf/MT = get_turf(M) if(MT) visible_message("[src] dangerously overheats, launching a flaming fuel orb!") - investigate_log("Experimentor has launched a fireball at [M]!", "experimentor") + investigate_log("Experimentor has launched a fireball at [M]!", INVESTIGATE_EXPERIMENTOR) var/obj/item/projectile/magic/aoe/fireball/FB = new /obj/item/projectile/magic/aoe/fireball(start) FB.original = MT FB.current = start @@ -353,7 +353,7 @@ else if(prob(EFFECT_PROB_LOW-badThingCoeff)) visible_message("[src] malfunctions, melting [exp_on] and releasing a burst of flame!") explosion(src.loc, -1, 0, 0, 0, 0, flame_range = 2) - investigate_log("Experimentor started a fire.", "experimentor") + investigate_log("Experimentor started a fire.", INVESTIGATE_EXPERIMENTOR) ejectItem(TRUE) else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) visible_message("[src] malfunctions, melting [exp_on] and leaking hot air!") @@ -367,14 +367,14 @@ removed.temperature = min((removed.temperature*heat_capacity + 100000)/heat_capacity, 1000) env.merge(removed) air_update_turf() - investigate_log("Experimentor has released hot air.", "experimentor") + investigate_log("Experimentor has released hot air.", INVESTIGATE_EXPERIMENTOR) ejectItem(TRUE) else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) visible_message("[src] malfunctions, activating its emergency coolant systems!") throwSmoke(src.loc) for(var/mob/living/m in oview(1, src)) m.apply_damage(5, BURN, pick("head","chest","groin")) - investigate_log("Experimentor has dealt minor burn damage to [m]", "experimentor") + investigate_log("Experimentor has dealt minor burn damage to [m]", INVESTIGATE_EXPERIMENTOR) ejectItem() //////////////////////////////////////////////////////////////////////////////////////////////// if(exp == SCANTYPE_COLD) @@ -388,13 +388,13 @@ C.reagents.add_reagent(chosenchem , 50) C.name = "Cup of Suspicious Liquid" C.desc = "It has a large hazard symbol printed on the side in fading ink." - investigate_log("Experimentor has made a cup of [chosenchem] coffee.", "experimentor") + investigate_log("Experimentor has made a cup of [chosenchem] coffee.", INVESTIGATE_EXPERIMENTOR) else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src] malfunctions, shattering [exp_on] and releasing a dangerous cloud of coolant!") var/datum/reagents/R = new/datum/reagents(50) R.my_atom = src R.add_reagent("frostoil" , 50) - investigate_log("Experimentor has released frostoil gas.", "experimentor") + investigate_log("Experimentor has released frostoil gas.", INVESTIGATE_EXPERIMENTOR) var/datum/effect_system/smoke_spread/chem/smoke = new smoke.set_up(R, 0, src, silent = 1) playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3) @@ -413,7 +413,7 @@ removed.temperature = (removed.temperature*heat_capacity - 75000)/heat_capacity env.merge(removed) air_update_turf() - investigate_log("Experimentor has released cold air.", "experimentor") + investigate_log("Experimentor has released cold air.", INVESTIGATE_EXPERIMENTOR) ejectItem(TRUE) else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) visible_message("[src] malfunctions, releasing a flurry of chilly air as [exp_on] pops out!") @@ -433,14 +433,14 @@ else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src]'s crusher goes way too many levels too high, crushing right through space-time!") playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 1, -3) - investigate_log("Experimentor has triggered the 'throw things' reaction.", "experimentor") + investigate_log("Experimentor has triggered the 'throw things' reaction.", INVESTIGATE_EXPERIMENTOR) for(var/atom/movable/AM in oview(7,src)) if(!AM.anchored) AM.throw_at(src,10,1) else if(prob(EFFECT_PROB_LOW-badThingCoeff)) visible_message("[src]'s crusher goes one level too high, crushing right into space-time!") playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 1, -3) - investigate_log("Experimentor has triggered the 'minor throw things' reaction.", "experimentor") + investigate_log("Experimentor has triggered the 'minor throw things' reaction.", INVESTIGATE_EXPERIMENTOR) var/list/throwAt = list() for(var/atom/movable/AM in oview(7,src)) if(!AM.anchored) @@ -460,7 +460,7 @@ playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 3, -1) var/obj/item/weapon/relic/R = loaded_item R.reveal() - investigate_log("Experimentor has revealed a relic with [R.realProc] effect.", "experimentor") + investigate_log("Experimentor has revealed a relic with [R.realProc] effect.", INVESTIGATE_EXPERIMENTOR) ejectItem() //Global reactions @@ -476,32 +476,32 @@ if(trackedIan) throwSmoke(trackedIan.loc) trackedIan.loc = src.loc - investigate_log("Experimentor has stolen Ian!", "experimentor") //...if anyone ever fixes it... + investigate_log("Experimentor has stolen Ian!", INVESTIGATE_EXPERIMENTOR) //...if anyone ever fixes it... else new /mob/living/simple_animal/pet/dog/corgi(src.loc) - investigate_log("Experimentor has spawned a new corgi.", "experimentor") + investigate_log("Experimentor has spawned a new corgi.", INVESTIGATE_EXPERIMENTOR) ejectItem(TRUE) if(globalMalf > 36 && globalMalf < 50) visible_message("Experimentor draws the life essence of those nearby!") for(var/mob/living/m in view(4,src)) to_chat(m, "You feel your flesh being torn from you, mists of blood drifting to [src]!") m.apply_damage(50, BRUTE, "chest") - investigate_log("Experimentor has taken 50 brute a blood sacrifice from [m]", "experimentor") + investigate_log("Experimentor has taken 50 brute a blood sacrifice from [m]", INVESTIGATE_EXPERIMENTOR) if(globalMalf > 51 && globalMalf < 75) visible_message("[src] encounters a run-time error!") throwSmoke(src.loc) if(trackedRuntime) throwSmoke(trackedRuntime.loc) trackedRuntime.loc = src.loc - investigate_log("Experimentor has stolen Runtime!", "experimentor") + investigate_log("Experimentor has stolen Runtime!", INVESTIGATE_EXPERIMENTOR) else new /mob/living/simple_animal/pet/cat(src.loc) - investigate_log("Experimentor failed to steal runtime, and instead spawned a new cat.", "experimentor") + investigate_log("Experimentor failed to steal runtime, and instead spawned a new cat.", INVESTIGATE_EXPERIMENTOR) ejectItem(TRUE) if(globalMalf > 76) visible_message("[src] begins to smoke and hiss, shaking violently!") use_power(500000) - investigate_log("Experimentor has drained power from its APC", "experimentor") + investigate_log("Experimentor has drained power from its APC", INVESTIGATE_EXPERIMENTOR) spawn(resetTime) icon_state = "h_lathe" diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 31fa13f094..fb4a4b9af3 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -447,7 +447,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, for(var/i = 0, i Date: Tue, 23 May 2017 13:44:19 -0500 Subject: [PATCH 003/122] Fixes advanced cam not cleaning up properly --- code/datums/holocall.dm | 2 +- code/game/gamemodes/miniantags/abduction/machinery/camera.dm | 2 +- code/game/machinery/computer/camera_advanced.dm | 2 +- code/modules/research/xenobiology/xenobio_camera.dm | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm index 8f18f8b1fe..a3157e6514 100644 --- a/code/datums/holocall.dm +++ b/code/datums/holocall.dm @@ -46,7 +46,7 @@ user.reset_perspective() if(user.client) for(var/datum/camerachunk/chunk in eye.visibleCameraChunks) - user.client.images -= chunk.obscured + chunk.remove(eye) user.remote_control = null QDEL_NULL(eye) diff --git a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm b/code/game/gamemodes/miniantags/abduction/machinery/camera.dm index 4bbdd0ca18..1e725bccba 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/camera.dm @@ -75,7 +75,7 @@ if(C.client) C.client.images -= remote_eye.user_image for(var/datum/camerachunk/chunk in remote_eye.visibleCameraChunks) - C.client.images -= chunk.obscured + chunk.remove(remote_eye) C.remote_control = null C.unset_machine() Remove(C) diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index 39cdb1478c..e3637d3430 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -157,7 +157,7 @@ obj/machinery/computer/camera_advanced/attack_ai(mob/user) if(remote_eye.visible_icon) C.client.images -= remote_eye.user_image for(var/datum/camerachunk/chunk in remote_eye.visibleCameraChunks) - C.client.images -= chunk.obscured + chunk.remove(remote_eye) C.remote_control = null C.unset_machine() Remove(C) diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index bd34ff60c0..ff7c3f6340 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -101,7 +101,7 @@ if(C.client) C.client.images -= remote_eye.user_image for(var/datum/camerachunk/chunk in remote_eye.visibleCameraChunks) - C.client.images -= chunk.obscured + chunk.remove(remote_eye) C.remote_control = null C.unset_machine() Remove(C) From b8b879af45754ee70861834d14d3c9af7108d409 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 23 May 2017 15:29:11 -0500 Subject: [PATCH 004/122] Gibtonite now uses defines --- code/__DEFINES/misc.dm | 6 ++++++ code/game/turfs/simulated/minerals.dm | 24 ++++++++++++------------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 8b02a61fba..6a7e3b3b2e 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -411,3 +411,9 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define NO_FIELD 0 #define FIELD_TURF 1 #define FIELD_EDGE 2 + +//gibtonite state defines +#define GIBTONITE_UNSTRUCK 0 +#define GIBTONITE_ACTIVE 1 +#define GIBTONITE_STABLE 2 +#define GIBTONITE_DETONATE 3 \ No newline at end of file diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm index 708427a11a..0a8230e186 100644 --- a/code/game/turfs/simulated/minerals.dm +++ b/code/game/turfs/simulated/minerals.dm @@ -379,7 +379,7 @@ spread = 0 scan_state = "rock_Gibtonite" var/det_time = 8 //Countdown till explosion, but also rewards the player for how close you were to detonation when you defuse it - var/stage = 0 //How far into the lifecycle of gibtonite we are, 0 is untouched, 1 is active and attempting to detonate, 2 is benign and ready for extraction + var/stage = GIBTONITE_UNSTRUCK //How far into the lifecycle of gibtonite we are var/activated_ckey = null //These are to track who triggered the gibtonite deposit for logging purposes var/activated_name = null var/mutable_appearance/activated_overlay @@ -395,12 +395,12 @@ ..() /turf/closed/mineral/gibtonite/proc/explosive_reaction(mob/user = null, triggered_by_explosion = 0) - if(stage == 0) + if(stage == GIBTONITE_UNSTRUCK) activated_overlay = mutable_appearance('icons/turf/smoothrocks.dmi', "rock_Gibtonite_active", ON_EDGED_TURF_LAYER) add_overlay(activated_overlay) name = "gibtonite deposit" desc = "An active gibtonite reserve. Run!" - stage = 1 + stage = GIBTONITE_ACTIVE visible_message("There was gibtonite inside! It's going to explode!") var/turf/bombturf = get_turf(src) var/area/A = get_area(bombturf) @@ -422,38 +422,38 @@ /turf/closed/mineral/gibtonite/proc/countdown(notify_admins = 0) set waitfor = 0 - while(istype(src, /turf/closed/mineral/gibtonite) && stage == 1 && det_time > 0 && mineralAmt >= 1) + while(istype(src, /turf/closed/mineral/gibtonite) && stage == GIBTONITE_ACTIVE && det_time > 0 && mineralAmt >= 1) det_time-- sleep(5) if(istype(src, /turf/closed/mineral/gibtonite)) - if(stage == 1 && det_time <= 0 && mineralAmt >= 1) + if(stage == GIBTONITE_ACTIVE && det_time <= 0 && mineralAmt >= 1) var/turf/bombturf = get_turf(src) mineralAmt = 0 - stage = 3 + stage = GIBTONITE_DETONATE explosion(bombturf,1,3,5, adminlog = notify_admins) /turf/closed/mineral/gibtonite/proc/defuse() - if(stage == 1) + if(stage == GIBTONITE_ACTIVE) cut_overlay(activated_overlay) activated_overlay.icon_state = "rock_Gibtonite_inactive" add_overlay(activated_overlay) desc = "An inactive gibtonite reserve. The ore can be extracted." - stage = 2 + stage = GIBTONITE_STABLE if(det_time < 0) det_time = 0 visible_message("The chain reaction was stopped! The gibtonite had [src.det_time] reactions left till the explosion!") /turf/closed/mineral/gibtonite/gets_drilled(mob/user, triggered_by_explosion = 0) - if(stage == 0 && mineralAmt >= 1) //Gibtonite deposit is activated + if(stage == GIBTONITE_UNSTRUCK && mineralAmt >= 1) //Gibtonite deposit is activated playsound(src,'sound/effects/hit_on_shattered_glass.ogg',50,1) explosive_reaction(user, triggered_by_explosion) return - if(stage == 1 && mineralAmt >= 1) //Gibtonite deposit goes kaboom + if(stage == GIBTONITE_ACTIVE && mineralAmt >= 1) //Gibtonite deposit goes kaboom var/turf/bombturf = get_turf(src) mineralAmt = 0 - stage = 3 + stage = GIBTONITE_DETONATE explosion(bombturf,1,2,5, adminlog = 0) - if(stage == 2) //Gibtonite deposit is now benign and extractable. Depending on how close you were to it blowing up before defusing, you get better quality ore. + 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/weapon/twohanded/required/gibtonite/G = new /obj/item/weapon/twohanded/required/gibtonite/(src) if(det_time <= 0) G.quality = 3 From ab7e9539bd46e330eecfe7697c70bc4794843181 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 00:13:03 -0500 Subject: [PATCH 005/122] Tactical Energy Gun Unique Sprites --- .../projectiles/guns/energy/energy_gun.dm.rej | 10 ++++++++++ icons/obj/guns/energy.dmi | Bin 32651 -> 34126 bytes 2 files changed, 10 insertions(+) create mode 100644 code/modules/projectiles/guns/energy/energy_gun.dm.rej diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm.rej b/code/modules/projectiles/guns/energy/energy_gun.dm.rej new file mode 100644 index 0000000000..b99e426279 --- /dev/null +++ b/code/modules/projectiles/guns/energy/energy_gun.dm.rej @@ -0,0 +1,10 @@ +diff a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm (rejected hunks) +@@ -35,7 +35,7 @@ + name = "tactical energy gun" + desc = "Military issue energy gun, is able to fire stun rounds." + icon_state = "energytac" +- item_state = "energy" ++ ammo_x_offset = 2 + ammo_type = list(/obj/item/ammo_casing/energy/electrode/spec, /obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser) + + /obj/item/weapon/gun/energy/e_gun/mini/practice_phaser diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi index 71b1474a660cb9a4a3b628ad5b1aa7860b924a5d..d8c4010aeff05bd84bf365acc35bdd862f263620 100644 GIT binary patch literal 34126 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 Zdg=ak{HA~?u#klyZB6}~Mb~XZ|2H?h{FMLz literal 32651 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 CI>~YX From 5fe4c7eb0775d8243c82a18f6c8f08a4f69f2f1b Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 00:14:08 -0500 Subject: [PATCH 006/122] Sketchin Alt Magazine Sprites --- .../boxes_magazines/external_mag.dm | 3 +++ icons/obj/ammo.dmi | Bin 20666 -> 21062 bytes 2 files changed, 3 insertions(+) diff --git a/code/modules/projectiles/boxes_magazines/external_mag.dm b/code/modules/projectiles/boxes_magazines/external_mag.dm index 8733cd2e1e..c2a7129b4e 100644 --- a/code/modules/projectiles/boxes_magazines/external_mag.dm +++ b/code/modules/projectiles/boxes_magazines/external_mag.dm @@ -30,16 +30,19 @@ /obj/item/ammo_box/magazine/m10mm/fire name = "pistol magazine (10mm incendiary)" + icon_state = "9x19pI" desc = "A gun magazine. Loaded with rounds which ignite the target." ammo_type = /obj/item/ammo_casing/c10mm/fire /obj/item/ammo_box/magazine/m10mm/hp name = "pistol magazine (10mm HP)" + icon_state = "9x19pH" desc= "A gun magazine. Loaded with hollow-point rounds, extremely effective against unarmored targets, but nearly useless against protective clothing." ammo_type = /obj/item/ammo_casing/c10mm/hp /obj/item/ammo_box/magazine/m10mm/ap name = "pistol magazine (10mm AP)" + icon_state = "9x19pA" desc= "A gun magazine. Loaded with rounds which penetrate armour, but are less effective against normal targets" ammo_type = /obj/item/ammo_casing/c10mm/ap diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index 33149a3e2e102576466033b5920b54f0b85fe1e0..24323f5cf32353111fa79aaef1ee8200de5d0c69 100644 GIT binary patch literal 21062 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 E1u<^PnE(I) literal 20666 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 Date: Wed, 24 May 2017 00:15:13 -0500 Subject: [PATCH 007/122] Prevents inserted inert legion cores from healing --- .../simple_animal/hostile/mining_mobs.dm | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index e3e4e37396..eaabcf5980 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -255,10 +255,8 @@ addtimer(CALLBACK(src, .proc/inert_check), 2400) /obj/item/organ/hivelord_core/proc/inert_check() - if(!owner && !preserved) + if(!preserved) go_inert() - else - preserved(implanted = 1) /obj/item/organ/hivelord_core/proc/preserved(implanted = 0) inert = FALSE @@ -278,7 +276,10 @@ update_icon() /obj/item/organ/hivelord_core/ui_action_click() - owner.revive(full_heal = 1) + if(inert) + to_chat(owner, "[src] breaks down as it tries to activate.") + else + owner.revive(full_heal = 1) qdel(src) /obj/item/organ/hivelord_core/on_life() @@ -306,6 +307,18 @@ qdel(src) ..() +/obj/item/organ/hivelord_core/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE) + . = ..() + if(!preserved && !inert) + preserved(TRUE) + owner.visible_message("[src] stabilizes as it's inserted.") + +/obj/item/organ/hivelord_core/Remove(mob/living/carbon/M, special = 0) + if(!inert && !special) + owner.visible_message("[src] goes inert as it's removed.") + go_inert() + return ..() + /obj/item/organ/hivelord_core/prepare_eat() return null From 14427a2b8c95a0568356991343f00f8d458e4433 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 05:52:37 -0500 Subject: [PATCH 008/122] Ballistic Weapon/Shotgun Reload Sounds --- code/modules/projectiles/box_magazine.dm | 2 ++ .../projectiles/guns/ballistic/automatic.dm | 7 +++++++ .../projectiles/guns/ballistic/revolver.dm | 2 ++ .../projectiles/guns/ballistic/shotgun.dm | 1 + sound/weapons/autoguninsert.ogg | Bin 0 -> 16218 bytes sound/weapons/bulletinsert.ogg | Bin 0 -> 8527 bytes sound/weapons/bulletremove.ogg | Bin 0 -> 43594 bytes sound/weapons/magin.ogg | Bin 0 -> 7120 bytes sound/weapons/magout.ogg | Bin 0 -> 8125 bytes sound/weapons/sawclose.ogg | Bin 0 -> 17067 bytes sound/weapons/sawopen.ogg | Bin 0 -> 20339 bytes sound/weapons/shotguninsert.ogg | Bin 0 -> 11662 bytes 12 files changed, 12 insertions(+) create mode 100644 sound/weapons/autoguninsert.ogg create mode 100644 sound/weapons/bulletinsert.ogg create mode 100644 sound/weapons/bulletremove.ogg create mode 100644 sound/weapons/magin.ogg create mode 100644 sound/weapons/magout.ogg create mode 100644 sound/weapons/sawclose.ogg create mode 100644 sound/weapons/sawopen.ogg create mode 100644 sound/weapons/shotguninsert.ogg diff --git a/code/modules/projectiles/box_magazine.dm b/code/modules/projectiles/box_magazine.dm index 982bbdf587..028aebe66a 100644 --- a/code/modules/projectiles/box_magazine.dm +++ b/code/modules/projectiles/box_magazine.dm @@ -86,6 +86,7 @@ if(num_loaded) if(!silent) to_chat(user, "You load [num_loaded] shell\s into \the [src]!") + playsound(user, 'sound/weapons/bulletinsert.ogg', 60, 1) A.update_icon() update_icon() @@ -96,6 +97,7 @@ if(A) user.put_in_hands(A) to_chat(user, "You remove a round from \the [src]!") + playsound(user, 'sound/weapons/bulletremove.ogg', 60, 1) update_icon() /obj/item/ammo_box/update_icon() diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 0235bbe84d..2f7036cab8 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -44,6 +44,8 @@ oldmag.update_icon() else to_chat(user, "You insert the magazine into \the [src].") + + playsound(user, 'sound/weapons/autoguninsert.ogg', 60, 1) chamber_round() A.update_icon() update_icon() @@ -300,6 +302,10 @@ /obj/item/weapon/gun/ballistic/automatic/l6_saw/attack_self(mob/user) cover_open = !cover_open to_chat(user, "You [cover_open ? "open" : "close"] [src]'s cover.") + if(cover_open) + playsound(user, 'sound/weapons/sawopen.ogg', 60, 1) + else + playsound(user, 'sound/weapons/sawclose.ogg', 60, 1) update_icon() @@ -330,6 +336,7 @@ magazine = null update_icon() to_chat(user, "You remove the magazine from [src].") + playsound(user, 'sound/weapons/magout.ogg', 60, 1) /obj/item/weapon/gun/ballistic/automatic/l6_saw/attackby(obj/item/A, mob/user, params) diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index ac3c56b88a..892defa9f4 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -28,6 +28,7 @@ var/num_loaded = magazine.attackby(A, user, params, 1) if(num_loaded) to_chat(user, "You load [num_loaded] shell\s into \the [src].") + playsound(user, 'sound/weapons/bulletinsert.ogg', 60, 1) A.update_icon() update_icon() chamber_round(0) @@ -45,6 +46,7 @@ num_unloaded++ if (num_unloaded) to_chat(user, "You unload [num_unloaded] shell\s from [src].") + playsound(user, 'sound/weapons/bulletremove.ogg', 60, 1) else to_chat(user, "[src] is empty!") diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index 5f376370d4..918acd27a1 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -20,6 +20,7 @@ var/num_loaded = magazine.attackby(A, user, params, 1) if(num_loaded) to_chat(user, "You load [num_loaded] shell\s into \the [src]!") + playsound(user, 'sound/weapons/shotguninsert.ogg', 60, 1) A.update_icon() update_icon() diff --git a/sound/weapons/autoguninsert.ogg b/sound/weapons/autoguninsert.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f68139968e0a64ca1ea0921aa46dcdc2f62447e8 GIT binary patch literal 16218 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 UHhy$C3gGe;!$<;H27LkkFI8?Q;{X5v literal 0 HcmV?d00001 diff --git a/sound/weapons/bulletinsert.ogg b/sound/weapons/bulletinsert.ogg new file mode 100644 index 0000000000000000000000000000000000000000..789ee15b0837be455c05efcc0609557fb644c40d GIT binary patch literal 8527 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
" + var/dat = "Bombing List
" for(var/l in GLOB.bombers) dat += text("[l]
") usr << browse(dat, "window=bombers") From 7d75b70ff07d890e64901531e46c20f8ef61cf8c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 16:21:19 -0500 Subject: [PATCH 030/122] Renames a var --- .../clothing/glasses/engine_goggles.dm | 24 ++++--------- code/modules/clothing/glasses/glasses.dm | 36 ++++++++----------- 2 files changed, 22 insertions(+), 38 deletions(-) diff --git a/code/modules/clothing/glasses/engine_goggles.dm b/code/modules/clothing/glasses/engine_goggles.dm index 2f70c3bfdf..61cca9b24a 100644 --- a/code/modules/clothing/glasses/engine_goggles.dm +++ b/code/modules/clothing/glasses/engine_goggles.dm @@ -7,18 +7,18 @@ actions_types = list(/datum/action/item_action/toggle_mode) origin_tech = "materials=3;magnets=3;engineering=3;plasmatech=3" - mode = FALSE //FALSE - regular mesons mode TRUE - t-ray mode + mesons_on = TRUE //if set to FALSE, these goggles work as t-ray scanners. var/range = 1 /obj/item/clothing/glasses/meson/engine/toggle_mode(mob/user, voluntary) var/turf/T = get_turf(src) - if(T && T.z == ZLEVEL_MINING && mode) + if(T && T.z == ZLEVEL_MINING && !mesons_on) if(picked_excuse) to_chat(user, "Due to [picked_excuse], the [name] cannot currently be swapped to \[Meson] mode.") return - mode = !mode + mesons_on = !mesons_on - if(mode) + if(!mesons_on) vision_flags = 0 darkness_view = 2 invis_view = SEE_INVISIBLE_LIVING @@ -50,7 +50,7 @@ toggle_mode(user, TRUE) /obj/item/clothing/glasses/meson/engine/process() - if(!mode) + if(mesons_on) var/turf/T = get_turf(src) if(T && T.z == ZLEVEL_MINING) toggle_mode(loc) @@ -83,15 +83,8 @@ if(M.client) flick_overlay(I, list(M.client), 8) -/obj/item/clothing/glasses/meson/engine/proc/t_ray_on() - if(!ishuman(loc)) - return 0 - - var/mob/living/carbon/human/user = loc - return mode & (user.glasses == src) - /obj/item/clothing/glasses/meson/engine/update_icon() - icon_state = mode ? "trayson-tray" : "trayson-meson" + icon_state = mesons_on ? "trayson-meson" : "trayson-tray" if(istype(loc,/mob/living/carbon/human/)) var/mob/living/carbon/human/user = loc if(user.glasses == src) @@ -103,7 +96,7 @@ icon_state = "trayson-tray_off" origin_tech = "materials=3;magnets=2;engineering=2" - mode = TRUE + mesons_on = FALSE var/on = FALSE vision_flags = 0 darkness_view = 2 @@ -135,6 +128,3 @@ for(var/X in actions) var/datum/action/A = X A.UpdateButtonIcon() - -/obj/item/clothing/glasses/meson/engine/tray/t_ray_on() - return on && ..() diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 1cc0cc6163..063f3894c9 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -42,7 +42,7 @@ var/static/list/meson_mining_failure_excuses = list("seismic activity", "excessive lava", "ambient radiation", "electromagnetic storms", "bluespace disruption", \ "gravity", "dust", "dense rock", "ash", "badly understood science", "radiant heat") var/picked_excuse - var/mode = FALSE //if FALSE, is in normal meson mode. + var/mesons_on = TRUE /obj/item/clothing/glasses/meson/Initialize() . = ..() @@ -56,34 +56,28 @@ /obj/item/clothing/glasses/meson/examine(mob/user) ..() var/turf/T = get_turf(src) - if(T && T.z == ZLEVEL_MINING && mode && picked_excuse) + if(T && T.z == ZLEVEL_MINING && !mesons_on && picked_excuse) to_chat(user, "Due to [picked_excuse], these Meson Scanners will not be able to display terrain layouts in this area.") /obj/item/clothing/glasses/meson/proc/toggle_mode(mob/user) - if(vision_flags & SEE_TURFS) - mode = TRUE - vision_flags &= ~SEE_TURFS - if(ishuman(user)) - var/mob/living/carbon/human/H = user - if(picked_excuse) - to_chat(H, "Due to [picked_excuse], your Meson Scanners will not be able to display terrain layouts in this area.") - if(H.glasses == src) - H.update_sight() - else if(!(vision_flags & SEE_TURFS)) - mode = FALSE - vision_flags |= SEE_TURFS - if(ishuman(user)) - var/mob/living/carbon/human/H = user - to_chat(H, "Your Meson Scanners have reactivated.") - if(H.glasses == src) - H.update_sight() + vision_flags ^= SEE_TURFS + mesons_on = (vision_flags & SEE_TURFS)? TRUE : FALSE + + if(iscarbon(user)) //only carbons can wear glasses + var/mob/living/carbon/C = user + if(!mesons_on) + to_chat(C, "Your Meson Scanners have reactivated.") + else if(picked_excuse) + to_chat(C, "Due to [picked_excuse], your Meson Scanners will not be able to display terrain layouts in this area.") + if(C.glasses == src) + C.update_sight() /obj/item/clothing/glasses/meson/process() var/turf/T = get_turf(src) if(T && T.z == ZLEVEL_MINING) - if(!mode) + if(mesons_on) //if we're on mining, turn mesons OFF toggle_mode(loc) - else if(mode) + else if(!mesons_on) //otherwise, if we're not on mining, turn mesons back ON toggle_mode(loc) /obj/item/clothing/glasses/meson/night From 85d474885b0227229271a999cc9ebe3607f5f9c6 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 16:30:36 -0500 Subject: [PATCH 031/122] Brains extracted from infectious zombies keep their old species --- code/modules/mob/living/brain/brain_item.dm | 3 +++ code/modules/zombie/organs.dm | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index f137299581..aa9e133165 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -72,6 +72,9 @@ if(!brainmob.stored_dna) brainmob.stored_dna = new /datum/dna/stored(brainmob) C.dna.copy_dna(brainmob.stored_dna) + var/obj/item/organ/zombie_infection/ZI = L.getorganslot("zombie_infection") + if(ZI) + brainmob.set_species(ZI.old_species) //For if the brain is cloned if(L.mind && L.mind.current) L.mind.transfer_to(brainmob) to_chat(brainmob, "You feel slightly disoriented. That's normal when you're just a brain.") diff --git a/code/modules/zombie/organs.dm b/code/modules/zombie/organs.dm index 3515da0dc6..c93699a2ac 100644 --- a/code/modules/zombie/organs.dm +++ b/code/modules/zombie/organs.dm @@ -70,8 +70,10 @@ var/stand_up = (owner.stat == DEAD) || (owner.stat == UNCONSCIOUS) + if(!owner.revive(full_heal = TRUE)) + return + owner.grab_ghost() - owner.revive(full_heal = TRUE) owner.visible_message("[owner] suddenly convulses, as [owner.p_they()][stand_up ? " stagger to [owner.p_their()] feet and" : ""] gain a ravenous hunger in [owner.p_their()] eyes!", "You HUNGER!") playsound(owner.loc, 'sound/hallucinations/far_noise.ogg', 50, 1) owner.do_jitter_animation(living_transformation_time * 10) From 29384db52f654acdaa52c0aeb74eed1ce0bddf3e Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 18:20:41 -0500 Subject: [PATCH 032/122] Improves collector feedback --- code/modules/power/singularity/collector.dm | 22 ++++++++++++------- .../power/singularity/collector.dm.rej | 12 ++++++++++ 2 files changed, 26 insertions(+), 8 deletions(-) create mode 100644 code/modules/power/singularity/collector.dm.rej diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 7f6bfb3026..28e8709984 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -73,28 +73,34 @@ GLOBAL_LIST_EMPTY(rad_collectors) /obj/machinery/power/rad_collector/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/device/multitool)) to_chat(user, "The [W.name] detects that [last_power]W were recently produced.") - return 1 + return TRUE else if(istype(W, /obj/item/device/analyzer) && loaded_tank) atmosanalyzer_scan(loaded_tank.air_contents, user) else if(istype(W, /obj/item/weapon/tank/internals/plasma)) if(!anchored) to_chat(user, "The [src] needs to be secured to the floor first!") - return 1 + return TRUE if(loaded_tank) to_chat(user, "There's already a plasma tank loaded!") - return 1 + return TRUE if(!user.drop_item()) - return 1 + return TRUE loaded_tank = W W.forceMove(src) update_icons() else if(istype(W, /obj/item/weapon/crowbar)) - if(loaded_tank && !locked) + if(loaded_tank) + if(locked) + to_chat(user, "The controls are locked!") + return TRUE eject() - return 1 + return TRUE + else + to_chat(user, "There isn't a tank loaded!") + return TRUE else if(istype(W, /obj/item/weapon/wrench)) default_unfasten_wrench(user, W, 0) - return 1 + return TRUE else if(W.GetID()) if(allowed(user)) if(active) @@ -104,7 +110,7 @@ GLOBAL_LIST_EMPTY(rad_collectors) to_chat(user, "The controls can only be locked when \the [src] is active!") else to_chat(user, "Access denied.") - return 1 + return TRUE else return ..() diff --git a/code/modules/power/singularity/collector.dm.rej b/code/modules/power/singularity/collector.dm.rej new file mode 100644 index 0000000000..68aa14d5d7 --- /dev/null +++ b/code/modules/power/singularity/collector.dm.rej @@ -0,0 +1,12 @@ +diff a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm (rejected hunks) +@@ -46,7 +46,9 @@ GLOBAL_LIST_EMPTY(rad_collectors) + toggle_power() + user.visible_message("[user.name] turns the [src.name] [active? "on":"off"].", \ + "You turn the [src.name] [active? "on":"off"].") +- var/fuel = loaded_tank.air_contents.gases["plasma"] ++ var/fuel ++ if(loaded_tank) ++ fuel = loaded_tank.air_contents.gases["plasma"] + fuel = fuel ? fuel[MOLES] : 0 + investigate_log("turned [active?"on":"off"] by [user.key]. [loaded_tank?"Fuel: [round(fuel/0.29)]%":"It is empty"].","singulo") + return From b86db49d5009d0fe87542a59c28e11b638a8aaa2 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 18:28:52 -0500 Subject: [PATCH 033/122] Crushers now actually mark --- code/datums/status_effects/debuffs.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index f24ad5f7c3..92ee2e6462 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -181,6 +181,7 @@ marked_underlay.pixel_x = -owner.pixel_x marked_underlay.pixel_y = -owner.pixel_y owner.underlays += marked_underlay + return TRUE return FALSE /datum/status_effect/crusher_mark/Destroy() From 1cfd18a757f33ef2933a95e0db63970631147c5f Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 18:28:56 -0500 Subject: [PATCH 034/122] Fixes SSlighting Recovery --- code/controllers/subsystem/lighting.dm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/code/controllers/subsystem/lighting.dm b/code/controllers/subsystem/lighting.dm index 35d8a3d08f..bcb94c835b 100644 --- a/code/controllers/subsystem/lighting.dm +++ b/code/controllers/subsystem/lighting.dm @@ -15,14 +15,15 @@ SUBSYSTEM_DEF(lighting) /datum/controller/subsystem/lighting/Initialize(timeofday) - if (config.starlight) - for(var/I in GLOB.sortedAreas) - var/area/A = I - if (A.dynamic_lighting == DYNAMIC_LIGHTING_IFSTARLIGHT) - A.luminosity = 0 + if(!initialized) + if (config.starlight) + for(var/I in GLOB.sortedAreas) + var/area/A = I + if (A.dynamic_lighting == DYNAMIC_LIGHTING_IFSTARLIGHT) + A.luminosity = 0 - create_all_lighting_objects() - initialized = TRUE + create_all_lighting_objects() + initialized = TRUE fire(FALSE, TRUE) From 36c14b3e71c5fc03fe7575cbdcbf88cf8d4d32ae Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 25 May 2017 07:29:47 -0500 Subject: [PATCH 035/122] fixes AOE projectile automatic proximity detonation --- code/modules/projectiles/projectile/magic.dm | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 5cd94748e4..05bdd7da3f 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -351,21 +351,9 @@ /obj/item/projectile/magic/aoe/Range() if(proxdet) - var/turf/T1 = get_step(src,turn(dir, -45)) - var/turf/T2 = get_step(src,turn(dir, 45)) - var/turf/T3 = get_step(src,dir) - var/mob/living/L = locate(/mob/living) in T1 //if there's a mob alive in our front right diagonal, we hit it. - if(L && L.stat != DEAD) - Bump(L,1) //Magic Bullet #teachthecontroversy - return - L = locate(/mob/living) in T2 - if(L && L.stat != DEAD) - Bump(L,1) - return - L = locate(/mob/living) in T3 - if(L && L.stat != DEAD) - Bump(L,1) - return + for(var/mob/living/L in range(1, get_turf(src))) + if(L.stat != DEAD && L != firer) + return Bump(L, TRUE) ..() /obj/item/projectile/magic/aoe/lightning From 350817340385f85f8e6705385fe9ed62c2d114c8 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 25 May 2017 08:36:59 -0500 Subject: [PATCH 036/122] Removes the shadowshroom admin message --- code/modules/hydroponics/grown/mushrooms.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm index 61eb397b92..fc34fbad83 100644 --- a/code/modules/hydroponics/grown/mushrooms.dm +++ b/code/modules/hydroponics/grown/mushrooms.dm @@ -306,6 +306,5 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom/attack_self(mob/user) . = ..() if(.) - message_admins("Shadowshroom planted by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(user)]",0,1) investigate_log("was planted by [key_name(user)] at [COORD(user)]", INVESTIGATE_BOTANY) From e4fc93678936fa5e467cd41324e4728adb43d037 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 25 May 2017 08:38:05 -0500 Subject: [PATCH 037/122] INDESTRUCTIBLE objects are no longer affected by explosions --- code/game/objects/obj_defense.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index 702e72842f..44281fb26f 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -48,6 +48,8 @@ take_damage(tforce, BRUTE, "melee", 1, get_dir(src, AM)) /obj/ex_act(severity, target) + if(resistance_flags & INDESTRUCTIBLE) + return ..() //contents explosion if(target == src) qdel(src) @@ -256,4 +258,4 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e if(can_break && integrity_failure && current_integrity <= integrity_failure) obj_break(damage_type) return TRUE - return FALSE \ No newline at end of file + return FALSE From 7998cdcd9a8f89c329c75b5dcdeb2b5838dfdb15 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 25 May 2017 08:45:28 -0500 Subject: [PATCH 038/122] Gang Icons and Fixes --- .../machinery/porta_turret/portable_turret.dm | 32 ++++++++++++------ icons/obj/guns/projectile.dmi | Bin 31624 -> 31842 bytes 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 22c6c57b17..6fa58e5ba2 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -227,7 +227,6 @@ update_icon() - /obj/machinery/porta_turret/attackby(obj/item/I, mob/user, params) if(stat & BROKEN) if(istype(I, /obj/item/weapon/crowbar)) @@ -947,6 +946,7 @@ var/atom/target var/turf/target_turf var/warned = FALSE + var/mouseparams //BUCKLE HOOKS @@ -990,8 +990,8 @@ icon = 'icons/obj/weapons.dmi' icon_state = "offhand" w_class = WEIGHT_CLASS_HUGE - flags = ABSTRACT | NODROP - resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF | NOBLUDGEON + flags = ABSTRACT | NODROP | NOBLUDGEON + resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF var/obj/machinery/manned_turret/turret /obj/item/gun_control/New(obj/machinery/manned_turret/MT) @@ -1003,11 +1003,22 @@ /obj/item/gun_control/CanItemAutoclick() return 1 -/obj/item/gun_control/afterattack(atom/targeted_atom, mob/user) +/obj/item/gun_control/attack_obj(obj/O, mob/living/user) + user.changeNext_move(CLICK_CD_MELEE) + O.attacked_by(src, user) + +/obj/item/gun_control/attack(mob/living/M, mob/living/user) + user.lastattacked = M + M.lastattacker = user + M.attacked_by(src, user) + add_fingerprint(user) + +/obj/item/gun_control/afterattack(atom/targeted_atom, mob/user, flag, params) ..() var/obj/machinery/manned_turret/E = user.buckled E.setDir(get_dir(E,targeted_atom)) user.setDir(E.dir) + E.mouseparams = params switch(E.dir) if(NORTH) E.layer = BELOW_MOB_LAYER @@ -1055,15 +1066,15 @@ else cooldown = world.time + cooldown_duration warned = FALSE - INVOKE_ASYNC(src, /obj/machinery/manned_turret/.proc/volley) + volley(user) -/obj/machinery/manned_turret/proc/volley() +/obj/machinery/manned_turret/proc/volley(mob/user) target_turf = get_turf(target) for(var/i in 1 to number_of_shots) - addtimer(CALLBACK(src, /obj/machinery/manned_turret/.proc/fire_helper), i*rate_of_fire) + addtimer(CALLBACK(src, /obj/machinery/manned_turret/.proc/fire_helper, user), i*rate_of_fire) -/obj/machinery/manned_turret/proc/fire_helper() +/obj/machinery/manned_turret/proc/fire_helper(mob/user) if(!src) return var/turf/targets_from = get_turf(src) @@ -1072,11 +1083,10 @@ var/obj/item/projectile/P = new projectile_type(targets_from) P.current = targets_from P.starting = targets_from - P.firer = src + P.firer = user P.original = target playsound(src, 'sound/weapons/Gunshot_smg.ogg', 75, 1) - P.yo = target.y - targets_from.y + rand(-1,1) - P.xo = target.x - targets_from.x + rand(-1,1) + P.preparePixelProjectile(target, target_turf, user, mouseparams, rand(-9, 9)) P.fire() /obj/machinery/manned_turret/ultimate // Admin-only proof of concept for autoclicker automatics diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index 611a27e6a70ddfa3a1c6d21b4037e002953a6625..7cb9f2a3ff850efb26d82416b0aa04f60c0a4163 100644 GIT binary patch delta 11430 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 From 798d5fbff218806981ce85f07659f9f5dfaaaae0 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 25 May 2017 09:30:29 -0500 Subject: [PATCH 039/122] Automatic changelog generation for PR #1178 [ci skip] --- html/changelogs/AutoChangeLog-pr-1178.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1178.yml diff --git a/html/changelogs/AutoChangeLog-pr-1178.yml b/html/changelogs/AutoChangeLog-pr-1178.yml new file mode 100644 index 0000000000..2fdc37039e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1178.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Indestructible objects can no longer be destroyed by bombs" From b74a15c9eac2953ffd61f509ac9fbcd7dfc2ac15 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 25 May 2017 09:37:26 -0500 Subject: [PATCH 040/122] Automatic changelog generation for PR #1171 [ci skip] --- html/changelogs/AutoChangeLog-pr-1171.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1171.yml diff --git a/html/changelogs/AutoChangeLog-pr-1171.yml b/html/changelogs/AutoChangeLog-pr-1171.yml new file mode 100644 index 0000000000..e0c0601fd6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1171.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "crushers now apply marks properly" From 2bfcc9bf1eb1c41aa22c46bbeefccabecf269804 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 25 May 2017 09:43:34 -0500 Subject: [PATCH 041/122] [s] Fixes hiding the nuke disk on the arrivals shuttle --- code/modules/shuttle/arrivals.dm | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/code/modules/shuttle/arrivals.dm b/code/modules/shuttle/arrivals.dm index d60a832279..7cb347d429 100644 --- a/code/modules/shuttle/arrivals.dm +++ b/code/modules/shuttle/arrivals.dm @@ -99,7 +99,7 @@ SendToStation() return - var/found_awake = PersonCheck() + var/found_awake = PersonCheck() || NukeDiskCheck() if(mode == SHUTTLE_CALL) if(found_awake) SendToStation() @@ -128,6 +128,12 @@ return TRUE return FALSE +/obj/docking_port/mobile/arrivals/proc/NukeDiskCheck() + for (var/obj/item/weapon/disk/nuclear/N in GLOB.poi_list) + if (get_area(N) in areas) + return TRUE + return FALSE + /obj/docking_port/mobile/arrivals/proc/SendToStation() var/dockTime = config.arrivals_shuttle_dock_window if(mode == SHUTTLE_CALL && timeLeft(1) > dockTime) @@ -140,11 +146,17 @@ var/docked = S1 == assigned_transit sound_played = FALSE if(docked) //about to launch - if(!force_depart && PersonCheck()) - mode = SHUTTLE_IDLE - if(console) - console.say("Launch cancelled, lifeform dectected on board.") - return + if(!force_depart) + var/cancel_reason + if(PersonCheck()) + cancel_reason = "lifeform dectected on board" + else if(NukeDiskCheck()) + cancel_reason = "critical station device detected on board" + if(cancel_reason) + mode = SHUTTLE_IDLE + if(console) + console.say("Launch cancelled, [cancel_reason].") + return force_depart = FALSE . = ..() if(!. && !docked && !damaged) From e2b1ef2ad2e5ba1650f6a61852953947bb873e72 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 25 May 2017 09:44:40 -0500 Subject: [PATCH 042/122] Xenobio console origin tech fix --- code/game/machinery/computer/buildandrepair.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 600ededadd..f9014d5b8f 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -178,7 +178,7 @@ /obj/item/weapon/circuitboard/computer/xenobiology name = "circuit board (Xenobiology Console)" build_path = /obj/machinery/computer/camera_advanced/xenobio - origin_tech = "programming=3;bio=3" + origin_tech = "programming=3;biotech=3" /obj/item/weapon/circuitboard/computer/base_construction name = "circuit board (Aux Mining Base Construction Console)" build_path = /obj/machinery/computer/camera_advanced/base_construction From 1cf1c1cb4c1c730d4ad7a57d0ab1696f4c5b7bb9 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 25 May 2017 09:52:53 -0500 Subject: [PATCH 043/122] Roughly one fifth of internal affairs agents are traitors with an extra objective --- code/game/gamemodes/traitor/double_agents.dm | 35 ++++-- code/game/gamemodes/traitor/traitor.dm | 106 ++++++++++--------- 2 files changed, 83 insertions(+), 58 deletions(-) diff --git a/code/game/gamemodes/traitor/double_agents.dm b/code/game/gamemodes/traitor/double_agents.dm index 2ee546c7aa..dfe198eeb9 100644 --- a/code/game/gamemodes/traitor/double_agents.dm +++ b/code/game/gamemodes/traitor/double_agents.dm @@ -1,6 +1,8 @@ #define PINPOINTER_MINIMUM_RANGE 15 #define PINPOINTER_EXTRA_RANDOM_RANGE 10 #define PINPOINTER_PING_TIME 40 +#define PROB_ACTUAL_TRAITOR 20 +#define TRAITOR_AGENT_ROLE "Syndicate External Affairs Agent" /datum/game_mode/traitor/internal_affairs name = "Internal Affairs" @@ -171,7 +173,10 @@ if(!objective.check_completion()) traitored = FALSE return - to_chat(owner.current," All the other agents are dead, and you're the last loose end. Stage a Syndicate terrorist attack to cover up for today's events. You no longer have any limits on collateral damage.") + if(owner.special_role == TRAITOR_AGENT_ROLE) + to_chat(owner.current," All the loyalist agents are dead, and no more is required of you. Die a glorious death, agent. ") + else + to_chat(owner.current," All the other agents are dead, and you're the last loose end. Stage a Syndicate terrorist attack to cover up for today's events. You no longer have any limits on collateral damage.") replace_escape_objective(owner) @@ -194,7 +199,10 @@ if(objective.stolen) var/fail_msg = "Your sensors tell you that [objective.target.current.real_name], one of the targets you were meant to have killed, pulled one over on you, and is still alive - do the job properly this time! " if(traitored) - fail_msg += " The truth could still slip out!

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 literal 0 HcmV?d00001 diff --git a/sound/weapons/magin.ogg b/sound/weapons/magin.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8908bb2f4ff06c14ca8593974eb1eb0bf197468c GIT binary patch literal 7120 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 bIErNf7RW&utTF&Z5o@y$0N@KIm&*hIRVekL literal 0 HcmV?d00001 diff --git a/sound/weapons/shotguninsert.ogg b/sound/weapons/shotguninsert.ogg new file mode 100644 index 0000000000000000000000000000000000000000..189324493cf7829aa1bb727fab56d055c38c692c GIT binary patch literal 11662 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 W=WQRwG6$qVD7>eiiP|5y{J#JP);9kD literal 0 HcmV?d00001 From 25f7f32f375fa57ad37f16333be1ecf15ccdfa28 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 05:54:45 -0500 Subject: [PATCH 009/122] Auto Rifle Armour Piercing Increase --- code/modules/projectiles/projectile/bullets.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 73355cd326..0594c17469 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -28,8 +28,8 @@ damage = 10 /obj/item/projectile/bullet/armourpiercing - damage = 17 - armour_penetration = 10 + damage = 15 + armour_penetration = 40 /obj/item/projectile/bullet/pellet name = "pellet" @@ -244,7 +244,7 @@ name = "\improper DNA injector" icon_state = "syringeproj" var/obj/item/weapon/dnainjector/injector - + /obj/item/projectile/bullet/dnainjector/on_hit(atom/target, blocked = 0) if(iscarbon(target)) var/mob/living/carbon/M = target From d11da1221f1146e01b42a82022be404c97e7bdff Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 05:55:50 -0500 Subject: [PATCH 010/122] fixes comment grammar --- code/modules/procedural_mapping/mapGeneratorModule.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/procedural_mapping/mapGeneratorModule.dm b/code/modules/procedural_mapping/mapGeneratorModule.dm index 0ad35adddb..3a78d8385e 100644 --- a/code/modules/procedural_mapping/mapGeneratorModule.dm +++ b/code/modules/procedural_mapping/mapGeneratorModule.dm @@ -9,14 +9,14 @@ var/allowAtomsOnSpace = FALSE -//Syncs the module up with it's mother +//Syncs the module up with its mother /datum/mapGeneratorModule/proc/sync(datum/mapGenerator/mum) mother = null if(mum) mother = mum -//Generates it's spawnable atoms and turfs +//Generates its spawnable atoms and turfs /datum/mapGeneratorModule/proc/generate() if(!mother) return @@ -143,4 +143,4 @@ /datum/mapGeneratorModule/denseLayer clusterCheckFlags = CLUSTER_CHECK_NONE spawnableAtoms = list(/atom = 75) - spawnableTurfs = list(/turf = 75) \ No newline at end of file + spawnableTurfs = list(/turf = 75) From e966230ed9791f6a0feea0c9168e1a7cdf904a59 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Wed, 24 May 2017 08:19:45 -0500 Subject: [PATCH 011/122] logging --- .../components/binary_devices/pump.dm | 6 +++--- .../components/binary_devices/pump.dm.rej | 19 ------------------- .../components/binary_devices/volume_pump.dm | 6 +++--- .../binary_devices/volume_pump.dm.rej | 19 ------------------- code/modules/power/singularity/emitter.dm | 2 +- code/modules/power/singularity/emitter.dm.rej | 10 ---------- code/modules/power/smes.dm | 2 +- code/modules/power/smes.dm.rej | 10 ---------- code/modules/power/supermatter/supermatter.dm | 4 ++-- .../power/supermatter/supermatter.dm.rej | 15 --------------- 10 files changed, 10 insertions(+), 83 deletions(-) delete mode 100644 code/modules/atmospherics/machinery/components/binary_devices/pump.dm.rej delete mode 100644 code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm.rej delete mode 100644 code/modules/power/singularity/emitter.dm.rej delete mode 100644 code/modules/power/smes.dm.rej delete mode 100644 code/modules/power/supermatter/supermatter.dm.rej diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm index c83b0e6de1..babb18dd98 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm @@ -121,7 +121,7 @@ Thus, the two variables affect pump operation are set in New(): switch(action) if("power") on = !on - investigate_log("Pump, [src.name], was turned [on ? "on" : "off"] by [key_name(usr)] at [x], [y], [z], [A]", "atmos") + investigate_log("Pump, [src.name], was turned [on ? "on" : "off"] by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS) message_admins("Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)]") log_admin("[key_name(usr)] manipulated a pump at [x], [y], [z]") . = TRUE @@ -139,7 +139,7 @@ Thus, the two variables affect pump operation are set in New(): . = TRUE if(.) target_pressure = Clamp(pressure, 0, MAX_OUTPUT_PRESSURE) - investigate_log("Pump, [src.name], was set to [target_pressure] kPa by [key_name(usr)] at [x], [y], [z], [A]", "atmos") + investigate_log("Pump, [src.name], was set to [target_pressure] kPa by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS) message_admins("Pump, [src.name], was set to [target_pressure] kPa by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)]") log_admin("[key_name(usr)] manipulated a pump at [x], [y], [z]") update_icon() @@ -186,7 +186,7 @@ Thus, the two variables affect pump operation are set in New(): if(!(stat & NOPOWER) && on) to_chat(user, "You cannot unwrench [src], turn it off first!") else - investigate_log("Pump, [src.name], was unwrenched by [key_name(usr)] at [x], [y], [z], [A]", "atmos") + investigate_log("Pump, [src.name], was unwrenched by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS) message_admins("Pump, [src.name], was unwrenched by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(T)]") log_admin("[key_name(usr)] unwrenched a pump at [x], [y], [z]") return 1 diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm.rej b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm.rej deleted file mode 100644 index d2bdc85865..0000000000 --- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm.rej +++ /dev/null @@ -1,19 +0,0 @@ -diff a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm (rejected hunks) -@@ -119,7 +119,7 @@ Thus, the two variables affect pump operation are set in New(): - switch(action) - if("power") - on = !on -- investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos") -+ investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", INVESTIGATE_ATMOS) - . = TRUE - if("pressure") - var/pressure = params["pressure"] -@@ -135,7 +135,7 @@ Thus, the two variables affect pump operation are set in New(): - . = TRUE - if(.) - target_pressure = Clamp(pressure, 0, MAX_OUTPUT_PRESSURE) -- investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos") -+ investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS) - update_icon() - - /obj/machinery/atmospherics/components/binary/pump/atmosinit() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm index 85d667509c..aea169130b 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm @@ -121,7 +121,7 @@ Thus, the two variables affect pump operation are set in New(): switch(action) if("power") on = !on - investigate_log("Volume Pump, [src.name], was turned [on ? "on" : "off"] by [key_name(usr)] at [x], [y], [z], [loc.loc]", "atmos") + investigate_log("Volume Pump, [src.name], was turned [on ? "on" : "off"] by [key_name(usr)] at [x], [y], [z], [loc.loc]", INVESTIGATE_ATMOS) message_admins("Volume Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)]") log_admin("[key_name(usr)] manipulated a volume pump at [x], [y], [z]") @@ -140,7 +140,7 @@ Thus, the two variables affect pump operation are set in New(): . = TRUE if(.) transfer_rate = Clamp(rate, 0, MAX_TRANSFER_RATE) - investigate_log("Volume Pump, [src.name], was set to [transfer_rate] L/s by [key_name(usr)] at [x], [y], [z], [loc.loc]", "atmos") + investigate_log("Volume Pump, [src.name], was set to [transfer_rate] L/s by [key_name(usr)] at [x], [y], [z], [loc.loc]", INVESTIGATE_ATMOS) message_admins("Volume Pump, [src.name], was set to [transfer_rate] L/s by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)]") log_admin("[key_name(usr)] manipulated a volume pump at [x], [y], [z]") update_icon() @@ -183,7 +183,7 @@ Thus, the two variables affect pump operation are set in New(): if(!(stat & NOPOWER) && on) to_chat(user, "You cannot unwrench [src], turn it off first!") else - investigate_log("Volume Pump, [src.name], was unwrenched by [key_name(usr)] at [x], [y], [z], [loc.loc]", "atmos") + investigate_log("Volume Pump, [src.name], was unwrenched by [key_name(usr)] at [x], [y], [z], [loc.loc]", INVESTIGATE_ATMOS) message_admins("Volume Pump, [src.name], was unwrenched by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)]") log_admin("[key_name(usr)] unwrenched a volume pump at [x], [y], [z]") diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm.rej b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm.rej deleted file mode 100644 index 6fab304724..0000000000 --- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm.rej +++ /dev/null @@ -1,19 +0,0 @@ -diff a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm (rejected hunks) -@@ -119,7 +119,7 @@ Thus, the two variables affect pump operation are set in New(): - switch(action) - if("power") - on = !on -- investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos") -+ investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", INVESTIGATE_ATMOS) - . = TRUE - if("rate") - var/rate = params["rate"] -@@ -135,7 +135,7 @@ Thus, the two variables affect pump operation are set in New(): - . = TRUE - if(.) - transfer_rate = Clamp(rate, 0, MAX_TRANSFER_RATE) -- investigate_log("was set to [transfer_rate] L/s by [key_name(usr)]", "atmos") -+ investigate_log("was set to [transfer_rate] L/s by [key_name(usr)]", INVESTIGATE_ATMOS) - update_icon() - - /obj/machinery/atmospherics/components/binary/volume_pump/receive_signal(datum/signal/signal) diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 80f9a61679..f5d62ba611 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -100,7 +100,7 @@ if(SSticker && SSticker.IsRoundInProgress()) message_admins("Emitter deleted at ([x],[y],[z] - JMP)",0,1) log_game("Emitter deleted at ([x],[y],[z])") - investigate_log("deleted at ([x],[y],[z]) at [get_area(src)]","singulo") + investigate_log("deleted at ([x],[y],[z]) at [get_area(src)]", INVESTIGATE_SINGULO) QDEL_NULL(sparks) return ..() diff --git a/code/modules/power/singularity/emitter.dm.rej b/code/modules/power/singularity/emitter.dm.rej deleted file mode 100644 index 8b61066484..0000000000 --- a/code/modules/power/singularity/emitter.dm.rej +++ /dev/null @@ -1,10 +0,0 @@ -diff a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm (rejected hunks) -@@ -101,7 +101,7 @@ - var/turf/T = get_turf(src) - message_admins("Emitter deleted at [ADMIN_COORDJMP(T)]",0,1) - log_game("Emitter deleted at [COORD(T)]") -- investigate_log("deleted at [get_area(src)] [COORD(T)]","singulo") -+ investigate_log("deleted at [get_area(src)] [COORD(T)]", INVESTIGATE_SINGULO) - QDEL_NULL(sparks) - return ..() - diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index d15a72a6b7..ba025b7529 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -195,7 +195,7 @@ var/area/area = get_area(src) message_admins("SMES deleted at ([area.name])") log_game("SMES deleted at ([area.name])") - investigate_log("deleted at ([area.name])","singulo") + investigate_log("deleted at ([area.name])", INVESTIGATE_SINGULO) if(terminal) disconnect_terminal() return ..() diff --git a/code/modules/power/smes.dm.rej b/code/modules/power/smes.dm.rej deleted file mode 100644 index cb12ea4fbb..0000000000 --- a/code/modules/power/smes.dm.rej +++ /dev/null @@ -1,10 +0,0 @@ -diff a/code/modules/power/smes.dm b/code/modules/power/smes.dm (rejected hunks) -@@ -196,7 +196,7 @@ - var/turf/T = get_turf(src) - message_admins("SMES deleted at [A][ADMIN_JMP(T)]") - log_game("SMES deleted at [A][COORD(T)]") -- investigate_log("deleted at [A][COORD(T)]","singulo") -+ investigate_log("deleted at [A][COORD(T)]", INVESTIGATE_SINGULO) - if(terminal) - disconnect_terminal() - return ..() diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index b6c93979c1..dea263231a 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -388,11 +388,11 @@ return FALSE // This stops people from being able to really power up the supermatter // Then bring it inside to explode instantly upon landing on a valid turf. if(!istype(Proj.firer, /obj/machinery/power/emitter)) - investigate_log("has been hit by [Proj] fired by [Proj.firer]", "supermatter") + investigate_log("has been hit by [Proj] fired by [Proj.firer]", INVESTIGATE_SUPERMATTER) if(Proj.flag != "bullet") power += Proj.damage * config_bullet_energy if(!has_been_powered) - investigate_log("has been powered for the first time.", "supermatter") + investigate_log("has been powered for the first time.", INVESTIGATE_SUPERMATTER) message_admins("[src] has been powered for the first time [ADMIN_JMP(src)].") has_been_powered = TRUE else if(takes_damage) diff --git a/code/modules/power/supermatter/supermatter.dm.rej b/code/modules/power/supermatter/supermatter.dm.rej deleted file mode 100644 index 784fbb78b7..0000000000 --- a/code/modules/power/supermatter/supermatter.dm.rej +++ /dev/null @@ -1,15 +0,0 @@ -diff a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm (rejected hunks) -@@ -388,11 +388,11 @@ - return 0 // This stops people from being able to really power up the supermatter - // Then bring it inside to explode instantly upon landing on a valid turf. - if(!istype(Proj.firer, /obj/machinery/power/emitter)) -- investigate_log("has been hit by [Proj] fired by [Proj.firer]", "supermatter") -+ investigate_log("has been hit by [Proj] fired by [Proj.firer]", INVESTIGATE_SUPERMATTER) - if(Proj.flag != "bullet") - power += Proj.damage * config_bullet_energy - if(!has_been_powered) -- investigate_log("has been powered for the first time.", "supermatter") -+ investigate_log("has been powered for the first time.", INVESTIGATE_SUPERMATTER) - message_admins("[src] has been powered for the first time [ADMIN_JMP(src)].") - has_been_powered = 1 - else if(takes_damage) From 9fa0539f74b9ce27315db56790939837d27b6bb4 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 08:24:39 -0500 Subject: [PATCH 012/122] Fixes cryo radios --- .../atmospherics/machinery/components/unary_devices/cryo.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 73e0c2042f..51e97eb5a4 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -27,10 +27,10 @@ var/radio_key = /obj/item/device/encryptionkey/headset_med var/radio_channel = "Medical" -/obj/machinery/atmospherics/components/unary/cryo_cell/New() - ..() +/obj/machinery/atmospherics/components/unary/cryo_cell/Initialize() + . = ..() initialize_directions = dir - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/cryo_tube(null) + var/obj/item/weapon/circuitboard/machine/cryo_tube/B = new B.apply_default_parts(src) radio = new(src) From b95b6dca00db3cbdfa39253cfe44c31ba02b78e2 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 08:25:53 -0500 Subject: [PATCH 013/122] Raven Ship Blast Door Fix --- _maps/shuttles/emergency_raven.dmm | 198 ++++++++++++++++++++++++++--- 1 file changed, 179 insertions(+), 19 deletions(-) diff --git a/_maps/shuttles/emergency_raven.dmm b/_maps/shuttles/emergency_raven.dmm index 7bf4708da7..eeb1a3756b 100644 --- a/_maps/shuttles/emergency_raven.dmm +++ b/_maps/shuttles/emergency_raven.dmm @@ -123,6 +123,7 @@ }, /area/shuttle/escape) "aw" = ( +/obj/machinery/light, /turf/open/floor/plasteel/darkblue/side, /area/shuttle/escape) "ax" = ( @@ -168,6 +169,10 @@ "aE" = ( /obj/structure/table/reinforced, /obj/item/weapon/defibrillator/loaded, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, /turf/open/floor/plasteel/darkpurple/side{ dir = 4 }, @@ -216,6 +221,9 @@ id = "shuttleflash"; pixel_y = -23 }, +/obj/machinery/light{ + dir = 1 + }, /turf/open/floor/plasteel/darkblue/side{ tag = "icon-darkblue (NORTH)"; dir = 1 @@ -232,6 +240,9 @@ }, /area/shuttle/escape) "aM" = ( +/obj/machinery/light{ + dir = 1 + }, /turf/open/floor/plasteel/darkblue/side{ tag = "icon-darkblue (NORTH)"; dir = 1 @@ -412,6 +423,9 @@ pixel_y = 9 }, /obj/structure/closet/crate/internals, +/obj/machinery/light{ + dir = 1 + }, /turf/open/floor/plasteel/darkyellow/side{ tag = "icon-darkyellow (NORTHEAST)"; icon_state = "darkyellow"; @@ -516,6 +530,9 @@ pixel_y = 8 }, /obj/structure/table/reinforced, +/obj/machinery/light{ + dir = 8 + }, /turf/open/floor/plasteel/darkpurple/side{ dir = 8 }, @@ -918,6 +935,9 @@ /area/shuttle/escape) "ch" = ( /obj/structure/reagent_dispensers/fueltank, +/obj/machinery/light{ + dir = 8 + }, /turf/open/floor/plasteel/darkgreen/side{ dir = 9; icon_state = "darkgreen"; @@ -926,6 +946,10 @@ /area/shuttle/escape) "ci" = ( /obj/structure/reagent_dispensers/watertank, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, /turf/open/floor/plasteel/darkgreen/side{ dir = 5 }, @@ -1040,9 +1064,9 @@ name = "Bridge Blast Shutters"; pixel_x = 0; pixel_y = -26; - req_access_txt = "150"; - pixel_x = 0 + req_access_txt = "19" }, +/obj/machinery/light, /turf/open/floor/plasteel/darkblue/side, /area/shuttle/escape) "cA" = ( @@ -1482,10 +1506,146 @@ pixel_x = 24; pixel_y = 0 }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, /turf/open/floor/plasteel/darkgreen/side{ dir = 4 }, /area/shuttle/escape) +"eC" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/open/floor/plasteel/darkpurple/side{ + dir = 4 + }, +/area/shuttle/escape) +"eD" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/brig{ + dir = 8; + floor_tile = /obj/item/stack/tile/plasteel; + icon_state = "darkred" + }, +/area/shuttle/escape) +"eE" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/darkgreen/side{ + tag = "icon-darkgreen (NORTH)"; + icon_state = "darkgreen"; + dir = 1 + }, +/area/shuttle/escape) +"eF" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 8 + }, +/area/shuttle/escape) +"eG" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/darkgreen/side{ + tag = "icon-darkgreen (NORTH)"; + icon_state = "darkgreen"; + dir = 1 + }, +/area/shuttle/escape) +"eH" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/darkgreen/side, +/area/shuttle/escape) +"eI" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/darkgreen/side, +/area/shuttle/escape) +"eJ" = ( +/obj/machinery/button/flasher{ + id = "cockpit_flasher"; + pixel_x = 6; + pixel_y = -24 + }, +/obj/machinery/light, +/turf/open/floor/mineral/titanium/blue, +/area/space) +"eK" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/darkgreen/side{ + tag = "icon-darkgreen (NORTH)"; + icon_state = "darkgreen"; + dir = 1 + }, +/area/shuttle/escape) +"eL" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/darkgreen/side{ + tag = "icon-darkgreen (NORTH)"; + icon_state = "darkgreen"; + dir = 1 + }, +/area/shuttle/escape) +"eM" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/darkgreen/side{ + tag = "icon-darkgreen (NORTH)"; + icon_state = "darkgreen"; + dir = 1 + }, +/area/shuttle/escape) +"eN" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 4 + }, +/area/shuttle/escape) +"eO" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 8 + }, +/area/shuttle/escape) +"eP" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/darkgreen/side, +/area/shuttle/escape) +"eQ" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 4 + }, +/area/shuttle/escape) +"eR" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/darkgreen/side, +/area/shuttle/escape) +"eS" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/darkgreen/side, +/area/shuttle/escape) (1,1,1) = {" aa @@ -1531,7 +1691,7 @@ cs ar aW bc -bc +eD bc bc bc @@ -1545,7 +1705,7 @@ cu bF be be -be +eO be be cd @@ -1604,19 +1764,19 @@ cu cu cs ar -br +eG aC -bz +eH ar bT bo -br +eK bZ ca aC bZ ca -bz +eR ab ch ar @@ -1636,7 +1796,7 @@ be be be be -be +eF be bG aC @@ -1712,13 +1872,13 @@ bP ar bU bo -br +eL bZ ca aC bZ ca -bz +eS ab ci ar @@ -1742,7 +1902,7 @@ bz cs bH bG -bz +eI cs cs cs @@ -1771,7 +1931,7 @@ bb bf bk cs -br +eE bz cs bI @@ -1884,9 +2044,9 @@ aa cs cs cs -br +eM aC -bz +eP cs cs cs @@ -1946,7 +2106,7 @@ bB cu ad ad -ad +eJ ad cu br @@ -2004,7 +2164,7 @@ ar aE aI aO -aV +eC aV bi bm @@ -2020,9 +2180,9 @@ cs bW aZ aZ +eN aZ -aZ -aZ +eQ aZ aZ ce From 88d88741f5106852c8a328a60b1e903dc49a00b6 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 08:28:08 -0500 Subject: [PATCH 014/122] Splits equipment.dm into several component files --- code/game/objects/structures/signs.dm | 6 + code/modules/mining/equipment.dm | 557 ------------------ .../modules/mining/equipment/explorer_gear.dm | 48 ++ .../mining/equipment/kinetic_crusher.dm | 86 +++ .../mining/equipment/lazarus_injector.dm | 61 ++ .../mining/equipment/mineral_scanner.dm | 79 +++ code/modules/mining/equipment/resonator.dm | 120 ++++ code/modules/mining/equipment/vendor_items.dm | 33 ++ .../mining/equipment/wormhole_jaunter.dm | 109 ++++ tgstation.dme | 8 +- 10 files changed, 549 insertions(+), 558 deletions(-) delete mode 100644 code/modules/mining/equipment.dm create mode 100644 code/modules/mining/equipment/explorer_gear.dm create mode 100644 code/modules/mining/equipment/kinetic_crusher.dm create mode 100644 code/modules/mining/equipment/lazarus_injector.dm create mode 100644 code/modules/mining/equipment/mineral_scanner.dm create mode 100644 code/modules/mining/equipment/resonator.dm create mode 100644 code/modules/mining/equipment/vendor_items.dm create mode 100644 code/modules/mining/equipment/wormhole_jaunter.dm diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index 11d20a2dc1..445af97b4e 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -246,6 +246,12 @@ desc = "A sign labelling an area as a place where xenobiological entities are researched." icon_state = "xenobio" +/obj/structure/sign/xeno_warning_mining + name = "DANGEROUS ALIEN LIFE" + desc = "A sign that warns would-be travellers of hostile alien life in the vicinity." + icon = 'icons/obj/mining.dmi' + icon_state = "xeno_warning" + /obj/structure/sign/enginesafety name = "\improper ENGINEERING SAFETY" desc = "A sign detailing the various safety protocols when working on-site to ensure a safe shift." diff --git a/code/modules/mining/equipment.dm b/code/modules/mining/equipment.dm deleted file mode 100644 index a9315b7bea..0000000000 --- a/code/modules/mining/equipment.dm +++ /dev/null @@ -1,557 +0,0 @@ -/****************Explorer's Suit**************************/ - -/obj/item/clothing/suit/hooded/explorer - name = "explorer suit" - desc = "An armoured suit for exploring harsh environments." - icon_state = "explorer" - item_state = "explorer" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT - cold_protection = CHEST|GROIN|LEGS|ARMS - max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT - heat_protection = CHEST|GROIN|LEGS|ARMS - hoodtype = /obj/item/clothing/head/hooded/explorer - armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 50) - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/weapon/gun/energy/kinetic_accelerator, /obj/item/weapon/pickaxe) - resistance_flags = FIRE_PROOF - -/obj/item/clothing/head/hooded/explorer - name = "explorer hood" - desc = "An armoured hood for exploring harsh environments." - icon_state = "explorer" - body_parts_covered = HEAD - flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS - min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT - max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT - armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 50) - resistance_flags = FIRE_PROOF - -/obj/item/clothing/mask/gas/explorer - name = "explorer gas mask" - desc = "A military-grade gas mask that can be connected to an air supply." - icon_state = "gas_mining" - visor_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS - visor_flags_inv = HIDEFACIALHAIR - visor_flags_cover = MASKCOVERSMOUTH - actions_types = list(/datum/action/item_action/adjust) - armor = list(melee = 10, bullet = 5, laser = 5, energy = 5, bomb = 0, bio = 50, rad = 0, fire = 20, acid = 40) - resistance_flags = FIRE_PROOF - -/obj/item/clothing/mask/gas/explorer/attack_self(mob/user) - adjustmask(user) - -/obj/item/clothing/mask/gas/explorer/adjustmask(user) - ..() - w_class = mask_adjusted ? WEIGHT_CLASS_NORMAL : WEIGHT_CLASS_SMALL - -/obj/item/clothing/mask/gas/explorer/folded/New() - ..() - adjustmask() - - -/**********************Mining Equipment Vendor Items**************************/ - -/**********************Jaunter**********************/ - -/obj/item/device/wormhole_jaunter - name = "wormhole jaunter" - desc = "A single use device harnessing outdated wormhole technology, Nanotrasen has since turned its eyes to blue space for more accurate teleportation. The wormholes it creates are unpleasant to travel through, to say the least.\nThanks to modifications provided by the Free Golems, this jaunter can be worn on the belt to provide protection from chasms." - icon = 'icons/obj/mining.dmi' - icon_state = "Jaunter" - item_state = "electronic" - throwforce = 0 - w_class = WEIGHT_CLASS_SMALL - throw_speed = 3 - throw_range = 5 - origin_tech = "bluespace=2" - slot_flags = SLOT_BELT - -/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 - activate(user) - -/obj/item/device/wormhole_jaunter/proc/turf_check(mob/user) - var/turf/device_turf = get_turf(user) - if(!device_turf||device_turf.z==2||device_turf.z>=7) - to_chat(user, "You're having difficulties getting the [src.name] to work.") - return FALSE - return TRUE - -/obj/item/device/wormhole_jaunter/proc/get_destinations(mob/user) - var/list/destinations = list() - - if(isgolem(user)) - for(var/obj/item/device/radio/beacon/B in GLOB.teleportbeacons) - var/turf/T = get_turf(B) - if(istype(T.loc, /area/ruin/powered/golem_ship)) - destinations += B - - // In the event golem beacon is destroyed, send to station instead - if(destinations.len) - return destinations - - for(var/obj/item/device/radio/beacon/B in GLOB.teleportbeacons) - var/turf/T = get_turf(B) - if(T.z == ZLEVEL_STATION) - destinations += B - - return destinations - -/obj/item/device/wormhole_jaunter/proc/activate(mob/user) - if(!turf_check(user)) - return - - var/list/L = get_destinations(user) - if(!L.len) - to_chat(user, "The [src.name] found no beacons in the world to anchor a wormhole to.") - return - var/chosen_beacon = pick(L) - var/obj/effect/portal/wormhole/jaunt_tunnel/J = new /obj/effect/portal/wormhole/jaunt_tunnel(get_turf(src), chosen_beacon, lifespan=100) - J.target = chosen_beacon - try_move_adjacent(J) - playsound(src,'sound/effects/sparks4.ogg',50,1) - qdel(src) - -/obj/item/device/wormhole_jaunter/emp_act(power) - var/triggered = FALSE - - if(usr.get_item_by_slot(slot_belt) == src) - if(power == 1) - triggered = TRUE - else if(power == 2 && prob(50)) - triggered = TRUE - - if(triggered) - usr.visible_message("The [src] overloads and activates!") - SSblackbox.add_details("jaunter","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 - activate(user) - else - to_chat(user, "The [src] is not attached to your belt, preventing it from saving you from the chasm. RIP.") - - -/obj/effect/portal/wormhole/jaunt_tunnel - name = "jaunt tunnel" - icon = 'icons/effects/effects.dmi' - icon_state = "bhole3" - desc = "A stable hole in the universe made by a wormhole jaunter. Turbulent doesn't even begin to describe how rough passage through one of these is, but at least it will always get you somewhere near a beacon." - mech_sized = TRUE //save your ripley - -/obj/effect/portal/wormhole/jaunt_tunnel/teleport(atom/movable/M) - if(istype(M, /obj/effect)) - return - - if(M.anchored) - if(!(istype(M, /obj/mecha) && mech_sized)) - return - - if(istype(M, /atom/movable)) - if(do_teleport(M, target, 6)) - // KERPLUNK - playsound(M,'sound/weapons/resonator_blast.ogg',50,1) - if(iscarbon(M)) - var/mob/living/carbon/L = M - L.Weaken(3) - if(ishuman(L)) - shake_camera(L, 20, 1) - addtimer(CALLBACK(L, /mob/living/carbon.proc/vomit), 20) - -/**********************Resonator**********************/ - -/obj/item/weapon/resonator - name = "resonator" - icon = 'icons/obj/mining.dmi' - icon_state = "resonator" - item_state = "resonator" - desc = "A handheld device that creates small fields of energy that resonate until they detonate, crushing rock. It's more effective in a vacuum." - w_class = WEIGHT_CLASS_NORMAL - force = 15 - throwforce = 10 - var/burst_time = 30 - var/fieldlimit = 4 - var/list/fields = list() - var/quick_burst_mod = 0.8 - origin_tech = "magnets=3;engineering=3" - -/obj/item/weapon/resonator/upgraded - name = "upgraded resonator" - desc = "An upgraded version of the resonator that can produce more fields at once, as well as having no damage penalty for bursting a resonance field early." - icon_state = "resonator_u" - item_state = "resonator_u" - origin_tech = "materials=4;powerstorage=3;engineering=3;magnets=3" - fieldlimit = 6 - quick_burst_mod = 1 - -/obj/item/weapon/resonator/attack_self(mob/user) - if(burst_time == 50) - burst_time = 30 - to_chat(user, "You set the resonator's fields to detonate after 3 seconds.") - else - burst_time = 50 - to_chat(user, "You set the resonator's fields to detonate after 5 seconds.") - -/obj/item/weapon/resonator/proc/CreateResonance(target, mob/user) - var/turf/T = get_turf(target) - var/obj/effect/temp_visual/resonance/R = locate(/obj/effect/temp_visual/resonance) in T - if(R) - R.damage_multiplier = quick_burst_mod - R.burst() - return - if(LAZYLEN(fields) < fieldlimit) - new /obj/effect/temp_visual/resonance(T, user, src, burst_time) - user.changeNext_move(CLICK_CD_MELEE) - -/obj/item/weapon/resonator/pre_attackby(atom/target, mob/user, params) - if(check_allowed_items(target, 1)) - CreateResonance(target, user) - return TRUE - -/obj/effect/temp_visual/resonance - name = "resonance field" - desc = "A resonating field that significantly damages anything inside of it when the field eventually ruptures. More damaging in low pressure environments." - icon_state = "shield1" - layer = ABOVE_ALL_MOB_LAYER - duration = 50 - var/resonance_damage = 20 - var/damage_multiplier = 1 - var/creator - var/obj/item/weapon/resonator/res - -/obj/effect/temp_visual/resonance/Initialize(mapload, set_creator, set_resonator, set_duration) - duration = set_duration - . = ..() - creator = set_creator - res = set_resonator - if(res) - res.fields += src - playsound(src,'sound/weapons/resonator_fire.ogg',50,1) - transform = matrix()*0.75 - animate(src, transform = matrix()*1.5, time = duration) - deltimer(timerid) - timerid = addtimer(CALLBACK(src, .proc/burst), duration, TIMER_STOPPABLE) - -/obj/effect/temp_visual/resonance/Destroy() - if(res) - res.fields -= src - res = null - creator = null - . = ..() - -/obj/effect/temp_visual/resonance/proc/check_pressure(turf/proj_turf) - if(!proj_turf) - proj_turf = get_turf(src) - if(!istype(proj_turf)) - return - var/datum/gas_mixture/environment = proj_turf.return_air() - var/pressure = environment.return_pressure() - resonance_damage = initial(resonance_damage) - if(pressure < 50) - name = "strong [initial(name)]" - resonance_damage *= 3 - else - name = initial(name) - resonance_damage *= damage_multiplier - -/obj/effect/temp_visual/resonance/proc/burst() - var/turf/T = get_turf(src) - new /obj/effect/temp_visual/resonance_crush(T) - if(ismineralturf(T)) - var/turf/closed/mineral/M = T - M.gets_drilled(creator) - check_pressure(T) - playsound(T,'sound/weapons/resonator_blast.ogg',50,1) - for(var/mob/living/L in T) - if(creator) - add_logs(creator, L, "used a resonator field on", "resonator") - to_chat(L, "[src] ruptured with you in it!") - L.apply_damage(resonance_damage, BRUTE) - qdel(src) - -/obj/effect/temp_visual/resonance_crush - icon_state = "shield1" - layer = ABOVE_ALL_MOB_LAYER - duration = 4 - -/obj/effect/temp_visual/resonance_crush/Initialize() - . = ..() - transform = matrix()*1.5 - animate(src, transform = matrix()*0.1, alpha = 50, time = 4) - -/**********************Facehugger toy**********************/ - -/obj/item/clothing/mask/facehugger/toy - item_state = "facehugger_inactive" - desc = "A toy often used to play pranks on other miners by putting it in their beds. It takes a bit to recharge after latching onto something." - throwforce = 0 - real = 0 - sterile = 1 - tint = 3 //Makes it feel more authentic when it latches on - -/obj/item/clothing/mask/facehugger/toy/Die() - return - -/**********************Lazarus Injector**********************/ - -/obj/item/weapon/lazarus_injector - name = "lazarus injector" - desc = "An injector with a cocktail of nanomachines and chemicals, this device can seemingly raise animals from the dead, making them become friendly to the user. Unfortunately, the process is useless on higher forms of life and incredibly costly, so these were hidden in storage until an executive thought they'd be great motivation for some of their employees." - icon = 'icons/obj/syringe.dmi' - icon_state = "lazarus_hypo" - item_state = "hypo" - throwforce = 0 - w_class = WEIGHT_CLASS_SMALL - throw_speed = 3 - throw_range = 5 - var/loaded = 1 - var/malfunctioning = 0 - var/revive_type = SENTIENCE_ORGANIC //So you can't revive boss monsters or robots with it - origin_tech = "biotech=4;magnets=6" - -/obj/item/weapon/lazarus_injector/afterattack(atom/target, mob/user, proximity_flag) - if(!loaded) - return - if(isliving(target) && proximity_flag) - if(istype(target, /mob/living/simple_animal)) - var/mob/living/simple_animal/M = target - if(M.sentience_type != revive_type) - to_chat(user, "[src] does not work on this sort of creature.") - return - if(M.stat == DEAD) - M.faction = list("neutral") - M.revive(full_heal = 1, admin_revive = 1) - if(ishostile(target)) - var/mob/living/simple_animal/hostile/H = M - if(malfunctioning) - H.faction |= list("lazarus", "\ref[user]") - H.robust_searching = 1 - H.friends += user - H.attack_same = 1 - log_game("[user] has revived hostile mob [target] with a malfunctioning lazarus injector") - else - H.attack_same = 0 - loaded = 0 - user.visible_message("[user] injects [M] with [src], reviving it.") - SSblackbox.add_details("lazarus_injector", "[M.type]") - playsound(src,'sound/effects/refill.ogg',50,1) - icon_state = "lazarus_empty" - return - else - to_chat(user, "[src] is only effective on the dead.") - return - else - to_chat(user, "[src] is only effective on lesser beings.") - return - -/obj/item/weapon/lazarus_injector/emp_act() - if(!malfunctioning) - malfunctioning = 1 - -/obj/item/weapon/lazarus_injector/examine(mob/user) - ..() - if(!loaded) - to_chat(user, "[src] is empty.") - if(malfunctioning) - to_chat(user, "The display on [src] seems to be flickering.") - -/**********************Mining Scanners**********************/ - -/obj/item/device/mining_scanner - desc = "A scanner that checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations." - name = "manual mining scanner" - icon_state = "mining1" - item_state = "analyzer" - w_class = WEIGHT_CLASS_SMALL - flags = CONDUCT - slot_flags = SLOT_BELT - var/cooldown = 35 - var/current_cooldown = 0 - origin_tech = "engineering=1;magnets=1" - -/obj/item/device/mining_scanner/attack_self(mob/user) - if(!user.client) - return - if(current_cooldown <= world.time) - current_cooldown = world.time + cooldown - mineral_scan_pulse(get_turf(user)) - - -//Debug item to identify all ore spread quickly -/obj/item/device/mining_scanner/admin - -/obj/item/device/mining_scanner/admin/attack_self(mob/user) - for(var/turf/closed/mineral/M in world) - if(M.scan_state) - M.icon_state = M.scan_state - qdel(src) - -/obj/item/device/t_scanner/adv_mining_scanner - desc = "A scanner that automatically checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations. This one has an extended range." - name = "advanced automatic mining scanner" - icon_state = "mining0" - item_state = "analyzer" - w_class = WEIGHT_CLASS_SMALL - flags = CONDUCT - slot_flags = SLOT_BELT - var/cooldown = 35 - var/current_cooldown = 0 - var/range = 7 - origin_tech = "engineering=3;magnets=3" - -/obj/item/device/t_scanner/adv_mining_scanner/lesser - name = "automatic mining scanner" - desc = "A scanner that automatically checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations." - range = 4 - cooldown = 50 - -/obj/item/device/t_scanner/adv_mining_scanner/scan() - if(current_cooldown <= world.time) - current_cooldown = world.time + cooldown - var/turf/t = get_turf(src) - mineral_scan_pulse(t, range) - -/proc/mineral_scan_pulse(turf/T, range = world.view) - var/list/minerals = list() - for(var/turf/closed/mineral/M in range(range, T)) - if(M.scan_state) - minerals += M - if(LAZYLEN(minerals)) - for(var/turf/closed/mineral/M in minerals) - var/obj/effect/temp_visual/mining_overlay/oldC = locate(/obj/effect/temp_visual/mining_overlay) in M - if(oldC) - qdel(oldC) - var/obj/effect/temp_visual/mining_overlay/C = new /obj/effect/temp_visual/mining_overlay(M) - C.icon_state = M.scan_state - -/obj/effect/temp_visual/mining_overlay - plane = FULLSCREEN_PLANE - layer = FLASH_LAYER - icon = 'icons/effects/ore_visuals.dmi' - appearance_flags = 0 //to avoid having TILE_BOUND in the flags, so that the 480x480 icon states let you see it no matter where you are - duration = 35 - pixel_x = -224 - pixel_y = -224 - -/obj/effect/temp_visual/mining_overlay/Initialize() - . = ..() - animate(src, alpha = 0, time = duration, easing = EASE_IN) - - -/**********************Xeno Warning Sign**********************/ -/obj/structure/sign/xeno_warning_mining - name = "DANGEROUS ALIEN LIFE" - desc = "A sign that warns would be travellers of hostile alien life in the vicinity." - icon = 'icons/obj/mining.dmi' - icon_state = "xeno_warning" - -/*********************Hivelord stabilizer****************/ - -/obj/item/weapon/hivelordstabilizer - name = "stabilizing serum" - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle19" - desc = "Inject certain types of monster organs with this stabilizer to preserve their healing powers indefinitely." - w_class = WEIGHT_CLASS_TINY - origin_tech = "biotech=3" - -/obj/item/weapon/hivelordstabilizer/afterattack(obj/item/organ/M, mob/user) - var/obj/item/organ/hivelord_core/C = M - if(!istype(C, /obj/item/organ/hivelord_core)) - to_chat(user, "The stabilizer only works on certain types of monster organs, generally regenerative in nature.") - return ..() - - C.preserved() - to_chat(user, "You inject the [M] with the stabilizer. It will no longer go inert.") - qdel(src) - -/*********************Mining Hammer****************/ -/obj/item/weapon/twohanded/required/mining_hammer - icon = 'icons/obj/mining.dmi' - icon_state = "mining_hammer1" - item_state = "mining_hammer1" - name = "proto-kinetic crusher" - desc = "An early design of the proto-kinetic accelerator, it is little more than an combination of various mining tools cobbled together, forming a high-tech club. \ - While it is an effective mining tool, it did little to aid any but the most skilled and/or suicidal miners against local fauna.\ - \nMark a mob with the destabilizing force, then hit them in melee to activate it for extra damage. Extra damage if backstabbed in this fashion. \ - This weapon is only particularly effective against large creatures." - force = 20 //As much as a bone spear, but this is significantly more annoying to carry around due to requiring the use of both hands at all times - w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_BACK - force_unwielded = 20 //It's never not wielded so these are the same - force_wielded = 20 - throwforce = 5 - throw_speed = 4 - luminosity = 4 - armour_penetration = 10 - materials = list(MAT_METAL=1150, MAT_GLASS=2075) - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("smashed", "crushed", "cleaved", "chopped", "pulped") - sharpness = IS_SHARP - var/charged = TRUE - var/charge_time = 14 - -/obj/item/projectile/destabilizer - name = "destabilizing force" - icon_state = "pulse1" - nodamage = TRUE - damage = 0 //We're just here to mark people. This is still a melee weapon. - damage_type = BRUTE - flag = "bomb" - range = 6 - log_override = TRUE - var/obj/item/weapon/twohanded/required/mining_hammer/hammer_synced - -/obj/item/projectile/destabilizer/Destroy() - hammer_synced = null - return ..() - -/obj/item/projectile/destabilizer/on_hit(atom/target, blocked = 0) - if(isliving(target)) - var/mob/living/L = target - var/datum/status_effect/crusher_mark/CM = L.apply_status_effect(STATUS_EFFECT_CRUSHERMARK) - CM.hammer_synced = hammer_synced - var/target_turf = get_turf(target) - if(ismineralturf(target_turf)) - var/turf/closed/mineral/M = target_turf - new /obj/effect/temp_visual/kinetic_blast(M) - M.gets_drilled(firer) - ..() - -/obj/item/weapon/twohanded/required/mining_hammer/afterattack(atom/target, mob/user, proximity_flag) - if(!proximity_flag && charged)//Mark a target, or mine a tile. - var/turf/proj_turf = user.loc - if(!isturf(proj_turf)) - return - var/obj/item/projectile/destabilizer/D = new /obj/item/projectile/destabilizer(proj_turf) - D.preparePixelProjectile(target, get_turf(target), user) - D.hammer_synced = src - playsound(user, 'sound/weapons/plasma_cutter.ogg', 100, 1) - D.fire() - charged = FALSE - icon_state = "mining_hammer1_uncharged" - addtimer(CALLBACK(src, .proc/Recharge), charge_time) - return - if(proximity_flag && isliving(target)) - var/mob/living/L = target - var/datum/status_effect/crusher_mark/CM = L.has_status_effect(STATUS_EFFECT_CRUSHERMARK) - if(!CM || CM.hammer_synced != src || !L.remove_status_effect(STATUS_EFFECT_CRUSHERMARK)) - return - new /obj/effect/temp_visual/kinetic_blast(get_turf(L)) - var/backstab_dir = get_dir(user, L) - var/def_check = L.getarmor(type = "bomb") - if((user.dir & backstab_dir) && (L.dir & backstab_dir)) - L.apply_damage(80, BRUTE, blocked = def_check) - playsound(user, 'sound/weapons/Kenetic_accel.ogg', 100, 1) //Seriously who spelled it wrong - else - L.apply_damage(50, BRUTE, blocked = def_check) - -/obj/item/weapon/twohanded/required/mining_hammer/proc/Recharge() - if(!charged) - charged = TRUE - icon_state = "mining_hammer1" - playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm new file mode 100644 index 0000000000..e4acea1cf0 --- /dev/null +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -0,0 +1,48 @@ +/****************Explorer's Suit and Mask****************/ +/obj/item/clothing/suit/hooded/explorer + name = "explorer suit" + desc = "An armoured suit for exploring harsh environments." + icon_state = "explorer" + item_state = "explorer" + body_parts_covered = CHEST|GROIN|LEGS|ARMS + min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT + cold_protection = CHEST|GROIN|LEGS|ARMS + max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT + heat_protection = CHEST|GROIN|LEGS|ARMS + hoodtype = /obj/item/clothing/head/hooded/explorer + armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 50) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/weapon/gun/energy/kinetic_accelerator, /obj/item/weapon/pickaxe) + resistance_flags = FIRE_PROOF + +/obj/item/clothing/head/hooded/explorer + name = "explorer hood" + desc = "An armoured hood for exploring harsh environments." + icon_state = "explorer" + body_parts_covered = HEAD + flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS + min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT + max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT + armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 50) + resistance_flags = FIRE_PROOF + +/obj/item/clothing/mask/gas/explorer + name = "explorer gas mask" + desc = "A military-grade gas mask that can be connected to an air supply." + icon_state = "gas_mining" + visor_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS + visor_flags_inv = HIDEFACIALHAIR + visor_flags_cover = MASKCOVERSMOUTH + actions_types = list(/datum/action/item_action/adjust) + armor = list(melee = 10, bullet = 5, laser = 5, energy = 5, bomb = 0, bio = 50, rad = 0, fire = 20, acid = 40) + resistance_flags = FIRE_PROOF + +/obj/item/clothing/mask/gas/explorer/attack_self(mob/user) + adjustmask(user) + +/obj/item/clothing/mask/gas/explorer/adjustmask(user) + ..() + w_class = mask_adjusted ? WEIGHT_CLASS_NORMAL : WEIGHT_CLASS_SMALL + +/obj/item/clothing/mask/gas/explorer/folded/New() + ..() + adjustmask() diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm new file mode 100644 index 0000000000..15d6c6afc5 --- /dev/null +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -0,0 +1,86 @@ +/*********************Mining Hammer****************/ +/obj/item/weapon/twohanded/required/mining_hammer + icon = 'icons/obj/mining.dmi' + icon_state = "mining_hammer1" + item_state = "mining_hammer1" + name = "proto-kinetic crusher" + desc = "An early design of the proto-kinetic accelerator, it is little more than an combination of various mining tools cobbled together, forming a high-tech club. \ + While it is an effective mining tool, it did little to aid any but the most skilled and/or suicidal miners against local fauna.\ + \nMark a mob with the destabilizing force, then hit them in melee to activate it for extra damage. Extra damage if backstabbed in this fashion. \ + This weapon is only particularly effective against large creatures." + force = 20 //As much as a bone spear, but this is significantly more annoying to carry around due to requiring the use of both hands at all times + w_class = WEIGHT_CLASS_BULKY + slot_flags = SLOT_BACK + force_unwielded = 20 //It's never not wielded so these are the same + force_wielded = 20 + throwforce = 5 + throw_speed = 4 + luminosity = 4 + armour_penetration = 10 + materials = list(MAT_METAL=1150, MAT_GLASS=2075) + hitsound = 'sound/weapons/bladeslice.ogg' + attack_verb = list("smashed", "crushed", "cleaved", "chopped", "pulped") + sharpness = IS_SHARP + var/charged = TRUE + var/charge_time = 14 + +/obj/item/projectile/destabilizer + name = "destabilizing force" + icon_state = "pulse1" + nodamage = TRUE + damage = 0 //We're just here to mark people. This is still a melee weapon. + damage_type = BRUTE + flag = "bomb" + range = 6 + log_override = TRUE + var/obj/item/weapon/twohanded/required/mining_hammer/hammer_synced + +/obj/item/projectile/destabilizer/Destroy() + hammer_synced = null + return ..() + +/obj/item/projectile/destabilizer/on_hit(atom/target, blocked = 0) + if(isliving(target)) + var/mob/living/L = target + var/datum/status_effect/crusher_mark/CM = L.apply_status_effect(STATUS_EFFECT_CRUSHERMARK) + CM.hammer_synced = hammer_synced + var/target_turf = get_turf(target) + if(ismineralturf(target_turf)) + var/turf/closed/mineral/M = target_turf + new /obj/effect/temp_visual/kinetic_blast(M) + M.gets_drilled(firer) + ..() + +/obj/item/weapon/twohanded/required/mining_hammer/afterattack(atom/target, mob/user, proximity_flag) + if(!proximity_flag && charged)//Mark a target, or mine a tile. + var/turf/proj_turf = user.loc + if(!isturf(proj_turf)) + return + var/obj/item/projectile/destabilizer/D = new /obj/item/projectile/destabilizer(proj_turf) + D.preparePixelProjectile(target, get_turf(target), user) + D.hammer_synced = src + playsound(user, 'sound/weapons/plasma_cutter.ogg', 100, 1) + D.fire() + charged = FALSE + icon_state = "mining_hammer1_uncharged" + addtimer(CALLBACK(src, .proc/Recharge), charge_time) + return + if(proximity_flag && isliving(target)) + var/mob/living/L = target + var/datum/status_effect/crusher_mark/CM = L.has_status_effect(STATUS_EFFECT_CRUSHERMARK) + if(!CM || CM.hammer_synced != src || !L.remove_status_effect(STATUS_EFFECT_CRUSHERMARK)) + return + new /obj/effect/temp_visual/kinetic_blast(get_turf(L)) + var/backstab_dir = get_dir(user, L) + var/def_check = L.getarmor(type = "bomb") + if((user.dir & backstab_dir) && (L.dir & backstab_dir)) + L.apply_damage(80, BRUTE, blocked = def_check) + playsound(user, 'sound/weapons/Kenetic_accel.ogg', 100, 1) //Seriously who spelled it wrong + else + L.apply_damage(50, BRUTE, blocked = def_check) + +/obj/item/weapon/twohanded/required/mining_hammer/proc/Recharge() + if(!charged) + charged = TRUE + icon_state = "mining_hammer1" + playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) diff --git a/code/modules/mining/equipment/lazarus_injector.dm b/code/modules/mining/equipment/lazarus_injector.dm new file mode 100644 index 0000000000..7199e29bf4 --- /dev/null +++ b/code/modules/mining/equipment/lazarus_injector.dm @@ -0,0 +1,61 @@ +/**********************Lazarus Injector**********************/ +/obj/item/weapon/lazarus_injector + name = "lazarus injector" + desc = "An injector with a cocktail of nanomachines and chemicals, this device can seemingly raise animals from the dead, making them become friendly to the user. Unfortunately, the process is useless on higher forms of life and incredibly costly, so these were hidden in storage until an executive thought they'd be great motivation for some of their employees." + icon = 'icons/obj/syringe.dmi' + icon_state = "lazarus_hypo" + item_state = "hypo" + throwforce = 0 + w_class = WEIGHT_CLASS_SMALL + throw_speed = 3 + throw_range = 5 + var/loaded = 1 + var/malfunctioning = 0 + var/revive_type = SENTIENCE_ORGANIC //So you can't revive boss monsters or robots with it + origin_tech = "biotech=4;magnets=6" + +/obj/item/weapon/lazarus_injector/afterattack(atom/target, mob/user, proximity_flag) + if(!loaded) + return + if(isliving(target) && proximity_flag) + if(istype(target, /mob/living/simple_animal)) + var/mob/living/simple_animal/M = target + if(M.sentience_type != revive_type) + to_chat(user, "[src] does not work on this sort of creature.") + return + if(M.stat == DEAD) + M.faction = list("neutral") + M.revive(full_heal = 1, admin_revive = 1) + if(ishostile(target)) + var/mob/living/simple_animal/hostile/H = M + if(malfunctioning) + H.faction |= list("lazarus", "\ref[user]") + H.robust_searching = 1 + H.friends += user + H.attack_same = 1 + log_game("[user] has revived hostile mob [target] with a malfunctioning lazarus injector") + else + H.attack_same = 0 + loaded = 0 + user.visible_message("[user] injects [M] with [src], reviving it.") + SSblackbox.add_details("lazarus_injector", "[M.type]") + playsound(src,'sound/effects/refill.ogg',50,1) + icon_state = "lazarus_empty" + return + else + to_chat(user, "[src] is only effective on the dead.") + return + else + to_chat(user, "[src] is only effective on lesser beings.") + return + +/obj/item/weapon/lazarus_injector/emp_act() + if(!malfunctioning) + malfunctioning = 1 + +/obj/item/weapon/lazarus_injector/examine(mob/user) + ..() + if(!loaded) + to_chat(user, "[src] is empty.") + if(malfunctioning) + to_chat(user, "The display on [src] seems to be flickering.") diff --git a/code/modules/mining/equipment/mineral_scanner.dm b/code/modules/mining/equipment/mineral_scanner.dm new file mode 100644 index 0000000000..4f76c98a28 --- /dev/null +++ b/code/modules/mining/equipment/mineral_scanner.dm @@ -0,0 +1,79 @@ +/**********************Mining Scanners**********************/ +/obj/item/device/mining_scanner + desc = "A scanner that checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations." + name = "manual mining scanner" + icon_state = "mining1" + item_state = "analyzer" + w_class = WEIGHT_CLASS_SMALL + flags = CONDUCT + slot_flags = SLOT_BELT + var/cooldown = 35 + var/current_cooldown = 0 + origin_tech = "engineering=1;magnets=1" + +/obj/item/device/mining_scanner/attack_self(mob/user) + if(!user.client) + return + if(current_cooldown <= world.time) + current_cooldown = world.time + cooldown + mineral_scan_pulse(get_turf(user)) + +//Debug item to identify all ore spread quickly +/obj/item/device/mining_scanner/admin + +/obj/item/device/mining_scanner/admin/attack_self(mob/user) + for(var/turf/closed/mineral/M in world) + if(M.scan_state) + M.icon_state = M.scan_state + qdel(src) + +/obj/item/device/t_scanner/adv_mining_scanner + desc = "A scanner that automatically checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations. This one has an extended range." + name = "advanced automatic mining scanner" + icon_state = "mining0" + item_state = "analyzer" + w_class = WEIGHT_CLASS_SMALL + flags = CONDUCT + slot_flags = SLOT_BELT + var/cooldown = 35 + var/current_cooldown = 0 + var/range = 7 + origin_tech = "engineering=3;magnets=3" + +/obj/item/device/t_scanner/adv_mining_scanner/lesser + name = "automatic mining scanner" + desc = "A scanner that automatically checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations." + range = 4 + cooldown = 50 + +/obj/item/device/t_scanner/adv_mining_scanner/scan() + if(current_cooldown <= world.time) + current_cooldown = world.time + cooldown + var/turf/t = get_turf(src) + mineral_scan_pulse(t, range) + +/proc/mineral_scan_pulse(turf/T, range = world.view) + var/list/minerals = list() + for(var/turf/closed/mineral/M in range(range, T)) + if(M.scan_state) + minerals += M + if(LAZYLEN(minerals)) + for(var/turf/closed/mineral/M in minerals) + var/obj/effect/temp_visual/mining_overlay/oldC = locate(/obj/effect/temp_visual/mining_overlay) in M + if(oldC) + qdel(oldC) + var/obj/effect/temp_visual/mining_overlay/C = new /obj/effect/temp_visual/mining_overlay(M) + C.icon_state = M.scan_state + +/obj/effect/temp_visual/mining_overlay + plane = FULLSCREEN_PLANE + layer = FLASH_LAYER + icon = 'icons/effects/ore_visuals.dmi' + appearance_flags = 0 //to avoid having TILE_BOUND in the flags, so that the 480x480 icon states let you see it no matter where you are + duration = 35 + pixel_x = -224 + pixel_y = -224 + +/obj/effect/temp_visual/mining_overlay/Initialize() + . = ..() + animate(src, alpha = 0, time = duration, easing = EASE_IN) diff --git a/code/modules/mining/equipment/resonator.dm b/code/modules/mining/equipment/resonator.dm new file mode 100644 index 0000000000..c54def1b2b --- /dev/null +++ b/code/modules/mining/equipment/resonator.dm @@ -0,0 +1,120 @@ +/**********************Resonator**********************/ +/obj/item/weapon/resonator + name = "resonator" + icon = 'icons/obj/mining.dmi' + icon_state = "resonator" + item_state = "resonator" + desc = "A handheld device that creates small fields of energy that resonate until they detonate, crushing rock. It's more effective in a vacuum." + w_class = WEIGHT_CLASS_NORMAL + force = 15 + throwforce = 10 + var/burst_time = 30 + var/fieldlimit = 4 + var/list/fields = list() + var/quick_burst_mod = 0.8 + origin_tech = "magnets=3;engineering=3" + +/obj/item/weapon/resonator/upgraded + name = "upgraded resonator" + desc = "An upgraded version of the resonator that can produce more fields at once, as well as having no damage penalty for bursting a resonance field early." + icon_state = "resonator_u" + item_state = "resonator_u" + origin_tech = "materials=4;powerstorage=3;engineering=3;magnets=3" + fieldlimit = 6 + quick_burst_mod = 1 + +/obj/item/weapon/resonator/attack_self(mob/user) + if(burst_time == 50) + burst_time = 30 + to_chat(user, "You set the resonator's fields to detonate after 3 seconds.") + else + burst_time = 50 + to_chat(user, "You set the resonator's fields to detonate after 5 seconds.") + +/obj/item/weapon/resonator/proc/CreateResonance(target, mob/user) + var/turf/T = get_turf(target) + var/obj/effect/temp_visual/resonance/R = locate(/obj/effect/temp_visual/resonance) in T + if(R) + R.damage_multiplier = quick_burst_mod + R.burst() + return + if(LAZYLEN(fields) < fieldlimit) + new /obj/effect/temp_visual/resonance(T, user, src, burst_time) + user.changeNext_move(CLICK_CD_MELEE) + +/obj/item/weapon/resonator/pre_attackby(atom/target, mob/user, params) + if(check_allowed_items(target, 1)) + CreateResonance(target, user) + return TRUE + +//resonance field, crushes rock, damages mobs +/obj/effect/temp_visual/resonance + name = "resonance field" + desc = "A resonating field that significantly damages anything inside of it when the field eventually ruptures. More damaging in low pressure environments." + icon_state = "shield1" + layer = ABOVE_ALL_MOB_LAYER + duration = 50 + var/resonance_damage = 20 + var/damage_multiplier = 1 + var/creator + var/obj/item/weapon/resonator/res + +/obj/effect/temp_visual/resonance/Initialize(mapload, set_creator, set_resonator, set_duration) + duration = set_duration + . = ..() + creator = set_creator + res = set_resonator + if(res) + res.fields += src + playsound(src,'sound/weapons/resonator_fire.ogg',50,1) + transform = matrix()*0.75 + animate(src, transform = matrix()*1.5, time = duration) + deltimer(timerid) + timerid = addtimer(CALLBACK(src, .proc/burst), duration, TIMER_STOPPABLE) + +/obj/effect/temp_visual/resonance/Destroy() + if(res) + res.fields -= src + res = null + creator = null + . = ..() + +/obj/effect/temp_visual/resonance/proc/check_pressure(turf/proj_turf) + if(!proj_turf) + proj_turf = get_turf(src) + if(!istype(proj_turf)) + return + var/datum/gas_mixture/environment = proj_turf.return_air() + var/pressure = environment.return_pressure() + resonance_damage = initial(resonance_damage) + if(pressure < 50) + name = "strong [initial(name)]" + resonance_damage *= 3 + else + name = initial(name) + resonance_damage *= damage_multiplier + +/obj/effect/temp_visual/resonance/proc/burst() + var/turf/T = get_turf(src) + new /obj/effect/temp_visual/resonance_crush(T) + if(ismineralturf(T)) + var/turf/closed/mineral/M = T + M.gets_drilled(creator) + check_pressure(T) + playsound(T,'sound/weapons/resonator_blast.ogg',50,1) + for(var/mob/living/L in T) + if(creator) + add_logs(creator, L, "used a resonator field on", "resonator") + to_chat(L, "[src] ruptured with you in it!") + L.apply_damage(resonance_damage, BRUTE) + qdel(src) + +/obj/effect/temp_visual/resonance_crush + icon_state = "shield1" + layer = ABOVE_ALL_MOB_LAYER + duration = 4 + +/obj/effect/temp_visual/resonance_crush/Initialize() + . = ..() + transform = matrix()*1.5 + animate(src, transform = matrix()*0.1, alpha = 50, time = 4) diff --git a/code/modules/mining/equipment/vendor_items.dm b/code/modules/mining/equipment/vendor_items.dm new file mode 100644 index 0000000000..4ff83ea21f --- /dev/null +++ b/code/modules/mining/equipment/vendor_items.dm @@ -0,0 +1,33 @@ +/**********************Mining Equipment Vendor Items**************************/ +//misc stuff you can buy from the vendor that has special code but doesn't really need its own file + +/**********************Facehugger toy**********************/ +/obj/item/clothing/mask/facehugger/toy + item_state = "facehugger_inactive" + desc = "A toy often used to play pranks on other miners by putting it in their beds. It takes a bit to recharge after latching onto something." + throwforce = 0 + real = 0 + sterile = 1 + tint = 3 //Makes it feel more authentic when it latches on + +/obj/item/clothing/mask/facehugger/toy/Die() + return + +/*********************Hivelord stabilizer****************/ +/obj/item/weapon/hivelordstabilizer + name = "stabilizing serum" + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle19" + desc = "Inject certain types of monster organs with this stabilizer to preserve their healing powers indefinitely." + w_class = WEIGHT_CLASS_TINY + origin_tech = "biotech=3" + +/obj/item/weapon/hivelordstabilizer/afterattack(obj/item/organ/M, mob/user) + var/obj/item/organ/hivelord_core/C = M + if(!istype(C, /obj/item/organ/hivelord_core)) + to_chat(user, "The stabilizer only works on certain types of monster organs, generally regenerative in nature.") + return ..() + + C.preserved() + to_chat(user, "You inject the [M] with the stabilizer. It will no longer go inert.") + qdel(src) diff --git a/code/modules/mining/equipment/wormhole_jaunter.dm b/code/modules/mining/equipment/wormhole_jaunter.dm new file mode 100644 index 0000000000..135f4482fc --- /dev/null +++ b/code/modules/mining/equipment/wormhole_jaunter.dm @@ -0,0 +1,109 @@ +/**********************Jaunter**********************/ +/obj/item/device/wormhole_jaunter + name = "wormhole jaunter" + desc = "A single use device harnessing outdated wormhole technology, Nanotrasen has since turned its eyes to blue space for more accurate teleportation. The wormholes it creates are unpleasant to travel through, to say the least.\nThanks to modifications provided by the Free Golems, this jaunter can be worn on the belt to provide protection from chasms." + icon = 'icons/obj/mining.dmi' + icon_state = "Jaunter" + item_state = "electronic" + throwforce = 0 + w_class = WEIGHT_CLASS_SMALL + throw_speed = 3 + throw_range = 5 + origin_tech = "bluespace=2" + slot_flags = SLOT_BELT + +/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 + activate(user) + +/obj/item/device/wormhole_jaunter/proc/turf_check(mob/user) + var/turf/device_turf = get_turf(user) + if(!device_turf||device_turf.z==2||device_turf.z>=7) + to_chat(user, "You're having difficulties getting the [src.name] to work.") + return FALSE + return TRUE + +/obj/item/device/wormhole_jaunter/proc/get_destinations(mob/user) + var/list/destinations = list() + + if(isgolem(user)) + for(var/obj/item/device/radio/beacon/B in GLOB.teleportbeacons) + var/turf/T = get_turf(B) + if(istype(T.loc, /area/ruin/powered/golem_ship)) + destinations += B + + // In the event golem beacon is destroyed, send to station instead + if(destinations.len) + return destinations + + for(var/obj/item/device/radio/beacon/B in GLOB.teleportbeacons) + var/turf/T = get_turf(B) + if(T.z == ZLEVEL_STATION) + destinations += B + + return destinations + +/obj/item/device/wormhole_jaunter/proc/activate(mob/user) + if(!turf_check(user)) + return + + var/list/L = get_destinations(user) + if(!L.len) + to_chat(user, "The [src.name] found no beacons in the world to anchor a wormhole to.") + return + var/chosen_beacon = pick(L) + var/obj/effect/portal/wormhole/jaunt_tunnel/J = new /obj/effect/portal/wormhole/jaunt_tunnel(get_turf(src), chosen_beacon, lifespan=100) + J.target = chosen_beacon + try_move_adjacent(J) + playsound(src,'sound/effects/sparks4.ogg',50,1) + qdel(src) + +/obj/item/device/wormhole_jaunter/emp_act(power) + var/triggered = FALSE + + if(usr.get_item_by_slot(slot_belt) == src) + if(power == 1) + triggered = TRUE + else if(power == 2 && prob(50)) + triggered = TRUE + + if(triggered) + usr.visible_message("The [src] overloads and activates!") + SSblackbox.add_details("jaunter","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 + activate(user) + else + to_chat(user, "The [src] is not attached to your belt, preventing it from saving you from the chasm. RIP.") + +//jaunter tunnel +/obj/effect/portal/wormhole/jaunt_tunnel + name = "jaunt tunnel" + icon = 'icons/effects/effects.dmi' + icon_state = "bhole3" + desc = "A stable hole in the universe made by a wormhole jaunter. Turbulent doesn't even begin to describe how rough passage through one of these is, but at least it will always get you somewhere near a beacon." + mech_sized = TRUE //save your ripley + +/obj/effect/portal/wormhole/jaunt_tunnel/teleport(atom/movable/M) + if(istype(M, /obj/effect)) + return + + if(M.anchored) + if(!(istype(M, /obj/mecha) && mech_sized)) + return + + if(istype(M, /atom/movable)) + if(do_teleport(M, target, 6)) + // KERPLUNK + playsound(M,'sound/weapons/resonator_blast.ogg',50,1) + if(iscarbon(M)) + var/mob/living/carbon/L = M + L.Weaken(3) + if(ishuman(L)) + shake_camera(L, 20, 1) + addtimer(CALLBACK(L, /mob/living/carbon.proc/vomit), 20) diff --git a/tgstation.dme b/tgstation.dme index 2d2e35f59e..d7d2b0949d 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1472,7 +1472,6 @@ #include "code\modules\mining\abandoned_crates.dm" #include "code\modules\mining\aux_base.dm" #include "code\modules\mining\aux_base_camera.dm" -#include "code\modules\mining\equipment.dm" #include "code\modules\mining\fulton.dm" #include "code\modules\mining\machine_input_output_plates.dm" #include "code\modules\mining\machine_processing.dm" @@ -1487,6 +1486,13 @@ #include "code\modules\mining\ores_coins.dm" #include "code\modules\mining\satchel_ore_boxdm.dm" #include "code\modules\mining\shelters.dm" +#include "code\modules\mining\equipment\explorer_gear.dm" +#include "code\modules\mining\equipment\kinetic_crusher.dm" +#include "code\modules\mining\equipment\lazarus_injector.dm" +#include "code\modules\mining\equipment\mineral_scanner.dm" +#include "code\modules\mining\equipment\resonator.dm" +#include "code\modules\mining\equipment\vendor_items.dm" +#include "code\modules\mining\equipment\wormhole_jaunter.dm" #include "code\modules\mining\laborcamp\laborshuttle.dm" #include "code\modules\mining\laborcamp\laborstacker.dm" #include "code\modules\mining\lavaland\ash_flora.dm" From 34f82efdd70ecc6e3a0e4ac5047ab8af87731456 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Wed, 24 May 2017 08:30:23 -0500 Subject: [PATCH 015/122] mind over matter --- code/_onclick/click.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 685723127d..a8e2681dc9 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -326,8 +326,8 @@ /mob/living/carbon/human/CtrlClick(mob/user) if(ishuman(user) && Adjacent(user)) var/mob/living/carbon/human/H = user - H.dna.species.grab(H, src, H.martial_art) - H.next_click = world.time + CLICK_CD_MELEE + H.dna.species.grab(H, src, H.mind.martial_art) + H.changeNext_move(CLICK_CD_MELEE) else ..() /* From 7699d27c3766db278e790e034db7f8f80f1ac3a0 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 08:33:16 -0500 Subject: [PATCH 016/122] Automatic changelog generation for PR #1152 [ci skip] --- html/changelogs/AutoChangeLog-pr-1152.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1152.yml diff --git a/html/changelogs/AutoChangeLog-pr-1152.yml b/html/changelogs/AutoChangeLog-pr-1152.yml new file mode 100644 index 0000000000..813a4a931a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1152.yml @@ -0,0 +1,4 @@ +author: "Steelpoint" +delete-after: True +changes: + - tweak: "Changes to production of Nanotrasen Auto Rifle armour piercing bullets have now made AP bullets better able to penetrate armour, but at the cost of the amount of possible damage the bullet can do to soft targets." From 9dfbe3e07d7e59409d4b8d48abf24a831c901c32 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 08:33:36 -0500 Subject: [PATCH 017/122] Automatic changelog generation for PR #1150 [ci skip] --- html/changelogs/AutoChangeLog-pr-1150.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1150.yml diff --git a/html/changelogs/AutoChangeLog-pr-1150.yml b/html/changelogs/AutoChangeLog-pr-1150.yml new file mode 100644 index 0000000000..7bc3eb78a5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1150.yml @@ -0,0 +1,4 @@ +author: "Steelpoint" +delete-after: True +changes: + - rscadd: "Many Ballistic weapons now have new sounds related to reloading or placing bullets into magazines." From cc219dc81b53800e3153aff3e4777a4e04878f0e Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 08:34:00 -0500 Subject: [PATCH 018/122] Automatic changelog generation for PR #1144 [ci skip] --- html/changelogs/AutoChangeLog-pr-1144.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1144.yml diff --git a/html/changelogs/AutoChangeLog-pr-1144.yml b/html/changelogs/AutoChangeLog-pr-1144.yml new file mode 100644 index 0000000000..8dc8d42475 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1144.yml @@ -0,0 +1,4 @@ +author: "QualityVan" +delete-after: True +changes: + - bugfix: "Inserted legion cores no longer work if they went inert before implanting" From a489730548127df51f555982331119de257b4768 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 08:34:20 -0500 Subject: [PATCH 019/122] Automatic changelog generation for PR #1143 [ci skip] --- html/changelogs/AutoChangeLog-pr-1143.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1143.yml diff --git a/html/changelogs/AutoChangeLog-pr-1143.yml b/html/changelogs/AutoChangeLog-pr-1143.yml new file mode 100644 index 0000000000..7eda0316fd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1143.yml @@ -0,0 +1,4 @@ +author: "Steelpoint" +delete-after: True +changes: + - rscadd: "Sketchin alternative magazines (Armour Piercing, Hollow Point, Incendiary) now have unique sprites to better identify them." From 936e1d3061cb35433844c7958212e959d63c51ad Mon Sep 17 00:00:00 2001 From: LetterJay Date: Wed, 24 May 2017 08:40:45 -0500 Subject: [PATCH 020/122] Missed during mirror downtime --- code/modules/clothing/outfits/ert.dm | 5 ++--- code/modules/projectiles/ammunition/energy.dm | 3 +++ code/modules/projectiles/guns/energy/energy_gun.dm | 6 ++++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm index b3f74b038f..fccfe21589 100644 --- a/code/modules/clothing/outfits/ert.dm +++ b/code/modules/clothing/outfits/ert.dm @@ -65,9 +65,8 @@ backpack_contents = list(/obj/item/weapon/storage/box/engineer=1,\ /obj/item/weapon/storage/box/handcuffs=1,\ /obj/item/clothing/mask/gas/sechailer=1,\ - /obj/item/weapon/gun/energy/e_gun=1,\ - /obj/item/weapon/melee/baton/loaded=1,\ - /obj/item/weapon/gun/energy/e_gun/advtaser=1) + /obj/item/weapon/gun/energy/e_gun/stun=1,\ + /obj/item/weapon/melee/baton/loaded=1) /datum/outfit/ert/security/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) ..() diff --git a/code/modules/projectiles/ammunition/energy.dm b/code/modules/projectiles/ammunition/energy.dm index 7da945a5b8..51703e0a5a 100644 --- a/code/modules/projectiles/ammunition/energy.dm +++ b/code/modules/projectiles/ammunition/energy.dm @@ -78,6 +78,9 @@ fire_sound = 'sound/weapons/taser.ogg' e_cost = 200 +/obj/item/ammo_casing/energy/electrode/spec + e_cost = 100 + /obj/item/ammo_casing/energy/electrode/gun fire_sound = 'sound/weapons/gunshot.ogg' e_cost = 100 diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm index cc1166814b..e115d58190 100644 --- a/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/code/modules/projectiles/guns/energy/energy_gun.dm @@ -31,6 +31,12 @@ if(gun_light && gun_light.on) add_overlay("mini-light") +/obj/item/weapon/gun/energy/e_gun/stun + name = "tactical energy gun" + desc = "Military issue energy gun, is able to fire stun rounds." + ammo_type = list(/obj/item/ammo_casing/energy/electrode/spec, /obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser) + + /obj/item/weapon/gun/energy/e_gun/mini/practice_phaser name = "practice phaser" desc = "A modified version of the basic phaser gun, this one fires less concentrated energy bolts designed for target practice." From 9fb472a2c8bba6fa3d8f59f931909ba631257e58 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 10:31:31 -0500 Subject: [PATCH 021/122] Automatic changelog generation for PR #1158 [ci skip] --- html/changelogs/AutoChangeLog-pr-1158.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1158.yml diff --git a/html/changelogs/AutoChangeLog-pr-1158.yml b/html/changelogs/AutoChangeLog-pr-1158.yml new file mode 100644 index 0000000000..0cb4ddd10d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1158.yml @@ -0,0 +1,4 @@ +author: "Steelpoint" +delete-after: True +changes: + - rscadd: "ERT, non-red alert, Security Response Officers spawn with a Tactical Energy Gun. This is a military variant of the Egun that, in addition to laser and disable rounds, has access to stun rounds." From 3814ad75bea82b4d2de287f705313a94480e2df8 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 12:12:35 -0500 Subject: [PATCH 022/122] Automatic changelog generation for PR #1156 [ci skip] --- html/changelogs/AutoChangeLog-pr-1156.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1156.yml diff --git a/html/changelogs/AutoChangeLog-pr-1156.yml b/html/changelogs/AutoChangeLog-pr-1156.yml new file mode 100644 index 0000000000..eda11511f8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1156.yml @@ -0,0 +1,4 @@ +author: "Steelpoint" +delete-after: True +changes: + - bugfix: "Fixed Battleship Raven's bridge blast doors not working." From c8d071ccf44b8d0415a4fbddd51ab06b66ec2c12 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Wed, 24 May 2017 12:20:50 -0500 Subject: [PATCH 023/122] 25 kill streak with a famas --- .../projectiles/guns/energy/energy_gun.dm | 2 ++ icons/mob/inhands/guns_lefthand.dmi | Bin 48673 -> 50730 bytes icons/mob/inhands/guns_righthand.dmi | Bin 50710 -> 54829 bytes 3 files changed, 2 insertions(+) diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm index e115d58190..52f9852344 100644 --- a/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/code/modules/projectiles/guns/energy/energy_gun.dm @@ -34,6 +34,8 @@ /obj/item/weapon/gun/energy/e_gun/stun name = "tactical energy gun" desc = "Military issue energy gun, is able to fire stun rounds." + icon_state = "energytac" + ammo_x_offset = 2 ammo_type = list(/obj/item/ammo_casing/energy/electrode/spec, /obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser) diff --git a/icons/mob/inhands/guns_lefthand.dmi b/icons/mob/inhands/guns_lefthand.dmi index 417e97f77038ad865d00ec11b5594def0a79e903..4661fdc2604dd185416cdb68fb23aa732a623cf5 100644 GIT binary patch literal 50730 zcmd43cUTi!xG#)dw*||#02@$2P(e{z5P_&5MVf+ubd_Es(o2ZwR%Fuz1f)i!2>~J? zL~2kJq)RUWBGOBUBqSkqz7_Z0_ndq0_k7QNzCZ3cJd;_InKhHO)~xmZ-tv2ix@n}d z_c!6+1Ox>3>gj5k2ncL>1U`3nZU<+O54I12FYiNc-|^FO@^yIV_Q1~#;VmE#l$rnP zqc=fi|Fa&t>3)*ZozFhs?h9)8CEP#YX}Z4mal+>t<2UmzXr3A(Fz%{4+gzr0s0(j| zTS9v-DWu2Gp|Q{;3Kl5H=y2)yasPsdFMF8waP3F>Kw7LNQTAw-zgKDiT=G_hvxCM> zYNoENzHl=wa`ugnth0l6YBbuQ;c(?eSjTk-bwg(dbBpEvzCpLeB}Jq{v|Y~|#JyUd zYst8ywcYOHK}Wt%Rtn(I+d{T3Wq6q9xUV-xmGa)jIXovF^GnRtJ#2sbUHL!=2J%<# zbTJ8fJkVbyO;aQ3sb38>>4}Msm@uBXS%x+G>K7Vng2PGs^NYyLgCerH{v>L+^ZtF; z)c5Q#7yKMCsOfW;c6a5@MqlH{URXqQx5yu{;x<=}XLex*cO3DLp`~t#4*4QHBa&-; zeq_dd<{MsXwQhkl-L!_XF5G#$n5a}s)_PcNlf4`iwe?J9)YhVOP^N)0Rla<8>Gf-} zPfk5+IxqF7L!{5WKjW^5XXRa}E;UqT<0dI;QG<2$&~5hV>P0;Sj%WIZXVcdSQ_aul z=yIjKugdSOZ#FBSC1}GJn-{j7F5>S7_&cb1;mgU=4^m||AMQT>dd>COS6RjDjz`iZ z_FM!L3)yH@N}PO={uo*EJZ(&&(8+eP%xCZI+ z@sol0ya>-DiVv>+CamJWt(1`@o;@=axr%6A><-9Wb!%Pp2F0{U)T|t|s4f5Ya@%X~ zQ%`DB_bfSoz06*vkR^AoM_U|O_#G?zO~TGnoi|x!%i0pbQ`Xr$v6OHnemdcbu?fPu zSo^ATb%euT#|aEE$&NP{B(lEKGDR*t=t+6o7{th^TDT!My-H zwTA)%#|8AXuHFvHT$w?5E`H)P7 z*;b0_Yf1x3Qrh5JcxKuqX^}tC zbVEnNrshg|AT`TPD@&^tl8e1s*F44u$*V7g5T`G)m9PD%F;!ziiY&wD8}TdnNIFvGH4GX+T#t$qSr5SRq@4 zsq3&n%o=yW(>i4#NBI#ZesI-`7l8UowD@Wd+KFTy^(GW^%!VCbqIks~w?B9-H_box z}BkB2(tY9y$5u^4O_0d4KG&*%A< z^11$X+#6TiQGZ28BL@X3($GM>W;!(UzZg!%P^*$nii6DSG}%1X!g2W}profBm;;WwFb`awxhpVm)GV8y{>@n2Zx z)lxTkh#DprrHgu;i0@Bs+E{tjX73+cfFP)z=!OaiG7;yqp?rF4G8K-M{?W)Nq&M6z zzt{Zi01+!3tKIc%uSjR#n3aQM5)oBHIhi#@yI5P3e6&aE1zNUQmQdLHL;-7_qqNPrQ^X+!_LQSqI@edx9Hm{yjdQi84| zv2FJ8`{b7?M+h{nlL>c}*}sLL!1{~ind45_qa98eW*%ARy?`_0*JxMJ#67reQyheixxgmA@T!?#7BAk$Kl%{4X+OWb_V~Y5x%0Wd z$8egBcymxX%FgNSlBnRGN1&Bgp1G$C#1J0c7eraugkL}X>J7T^4Hwsw1+0^~?j8oa>cz7kPiq2DQt z6niTC!S_e!Yi17WjqcUdjI4K*zvTLTZF>JJE8Njm7X~#^|9o%6mK_6=lVxcNF11Jn z%OcPY-ySc~W1AI3pFgw1R#cdn4MyL-dBL#KIeC#3817Ny`+2p!+PiRt@PX3au>+|w z!TX>p0OX2x;+urGm;4r9WM>JR6>Mprj)#YHMvHpyF~}B?`$U(*@%YtOtxwV>(3+9^ z&Im`b-pFZE(Y0=-%1m@-ty}*$E_*3s;wGr7>O8C-T0Q^kbkbxf`NiQ_EoAReAho0T zv%UEhUa|^@Lo08sy|{>?0B^q6H}(g&bXp>1O|?7O;wwIVInt{Vg0)4*!94dOtUaFfJ63FK;!;ft`dATp znm{0PhC+T6wU(x&9N}M&Pjulip(blD8%n*-jx`P@op_+j zYaufW*(a|oJrJ4UG=v;DUIo9}2G2TioHnDpzzn^(HIENnPdWK_WD6Wa``Vq4RqPP6 z2Ez-wdV6%7Iu5^^s?P1~Hj}yB*{Lh5pk^QfTR_nKzVb>Y@KFvI z+)Ep5cO7E3vX*4Rd_HrKv>Wp`4__aeq14ZmPfptT)7ITvqLG@fJ(z-v#s~y@(m5-k$XK!yV5E+oNy)(H8$Z!C$VlR7phH^Fpty-$-qicka5h+^|x7b$-_W z8LrAevmL1!{0~rqOl@pDg@uJ%O7J;3A7$<8M?M2pGmQDr!SVO#FWWVExgHi7@Y(=> zbL5_}p>N+VeABEetkEd&tG3K{Dsa~O#OW>e=q%}zS0L9vZ5D&-sYlYmmAQCxTL;#J=YRR|3?Fd$$^=ScHY>6-14ej9l!q*InwRek9m2^_d}!NgdnV zWX_yBSG^pib+X)(et4ayb@Bjpn}fC*T~|_mad%71#&16Rafy9>Z*2o551wgvw!cdL zrPH`H@^u06RnF+AhEbXOxwg(HOE^v@xc;taUQEYt#{pUj9A|`aHG!W5{4xG-8#4cY ze-9WyW!81wB{nsm9P7}@G8V6Zw&2u&j(R@H?}u)r^p@}K$ugZOT^ar~9Ar1TCql-e z?1BY~O|EjH&Xv#=4)ls_OfYxLXa?i!X(`sN`QC5_Oe{KMu3#=E9t(h4E@OHAn%a?` z9zH)4x9D^z6LLbBS}{xfuN9zz;TY3c;~>+IOb$Z+Cg7Ef*oZvKfTUq37Onbry~{?@gXtM7)&g3bYPjl-rYC% ze$KD@IBi}A9hY&Aff^fs*l|us+**0KYcQY{{qhz69Cf;JHpRL#g$?&=q%3|wgxt0p z2*k(yCzDS|)L!<8!tyDFaUQq!`pE-_NZ8PTXa0o*@w(xfvWbOtPU^8FAKqF}r|dWA2)4bHeTK<3RQuc zArf%f+_VK&9%4pEo(nzvxpr87j@lxRhNUDe6H=>It6~Ol=@c|RXoR&fh}leazgeqP zC~=ybrWjZy7QV8LiwkDUPqv~maK?c=y&~+AaEArNxI8o@jayh`W2x&OAVNJdWTX73 zqT8yw970OMcEUDA5*VMZz^dv)Cd-4Vp+q8uC?*`+u(_Ua_)qpn1Bu0Qt!suP(qF;r zOPs&0QFahzX-U2tYH_TiEG=)>IQoLqlbF}0&t9U-qw3%(vt*8oRFc~~Tv`mKkfb*| zxa~Y7l&F~BXe91sjQ1`yVJjS<#Rj4k z8IdkqYdd)t2(QeaOP9!f1rfR)y#@+i&`PNoTLQul!L#VJz6lLJSH&K!vC_QHthg$J z3b)zx9>-{EJ#(r_7pT6*?a{2s>^rt*vm25ZltZg6 z<lWMW+!JuBaEdiOoOCjt0+$%}kG(}rdqTmU zf?_CG(Th<048L-=>S;(go`TI9Vakaz*WhP<)q6Qmn;N{%!4G_C#k+L9HJ037dUK*` z_7wjWGcjG(2FR25&Nn*FHbvNnwcT*Q{-FVc%6Qdm{#DHLaO(+SHxaLY-z8GYtD~vNTr{M>%;|ha&MMU_#%+gKvl%C<=Ei`KaDNg{l9p0|1Bz>-Nt^ zy&0;9Vtt=vqHamTO@5D}4>l-H@oj2jpjtSG3dciQr56cK6zYy8D(xH0Pe#t<9;oO# zOuEjyy2P*4AE?@c*SO_TKzrVCapXMd9k-{ zRdqU8So1}>IP_T@!+yMbomTnR`*k!=uV*4S(!cH0Q4zh6A5qe!`BAFWCS&md5kx&u ziH>mRQ5_dH==-+l1h@OP@ zP~hPPSn@6-WHW&LbF!Hlq@Octf)v3!sJ<@f$#m;`=_|Coh40_{jRD;w&WLs#1!GSy z3b8IjD<&wW=}U56CIKp~LtKiH>4*V~KfSNF?-3DTVv?sLYjP&V|}% z|M51O7eeiKUU-zzwcmAEPOqaeB>JMU`r(mDft^@aN%y=2)LnJqs5$*5F_QdMQ!7=> zhsxaP37+6IkdLIaRhb2@&kN|bUPG>}l zf71gM`hEq!3;aRxkw4C|tdCzpf2dTyrh!@#g`%2X_xU3wV8Tc_~5)?!l7F0h8 zeFUzgRu6pm!U3k>9D}1SA~0S4!Oh#f`@_aufwRotN)S5pU&k`vG2xfr_?yol>Z>Q` zPSy0~nV3&P&eN^M{)4E@@E!25nRm${ml$y)>Z1eM-Ci3tI(%1@G4J3%F19+PNEz+x zhY!g|+l~qG)r=^u&VvpHK=nvlkvS5bcBc>xI?YmTRe!GOTHm{uQ?pc|Z|J7i_9|7x!@g$hx81u9rK$=mq2ue% ze>v6QSz=rBtIOkJ|M@o7KZ?&#uZS5JF_QU9wx88lE(zQi>BZEZ;i#i_-|E&r06Wy9 zWSQ`z{6kur!C7pXk+pr;#|p+dJvxtjS~yDkl>d1`$gnly67b>;@K(ZU zX8!(x%ra?(-&|g8qn?#SY9&b<_lY1@hbb&8bt*?$RAr;vt@Sb{Z(zh8P9DFc8qS%y zLT@HrrX}yg>)`?l9}h?X_sD;23>RK@!?yRpg&k5^Y8dSApAH%%7JWHgF;ay0_zk8G z^RJo*Q--2jHH>}j(omBfGeEu8L%q%g_GT&u6Z64{N}By{nRH6DayiaG-L%y{>?%I`%K*0$-ID8`xje!NdD-|bPwxSKlQbHzG)^2hQH z_RX|`e_9IW9ct?7(X*7J*0<>oe8-sh2KS^|viG{JmqS|~80fxV11+e{%ig=Mlq`Y) zL+tM5VM^OA$A96l3BRN_2@CJG*j#%uBt+8U`|(*yhO4BHj?s& z7+pSk+vLx>f?Efp<=k%|ufd36mA}2&W+}?n_F8it)!8&Xi8l^CwQcy2YCagt02B z%NARFAoUY1h9Nua{S%;!01+b%|RJmMQ;X zy{bo~b0UHFI@Tydqtw@Z^7kqdLE6E<9F95qna3A31%?>~pBDR-)Xj^sw_uC>?dzUd zXJ-RBbh|V53~K0_s28F)Ay;RxxA)?T)05*_U_H6K;Lnad7)6KS?~KzupsnZMmi2Yp)*WUy?BYDJ ze`p8B2SmTX&_#1j@mGC>lv zp2v$jvdRm~;oQS`yMa}|-4El9M9B+Gg1w-L*XYo%6G0s6#=i>_H48tF*tBhhamF}9 z*)Y+MGNac(Bj8F#=R1{?q-fmJ?m9Y=lG|9x=&6|7b^Xi6fAZg_K3F~YU!!D%g&zRp z#p^`bOm6;d&-lIg^@$uRm3m5#$z%f8vflEh1Bw!Zs{>jzlW=oD7?<_%x2OCXaWWHzWRo17E>U99kYKyWBfaPyh4OvQ`1R(h)f_KCsSy z?7FV$;3(O4%yLzRa<-4d>O$dFQ=2v9gI50?y1l!WfnMkd%Cx8Y@`p3yEdLl zbGFE3@ zD+imeL|rN1x`=IMW;~ifsWa;u6YwY)1%3`n5*ilba1_dr1C4vSQ6q#0V=_I$_XJPR z&dv($Ft@W?#cXO_OaZ!pavdyOIFWQYlPme|O->G3D~L4qKEB+oOPK%jieGxLT%AO>EtO9o1UDY&Zth=Tu+^YK_) zN!xK~PRS!?*Tyt4=p}yF9UjbiV@Vr7GjaGi#t!J)m~qzD$%VJ{i|oXQl%vsK!np20RRVGtx0EtsJ%z) zEAc}newQn67^alBZ&(B^WRK@hp^+SF-&hk7K;A4ZeI>+gRkDptSE?=S4F! zv$$qVak20*-U@QV|C>+cszK;n|JTN0dq3#j;wQWaWTtib9#mj@}vP*%EGJx z_(sdG3i6JtZQ4`XP#fYy)O*y7cqBp3uNe(9Rjncxp9T8RLLFlB|B$@&@^INF984SP zf&J!8=tpsJy`$tZ2j*I9TW4XETkr_(y^_#xMzQA<39i7UIC!n^heU%e058ucYk7J62 z@k^_C4&{J7RDkwVDJ4X`rb&%vzmLhQS$jn%6Xo=7NFKDZG4pz67vN)7r6+kXF^|h; zoDqv}TOziqh*fy3Ovin3xUouaTOC&C z#N)Tgp~Rr6aLzA(?guI{@GQ#1$BgEN7xe{&UR^ix2~}_gWd^&(8~Rba^qv>J6HA3R z$7Tsg1P3$DduUI^L`XM?5^xyhgckvVjW%8v`6&rYKXtG!0X zbWAgJT?x^0H&h2xkE<~W{Gq}B8<&=r+M9$woX9x`pG64e(;jc-OZ?-nH`mnjiEjeB z;#-dM%RjgNH!Zd9Zf|<*I`F$zuGDbrfvvq?KQA9*Ue@7FY5%7!#fVoX_{eUO**>4r zK@NQUOUg%O|4~Sg@6}xgf*yNXZukLO9P2=FCvIvZ#ta|&sf!y#ql{PpQptmjZNyQp z1k@_u0gs1mPDH)#hHOOz_&7ig>oV*D(bv&C74rK!6P<>XmC&-!wPP>JCptnT3!uIZ zEe&G$IH2*~F9Av5U?hUN$O!&CrgVml#7ar&P*efl$6}s z3k*{vEmKym8Ow|qTM@?Amt^XcW_fIBrC$=ficMKswcWxs8XTNRuCxn&ftPHf_%9Xa z&0vAB33(_IVE@Mqd=*R;py)soAp!1+%N%r?aPsf<9Q38irhfjHQz-G1kSP;U%Y9Np z#gplRn}c~MqP-Y(odY!z;16awMB1irjcXIw#$wyp*z{Vrr1XsR{_L@gjP$Mn!;JTs za-VPWPkw5>V<%fwd3?EH*Z_%_&M6s|HU9QuEOi1~tt;{8_}EZNlJsVZ_)C2Huwo7C zufYpU!Dx=Jv=UTh=sk~DzR84NR!aBb^%%u&SA|@9GUxPo0rs41sMA)?DT}|~%L=iB;Vf`7h=?pOyHBBRp`LTBh&Eps8f&)QF_UoPqA};-sybaL_0g(d z{mX*T30=vN4tTPPoSgB~{z92FgC$r0D&YW`6*+Hi>YG$zC^4)d%x;6y&Kxi-vn!F%i63Fg2uBIS zk%x|*hdxQ@tb5in5y98mn&$ELPb1?OMzsSer~r4r*K#vt?V%qW#F}*6!Yp)0QP13TXdWs;`j9xppbvn9#@B8f9YMIz0GRnjWySIm zwvENb?Y|#6lK!kkTS9_={eJn#^Hc^^`7OQWZ~-4o&CIeo9qq4@b~6b~*cgD4jw=9^ zHV^W72VfK8+XUK+^N8OwRa;9YzHpul92J9jaEReIdm4a=jSDGOhm8P z>UQ#=&&V*25jo}5kN9QLY{aP#%!It#_4wJd?MjM@uAqKPVlr$JhXS``w71_dJ6A04 z{h#Hor1jcciV}EU3f=v6{ z7yE5)UsS+M>rUvD?GPy(e|tHJP~kXhSwUGP_@M_UC(rB2%S*RRt9ZhQewAq&$lBGK zd9mc=f3S@dd_cvF9fqsKxikhSzBbgfM4JHE=fJkktNIt*#*T zP4Rx#0BtU@rLO!hkQI3e+D1Lf4`Zg`nLoBAvYx#(pgY);5sg6+!XhHH^?qX+izkMv z6{UPXlP*$SkEE|AHXMX~<;~$~F9Sl-*)wNuxwsT|*Kjo~=+-7CZ*q0w-KQBatFo1E zn$y9V-s^tqx$vpVwm$d*e4dUQedwcQ^i*M7-crb!eDT@2%I@y^Z0d zxM#1Zcfk1t>%r4!&a^GwoxWY*e_6={Wde98HNi=7wgHPy1)!M-yS@^wlR3o6I=edi z(X3vi4@0J|6h{oVj?%gY5S`Eca!R$EBYY$(XSXhD<88$SNYZFNwze!2s`wZ-K9Cup z2@tl6-!lMjPc+2;L~O0I4>pU1am+J#ln;Ca4RO&Wb*x(GgjeNMm7bF(?)-{+!1Kr$ z??!pO=8ILuX%0F|c&{I?C;L)Y5{J~dp$?_h*|n?k_rmMU*E4Wm212b1HCLAUm00*G z6F&eeAx+f5NcUV99#H%B?0Y90Le0P|DO83#&APwS(~$x_9{-68Bu_?Q2_Vu;UrEdC zuoFd2AGQsedRj{#^Qau_sT#J!?3Sy)87U|pu=rJ~z>`H<5^#l2ji98H+OBFoO2TQ~ zsW4b-gSxZiiYhT3ODjtiWAv(`N|`{c_oa(Bfzae?HeFPz`x&sGKk>qrX5eWC`)V5! z;vCdsU*eGmUl{S|dfxA-DE%ITb2ojHE;AXlQ*T<9iN6`}fK9RZOFM|@M$N5eWrI!* z8~u%^XEK@kNX@SwpX~7e`TZ)Ol4UCIiFI0NA2Q8AS7eWIUY??ro@XIqp@GViv!y1Hu6&)0d4#0PGID)h!y{Mq@;0n*DPo^Bz-X+iF(kX%Qq+;EJL zf}%sq9t*k)*@H=$EnDf)ClWW13P6bZ<6|SOfs207%uHLm0I+uW@ViueR-tbeShRd( zc60Sql$QtBrH(|$1_i?rPuvlnicgif3;7aRhh>Ue>AMTOmfqjCWl zI+M=NiT~NyiG~yNc+By64VSqdG{U^p$|=R{_Y9}QU*@X3PznoVaO6B#Z1&_lnx$i6 zSGIfuNAFz&*YpuXSbK!B_qeMGygL9z$HTy3#RM_P^KYrw5AC?{53292cgj&t z_y&x%e!Fd!|F59VP0ahevnt;CrafTr(VhYy_({INJ5vvg!o_)D6c%<*?J4Ff4d0H2 zDxDRMEzZl+BH$1fhK8{>ZrqU6V?Z;gA~zai-E+Clynl(j$U}4F^pNn&cT7!lNx&Ec z^?O}!W68l2V_*h4PESLu6UqIxS*tyID9%7ehIeCI52$w^A zA3;GuLBG@>P-jgipc|=N7qvJqH4l3mTXj!hc^}H*bMF7y#LGCTvX=MF%WT~EBg!Am zLf&dczj>1h9FF3JRX&`(QR)I&u6Gph>v{uX@_IL?z_J>MkgL=o;K*Wh1fN$Hx z=gykONz!2U^;hicT;|4rMHF`Q8Pa@C4vxR`s_1Wpc8U+RHpUJmBYD(EJ`G zUTDqbcjLlZjjF(8Sbvu@YkjeHK0EX_AUSq-cbCwIM@Nf5htn$nj@QYidR~ z_Fiz)-TS`&0^=Lp*rDEB9ll8J?lw}dTX-eIK6mC!FF04V#uhne5wMU0Zo#ttzU3kJ z+-o430N|{!@9G4w&z?Sg6QDn6-(X)~BKKqLlQj(^7@JfOBdXir-DEVn_od`)2|?*Luyd`)(cP(IM$I0;w6FeFMT>ueOr5o zfZ~+YdJ)BUVOo+v2+uZTF@LTg!&}~Y;vh9&4%sGa_5Q14CH{K!ku*8vqW&D3w}|dE zgiSb}Z&>dup~J)oL1KjjZg;@{mTw{?YWn|0J_3;_0DsP*bIjK1iw@O0;i=~NaerEK-Q zexjJ6p?oh26UvXynCV(rtH?)P3ICox4=@`K)#n z-IFW^o#^^Ifu&uKC)DFpw(n6q#PY%9=U*pURo(FN@+w=YEG;zz(95TOib1sLaQv2- zWuK5<1kTSt&=OHym9M@vFMHe@xwefspH&RP>kM)>#|uaZ z%XtVi8HEou@!^Re;!Js^ydL<((M=|i1OW|Ryr1z|4PS&uh70g`(xrFCLw=Eu2BwrB zF$2Ms>{?t^S0$*+Co36?dT)M(vS8%>I8(%|Q{P%ZpYN(xPV(ZFVFk|HH`*vTcYXuN zVl#?vzykhfT?JeYiJE3~fh7ZGg7z}o`Fr=BTaIafX-iwDt7`0u>4{4NOe>bt$(-y- zyXz9Y5giP2Xhmcsy6Uf!GI%w)(FpUV$!grW zA1$f?lOj~D^yq|fP@n&)ov$Xxyb8F#wILz?w@?$_bLcVj@maFt&Y0Hw$mTAT_(c?A zvV0-&uah1RgY77hxPhWPw57W8v$d8DLYP>ELlTgGO9m%$-R1r)dS@8#dICrHmgE>3 z^=X!~We6QZ?Gb-VmZ&K^kp=iRPr=2hrfDLEv!xI1N5zt{au16e_5Qi~i;ZJ9EB>CB z$KAkQF4d43R?4ePK6*yDEnbUMn>tv-*$AwGrzC{R9S`&1;yPi&sD9zaX&W-4K4#cw zdp?{x-vu)*G`Qsf5pG9XSI7OYQt6on>e zwwZr4-u&N&qw;qw5^!Yi~w@$cj@QjVcq8zJm8Jrp$_zC0D< zgs|kdg5S?rbY%KkNXM)zZaVT~51C<%{kcJIrb3@Th!%FA!(KqMItvv+V=T7k92ZnU z*;Rbw1h-u?jvJn249(-RU*x&<7c4eBAqV@I?tBX|J3}uqCsE&v--WCpMKJnC_KF5WBMtjg34z3+1W3(Gl}|s;IrPwlc&(EJ81~z8;8hlOP8w{%y<^O24|$EosWSH1GS-qm ztUm}-h^fa=#}BzF%T%vpxV4Hj=wB z&xB|8KxEM{V~__SvZ0c6_4L;*-Gv&|GwNqMGD8Vg+_TV!al4ulECv=oFFss@E9=dz z=&ZtE2Rr2OB|A_oQy8KpkT>1atz2U>`dgySUQ{ATiqg2SwYElh2pCBKX!J}xJTTSd zk!-4OW)2|w0N#;aqOkChWS57mg!S7DSkQLFc-3&1#usyw(tB9Saf!UGZ zjah2`VtXcX9>8^V~D4==J|pE4gDBv@q~`~kIV_M=94Q{63upDl-)6Fv%^ZIY zmHtKf&6LTmj)*v`TTw)as_~smZztjwb>OUoXBs`Mj}LmFL9@ZQYzTuX-U0|(nK?a> z5l9>(bAu~O2NUy3dk|H9LVs!tKd2QyAEQf|c%&d)N0094ppnSo7O0y0(R64=9_cZv zBt)iK>%((s9U3{+Xqy5ocKi(jA_e;U1lRCL((qxhPOVDWV@927Y|n<#p^#5sOyucs zbZ}2?<4@6vV1{kkxE!M@YXAzHQ|}-*qr1AsbRN!61g0(TCazJWu)S7&v*WqL~gnaR*?)3j4OwW zEvxbmifSk~l4=E|hiM%t;GHlo+aNf#X6J2O%i`LA%RQ~Q_-t#dm7Se8@MClhUQBC$ zx;wT3YcrhWJ;4uvgO3mG0|{9`Zy{%7K@C>&Ke)$f%ZuX{occ>em$Q&Sn$T!8DH;)Y zNarGUh$|+y^2T1SK()-F3J;^pbi_HX)+EabeIYeWvix5zfcOOD@5?L4D+_YgubSSn z^G?|}YEkClYZ8h?HuO3LrVosX2mQQCrP_P7Ep4E9m~&g$XVI5&P{8U18qL2YzM+Og z>F8plpq-A$S-tEnKWF#;YZ!uQ*@*E_a~Joh4E1Hsrm`#Gz(oQpztee4=rBm}2BG>R za(4VICT;b}Q~D{d;`XI|iT-syMb2L1L2xMQ>Ig{xHgs^v1)TK&(kl@V!O+xv;uA_t zNnpr{jbR^6n)=(+1(1b(9%IXjmF>qT7$=FUOtO08;zKK(>D5(ZQnE#wJ#fE~P`TPi zZ6I>97@IFh=Q44&si@Ff$1Qlzrt`d|ACG64UF?u7w9xB&6~85Pu!O?!3i&XxwYWRS z{EIBLJ?~QDO#6)jZotTOX~vFXm{Il)QgZ2Q4g6kdka$lgsH5dJ@|G^6$^uc0%Sd(| zFV(^*>c(aMwA6r@JsF5|buDTeg&sQwe||@oDG_TIlIEyrsJ`g!+Y1O$PL|LI zUVh-#H+FS%G_KOHO>lkX%ZxGKJl~z>aU^S8&g}ppKp+W0B>p7%!1gIgKcrp7x=B$7)zSmCQ38bf0;Sb3K}F1?Y^iF2f7r12jS zY}|;KBfr*IIG=e@6OY!gC5UnJoooXv8uL~M210}=?xgB5#Vd# zS9IU~!^Hb9W{PjR*VZmVDKB>vDjbG4b2a&md(@e~Pf@$2eYSifHsMkN%g5KZQnGE# zQAjT-G8}pOS6EG;F=_Q~l1z%MLbm48H$okvA2|fH=zDqnkOqz_O(|H@22xfb35GX4|}~)S)a`D!LWB!bmlPj zF^gMMWGlT%weKgNskApzB;9x%X2^0W4rpZO+eYsuDWEnCYi`vYN|DWlbLQUJ*8y1! z46DK|-$81gA=L}@;+BGZgI$@Esc!)eW`~;{`1F^rA!t!KUdWkc=)+#Mjj&ner|97l z#vI^nlF-z7O*^2kJB88?4T+b*64yr@;`JVCjLfu;Rcx7--#XSz1P6sk(zhH< zRgf8<%LO@z-B}95>+AGlPorC7%{HL9ciZQFcU#S@Y1|v4Vqq74y+x@I!>op1n3pS2 z1ioH6#ks=V)XYnstG(Ka@OD^ST}*gsJ0T&o`uS6%I$pR)P_uHPF*H?a-S^N%$j@E4 zNc_+VRN=5cJE*>88ue~!wYi!0v=v%>%-XPjcrTXL{W0+U%wyrMkeQsAXF0F;#Q~Q3 zc}#8AMue=wazZ5kniq2IlAQNR2Rh+ErRblsmMyGinzPsFCM9KM_b-1PcH665QxQnE z>xpa{m_m>z8w!y~@INl%7_*}SK@$(k0ez3}j;~e2R>b!v_=`@ISheRwPX5QLI$O;pJ(ED=_}b8rb*tr!#?a)j z5>Bh?uJvUZf>BHgs#f#kx1=9YiTFdHzn&qeu~?m#8%9(g`hMp+i7Q zXd%)PAV44iLLkZcP4s=gzxUpC*IoCod%tT1l5@_SGjpcw*|Ya&e}?{jB0TSnmOI$Y!mfzUY)N@WOt-Rqy2r4c!)5 zQ)ggsXMtkKs8`bwmO0yP6U>xtQthf$3dRL9U+piHR(TH_WrX$0cv6WtEMH%YJ@*dh z&9#MOCC_x@0@LwNYbB%g;~r%JbccnINxpt5vyZ$d{2#pMzrOhhVojOCWoL)>`~p>D z%I);P>?3@Xl)7hPNir?Z%y3vi<$l5^;iDYTdvbuL-V!_F^^KOFkW_XgU0SmEAO4V_ z_Ulma4Wr4s(%8VHV}Zx8r3M`FR)pBw;Wh@Gm$Au{PH<>WX%_*7yyowfgRD2yXE`-Jzz9pDODTO?3GRqfk{3S#Wv zhsv!|DwowHJ&U!8pB&orUhMuF|8*7px+1tb^|l(VUF&!uPgk;n4sg1@6|30p#Pd$S zUlllM*zM<`TsflZ?A$V5e6Hio*K69G6VXNnqvEsOu2|vn(~6@b4-IX`)m_Jj!qyla zvgvgDwCmChpV|&}oQdv3c3d~v`ZGW{I%McW$gJwxJglBJAKS8tZm! zAX9}}bA7FWweHt^5A?7bcLL>Bq|y4u-*)m{R#4csO@9xOgXh1_^&SCdSBjG73DX^M znVXBXvKetY!1G({S16VX=nnW*m;MIbY8e`;-CY0FrUF4!(WkdRjvn=)k#OoVGmEEf%A3F0O}BwH6CCb4PsI7vjyabCvgggi23qmMof|i8J4E z@a_B2uwCb0Z#{jt&zcB-A*cIdw4(!)gz&b;QO2)dyM(`jC#Rhv%i%k2Xhk0HNv?2} z(lKs#bDebFc1AlxD?$;-kItFgXg`7Vk(*e)4kcfSQZq!2=04a%4mE!Ib;Z2&*+D*U zZ-G0+ACGDHY)-UJeW5|l{Oj=Inies1S!_<2!o36ob&lAQAT$LN1QZbVF{u6eI5`gz zwQ-jDf|U`6G9wC5?~JXwTCHvhqR<0O8})hbGDm9q_ht`ygU~iV!t5?1_n+?1>f9cC z+uw1EzC!Pit9bNdkM>X6bo*)(_haT>8$$Qs}oF_hII~DwBt5%lp1>tjd*yvgcSKbIq#+#g2>*zDkPo#Z)VE zbF$*YyuD1NhQ%gLL<^jtY-gBoVZRccfAdrE&M6elX+M)OJJP%|J0dwr$F2Ek9J5YG zCAtWN|L6dDM~I2GO4&59GF|a^Gc=QcxnHuuVW#^7@CiSE6f#>xXkFa^KoyH9A%(Ws z;iJ$0V?}b+(vBgt+$| zO_Gg)r(gE^DAv01++M8WHaqy}ThzBV9SNDApv*%K6zu z#F(>YjJ5yx4sFb4V|-C-tjAK;?(!5Y_;Gm_!Mp!>H(*t&Qw`4GtT)4Jeggea77B^D z76(-_W3vvzY2v7e^}8(pvrnV3!th-Y9VR8u$J^j*6LvNywtr562E#j*A?%BbD7ehl zg>bAxI@b9l^u>B`rx*&M3Z<%AC9^WpuwsV=52w6R((9<%Dd3qr__K8Z@uB)tbw#gl zPJ5Ao*WHo~Tg({G@JNro@Q3vUeYsdk!h66Oat|QTu0W0Pk)0_@L1Wt`lu$spPftS$l+aPrEe4_PL#QGrn;x$x$V{lDOYQmDSh^y5B^;3z!txKRe!XBRUdlb zB!k zae1b%TCt39rIR{=7FK3lVEJ&G#%oan5DU2gx+XEe>3;LllCA0Q)b#BYiA%X6bF&#&C4GC70FhSQ+u=Rejw5k-WCe8EMGgg`Vvw0TvxERggtpg`#=PAfd z_*8A9nTkvufaPvlPh&x4G|@Z{zGIbP4phoM{+5bm*HdqD{OH76oSbNsM>N)Fs#i2# zOuG0}H^4)6RqvLPIj2Y*tG8%Bf9@}o;0lRay1XM=8Zh=v~q*>;QgGUF9nD#mQ5)eRJyzLg~Z>x?k;1ZVCVmD9SA=(hpkD!#lhH zzZA)9i|$QPFq@qHxxR1v440L3mO~bDnXccXF16W+hTh<;4oGCM4DPdj&>D)>wLy&vFIbeqPHlkF_)v4ELC0bG(ZUq0lT}+) zoT8(l@dWe!mpzmb=`!ch7F|ZO4wohb4R$`Ie_e;=DXbB>Xrtk#~CY5!={UK;K)RID30Ce<7UC@i5jbSR&DDU$>Z zu8$p?h6ag@5^(MiO6~xySP9xmd1UtnB*=l6rVslEFK!T*FPywRVo_LIHM;5y(yA90_S4t&A5@(-@xE1P0M1ON z-8Hb@<}~|VHbajQ+5Mfr+IElsx}vBpKq~`ID~W+I48pOV-lYj^%wjx;-82JVDJRc5{jzGgP)n&lJ4U=w}ZPv zU337C5nu}?t&>Ag=Q4y{Vah&E6SD`nrqT?}h&GpYzrIg*9RQf@73Rf$k>pQ$(J#Z9 zo1A-^N&_I+W16~Ybc|rC!mN$QQVr~VY!{}e=9~t2Tu(#=fQe~cK?SYM^|vP`>RMZ; z1Grs2qmE9a>4t_jT)dcs2wL6KIV>cUwpT@PMZIB>#bWKmr!6k!sizB`PE)xCysy1x zL6yi*(G1Wbt4;vL;f(8b&UHcy&U zINv3oic=`EXa`g7sfv`SmVut01h*$?Xh<_}0~c^-jERafvQunw4Q2Fu-%3WqSd)~+_~{zC!YC_>Wier9ie=kmmxl84 zdi&~_Kn*LcNTqk9+=HM>mp!)!$+4;pKtYnw13rMGK0XcMEsN8<9$DTqe=rYuhsa=r zvh2em%9|1wCL_#Zf3Ou(Mz%k=Y>ia5jd(MpK6cAh*LmoHR`Ze_?@~*SmXtPkW@OZ45y2&(k@*U{ zSDWLgW0=2plEP&xQjb48&r+Emj`QM(|M-#pt;otHAasW2DXE=f^|(QKp(~g$d%MU0 z(SfZ#Q_ie$!RI4nqg-UKr3{<1%j>lgUxC zNgj$E6l!0=G7XFMJB=a-(jqg5Efv--auW?P5>wKg=R|#W?ASqi`ug=7zpV>tg?rDP z(+^ycor&TRIyT!eF~Gg}b&}#2BzXa&zGFvY;Imh(2p@;#V^c6#Bn=KPXQHj|+<72V z_hpiW<2T?W&2Jx489CJep^dqxmEmQ+IVv%f-sAKtWaYI~RQ?o;Ft%H_$Us9w<2{n2 z86jl<=F-SP9kzK;n{C*}`$p`WrAD>k*9v)LJ z3~IMR_YVxrwe*;$`2};~O_t~j)95b!2VQsY20P}T2JJfsawPk43eQcb0489xA$oY& zJiomDa0{L%@`S=LfXChxGE@6`YnJ+tIEv6R_mApNBxpLZKcnFE9oK@WSl^s) zvBUm^gJdwoTAPtl4jqX-zbJ=kbb2RHusWWH@usxKIESz(HC6arYjj3RMo`em0Lb zok}w$p2b*SmjIck#o?8yQbB;b2v)hl6%2}$OVtn>K3Hxhn7*17xwsGqvXmuSGj5V= zgCRIZ-M9#!s?62L>D+sbIY|2e0`x!xR4m@TB_Hu$+5hx2$0gk}AH>_A%h@VfE4?6Ja2 zva-d#(PKS7BS2X{f3Y^Qwzhs7i}`Ae1~aEx$L~T)xuM^o1SJvA>(!m7i0A%&GUXl0 z@n0uVE{S*(;*6!Kzp)`lB(>x4+Qtoeh?U72QAs*4D@%QMp+Coio-h_^>W#1^HhFk^ z*QfhvxrC8OU6w~FvF;gv4UlkAbR@!~{mhadiQdTSK)dr~6`)m>^MD5(tsl>(QD zumVQK-$+700tgA!4zBZWebk=*?PafT1bY}B1bmz2-4JtJsG@epN{iwov#Rm9o9lG? zaz9t^LHH5r6=0hxta^A%&83_^iBWHn7P<;j`sbC1TvS4~CyUN)tLpikl~KgP zKbR7Wfz-RO>WJTu<2gO?&Jqn$gMz^R-Q^+%5~vSJazVx?ah*D$ML}KjW*~~B@M8ePa3#1Np5Fv? z6XC2dNjGNDPoA|i`4_ZYU9;9E4_Aa=B@Wa#U2=h|ht~bgB|WDcsF3(l?2AiMJHNy< zNby68(HXV`gahtUZ#F?>hJ`;D`Zk6_Uyik*Sf6h%Pz$Yl&kfCk9#2uVw^dh=?(4)9 zELPd0E*_s~YV4`$^LGW;N%12}lW3RC&|4oeBI3QGwN)v-k#mrG)Yr3a==VMf($s$RzWs^se3*$JS# zy~@!jQpN7JPw=u1x_p;|2kVb_8t4~v1S4lxw_ zn4@nGz9v0iPuNCJwd(Sx)PH65C*=EI{{hX5KAG`RFLFCUzf88Y`y^Qx&V*Gs(igC3<6I!aZ}X&RliNs zX=gOEC6gBxo_=ko^Z!mKPUCMM_24#e3tS3O3+SzEPDAgz76Sfg^t*N%jQt6(IH3Cf zdZ_-N=AW*>9mWoYe}*x+2H$oG96u@W`d|%C@2*E2JiU0~f`W z1nr}~IeYP_ri{Dhii5XYJAzv~($#wH0yo_}1fGri5N6*Dl{qFeW8MxV{w!^LQV?tP zk_9ZOB=kZ}?=j#RmS-{pKD0n>H=9&FbeqVDo$gOBq!y{9EmvP8wcUKd+IG1Gno_>8 z3{V~Tw5~+8APFX~Pc(|4JXH}%TD7U9=sR*VoT~66Z{T_#0af~loXsWnqXdV0zjF>P z(Yem#`(^igblL%}LFc`z50C(0HEk_M|2v#c#5y1p)ieq@g&O8_av0IN1qAxwk6N_8u_N`9^R zV#b@Tdi8oVOAmDM$hX#-v_6S58JvzwI5<=BVJE!z&&X$>79oAgRZbFK;!GH;mFO(e z0;dmew|~qQETX`1*4r*avdvPPleS?paqq_H9~X*CJVmwXkax%2UE_o6oF3IA9tgP{?Vd{9KQEHACD%bJ5^Tg-6M;G{}vMeInY0MEGPmA@ro6uTt((P$(<5U z9#stxILiHXb?LXVz;pG+f4A?{WQqVFE3xSR=bWgvxVU&sCWcNj$Ed=v_ai=C0w)@Z z!9E*1c%BJ^cfzl12Exn63;Bwy-vnNiOvTu@No&UVEsmbm-uM;9{})8<{_suP#>UX{ zQ4D+xqT1$_Zb^QN z!_IMs5)uJGQri&hMj+-4qQhdI62ITuS9A*qHV*sM>Mg_j_v658`~v-C={?{Jd;Kl`0=#k&MWcq zp8yfaR@qt*F2fn!@l`ucGp0$c^k+;a;&#`?1S`KJF?)FfnITtV3F0N09HifRCEIeOo}T7C&v5)P$BrNf$b*D_r}wQ#G$G1W_R03l8s zNSE6;Y8q5CFVX8!$9CJApjIW-Gb65aGB@HM!qSjln%F7`caX;Bpdo&C+H1jl zWVKy^&U~1J}#8RhANKICMCB* zhi+}M6zeJ)xnaj^0KE<>#J+FWkO5;9i^A6UF2q+`b>lq{rE9u_dfpEoK1^#GIq&x^ zp>Fcs=#tvoFqZx%Pgwzc#a}dsY@GhY3}Zb zOj9YK(c3ydTz@IQ_%_bCj(H_B#>1W4KT6OfGaEX-!77LjTZ#yYS03J z3OM^L%zi3XCpzQD%H2nd0kjcyUTtprcBvq7$GqbU*81)U5fx)w`6d<#;$*k_MqwP@ zVAdzX6{eaEX6*Ii51~S0_cy0}Nie~t_EMksAub26f4*d8TNC5zwf=Ysw#5};ER2|0 zI;Ha(pJm@3ACp<>J_0(H!$3nrWzX=Rj(Ok0A|H6#K8|6+WKt>|Ph<3BRu^s-zBzj2rs2nYkotBOol5-s((Lw@<*pjvGTZj0oh@Zk}P~{RQ!sqr3Oj zJiSPNqc}ZLjmW|$tfPKOL}TGyCsa%}Z*nm4Wt-3-#xR~4v?g(ZTf6C@8_rfi3l$qf zxKQJqgXb{sb5<5>zT?Tr^YP{S3nLXuKYsl1O~#&33v^@7yI zUBNt5)LNmG)j%5b;50=D=RDsl7+9U$k)?R%oBUAVx^xn#R{4Mt?is-HB5>GeH;LmCLx{Mijd$YPq2`pBAzRYzlyrnVp2MT4 za0n%-m@Y!!6!cHmJYx0DdGn@J9 z<{Z)t6RMbv_FEXv;`U77!8M6Gp;qooF=qdYggql|U9uo<#Dn-nfzF{Kt6Cw;Am#bu zsubH=rjB~o3R<_APP)+Qc~xLLsJh{$ft~reJDWJkeI(g^Kf&PtY8h_lnC2U=IN(-3 zPmtY=(3!_cVr@yoc)Yo=tD-r$W*pfyUdU5#D6W*SCC&^j-nvpBVoP_Z8Ea}#XCge%h@!~wjyM8TluKAiWd-l`*WLh{M801y zV(#*1bIfJ+i5B?q*JSME&hF4*^0VCnf1!~0^4bD0cjKM6BEd_eBW80#6XGa111UqA z(aC0@Pz)~_1}9K5qTrZfhZ^R-pK>Phe4K_2f&W=}4u!j=Uom@Goo? zWIN{?xsV30JtieB9VbQz9a)fI>iMf$o{m1eS>citT6E=cX~RjS)(C}r`ob|66y-6> z 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 SD=U%rKNBMh!_u=?@Bbg1Fa6K} literal 48673 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 z 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 z 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 diff --git a/icons/mob/inhands/guns_righthand.dmi b/icons/mob/inhands/guns_righthand.dmi index b65da989b3ca05981a326670ee467609136202b1..b2e489b37dc69a3fb8e8df90391bade2f30f85ea 100644 GIT binary patch literal 54829 zcmdSB2UJtvw=Nn`Kt(`B1nGiG@4W^KU7GaXdsBLkh=2%)NUxzuCz0NXi1g4q0#SNL z2nd0Y+>M^!|DH3>d-vUY$30`bn=y9SS$nNr)?RDQZ+`PzL}{ukl3k;{1_FV|l$D-7 z2Z1iV0yc{)#6U^#3*rgjM?-*)f!9-8Piqgy7haC;ZXl3fW<_ed+jq$u@>9R{Z|sQr zy0BUv<7U_^b-lrT zH8C*1bE-umx=@nUgj@4y4G>h@9#?mTPnM}?)I~=!(Q`P}YVY|C-<}<5HHOnt8tjZ8 z1sn-!!VP!E?FdTzW4=kgpr2oHJauYys`;e6GrnpSXw<|JFrs_2l_w8w*(C5RX~Nwr zYrJ9q{+CuZ0yps09mgm-Nl5@jE+BXxtrNcz#{PcMm$YPgi=i6DtaO%L*q<}@VVJXU}zwLB;{gS_}a(u z(&A_GA)zATvRet?3*nGoK`$0FKP%f^Pd0V3%t5 zt|H;w{#Gz6JXm#3Tc+!Zjg(>jyoGoGSM{T8&`cVEzw5fQ$6#|k_Z1JGUy2glp@?1y za;);;OABTGCHJ{o^u45WOM$OhE9--wI}z<(4Tq;b$$(J@~RPTYP#fB8N3syTArKaK;GY-IQC`4 zUigFhU9tiPh5muH$Omm__s*nVR8?PM3zU3Om2rvf>_nlwqZ?iof4NWn7Q3->&h~@Q zs=HMRh^Bt=Uc!NuG@{u)AyVN)d%gDv5m#!w95ZAfUal_S{)Z*M`yVJurg(H&SuZWz z2s&i`ethSCN*s?!q}>s!HHgBN!i|Sz!hNCO0Z$XNvUpP3+xw`9f4({+<$YpjrM1ereAmyiz zbo?^6=Y#!pj_6_=52k5RUU~cH!+zGdZ3epe=VKT~#{6d| z{>f*8`z#k9k1L|Dp8olew-bN()1v3zH0ai!Y7&>}is4M#wA2ot-2{7IZgnlQEl&F&)pZU@|wuJ-r7Y+K45 zK*wOn)oUsA6G)fwWMThbm>~!wh#$XMKaigM_cWsE%xFG0o>YX~?;TVT!MXnKpX!-s z2mO5A&hS>^eBwX1ul10&mO!{U?fC{8de&0xGI}cm`BX29wXFI||Be#5X*>? zf;921yIZK~7Omddb6EtP+*Dr@S8i!U`+M$G{5t&y1aXc#dUfDdl!D-{`c3QeYiKCp zk8*j8aW)Z}i2<$Qjs&Bf(xWhO@iF{n=SQ&~=WDWTB2(sktmj$JXyCY01=}rnBQBs3 z=Lw}u5{a>H0Co~E=r!Zy@S(MYqgU%qyiKrZIZd-SH6h&BjiAi-GR(HJ(2pWpO}vbz z)IgJXZqkV`Oq^`y2gH?cJCpKLN3x+gEmwl|#; z^`kd=S|>pvR5QpMa^A58hQ-C6x#>tqYWWZ%m-mX=B`Z?_efju80;OZFcGx?X3hMPC zeBUYaSH*l-l^_KE+Nco}L(9&kodL1B!?}6A;%=0UB2F=X6Ah--&A<x?&Qs;z>r zqcy-tNK1szn<#x;oy!ahQ;RfLh4~R;SkpggH!Q`zH<`!yscvkpp~1_xm@=}X_MF?) z)ZNa>)c4pZVW0;vffhS8^(Xwr+ni(`=evuGR$98&1>8F1tKi>1UtyQvqRG^c`Wvu_ zDh1=`Q_$FV`mf`+pwCTAxUY)nth&!|;gJv*R%0}EFAS?|dQ}B!-kFpWU!^ILil0^# zT?Q9txIh}8*_qG220FHKYon;9l*3%Eu!V#_{-p@)d_{2P=umt1Y-cAm*fDxTf8%1z zmKFvPa5~-Ze=Gt?(@4+LlBT+z*IYy*BO|lV#ThC4!4p)-ZvNEC>w5V}exL{AT+K!Y zESpi<*5nfhIxQI@AHT{w6yNSVE!2 zMvH;5j`^`-sDgsq>yb%S{qmEpvg{ysEUus;_!f){HkZ(=Xh&+9z3FW-_B}?}UmMjl z=AsjIxe?cGJuAV(_qcL*GI{`Jsdy(!f9+ z8Sab!3TWMZJ=X%`&@Rf``DN+VC8-AHg-;oqe8}+qilp_iX~(jeu%gk_Y95|4>`);R zds*q|OC(jS_%t&(mlzoCYcwb)nk67dsU0`4brf)LfR zxK>=8dDwei=9lxNDFN?(z0C7|rBw(+Rnf{l|2^<>j77jVu2( z_zx}rmu>q0Q3vr~aHE_&aKyvO{~aJ@g;F6t@k-Q&mcl_B964T2Ywd03vI*O<8Xm?E)NsK3a-H>@_S z_Z-DuWrt^Dy$&5>L%W|v{L5}%zPqtk)S+a8+F_BnIFN`5Qkg8@YVz|k)tTg1sN&Y4 zSOuTHc#Nx$e*3*58nzWo_{jg}X?d~C2rv!ImQe20BW~33hPG`BI;-@KG=|s5HM1`) z-$gSE+=f^xVm2L##{y^A3XPe^Go0~wOkV0chHyI5uo~X6i!FdZJP8hY30Zu2dwYQ# z^wztx<{b-9_xPZ8{Dqyi@HJ()=Ib7bi^}+c#>hV^xl33Kix(!P^5)e^z)&O{VfJ8U zVTA;hu+*|Vr7=*!8CU2(mb&&-(ofbup{yK^^LDWQ^Vg$K5-7=yw&>- z>;6_DaSifBI8PX#`;YafS%rqAB9uik0Helmov;UajFAsyQ^!mi@5GIu5Zwjl$tj)&nb*?>s>2qg>w?+M>Zx#;A0a%{le}EuGH+Z64HDk8Uz$H z{6r>Wb%hC@p!G-oo-M;=5al3VWr;5;eWW^vFDbQ@zY|6)2iV~`Xv0-ZbAA558RGY+ z!z3Q$Uv5`ZTL>~-7}4xZ5;51)&t*jLph}$*sV%E^C+E+Pk&kJeoNYTI$QJkgo;63-wOr|JGUgL)j$kmn zKl#Q+A9v#jlVRBLo_kSb%gHuN&dax@u&}hSPs{AGn(r2`=@d|wJl$>y=W^z9xbb2G9|q%54Up zN=SiDIbOIUz%6uR$EeX7sB}FGob}R(Or9fcRWP27r4Xee;e}6eB2%sAmwaS8HGc_F zc*J)8%qG#V)orQ4%XCOzCto}_f-k9YyXQ5g$b@wa?K{tFHB%I0B%#t`ma-q^+62>h zuG5jAna}=DCBP1E0CU)I3~)x>I%BRYMKQ(_G3Tf+V3lLYC44~(zM3=ok^aA-YWBcS zXBh#15q8i0|5>d4Ut&uCk3<3g@y@jLO0Mce%{wy(?hEi&-K6{Sf?ZmI{#rC@ZKx-~ zzTA8Q8v@0%Acpt=!?xYSLVr!8?-!PhV-S)a4!~`B@!LMOemLGvj7BX#r2hiN&&mzR zmN}*O8X!tB=d$?Qr09B{=x|a_p#zLNRoUPW3UzdxylUZ+?o6oroU-^M5mk!K@=}iN z9-~@kOP7CTY2)XnsNQ63=yF`B&XE1&G9T-81d45fWzlCVZ>#Cba~a-yx2(3i`W*0^Nb7gMIby_2iPD;f2tW2gR*Tx(5{V=?!mexOX= zmdx74wM{n!8-7dGvzYwyw-fsid3gm{;?he554N(+weCf&Dau!T^VenQcGwz>z$P$2 z@2)+U$FWvu+v1erpwr+GL&_+YqBin$;%`k>M)L8ZhRP&PRex~%&pPJ9@u^%6+Hj2l zuC*}&3ze`@z#waCv5mMO%cWg{-`Dknh^PDmzy_8dd)X((l+0u`NO>3lPm~V3(eXG6$hOunWnX5@6APZwO=L`<3H;4J| z%N>Y&VD@r-bGNJQiF?tRC*&z7EPGq(ux@fqk}%7p>c#&o_J-&S9A4(#J#- z)HxWF*_Dp>JD^Jsqry;}SuP%9K5@`?jS)Af~K%sd|xdmbFg^i?L~y@Q5q zHRVO={3w@N#Z8ks9o%8F`|Kpv+uJuE7}PuoV)!V!L!C8R$!?&(oE2Ct^kQv}V(5{X zf$aG+N-Y%vbO$7ZVB%NfZdV!Iag>gtiv5;(TZ{ua#KY#R2^Vo5QP}$K#v=_44J_5s z6Q&+TkcSTU*QeB$7O{-;LYQ{7j6v_C!yhHHp~MwP`&r7GJf-Gh!1>MppO~9FrW*i4%mDM?Dqz z1mm4SBPisW%!vluFPe29{b0=qu%4GmH4+=n$;iNuA7u8VWoI)M7Yi8ODLn~p!$q*t zz)OIk77Ti^e(7cbJ~Be>>qS$=z+drd!Iis=&#wL!3vCmGI;vR!bKsLSo5y4i5YYHz zfY`+eAJBb^W&kB){;Ln@UYl{^U)g+qohK6xgpmCsV)WMiOeioYqadx;Q6*^n;ue|T z?|szbAgV3@Zg+vvVxi~h>*&hE1XaP!R`aNgU!D5IHY&aHev2q|veW7)QKw#5PmB($ zZj{6`j>ap|@aqO14~9>UpA9f+9@Ee`<4VjN>C?mdup*D}EsfbGhKLXu#`!~j9DeJ& zz!uwHj`NSnq0m*ne4X2l2`HI-jR;a1MSLVR)UWA=7^>;o))ZXPzI-f^$$?7VXr$TR z>q~gTpHS&rIv;+|bU0-Lm^g?d&m2rYJC*!wf$z|ILe5W@?QmXhj8nxsEa`$w{w3Pk zfpQ=eQ5ZnE2GE@0ys2fIo-39k3Z4J9O5d6nY9gf_R12vjO~R`wCodZr#1qkz70~Mxna*y4uO#SlP?m!!DsV3p(d|8$1+O#w8SO$bX zK-NCcu1e#p?~|&yciDM6pi|a6!7Z6ue1!MiQawpMUwWVdhv(futHJy+Ga?Foxz(*g zIA1e}BYZ=`#v1qPv|CPenaLdlykcRsC;tvPybNVqItnPFT3$VRmL^H%8cFfw=`%!9 z-`3F`pe#$c47lg(rI??F+u#o(7!8h|At|W`ijFuUB8>lz-NeP5PX80Q%_QKLTd*yj zV*t)gNrC##mIEPPd#}n88pnJ~C>8eSLe~L98vtyYsz<7cUTUuV?py1`Q3zIL-Euy;%$lYs77tv|I0j zi*pprfW{l4e0=Y{JJp~4t;|UM%8bj|sBtG_zdxG_h|6Y%g2j`Z$drJ zyHhrG-DD<{=o2(ILw)HuCB!4j=3tdcDdf5x#G-$gmeN&lyYF5Gnq(YIEGU8Z`x{&i z<}Ollk7aFIXDd-!=##4>nKT3E(msO!5{r>9H&;=d)-nheT$Ogy+R$GHvd6}yDw8J* zZU3+MbOVR-{!2u%B>dMim;Vv7+`RceL4%I4JC!;Y6gDYrn~~hS8GrZT_f`-KOP(QBgvE_jy7I63~dlZN%J(s#;ib{-b_@>MjG@$9EEg z?QRc!xZAmL-q5@|yJa&!>zxcA=|hjsmJ^A*Me--?)KgHa(pJGy{ z!nj#InGd0|(Ns}v$(BEJQUo`B@9jLLyhv5&^>Mnu^?Myze=<)8IJg4;&a{+FTg^N6 z8B{h{lP5phP^61RfV65-Bjrv%uobOXn~UVP8&+C{&#T^zf9dRV|5j)cxGcsquSuY+ z1QtI?uGZHd{qq>ZfDykhqTm9GRr6HKQE?*Ft;$*a7!&-Xc6;9X)HYzL#bCn3VE&s; zAg&~P$YqFW-5n>334^pxQk%&=6p;k({eiK$9|08Gj$k*grxMvtoPJS*!$nRvd6&(r z(vD#L(Vct8-H3%IZ!RMU{>d0^O#++7;&N|7M+gc@n}0W*$Z*TuJO~wEkGUH=@Q#Y> z#rCv7b4o(u2sTUF|JMBc{M)B2$rG|Z+cbLR2B8NBR$e|1g$TuIKh!>YXs;_zUbbQ0 zO{fTwbAdBY*V3uB>Nn|2N`(DFe`yPMB48Zc87UDPW_pM?9{P}S+ znvnBAqfT9Dm4OR#KClQ!7=m){8L(}oi~U^iBwDX%RN0065W73F&TYPcm|RFNTLy{^ zrdqC&wM!BZGeMO_a!MnzB1Gxo1Na9Z^n!lT>yd(_#6%FtECa7PMpu(dCru?1LCZl( zi)>IiK1t!#JDBr)PMPZ0+3SGI8!4XeS1GmijrLg|z6X-i(4c6d4B;)i6RYqN=mOxO zxQ&)OfJYQP@5sxBgox47QC|WD$uhBwyglgt$*0MRkc;&?KC~FzmbiX1@2BZpiV}&)ej@b#K|EEgZB@k5kM^+rF3zk@D*+dO z%V@pl&tHd;P^8c1>@2hfUgJLrvqQoJ#+3{WHmc-9V;as!9EQp3j~?k#rXp>l36saG zSR!roGe;XSLN!pQII++tQ>BZ2nfGqRIsh|I7D@pco^GHS0=q91J#CzK6BgxF2n>{J zYHqIF>2yurZZG{rG%@39N<9n#t`8gm6jfwaCAOFxs+j?a(%RdBqW zXAS+srrrJ2Ks5u<5BE5)CAz)V2yoCbIXz^JLEqV#YtRQ;X?2xD;(IW0MMZ@;Zcqw# zaX4tHb?R5WV$+gZPOr!ZgG=HN9MVoWg>#jWv-0Qq?rzuqQuj;j$;*PRKu{=db*SNS z<4QQsY%+D7!iOE>=R47R&XM0wxyvvsuYF$(Y3%Brw(xs={yNO14s>F?!&9O3Os|QMQd6!hPYyd| zs=#`%M=1+nAa zcEF5~+uzM+(tgK90-?h=ZfRe!5-4}=Po}Q<)3v~`Y#YPwHTZYn?NunnpU3uc!M@EH zG*>;mp*dzjtDhcY4mp?;o;zNk9+{tyO-{bE4LAkWweR3a*w9JhV1;pgUUM_uaqF=> zcDd0J6v4C=em`VAT8nFcD2@r7?GgKwy6-Dz3ePpAL2Gc=*sfE*Q+lU^0i>zMK*u~c zaMm<7vpb}GTgAePyp(P~9wsir>w3EkCi`g-9CDoFv-mCQ#Py>>nBDIriH9JK*lWSR>J4zPl=DgZkDm@$?w!1HMH%0(yt z-Nv=r2fhmrz9SAFV3&F+auC01{|rH(sf~5gR#v`hRY~)4{xo$E040PH`oJ_}j3eoeV^UO8 zBb##*TL{_}py@sx%^erhwVV1Z72S>Ss-$<@>QDVH+r3z%8f~lINGgU~mHE_dW5>|! z!4I=D4DM78|7LCY*@6I+I-B{RETv@4Wk7$jr+Kd}8XvR?7ViegPCbXS%Ku%ufSO{$?#!to36LCN!2eu3?*Ce zdxF~!uTZHnc&^259MbeWS?6|ti$B^1bFlK<)HLg5BL&06#6(pP#v@J4J^MbRwd53# zHtKE@euDGgIE)!$r%(Fvj}}0B=49>D*h(eefM$q`-FT%`*(uKI3eAdHXiymO?{RmZO$O)Qg|pFs@~JS*}fVV#)?sjRga7?j7o9t@HxU?^m3||6<^56& z?|oamGm|fokVLk!;uz(gD^5hd*R-?1C35aGfqN#_LSE~jG?Wt8tK&kWe!VJLwXvG2*4V~eY+DL;MsbOJ~i-ea-Y8q}+hr7hG4EH(&>T>~pRI&w%# zNvXjtrz8a452zp^;%qA#KyGd(3TW#vSsxNLIH;bOnE2yxW2|A%{@Bq6?kIeGzAd{0 z6tHt}Xz6vpJgw+6lFW>}k}(v(X)0MEK$z60o-g`}lv=0ohzqyzrPR|#@eYIQ83>e= zl;q&*THAzuQ}fqKWo2dc3=D__he!=Yt=!$-#fM|qKJRB581m6yTYK}wa{ml_7bEoL zFS&~NzJ~@_PvQ#(J>OFfmmnmK?|p|x^n3+!W&e??E$e@*K;t{_or27kF}54Z=J}(9 zxG1PPqFYn6C0hd6U8|8id5>-e-yU;tn_?U82;MI;Ws)!%7w!yeRQU7T9k5P~OYfy@ zfSQHysXxz3RU5%rR$gX@6NOTip^q^^Rg5=Gr{t%+Z(iw({xFGQgY8Yb$5%6c5QJ*< zrhA)G$HD%gYTL1jOf%UC)E=c{Xv2J38e+R^xy|$j^eYyq=BTCLLDO5MDHGHdGX!~# z;_WFHJi?TfTE^HIriv)E5T5j~#(_Y36-KrJV~$A@)oX8G(sRTx&n@@p6KPu)N6<5DFa?0gSPucTQre&CP3h ztSqh}yMH<4sLVX~AYT-jCZnhv`;B{hcycl#$&_SdcJ|!>WG-`ZkKjADd%y@lp|jt= zk4#P$mcM6M`z9`0R$E*9^9*`=8?9l{Em6sd|5x5m=l?73r??DZ&qw1g_*(jK3}kqP z(+6=>2MBNy<*ho>eh%Rm`uf5XQs!WVj{urN-MjG}pX6U6R?kMDoS^)gP84hl^a{S< zL$@$DmHv_fv~=zfwU?nia=8saHfNiz^_>XO=Bt@Pf$tBGjtJI=zLJNBhqH5Ye;fUz z>RJLeQ%&KGg&R^e5B35D`_*S5b{jGnB&5M*0QH|)(+Pkzl>lk$Oo&Fk4;2aU(iptp zKBp(f!ir+Zi~z}nr@mG}W4|YhDWJH})UvMO*0ID{uYJLS2|w)Whw}ZQFYOP2Mp;{% z8|~V)DhG%QhLvFmwM<*LYEJhQh%K>!1O;chKT2o}@)eJt1-uw5jB5g99Xhceu|-L1 zPXmC@@Pus$pbFvFT|CbTm6Ib3eHApCvT%I*-ZyBJgoBSS<>0`>w);q#=~*x|TOcLN zu-qIWYj)Olwwv$`KK2s$WwzVAC##H=G#>07wyrKMWav)s3rNF%i|Ag8C!-Tpdg5Af zg?Sgfch*z6c!FeHkxwme_V&dGK4d1Vt-a8E?E6U*Qq;hPrA=*35XvCVS?LoR8ROuX-~ZAK)mB-WUU1LK!%k-*P3vt6ug2 zZcZlw61qD{iiBC(-r0u$*^?ofwDHS@Pta^MZJ~p2h~D=LrUDc(#wqqjvM2hfzWYOfBEg?%kzh5&sCt`pA`G>y zE)HGAiRVDCaSb89AZhjN2p&Pu$I47D?&3NWOEkJ-p$e?x@p#0@$tUAG8*P|+>nuGe zrIe5b?)T(#Q;n%Jc(TC}ho|2ATX3-umnPU6SE*K}W=Be&$%S4-8y3HT(db{q7Co?8 z($dLi&sA`|PW@8cGJq=2)R{VU>d$W%C|Xut3> zH*aeF{$E$-{qK9q|09|~+i?FBy>~zo5O7s0zCenTeQBV%=DCWhYLaNE3;)=Z_mmmi z)+DT27z&V4hGx};O%ZXAfVy`9(vWtdMU~68^B~Ewd7t}e@S{QbrK~Ilb{-yGqmC$m z15^6G9g0@dx?rEk4Da6}0I51n0!b@?xuOwq{QULxV-9Y1o#e1h42K93HIs_}2GEIl zH!rRaL*R_OdVI|9Dr+2Di^9$U@3!NF)|!-5RX}PpQtDsJ&1&kV0Tam zCV(rVnPo0%v$7kn&Qq={#hlezOjj15SJ_^=_D-g4`;9u{;)~OLS-jH_O&G1l~$eC=%sv+qq9pd0pyxy z0~$ssRV|xjU-U2?-bt(`6dTAUyVTRsg-x>8)MiL*OyT`dmSWD@g(!oiZ3Z9?JK;SO z{qXp-h0#aOS%DjbB_-sAEg|_`!>Hx}jEI$9Z2aa!yWHQ;e#dQYI&tvwCIe`@@o3W6 zc4PF@BDy3vrbtlsd}d;FgrEclW2_ql4g))SRX+I(fQ4U~G{3Np zRpDJ{JKSoP>ZgGlpu!&p0}UO zNf+0xwGxv!8a7=?nm>NLQBLiTgi_N?O8$>9hb9s6k0QrH6{iA?tex<#az0kC zsHwRP%!l>$^>3l|Mq`r4rp>-i00-pf)^E4Nw}r1FQaru)Zbg0B@#)y{S(>i2eyfnLm#AjAk*O+R-F5x`0>@9E=A?PanW|=a zA(%9yln-}^H}9>eRG+Pln8mwRE%1poG)KRcU6j5aulqOX@3v4?zO>i~i!3D6IP{!^ zf}_Mf*#_Rn=5%GU_frb8>!L4*6LFP5>s25-Vg*zziNa*eUpC5;Z~6Ia@MBe#A?VdJ%#Vcl^n75S{b=x3b-LVy z$o1Z;&yTAjSOL~g7CKZVQUDMrly9H1(!M%5UK$;JZo4<)JTsq1@D^|bOD+myjpZ-X z5|fkjT3ZXtpb<25w@x5v4Mk@{IGyjb*s2!JfY@;VZ!ExZLS&drf zE}rL4rW*NgfI!GYvlwdM?XRP!vsYaSbqC#PRLME{A%SaR{P-wK9EVa1{W=#HAQu+C z9QK^*%3IjhM?Yg*|C=Uu=C6f4FJwHG3Z_%0O)yo!x2e85v)}%>#YFAs;&R(`DhU-(=maD}`i|nF-#oro z($=DKD^AFCt)7cy70QSff}n}fh+o5(&j*}fZ2CajG43LzDdn^K8n*S;`xtfVzkaE= zfr7Avebi(xd&G431&nJlJfg{HE@+DrfIEyASxPhI3ii>1KZ#NGKXRv-^f=iAenKgq zpQxd!aq?hh$Ft2LB><%F0EtmzvQ`M?)>pct+7l#C+2@e+fQ=aMbPqaPK$?5E2jQti zrhQN^7!5c)74FH<^mOL;3}>VlTf~BTT9is_wGCjtk(q|?l9Tm+>@TNF?Lpn{p9J;Y;p^70WMm#X6YPU5{6~%)r2);x428>2r?e!NI|gZh+{3>Hxk#!WLfl_4dT2ydVF$8Nee{cDIf}<`3myNv zz?Iy_WWCp~b)nZEHkq!|ReWcQ%k&MwwvkR{`8Yz~!L(abf{YoDy% zQwX&kOTG^-x>lqP9h@G3woeyOEw5Rxf_K}a_V~JTJG92$D|Z4(aJoPTtIA>#7PX$k685%0_@dyfjq0&ua$8i&-#Q&ImE;D~wWYtgQ7`f!2|)dEW&u=Bl6Upa zvT^RP6n5YQD|I4iFS4a60On|H;e0jqdpjIn&dntXiTI{wbhxfX(_LaknY#JUy{)>- zu7aEXW=#h#1S|RZmwfA>UuD9HK)l!u-?VQhKZuu3fY-OkbURTU{XOXtS|bjVhM+}4 zZ2suP=!;$S(i%+8-J^Eb*YV#_F0(+#su`J?F@kd7a0*3y(D*M5z~pACz;h)0`ZI)^J76WaYZT4l0v@i>=22?wC2ARGC20 z&8;onM5WTUwuRAvr%#FFc9p+F@p2HfzHE_6?;PViE7eNJ+V6G7%FUMIQju~3Zf^F( zGv2bV-AsF^AONGO6uRI(wo2mnyYC&F>WTa$E8oN@mN_euBT=)!PCu3}22*A&%;33- zZ0CVC%QqLauvBEoMW+kxEH|^oL!lJ$IPo^4s+{Ap2c!YIx6hn<2{BH+uNQWt>Wp#p zCJi})uFzv^%g)mZNku*Tn{8+C`(tR5)3_%Sb9&iKW$59Y-dRlp0I|}LX-bNPUP8UQ zH;TFrBMW~TmV6KpYYiTs6x|-;?CY-#IC3f{3s);iiiz*ooG6Pgzp6HoL;M+dD}e6w z1$Lg&Z&Se`oG4rn;zo4g886@Z+rYJ9_X z$6+$;9me8;^w4n}f&%1tP9yi&Ga|IM)M1b@Wc}XuOf^Y;5bloaOg~X@3ijM+%I-K4 zcG?u6y)`~H(GUD+Sl+FL+44~z&L1=ybI-gwClom#9ar+zpjbs_C)8!Mja)DtO@RT6 zf75rLRZeyhA4g~8dzP`GxF8jKY7S?@{=UA?FCKj=b`cD1_cwv;cqcF4ycVuGI~OB% zyi4$^0O*?08XTU(wT&saP^54mWBd2e6IWM<`DT(&0|O4%!k?8Tv5(gjf+NL#bM`VX zfCjnu`}$U5PsSF+UTi$59=TDTfbrz|jQ??OEINJTG2Iw|s7wNSU9gUObOwzrH-%JN zmI4S%vLVGI9-56;?Qy@6;M-^>rd4;CrCRr<@vqY@xb;{EMH#Q_yGW*hD{ur(@*%!p zqIP?QP-{3-jrdhtTbpv6>><0G3kFuV5)F>H@?z?E&s$`C;@D|8fMlUs%&p6{UUif1 zboaEqbv^7yINw4Too}#y;Bvbnx8oP4Rv$@5VB3`yWGK_CsLCtY0JySnAPpMFq*^$s zgtP*PeS^uE^WWWYLbPA@fHf91TB=}doYn=t;E&h6Xj1F^iF+@x9GWcN-m zZoS*Dx+@kXbMn>&RcX5MaGSa~ek;Pn@;~Q5r%VI0O7u5?m^Zoe5+Xnj^RR{2fNcmI zbU8RUSUhO?v*;m>Q22go>)}V$U)T;sP3m%?a{(9OZqAHntZ}M*jh8jRXECGF!VVv& zvGOc8L2DTZAb}=jEl{!Zf=&|nBXnoXEU?x#=V}Yn&%(k)w-Ne{hFBE%R@4tnmjZIO z;pRO`H3yQpU8oR00E)ZcBl0Iq+6;J`^X`zub-#LV z?RPYxAD@tr5DyKh2aq(g`@_{_zh6cAzPT&4QzA>^W8NXn9)OBk0E`x+Kr>}93C|To zMYQ43kW1{p)jPq`vec;7GhUOR{qE%zhVQ1JVZh+F5GW_@U(M>0Oc@tD%o5+v{(a7L z&WHUK5hm`xeckO0YerC`jQWn7egjbw8y5pSJ>h6Q>+wVV;5BQ%z4_x`;Jro?!ghJg z1CO!VSW35Kra+&J!%RtX(8-{w@6W}!;OkNz?vI1l_K1dsbtSNbB33570jo3iqmoE<};3) zmE0zp9MIFlqWxbT6dfxbxeX1|hqQVtxsMVw#bXTV#1<>%KmZ6*coZU=rx>?5*XRiv zZ6>%J0l8KTtkZk_`te-Nnm1PB_G3>^Atd&;ZQO2rW+wefU*F=|7NE_0DNNsWPA8^b zoJ_3tIQNE~h}hDxZuHAjowFQz|S}L6zy2SK#>xk2_7+L;uzILitYOf^>zLQ1xWtJOvx&+~g zYdaDy^<2FKG7@SaD5r0@Chooz6Y zfv=W2GgprEudgaeN5SY*ApyuC>;SMdU^ku*me7jAQ@fnQ@n3!S+UWRPP*DtxPy$#B zrIa+ZHx)3Nb$inbY%DN_?4gDiE2h(FfkI}}ZI@7(GembCK7iaE`$KjIIFIVa*t6QC zV<-6XJa**tlP@8k>ldno><&C;CKxa}A#cEL3o++=c%n1%R&Z|1Z-xM-GY!TL$oYQU zpTqcIl!lhfhQyCgWCn;sbv0vu_(u(^ED6tt57pA&0Ao5^cYtXaB_|WGnwOUN0da3nH>N|{bhuHu0snaD@Z_&@IcV4M2t6|w%c*CGED*j zWL5EpsZdNt9L9W_A~{ImH{=(&PnJ~Z9)4ZXZ>e_b*S0g<(s$3?@;nI=dBivWoh<_) zp}azi%&Tb8AA1$o=DQ+hx@A85YEu~>z6EO_B;{+qj%q%0yX zW~slwU#PZB)cM~GDqb6D2qhBg%aN{W|U~3XYka2&(iys@jw_Mp+LQ2RE`G0gFgz-yzL|b=&r)wC5k2g zH!M*!oB*u`NPpbgfBUXcrYYUOSNeikzKAdE>3R^yX_vnKqXp3DoI`@o_c41eNC>uT z4pew{wdcsMAV|IOBhXTjvoCUJXGF$o!oRX=Qt4=?ROSxSJUF=7DUJxOZ;pb^TDM~- zrs~Un8?X-|>hoHHruPHAG~kNIhnyUeEy;dfA_F@HTi(Vhk z>TV^$_`iTU8*>)ZWtKI_z>%MgEBk%gn#3t*`m@}+I!lP2mf8D>GJR`Tb{CZjn;3dM zxLK?X#be!62%>VC$qrX%jdR)*geb0|sL8|6q??M|nIYdrbEpOHwKx5U)}tfR;Lb`N5xz&~M7=srHt`2n5JDx~=> zAS6jkK`5qtm%nfG)$@RG2;X*UQQ=toF;;Udz3sca%M4xsPYS`;Gefk}AP0Gu2F$Ik zmvVlLVF-TgUk?EZ^ENx>Ty+s#dBi`u2dwPxr=>e{4(}+;hH7eSL&*DKRfku5up|_0 zt9*tZ5C(~O-PqW3KEl*YNJB{pm}C{w9v_Q|OvR^mvty16C6C1qG#d35*Ug({Feu)S zGZ-<^^x4ZXhi6T0ZWZ5dIyr5&n!drrS=u<_@+9%?=Ae%a7$9BlIDbUJz&M1dC3hp7 zyh6Nti$4%p#wrWtTevJ7{+MIx>zDM{0fa7KE%zya92zSf+8kI)`B5GdEsyEW03{qy zP?%sUe_~K#_aP7T>vUqY4)%yFoILGfaxw6$;m=`2Ib!2AtNHgZTtn@CIJyjc34hId#aN%+8tC~OJx9w0FR2F6!Qq?22hbts4> z{>rrjG=K}O&*+A`J5Fxr3>rL(rk9B6F1=$tc}~H6`&#?LMX)_Up(s<1)W1?=~>Pkzu{cwsb(|Wq$j&x#9xwo?uSohbn z+W)HDQI@ z5K-tc@71ljc>vYqVT~-~9z^u@AS$((XObaKL&{vvM1-MjxHU@%P7h!U)k-I(9e`!X zWo;DAAd8ndDzDp_LChY@SAgZIc!VNra`5JdnV8zMVA-ed>4`y?|9bKTdBwb&Y9Qoq z%nb<-o3FLEJjFeh`R&evhI3>ib1`SwnFPd;yD2UN(TF)aM?&)c-R;@F!Pa($a*n}m z-haS1IP;L}9Nm?muM@``vEr5P1OJ$SP;Li}iZQx`aRvcrpRNMrU{SR!0A8qCI{Re< zDkdYY+)C01fdIeQ7j3k1)EZdx_4QZ3D?H6UxuP_ee;3+U%v#(4ei4X6J8qI*#2i}D zn2cylTq`fS9&raPHgzS<;m#@;W>njr(}f)n5>7CMw^+@fAuP2YSKQ^vkzg682WL3A zB#GLGoAtl{{wEc!cM8~lrEGovZ}4jWqot>B%bh@;GK{@Peos5+7)=LSY#3JopZ1T} zv&Ic}VY}UtWEM@(S0-_aeQSwaY2Wh$3-W?aE;uc{ENU+2Se<|G(D)%o|K8t)FJc1~ zdk|A!u@_Ee=$#SkxUUB;2q%OuKtMMzanm5D;rsO0RK;)KS-M<+4wGBP!W$Xm0DejS z|ABT&)dieSdb#Vh-V5Go`%&>V^jZPer?AfzE1U#>0PUJCeRt{G< zuA&e&*7A%ZlP1!nt4J@A-V@7FkJ1FBB|sDq zr1xH8qZ5!`LzEUEKp+7^Ajy6wo^#*(|L%A1x7NGf^{sm~VejlcduH~`Q-1Tz^UPct zs0U`N!i)wR6Jv)z>%fv53=4G#2TXnCFsNOKdHv!aUn-*bO6!Xb?}|%*?3cwA7Li)# zEp%hocaQD{5L8$KZvwjTN0SS0USQJ$x5Asi{*w&sLii2;M5j*-4&MhXNdxM;d&2>{ zQj(yEe%0Te-$*AkL1m$Nh2I0Hg{$j}O z`d-1ZN74&rP@mrF%iddORKsM43#`5ZE$4z|Y+4rn^o2`7QdiR z<90tUgEH<6h8!>GF-Co2kAL32o9#LAms)4yeKH!pM+dQ|@0I*R|4II76!C6AC`G88G8Ofn>B}oEYh&@kBB!R?(g4% zW&=S%$6nohM44%?I6`TrNSI@FhmzD{3s1E12e}Nh{WFSBA)Cd3yM1Ya zW1b7psXNe!<2DW2I{E3_YK}+vVK7OvpH6RUZ!cwXeVo1@_WNyT@oZpz(I4IBw?oZc zzsUb$l(rD!7c(<6^A4zw*tS?|<&F0Thx^{?UgQUQ!$-=ILUyL81GPKM~j` zWwR&l+q*sQ4}Q6@_T`$Y+RHqf)NjA9OU*~h@77i`spyaJn+x<)CYl-@tokvlli<6~ zuT(gaTlH6>a*l{q%4LOPd-u;CzbTz@k#@0~OpbZz8SusMxAyI##$mf+A}#i%a2t(k zOG-;CFlurqzx{(74Mrsne{=zJu=B0g5mAv{f4(|lKxhg#@b)fEn07UG|MI8A;N<|{ zWX0aLt)#v5P}2y8$%8i#J!*>))h7xtC`ExHkA(UDSi|sEg84`zg;{&Ahi%yMXT=av zp^cDfwYw9h5vRqSl-yS)t$Qatyb-MBf?_q)s~@$-zN&HW>FhCK7TLySm6b_HNl2_U zM0gqJH#PNFvLBIFcxhW7*7<~?R-nnc^n}q<>=nkM2QS1U5$Q-ekr<4|+AFPY8AVxT zM(7zPB_t@tnPS~V?VWUhFadq5=On=9aqbgp$2A^@WS`^8bcA=j?>wJX%X9Y ze{kN%jl=UR3iQX`qAG87c2or5cy(EG*I2p65sXGnmO!x{tG!s0HTnBJ)?s?6=wmu{ zi*}Tbv5w$=vU?Z!msKo}Jf_M%JKOku*B)@Zrt?4S$ggdfE!3*$qfd$vbvLkENMG8| zuJ0#0fQ-@gWImqO%-~R6Wh+}-{Q8re9!6TM(ofB(hqv+tK245}W(NjTDbb){R+&)1 z-1ERT*hHJ)uE(n`UVYIP78dz=c^&<=QC(8HV~wHJ=^@*>cTE;neh;xK5U5)8ui34? z!TFAz$!gyXF<)oxGF-`*a$`4^Km~gr9dng7c>Eev?}MGGhBk|HqrdkiafSWn*Fg3O`Da)X&Y;$ zosqKi-Si;4Xm`rqbfYn+z4L8SgJy%-b$Meo+}Co$c0cG!fi}Cl<;(N))aY6MG2uJW z0?tf)$(I}9(|m+C7L~`nXOc$=1=57A7KOL-=Lb$v;5S$^f-Q_E#zGNyHrLWGGnBOv z&TBGC7wQmES=mmlJ!998*Ear}NnE3V>KkiK554{thhA7506SbJi(Ou?dW(y0*tsDMmdEGl-INzDh z$in;7H;&i`)d_^n%*U3mT$*fhc)2LwND3|tG9xr-7%``l@_y>49XkT~K(>mkIf!s}?B zoEJ#=ZNDW&qjaN$Lsh&LzkYTpa)G<%=ubnITeJH8r515Qx|U5R$@{8x#Uv$%fm4Vo zynCq7dU%Qn!X+1&v}#NEo@w8aD$jf(Rn%iwetsSftyU(t1`lvIu}#bR272zBYh~Rl zWVtnbv(4P!%s=U=lF#~I{gcm!v+Ho)l}@4Cx>xJ-IvPf)Hw+rWW8@nxh_eIBK2$Qa zvi)g}0O2>9W|7&6X^b6s$V*1g6Gr3x71`+8enqc-Z}z)l5y7=5-dAu=ClN?uV zt{0b$+v-6n2V31j;$cbPinZ(aY{T?9ee@cpa7f4e)D?8JC$Fr_?Xz~P5Ak*WC`IoF zLsg#R6`tefQH{*c;*zNHxj9KOR&Wq-{>>{aG;^3Py?bIy2Pc${I4u6r@@VHzVE@Z2 ztSmXJrdkW-KR32Q=Prk>#3uuE!*F0JX zcpU+8FLVFP%^o+o*;QON{{_SKD;yLUbe)we(}pEE`02jNrLV;pT)+OL_d!ZVtkB+g zB;z8lQlCqyKDfrdhntT(-V^gRhIcJ^%XcpFcTP@rYRgJDvwPG)ZE$)?T)e{Pkfx9} z3WV|Tpyj5@OG2|zE!f7&v71p{?89juT#T?*bB3;BNK9U?q1>Ic86hZ6$#IA zAQH&|u(3?&riYCCkhsvLO{e+*XKm6(0#H(k;LFQ{OIK@kq3m_Kj(ciYXn#jiw-E)U z^4RO$$(~l61Dg0U29jO-vr~S4)&AyF;=S@f6A$4?>c)a~sM$3|9Yv?+0D$%zb;Xz)zr)aa9tzFND$~9iwOP(8_3eX9cp-kTs#LA)h-WNZ;YHUav>I_ z8TJ}!yHOjhJ(4OOfP?9Jf9zPTdkz)cp0Bcob3KgOQq_tQFGHxf=z70W3g4~>SQ%TG z2p_i18!uCOq;hSAIt%Vgs{}6l8Di860o zdp!I#E2Fz#&9jhlKPBqVcx>Slj6+}^~-#$z_fY5;Zhy+GmHyCb^cR>k2%1(r@*t3T6MzUy{$;c&|*qqGcygKJ|SdNppCv&q&3 zXwn4%6K$f>M?uo-g*}9r{+w+em|dc--=^XR1|uWYr+Vc z0`Nx)OzyrF7Et!nv4^&YE9aK03;C0{E8`OO(sQ(~P-v&Ad)!GxhGw^Wqu(C zlejj|-5e7UO%hpfAx}0|x(!}diq5pK4>vPXr)SxPEi_Y$j4h2_S(|XkTw&tTGvS3g zQc?fUuP-YD@K!3Ld^~0rW@tG$wh%9fIK30mb0q9c8wbLjd!zB<=2;w{vgrp$$B>Zr ze)H(U{K`C_1;*suO|hYYOAd&ce*l>_Yu9&gFNYHYb3L=I-XldnTcx(}ep}6?xq?i8 z;Cw8SOD?u!41T7jk>)zkp*#-JP3wJnO*21a;VNuw_S-=$`Y&s%@us8 z>7A^Mj2n_o>raU+{0?`n=8dAl@Y~bvRwo!5EFBA1-`(RAkph7P1?hBEMFFKoVS&P; zBCqXF{m!iJw$#;(19e5UJQ1@$@3Yi|<*H&KT}iihBow;z?wK=l7?Fiec?xV+lgrQ6 zSLRgb*RKF>EB9)#a!#;>wuicke*xC&$7174Lup>+lt3{D z15Mwr-W~Z`(>4GiX`Z(dlZtc zqP(_hg%o-O4?lE`)%xL2dLaE2Zj%C@Z)JRlcSxeABekwkV3$O?u$|n_m)=6T!ZYN3 z!cc#l^zj+OY=onB_d)n($1$TNWYXwsT?)>+=Mx+7undKB)CU0+To0y`yWgT0u^?0m7!Lv zSzgF!Ws%aFWS>Oy%LG{7p}+**FpR1@2(KjiFF6>7#zyp~A|q<2C_N?keQ%IEZG=z& z$Wy@g0!$M2#x|!OVNE3xXK5WhoeJ{qH6BjAPJ4s07q<9xqlGcmnC|!;gSv(Wn-ijj zs|`xl)n2v{v}(`sY#M>!1pJeG?vGa$%HOK6tj=9X&YUAE=d5#1R6;7>Pd4 zI(Kc!yCx_aORwh^aHbe7a5uQ7K_kdUlU~OFDs*pLo&?+X7n1*i6f$!F@mW#yI*SKK z5B2eG^1|1hY9-IX>ks|~Q0Dke)|t@d%HilEwq-W~_O}QS9@ptBLFCqRidWhYV9-ku z-nxgcDB^M@;4W-?l*Kf6uQ~4cGvUu8i-`uU@?5;K7mrE?m3iTn4N?`Q+{ddt#{f*u z=xpkuWGK0_<}kC9$HjF2Ur_Ny`8%iU;x8RqqjQIHFyAUYlpoM@7@X;{L`<#cxV-0h zotXn1d9^+s9#W_vip;V*-NSEu#S~;@2V1~fZsL{d* zLZuPiGW4AFX3QU*Fd+%(kfcO6n%d*iBtoh1y8uZ>3-}^`dsF&u?wAo)OXBXT&XV^$ zZ5T;`D;3{(i$vHp(dSn1+n$yw!V7J^Lfs{Z&q2+h)dw4bjZ@4M6LQ^XUe;WI)kceA zuW}l3CYxtwXSbYoOc^bAMq8FU@#vOT4?*y}$RQFKe)NcgudFmmEi_uHL)rjmnlrZ| zl50W5$V|KIcKGqPPK1yOowoiuHkXa|k~Sa~li0cGqvdgj1l7+cJ`*ICf!_doUhlz% z0{9Y`naz-+KPj3aXxxdJg9XA9kbx8#b{fw?N+3uo07?+FbJsV( zJvB*7RnfSkMa86T`JQWkH4F2}LL+k)E6$WMw7*ekvy6Di()ZSRLN~>xD z?nyCG`-6Or8jw0Y8Vz;Rk-lEGo#ALX_e37`uo_YS?wP9-!x1F`6mt3$JuoJ;JPjFP zb*>$2{hCO)vVsd>U2%IZ3`PFY0~7lD*9S*dp@cG?(;i(}FO3=|R@mia_1oE}Ru>Iw zv261+SZrevI#$8&WAJThi-ZI=9z5~trj@MebLLyua)gEUeb|Q2@ab1KrG;YuVuMGE zTCTD0@6*$;b5vyhq7+BxgxU;GBSZnUjoeR0eCun-1 zn9voas0gh}f0B74Ynx1N_AMLDY*GKv6ETmo2+~@Y6B3e}{2=Z%g$f2yaxSVy(4nYirfQy9rhYh;2~T zoh^3ZZ$aTnvkbg)2M*WxiO48)d=$+vy7U~g*X5yMJv>gL`9q20F z^qeK%Pmz({gaN<&Dm0cl;oIXnF;eQq;^A~V<+mW;Si{b5c}R=JW0-HxJ84X81EtO& z5tUi%9oWDCIJL0Wx3a9l6dAJP8D8S>GPM5w63TbSIhQG0vW!V_SmEWcdo<8?u`Imx zFmqwKnw{2{*lk8$nzY^C76jueB+mw|PD{IN^;Tf+LcG`J&?p$hzL98H{W2noj}_9c z00^%&Hr{p5D*rWIX=x4trPzOgl8F+wdDieoGqupo$Z%hITSoY0&=I_T4<>$igNLK} z8&~Q`>)^H8z4;rr7xTB*`;9&%bt5NVzb-rf`6Mu{{n{ho_i!f3ewa&P;;e2Rc))LK z^?spk_0Sj@xp0kzH`tZF_oA-W++RXD&c3XuQ&d>)fi!-FAe$agf^2p$3$OooitOH4 z-|N0Cd#f(!Ew7&&r~@~@lFv-1Y!B=!8wbZdL?Pe~PQENr@j0Xwm$I7IYE2i&BUOjW z5TIo!4DzIyM5lV;=$Kn?kS~OY6$?{jxQw(Gm-O_37*YUmwJ`yl+eSdn5R|~sXzRx_ zWmU#sS~lL#qrJu#b#e*om5w{kb6HvOfI?zpHD2)JeL|u_U^SX8UyY_ge;A2eQc$Rd z+RkaHujRccwmi*aW@?&DU~N{Hdd`uG>bq}d_P)ha$nzl7s1YntR0|p-Qg~W1n!XH2 zx?jG0SyioSh>eB~9334o-CbsumZSL@8DEC^`xK!w>azr)>#WhVl>D-?G7fsEOh&Iu zq7mI$qz&urJeOBc&~+XO*OKL3UNK?ePt0HjQ))q0_3>B*A>Jsbt+z<6r;K`kr=pII zjzbih(;H-~w(#+Vldo>-3m-oiwo=&oZUPXe=J{Ad+oZsET81`J4MknE&Zner8TS7i zUM*8{haWnlT4O=w{%&{jBv_DG+Co!PGaF?W){?{@*Xy?>*Wl4T#s}6PTIo$i#=L(0 z`iyM~sD4I0J4rDk9InjZwUc*VjsmNeILi?+X2!<7xe>@fQ&Uqvlm6v1h*@&zzmzl* zZup1>a#{J6%XtlTb+WQ0cN*f5q-6IvyO;pX36!z1acplwEoeJ_`c{KAg}nWn4=Zvt zdPI=nrOe<5#VsiRf1mZyGx|FtsD1)7J@@{ED{4KdspMl148Ch#+UYQ4pY4M8{?D`z z|6{LqDI1a!>Gg?Ua?HwzbE)mMYQ_3GT#8unWNHGFTXxoTapNXxF>qMLj=KtH3-#-z zSCwrt8W?tQ(S|5l-72@5xL9_|KwZ&2sYviwe2!q!CxxNV)FKx17QNyO4=6(5uT>ZJ zWtP^zT|T6n15&@pGC4)XUhCsl2c35cpu^~_es*!W1Y5xx!9VIr)yc@jEXnW=*mujb zkB5}Cm`)3Kr{!(UO`X(77y&<;I7a*mN{ts4@)uO2WCD5&Y)+-ict-xM2+zm<_3GyN zmbQ;27=3F9c{y@xV>#R~<;X237rXQXIqmbu;ssuvM$1jaUgR7Xg28%jMoBe>?3Y27 z8{#utl2s$Ip z_ji;@n=MZkHZ+9sSywWn9@cAp5%(BywWUUH<2xF*FDn^}L-K(UCa=(tTwuZ_(qjI) zLFlNBxUS{!-9mtw`243pXb_sUvC+|xr^&*53~$^BV{zMrCmdKQvS>>4kcj&y&sRy9 zq^r=iB~{@L1(e>DWZYXKvBJVT#weRGS_dGmABBsV!&0wVbTv(SlD?{{j+hIpz zG=ipa%NRwt7xWF=3be)B2_@q=S^sV5&i6ppt(DY^eARA<61u1J;yUD5`9jjNV&ykH zK0Cj&L*KAF1*81Oris&0#2$WZ%c9CkTSIn1*O)|F2$9y&-Y!-3%W&9h$inXhNVStr z(;sIPD~my1ySuRCau$|2thS+HbnTp5C*6M5p0(oT`?M9Q^@D!C*&hndF z<_cV{3jEIaNM(|d1U61g5`Ud}!eF574{cFip-d$UM_$@AVt~9jW?ihry4%2y7yvL! zQab{3VfF}4hTXNrz#w$jA(NMn&jDtPXQe2eyVOZNJYaoHu2@PXE{#rg?2H!l^ccur zk-&df?WtS8&rG#@p0c6M$H(WGsTFED;sa2`ty>$mKhoXo90G*vcY2bpsCZYD8W$&8 zwPT&{J26Y|vd#?axUoJsDhDhTFpP53h=+3i;v8sbS<(rp#z3>cu^3FlTc!MS%uKXhg=o;&75^Scl1w~!!yEsr+$ymBLt>h`Pl2(e zqk+nkU=6D3_(6U^-j}-ypgtV7_C+AQI{x{UwR!^ugZlP{oo&6mf{%wLA|9KXo1y~k zk-F^5I-3E#jE}x-GyV~X_R=9`gu%Nyk{J;xEFh>LwOQH>7YLLPyUf`|{N$+V=(J|t z>cCUeI(5eSw%b=DYaI*b15K3L8iAaJ@v5tMQyRZ;v_1vK2 z2Pd+xbgYb=j0ec?_nk{ZePVrTz;fT%W7!FP(J5|wZa1u>b*i+dHvg6ZhUrI8U-(~v`?-fm?3(OGq5_h1oHsm>NC6tRBlA2 z5g^wvXoo-xV(*Sooo@WLLu!XL8C<6#raEHWLdEA z#izZWOOXoZknfY^fT~#vjn*w@`1*1<+DJ|PF4KA!2O9^*-H!83KmUTW?l6Z4TgR|- zTQAy4b6qjYUNT-(MXMv#KOYf1hRT$tV(tU`uX*&>04`YBU(9pIUB|9aNoFk!{%1bE z4y~tN-Q2#L7kk1&s94NbL?}W>xKAhw^lg$s)dybYl-r?&4ja(-?5Fhl8Rb)D3$D3Z zgc{yw0L_3`xrqws?30C7yhk5e=6T<@iDKENi1Aq7Ja16%=!!yW*~ps*^m5G3IkgVX z4=2=um$9xlxbDW9=qf%_WiRH~xKaETh$;g96;P+)WX@qP!3 z#Ev!u`z|pF;!xBHh*AE|dw4}1W)uft&dkQz$VV!D@%=KD|6(*bCPa?90J zy(|uPxxnuFD)ONu`()RTBmZ1E_}_GVwaNFXGWyc1L_W;W@rwZPWL8Eai5GY*-yqRo za{J30B#yyLfoteiObm1tuPsji67-*1BP0S$WGM=rf!f=iGRC!7KNBVB)%aaS{*l|b zzS0&gfJItFuZw|c(+`O9nNH1nHm91-K>;5^S#nhOHmrab3n9B3Oc8%@LPXKqgnequ?1zI& zwYfhSuwvBe+Co_J?iJl%e6t6WVaTRS(T1{4t>QBN+iKYx1P)K2?ojLvx|E`G`^i$^ zjzd0R>a$Sv5sDG>Ix8(-Nipy@I>zCb@JLnp7Q#X}m6}U8_r7u}eJf8dPAHhg*3iR7 zKLTlaCfx7-*eo=k$yrE*Xa1c{j9(j6aD-jTM_1*G|E5^wPXRBOin%R^HJ>fx%tCRG z!xZw!S!jT7hHPMvx!w-@-x?SFtQFa+r3_=WLle&!CUD@w5_78hah-KaYpX$IxChV+ zX=m|!!@vZ9C1Yr9B(XA7+|H|i+gONA8H)pFp>8mtH!S`t+laMNI?_eZ0&{4er(ynX zs~cF~HrQRcMlBYxRZ3aLzW3vK-}WDR!n&cGE5<#XFI`qezE*x%S^hM^!OosXDNjF? z=3zGdKIRXkDw-r8>T?J&07Uu>Mp+I7!2gri=ez|u$`Nye;#g#fTSye6$0*{!?YJiS z1$QS9RZ~i9R6dJ68Fl%!z{tN&^89M7fn3nw+N{sHu6yYmIoZH{I29%T2KmSh_~{Aw zn(w`srd0Co1(`ApB+LIUm)ZtXl=D0b{TKjii99puKR`KRXu#J7O&phh%x2uj>;0RO zPdV79SttLSc=!KQX1ogE`{eJV4_JAtGWjgvd9=Szn2JJsTZR*Yi(dU+*viXoZg?xe zD=xOVTx*8#0`Pe7P+PTce580A)^kSC3w-XkVMy4j51kwKXs#dZ8CH_80AO4ICc=(a z_<&IdX}~YtWB7H?7fHbBUC)lF>aaW&hekef2nO9ogdO_}-00y=v1g!Kk=D_2@{8P9 zFJ+@D_h#px+!VMV{iSss5dwhaZy8|=(bHhV$Ynh=2^N1(b$k9s`CaKgD;c17g}0GU zr2%iePuMu}Yoq|~fKeBTrV;@-4-HU+)eH>D3d^T!hiFC?@~&(%yQg>@y0|1$D%v0( z2cS8>>a~pI{VXDo#X-jkrBRXVz0Y0avCCvgq2XZx5)y@q1R|n>`<0MIP`6s&>^8aJ z2)hm@{An(y^qdygL-zXe_Q6njz4EFM@sl z+*ydqX9M|%WqsWsSPEVQ(#E)dVBl}hff~W;(p{3;8FHujLPpu_J%VbnG66MxT@ zi|WvJ*@NNaDXjm5Hz5#Y6k5q-3!@2?Nbh<(LG2WpKFdZ^B7htdCqTWyQm zH|#0yTM5q{{G6IHj5X)tJ}2qKZGvq!(zy@!{?L2ju7@ArzDFH5w2se;>wMkO)n@EC zR_~n8dn7z-YkJhCdNkevxZkj4<}d!$VEso4@XV~=9a#0OWFN<^SL)h>ndX&OjpV`I z^gfdbqA9p1*(7%vr8HuwdhN^E%>s1bk2ZVqm3W)us5H zWH8MwyomrSilAAx*PjS4tcjj6qWgLmIV{a%10h>W*OXYRbWT3vIZOZ8yBNyO1B^C@ zJMv5L5gy8sYQIj5z_p6}g$FdUFzz5jv>sTN4torB)+)A!)j=jXTVl-@#KgpoM#a>d zCxsre>mjFe788wx)j5iLkk=7UQluSU3+I0P_;JC3YAvT%EGs9tpT6J8f+^AJc|)B( z6Mt7IE^p$%Vm*ObB+*QmjGvF>4x4uJw?AWd;!mguBK0>-O>3JJViY+!uE&O1UDf6${ zdYlq+O~lnkOo{=FrE(HEYwQ^UkA^!w^XLyniiVS&wP2g??|XH(CV~*s%fu=EcuYd^ zbZd-QQ|T>Wz_e6GFoKqt;GR_qOiWBqiJN%(@8;nPSRVUOSEpQfxAaEbfStzOH}>}? zF3f}l_Al4ZLaG|`IOF{8Tn33&r{6H9cg-1Z`THZm`M?W5KZ!YJvo5D^W zRY=q^r{)yjYA#mIGbL=eCfVcemQR5n2KG!9-9%DVTkFo8s0hhk_j)+k&p%Yk?9o$f~QeP`hvSC1+)Nt6nw3p?FUnc)?4jQH7I@ zhV1U2mKRu4u>nqoC<^yuiE2w_pP9d$RLw~I>O%%QG(pqP-9zK3n!M69a;splZjCZo+~F82C98N{ntb@RD#wMKgDfEUuP%q1H?bsny&YGT}R$8?&2Q zd~C*HM+t)&#zk5+v&-2id`?!*k;CljKz-ULXiE^v1Rj(*zMR$&?T62>?vjLNlbZND zL85{|&orZkwc%(5coCvpuW}-L`qPuWZXO;3uTF?QKn@eXsL%a)|LhWzeiYlH@$&E` z85xtf0pO>l*%}a@)4jfge7h*d6dSS46DV3jn@z%m#vR_;3@6Bgv2%YUk4$%- zcT;`T^6aVwa>L?^PswazG2y{ncUr!PUgG@cL1cdho%72w(o5qH>7^76h z_h8j8Ia%5H2+5{-iecI^{llj3s@^Zf5PU0w$kH_^R<^XV$^-7j?!bTFtx*H)RS;G= zdEEn?xea_Ap{`EAs#!?oKG~|u70~9Xb#-+k4U=gJiKJf)QTqs^F}j_sLJj*`wP={4 z+B`5gsOuJT@_S!j-$*drb~wBjRaCYSzy5Bl8d1AhXkU~njOR`9?L5(h5WD~-PB0`5 z`wC-cFgB&FNEC3^i3_nu)CPptyw~h6b!a`T1~I4x2Jc#u&o=%RSx;2}MA*3cg%hP7 zUPqx)2aT9r@t4gvzlZ7a)!7h_AlZ9PB)@m;OiXj#GabOkS=3~+T{7)|e6|Ge2p9qT zj@0?*uQcs=sZk~gu6Ob+n1{X?-pi0P?BgfK(jKz!*bm>!^vVdEim4UjnYBrE2w5TJ z?%sRA<;SNdW98099)WssWG)?xZ^d$eoJ9>&zl$W{=+>-nT6D=vM^D-Gp zP>z|T)KnmX`;pZReF?c?)o>=|q2#$$U}TtJpiu%8BW<2I6yNz=f+kZRfj~se6_=FU zmT~TmWIh`+tDFOV#s-&Rf~zV7W;B&eie;S={a~?x^)H-~ADf!&j3)0COch7>V%2u~ zg0VV!B!_fpn(ovR$-^t}k<3~wX59i?(e!UFkE3~UfPxpgf|oxIDGdw{x1wOx(FW+r z@fnX0czk~yowH6CHC@wsYNoD=@(L-}=}#I~@<)?WIVBsucOKXE2cC*~UcPD5lj#dh zc}{sa%q^vwdY3hWn;A}-GSoWwt4Z3ejE(W+>c+~@V4L>52pKkXko5}I+}mPkGM#8K zL)4?R4ohzLzPuE=oX`!Lpic^l-nRma6)yI zFj!_+94sEK@+8eu_QdQe5+XxUa>(&&_;4VWhJUL{)Hx!!Lch8U!+Hp2a#M3|9rjeC zUAf5hqEPMvX@psTUW!QTE^G9nH4FC5YMvdt!Fm;obQ6N8@#o~^1ic*A*(LK$j{Z;u z6nzB+qa|GbFyP4&Znjf1iF0#vlPzBVa;oPmse=<+)5@HRkh}~rlQx>U?LWc^O{Hmd zMe?XuK9A5H!LZ~&^TUt1)$venf8D~?qn?-1%l3~}IL2G&W*G~qd!LGa&TF$iNUSHR%u@hN6>hKVCYoI_MNE%LA`g2YVU)CLF7(9;- zyIb77!br<+p|q&7!4aSr@%C|hS-~0pUAsQ}e|{t8z|CQgSU0@aMA+w#&%N-GDD{zK zD0f{g=DKa5bn4(P3AC-(Ypk-?s0MWd-qR$U>uPaD$3T0Dwq~m)5x{R(j1S06IjqDs z3Fut$T-jB}g)4#;ay{(-Ip~QY=G`yv)qe@f0tSQVKe^t`80}3s?12&WVPE-?AkTM= zeR3@XSn%1dnY(te-u>fU`ClCQO5271%@^R!f05?@`uaSGj@f4b(0k+#@mVFzJFfQB z7BIm@{mbVHo)Q?Tk4EwgJgcnq3Y{s(Jbrd?rWWlN(;>hy&jUVy=!X5QVKLR#2V=^#G+_VWGR(C>65} z3RmJT5`oOY2sjq2;G`ZXMz6lX%8g;D6lqBAp)PRJM(kb^4@9OpIZnoNY`W}B_xn*k zoe`tvoTtE^F`j`y3F?AmJKE3Hlw{y6CW-KO(b=y@u{UL434PBRK39}w82Wjc3PC8+8Kg)BBcGZ z9r+DEL-wJ<&SbPAGiW9W_Vk`fYIF`Y8x@af65QGScn5J5nCg^>hu;+%Dt~0Fop4f; znDh3uZZ3wcd+-rVqr>#-Q`rm=3LNy(l|<;ujG&emi<`Q2L_`6y*GHbew9yW$?Yja6 zAi2H)Tr1Hm5n#7gR^-1kBx$sHd=Kc}!b^daBl$+^wKujO)@F$bhrd~xP35MLl_^IQ z*m)Rj-s%>l2MW-0V2ERkU`5cy{WY^ExlXGXL|NO#VkF!7?6LFOf(NEfru1>qU-JFS z$69%g;Iub+>DjXQI4JKUdVv@f^?OeP%4%F$ zjuE9bxnS*{CIa_QXh4fKdG>Dsz-~t=Hc1h@qm9SwUvVF*mEHt;g^uz%5^nkypMm^VAHv63oUp;@7eRA};?BoC5 zBR;+nRN#);&kxUAnAGSrmDGnt`&mNJBOzp#7~A%E{E;L}0?VLeA6e3$v^sUg=ArO{ zwJ)|=^P>^aEp37ek=ECGOnz~3;!@=&wYuqgcAf zicO(aWk+$G3)`rFnckD8lFs;<8xXi_TGHq65KH(f%)jJc`21#g2U!M@p49d+cg_Xh z*)%8weWS(!4S|H$a4P~7mm$1xB%gH@cz{BW@W`uirk0kM+R>QgR(k;Izz$cYl&J`- zirX!lMl;-?=3vpc525bv8)mv8y-t;h{vwp5<3s|~jQpPQJfaQOyp;e&NV1;IIIt=! zEpF8fS2IKwP;31llBQPmXzk7=9%8c=PCjtg&Rc?WnZ&D(aLx{+2G61$z>w~38-&CG zzhgm^ep(|+dG-x7`b!j4tD{vEM)l@pi-($!5UX50fZRx11p5tGRk|g3tn8~%fzc*I zi-lc@hDh@De6-5saEKknZP{}cmcQvTMuaJRqK8&)R#A#KE&siJZ6VJdfZ_V8Hae!n^2>W;r9RXTT7yKQ-t|FC3ZelxP4hmN_TPe+!m z%TwSY;`Dl$Kg-S2vn;94)lS|eI`x!q4fg|fRX~M@J2dZQ9OC8WZII~qTDGjz4$pOd zmc(ThN*~4vV5;cD2NaQ#d=;A%jJp)OQq^sriWwg`yC!3*!~z%4yfRJ&MsoE|WbJW( z?LnHpmzURsw&bdKQe5vauP*zpPf}BEqo60vk5wh-=uJB|O^y2&v*=2!~@#++4axBC(-1a(Ic{O^MGTfoZb+n**_B69e= z01y!44i;sx_4*#LH1U%khOlXFZbm6NWP3~Qo0k0Mv9zyhk{+7{7Lf^+V=B21%aN6{ zG+4H--<9LAQE8tZg4T|rkZ(O3ie-2%?YrQ{VszNoeR>-iy@)~F&E#Np2Cjcc)=M58 z#nyXQmU}G=R)VjHt|Tj@@)D0gf`!3YJ)eb296M1@@DFU5HnjegH&_Yzz`3mCJ?;Q7 z4H#Un#kX(Py~LN>d|k0D8V#LX^P4o)_$8UBVvrf`#4a17d6A)_BQ%4T~Ij5*jKP%LKOQ@pq$bP|xf!-N}`G**92~u5Xcr z&5X`Y(OZ-N(eF5zG1XZGS^e`(mh+ip0r!xnQ~0QSfk0f3>Q(Ew0$EqGm(B7>Dpt2s z+`}c1V->=O7gu7kI0ltn~vt8W^xLkqcs!1z0=S;istmY3j%x$RBsMtS@3RcK8Fek! zogRbPxuV%2df^K661?9_@foo5A2Vbw#o58&-9RM+qD{aT#yyFW)^t4s6-$Naw%&X} z1Tf0wxHor7R*V>P{vL=EvqM}r$u=Bj-{I4qX~P?oOF?GjNQwud9V@=2_L%q+2wy`m zwvfHIBr6Ao8i*$0&@g6(VEE~en6@lVw#^lX?ERwY1jg!df7EYT*ZO<_W6EP&0*_N< zoKPTiqD5klh%2~j+ho?+c$7hppqdzVhj6_t3_(0XR{-Okr|N{ZnMF(=+@20g7cgNk z1P$q5%Go`QBkT>TSaB51$i09Zf^IYW>cg-j3v57P&p4N6zwgF*sOrtHQHsL-6&r&$ z6=fw?H%r;0T`&f0w|=W#I=$@Ffhgu^h#n_Ps2&5+I3&Z6u)r(pvOF3Ri!QwDu`MDwypQXKFp2hE~wUsI8+0 z&W3;Bq%x~J(7>nP%{Y@J=7}CJ_~V5zv|+^5C(SlzLi#M~9KQJFnUK4-;j!Hf9cahM z-UEWvK%6b(Ep>5bTwg;&;|Cfx%$8FMhg|Ef_^wRlsKPE-Q+E#@J7|I0WiZ$V_f z5lTB-82dL~!cswyHG5dE;}){ES4=Z(eFcQ}rwBQtz&MaSk_THmkkpFT7-ht?6q$zu z6BUhS#_zf9LrP7ED;AQhML#f+*Fx<~H|mgp(J|O;hBL1mZ3%8>8i#znDu%=*yG~$6 z4=r1<3>`H;tmQAb<2nV(Oz-a`d*I00rvU!4ca}Kqd;aA+0%;B|B>*vn(kt$epl5YeNYmbu(vyPXXTA0&TUu}wsU zZJ=p*57^ujD?2U2tcC z8lrnMwcUZ036aPZ`D8DL+xmQO8Q4Do_gVNftg(FTkC>(w#^Nv>HPt(ud=oOtiv}m( zhL(z;oIvwX#Gy4}YYSrqOdHPyyXRj3Z6j(+MUJVanbTpO=~XCf6divI^BhMVGB=>W z>krd&CeI?tEj6XXyfhqnEX@`^C=f`mvl}N~M6mKyRw%PI9Z-l}!Q@*$vAwa4Dpt-? zUQ3nPjAEjt%8N@1<}K>PhN5Zh!_MKK8h-%ai>TU#j*M&12_X}Hj>b!OJ#4bZ(_uW8 z--Zk1H+lJBT9vs~sF-DXJbQ+*o6+9(rSXS;HN*3tWWZOV3)3Y&5ix&O?#asYAV!F1 z@wijr!-uz7!&LocQ4E>`6RNa|!^HMJ>uL0GgV86fPAGy3Idw!Ow2+j+#6?2*(y8xk zJb7wTXy)OF36kE#IBTP7>#H?V-1x*X@f8ykHGxotP6=t)l#=Jj^4xz^ix_*CmeFzR;??Y|Ct7;6YwxjEDoiPj@cOVTpR+@YRaUyj?V0U)gVz0Z! zKoh#OV-{tD+DhJH>~9&K(qozC9RY6%f=j|t!8(8E_d+Er>>A=I$y(vAT&jY*V zixFGTflgy1(7p6#Y$fP0)O-#0wuZ(tFa9wNUvAj!g48GqkQ2j#YL64l@h})?Ko6Q9 zF*B(#Lll}1>)}K8S_Ck9DB!gEY|j}aYl3qe3DJX>bKh_U+v8?KAP{|49$9oVYP26B9TX!~n{|>8 zO-z>zii>DuINhSKR6{IV$^6}JZ25guf=w4-Sn9*1Bw+`@42s-bzuGoY4$e_@a0|NC z+4Uk-Z+)#*kd$cc)w@H+!V3?s*Ci5o-U8~{Bom5(ZU1guUk2T`SpksUnH=1Ol5+pJ zSPh^8&w%mpLLr-!TB7(iz^0QraV=qW+S5J~x|BR+XPa&jUh2Xb-98ZL{vLE_i(Q3C zf;&C!Nof88usjwpcWABYor#BW7_b(=VljW9bGK)aM?rSfw`oLGTM5gk~+ue6KRUU)JI(H(wB z*q)7l-fBHS;tmf?z_gC{THWv5mHXu10=KQNv32lS;a@S||HsFD9gbfmWIp__=H5H5 zsqE_)Msai;MFtpU1OWwsQQ9a1QlnC(Do7`w6j7@5&e6dU5a|NaRho3^Qlp|ks8Rw_ zBM@qUKmvi(b9Wqn_qosSeedUe??3l>KA*rz&e_S?=bXLQTHo(ld#!oha^^K3gv(j> z@1)AZ$HuLPo7}!SjgBp9b0GY_$0Yzhv@k}xNhcR#234ndrE=Co-}Y|KSKmoX2fMrc z&)HS6|D69evvAtcBg5asiZOCnV7S4^ZeC~6FwY5XdxY(D){y&Bsl?EV4G6eII+k8< z4tng+ghJV%ESdb;TK7qs;?q<2YkL#*v1(zeJzd$Zaf3(3t`FbezmE<5ZG%avnoKQG z`^tPoqAcY~Wc%-%bZ3h}8M~dmztOOGaCL4NS=k&e^V3e&du|a@<^sx#_1g;Z4^-f+ zJxs2_Ft3gFrAOzML2tm1F8$tmI{W@q%Y$#<_BmJOoh;Sh`I&9gPH8oBHTV4QCl$T(-)Z#~E?S}I zHhgymR*aZ^70HE_NwyYi_c|U$98&2KmywYnFYSqaDW&XVyQjDE&X_cuOCQnsg|U&_ zGyT)^{9GoksIB!6!_X79E&%^+&bISibc_-VS-Y^aGAu62mq6}ijM@MXpO7l~s{`xU zF(I|JpjgLjp53oW=RF#ZRL>+ZRtGw&s!G3}EDvZhPQf-imS$ukb{Tse~^Ge{~HQND(fcM!YPa9tYvJhC54AL1xG$=9xS!Im#3nj8Q^M9YaaGF}d)^ zmaPu{oZiVIPoX6sCsaxgZ#xo?{k-})*AZGrD~UG%$be!Vr1)H^ZrGRJjIwkaF@#}r3e+EKG z(fi=G&^Nq-u6187KAuLy!=8kVh`e`%P%Jcg_^_79narPLECdhy%#F+7n!6evC2G=P z{CVPG^`j;;7tfPlj)q9K?5;_TEea>Sdux<+Ah*WvyqePoG~b8u3B0RvoniGyN0Zx8 zl^pdBo9ur?y%6uaVKLRE_tTMQ=+Te6%rjQcv}A+V>;eYBx=@K{XJaVLCWLG`v%k_A zx8u}MSybj5w%d%|@jkB}Je@bz)4DyUNByGCiN?*Lf1|$)4aU-u#m%UuI2O-&l&NK#L zn-@~8aewpLCTIwsA)IRaW@g!$ZuKf;Y4fM+XSs>M#rM12Px^fy?_2V}j{}?%^t46P z)YR1b+qi_Wt*vw&=O~qWC=*hI@gR)ZowUiozY$a20VUqFD z&GF6q26EtObDyQNn^YBpY{|-VFNSv?9iru<>NDlm887rG;Hc)OUZ$1FpW4hZljfHD z&zQ{Jid3G&HZAc^L0F96iKe!o$@Ea&cf0bkshL^#%5ag7|BjKyv+^(5Dt<#sAjb_T zoX&^*Nq^wuef0`9kRVj|gtX0a;LV0Iz{qyF2iF<3ksEkai(P9n1sCl+)kWK{OfV+-%~D-*Uc7kXp)>h=5j9qd=s zIaM9Y2E8VXq$t=n_vpHjM`B-Qgesi_c~TL)iPeoxsVjwhhqo55r^z*G;m}4ZmSMjq zqu^Fba*cQqd7URMsCvH+GvX&v7zL|RoRc~!OT(+VQs(CSrn}~1+QTBI$7cetVZxP) z$eEzs=>R)8YrVnMFT z6O($A*LM2H(V> z%oyp6x*cJvowprP=ym_L|{3&%uZfxBq;?4{8DpD*7zq zJ`X4;)PHv57$yk~Ha~nC^}C&)cT^_HHzfC66)~-8qRyW3i-EMAbfmXi%6!6`6q~lt zZ_3US5|8qpQwtTa)RKaAaqX_~J|VM;}sZRmB#clIymG@&>Q&+E~6Fa@C9-l{gS zO`)<65>PnA1H7mmtGME1Gc_CPxw-!O7iD)snIh}IG1{n0pH-%3#KrIhmHvzcbIl^d z?2H--BzX!Zma>~yUMyebkYf@{Uz3F@8_>94Pre)40WRrP5ZB}FUx5Gk_mSYaPlv;{ zKJy+bJMi>bsAwR_1gaE7#4!oZ3-REhe?O|Fc2rMvX=alBV3|eRHB_Me(!Rk%w~*hTW&pLKWZhJk!a zzNBFz`~xgLvWl`&v{T+Nb5Y5>SE116lwye*L+|0m2vAPb>z=b;gazt|K8dIe7DwBDQ**|s`UX$y>+Wm9VR;{*0 z8Q~$SO{rMFpkH&D2)A>*F5ahHYd4)=&aJTe?X80Y5I(iM>Gp^HK@M28bMaaW1I)Dn zTuum~>Qtpi*Q94_IXM&?j(2B(k}L&5VKsRqh*sXPgJrH`^GRJ?#X;ZpUAU?4_~1m3 zxuil4J0-phTqqAk**cjnJ9Zj^gdu0wBxsS3l7Z5(YiC6dt*Bx}I(eKWxe`CeoWQ@@ zrM&9~R{lSE0gf$vV%)a9ZxK_dpIqlU*6je1UO4y|P9G|C$?tjox5>eBHjn9QQ$1Z> z$7}B8zfA|1x=qxcD-xs&U%cJM9iVR;04B^3Lt6k37Pu_uV}` z2Z~*xVeOERX4Yp_iyJRNxp}Sn&RZNZ)u$nNpvTv~WVC|2SJM+~%c$;HWe|>9P~Xt7G{qkNF0lz&m~+^> z_KY1naRYGdwtnyXFQB zhbXkt!pR7FP5j7{c0mLN>ZXW2@K_O`nlOs?O@8y`S@z{NxFgfI=1%LdckV;O-Mq`=ZnrXR>fO;SFW}VEsC`Y;+K$rlQ(vx?1Kd`gj z5|8{N$POI%@3?*cr~hX>2Cw*D87JgMNky>w*mb|qsJ~t^Cx3#Jxb}1mUn;Q}=q`9X`Br{Ko^uH;T#zXZq9NVW%7>gcx2$qq<@geS?6C#h(9GD|M0hy?@)-5~g`&KKIqu_Y-eOy~ zBr;wdnB-}+e?3_?c~q#$Ei8}mypH+B39o#JyBhR(6f=5qTHLSBuL*nzU%GOQ)hN9z z>)@91mES+hVo`@b_ZyXM7NnH;R#Mdgt3q5~*eORD8xul}r zFh(j}e974;`+Y<)qVy#OdXTcM4sLXwk_e9G2 zgjgbKSI!NG0E-YS#3;???TeaBVRZz4?X&2;yu|QmE5d@0@umAswJL3ciD79?473B% z7`_{`Hd8Zcl}B5^6?=&5ZYu|sSdT7;kGDEEn1X|6NgMtYby!CSscRdXh4pQPn9YaPH$8sp1l9D;xO z28^l_xQ;`p;_~c7O>AMG1P4A+!f+cA;_g|L>-sNgqZ~=swj;If&h(Vhu^|N2d5W@S zdyizbDt>L(nK>L*;8?*d39gCSZdLrmH!ZV3>JgZZ7s^(>Q}_INv<{Z3I2>lkoE+2b zY~^kN!;{%inbMuU;lrS{7Ub)zDTRCtJcvVh;|O+k=h91gkX=xY9%Vo_1@*KWtYkUp z*9Alxk>RQa3{*YBm)unZ$JZyUp#Tn^3NwgGmTLjTH^Zb|h7zM=i<244eN__~P0#+9 z6t}%Qiz$gHPE^_*{j7j5-HLoxvA-y;szt2JHq0voF&;tB=BFf}65tow6*!pz)m@v> zzko#k!?|6^gQ@P`U=DuY{!PY;xO}7hlMIvz>*8Z1yRZmgQ;c6_iU>*Y3l5skbKYMq zux$(_DooWYF`jUYufCv%7cJ=m^Wy@AVK|UN&#rVJ(z1U~)wQ)*0pe5Z)xuV6F!5Fc zorI!07$WE7Y)kpfT))&S@(?-Y!HX3Lv_FdH)ol@&^~(Dvdhp@z+aYW$CXbC0{SURb z|3_}d|HAEq=l@gG5{&$M1bsz$8&+@ob|Jq0ctLK&l6{xLyxW|%&SG-n9f3@F(V!Ib4{e?nN_YHMH> z>>AK76A&5)9t`u*4X)^t==GC5DjHq6Ks3~W+~+a$>8ngi8XU#<-rT%*5d0*oqdjxi z+kQc$gn4@mQPtDRJ!^BTzl&cWVaVqvZq1#}X=pQ#xIskyLWs#WOJfU(X@x zqoUn8&GFV=%I(F=rq`BK+0jygGKVBCu5q5sLgMTNu+y{iextF-s~& ze1+9LR>wgXS99%Y8nnQf8A4JO@6sCL(3o#c~_J#!>@|8Ju>ADm|uoPw3U=JG_waj6)4H; zNycgkdr#KhpIdAjpwQz(C0()=a#63qk)nH-f|V(pU{-;&@}pIWa909s;i0U@{$l;p zu-c%%H@8^1i$%F%PF9fz1iC3t09lA#T?_6F`JT&^RhNf%g_P?(tpu@e#Ety)fLyg7 zyD;9HFAVn%k+3z+@gq$MC}d|jUGt#4AbH~+|FWkpyf}eNy+dlEBfTc6`0fpG1_s6Uw{GZPTZ}J zTcOL^?pGQqiNG2$hh=WAwT2o#1zIh&Q$eXZG~>HqCrWX#M0lOnZV%dI+VJ^u0GP#P zgN*8s0S~-5<>$8tuSoWiOj1)&{V1|>Ss_$JQ+!Pofp~B}9Nt8(&+7X3TKMixrXb5!=I%JPh7k69`vb&KvIm~3z zWTAo2+H|x280g?m{r%xj{ogoMRlRA?PI@oVy^+|KnY|8(Y^#bzpLS_*$gW3f$3mv=C6t>&Mc-+qK$Q6i)CTBVW! z&@qjqXA9vFp{g_oFpG{+lo4GB+FLVumDjdN@1F_aei<+m!1Z&2IbbGTbL$gbRD6^7 zA4T{5f8m{f)tNvz(p4X_6x>6)I{VM8H~X&smv1lY0?~b|a*2(Q0KEk%3s^72!_W&Q z2mf3?gt9EC@!g#nldN2tJx&ydDwn>Af(?TwP4MQ2~FNL|~ za^@;h}jus#H+-I7kzpO`? z^E)=^ z1CCN5U^oHhBOn3(dWaJ51~7c2D<$SdpWUY&y3+@~RwBOOydGkWR&(3H&{5{d==J~w ztOHR}^Q4h!yRmw-&lPwrspBcyyuaa7>|`)$C-g^Hf8g_y1~XpzkBwXs*zXrQ0~P_% zI?5ULV}4ZsnhG|x8cNW)^ODaSeHL|Y-gz}574oNe1!NTVq(WlQNfjJ)sN2Z0t7tID z6zjtaozN@#JxKoj(7A~g=AA|$s~dg78wEEm&*=iIRE4-JL<~4c;q<)1v`Qj=M4Y`YM*peYaO9GCWy(I|0> zou`tw8WhoI*|r$pyWK93YO{A8UhdOLQUk4NuhX_$jTy2pqva-Ewi2r1S* z$_X#i=+iG6%xN7S7qiRcUhdnbzI6C2I-+Jp$rdEUXTAaQ@C*cx$wku{c4KEjg6R=J zOWb3+dGt1;4!3ObBzEND7S1DAOU$G%LGlWV?h218do<25sd-xFEBdRRYz*%&7e2%a z?YGW(yIm2bGt4PG1m?_d$4|uF7c$d$?E=%*jeNU2l{H4;_r0=d#a&Qn7Z%k81>z8D z0FnT+b9B*2jyIDZ{I--uY2(Q6@t-?VV>4p{6?CCV1I7%(KYNv$EKVJb5={ zhoCJBs7e6)z}lLie|RK?u3SJ?AB_C$6W`Q7W!MmdN7k=z8w`y;u@&;RvX+}}-3oGxmZM+hKJ z*Po6hBiK$a4YJwaq6h9*0VeX(C@}W4mKMzfP(%l^M+T5>0l=Ck1`Bre`uf!W889s2BX{c1oAOM`PAIMci+G`7Z8*L6wZx#@ z8;XwvZzYL$Yj@QgRJ#1%p^@sh-k^wTeYdO;{H0;MD0p#22$UTtm5`hA*x!0jiG>*e zkDAprBVT!`41hoW>>7T#p+=-k3YPyR=)3bkhC8la{iie8vLT!9k-uD99Sy%=D&fj* z5fo60cGWd)-1Y-cm^^0PMGu0J3~PhC@ZR|g6@u7#1Rvt>wWB; zU8=h?^LX)ax813b_>_q<*2o%_vKHv;sMumP0Zp}Bz7Ewq&;#C#rhj)T(3pEN!ruQu z*gt5wTC@8I&9`C*d7V_|%l&&hQi<{mk7?9>rVrDCa zSt%*Ub*;O*5B(OSXeMD=cHiCZ7z+Pq(uXcv_7^b*FF!0AY2ffOsuN=en3SUQHh{3l)gUtNpQR`TY&VW7T=|TnWZOI+Kj>Un#gN~BMGNuOZU$RT1iN70d_RHG?AE*ig)&JgujE&TsB8zGauE(jn9aJT-&J zgqMt-+2%C9TDUVN6uJ`I2@Hu;EI%79>2qGEQh9uH^8#*bo*}+u*e2f_t8_f^&BV$7 z0K?^MID2yaNYJQM$PEK|=X7EKk=)u1y)hL>C_ECrxXf+J8oldAg7_q=g0T=nyP?`#4vw7-D(e}XG-?17S{m7Os}Q11RtL;$ojZ3faTgJY9Sh=g za;6zhH+$vj!{i31m7#*UZKvl1XtT}K*jQN1#j*P%2aEQaTf52ffoYl)?kJdg$e(ub z14FfXNf`)6u)|Qst-?YtkuwO}c#o*hbI7%92M7L##*N>;X!6fL2_q&k5F(hj(k!U2P~_mwxHH= zq5Xn#0%9-R`rWkS{j7>9%6{o((=8K}<`ngMaQjhY8B>=Ca*={UN%3MYxpcKpcxac} zF4tt&Euf^8Iv_J9*Mx$rt()V{DNhEtSX!os);mW3c1q05Y(y`0)S#DKNo!+Lj zQfdnN75tdm$KZ}Zu`j-{ud4t2z^&)7_3n9X9a=`1>$+I7F^Gs_Rpi1bD4&#}A+N~T zHaUv&Ac-;e{(kO;JyT_&pB0{M`{r~$2&GJzLnn(S>UV>0Hs+NZWXx?{7_0s?WFaZW z8t4Og$CLDZIl4ZeDKSw|cTXZH3z1YjXXQ3bLCYXU+_3nf+0ho>DaJi`-E)R+Y`B&= zt96NcaKfplwz1LDHBHKdMj}#3b&ZXR&h=GbSI^Rb&|8k;N!*f>?cLihh#-#~TuPyiM(}?mI&rv|> zt^j{yhp98b+Ef?%8Q^vBf!AO3zWT?pSyx?cJUKZDHW$TZ2jq<#N^5FNzzzYdS`o`v z3Fv7mp@HSw15S@b-rYwmpEmIO8K<;$Vp!ZYR=NmK?3!n}2j}MO%PWdOqHkau&OW&8 zOkkgVV3C&?_4KLP*i zKG~+#NB3AZsN7irL`R{JMn0f90pL0{tOkHChPgYLyPSaak1B&7jjy@?8;4RKekQg4 z`E#_kvk?v#HY*|OgUO-&JFnBx;0%lgsULh`{5vy1ZtVakiuq#Ns>RX;Mk$Iakq%O8 zWGM$o7s=3i@7`IsR@Xpa1)Nb9NCMdJuF}uIyP?|vxA(Ab1i&xh1}3A7u-MyeCq~k3 zrv@MqNvL|}F4Nrt^VTYpNxf4H#{_HF_pAVy%T2E6)ufX1L10x>J_z{J(0D3t)KBqw z2nYq{!k`_ys*Lw7KUY51%4*&jxCRg@w(O(+lE( z%e%a?QlTlw5vdfsf2mw4U&*cb8E@0=?O4F^Ty0`))0j*jjF~C#ln0T z3(31~lO5I)Ct~hvURrfI2BOu3VN;FQ41%NupvqfUzjc%(TboJan+0hptu6%~l|uNh zur#Oyk>eb!T4|Owg&X;0TIVZDzP%Je@Y$9t1-XL<$T1<$&IUXekE7mU1K-d(nk5%Q#+&rdGs!mJ^IAZDps2ir;A63IJWj+h3^r#J3x|?vC)I zZoh;ToXKwY-Q1r0RlO6byIAFO54_h8xMtFY8qgueC!;_m4Sgh$)0a6mSG8AnvA+%kb?4$kskS1#`4i0&m%yAAi zrm~Md`7;GF>7ClLt9fQ2S(vG@y-^}+b>qetSbTCfL=}{*zXWE)AGcn<`k3IsJ!mmJ z;WaSUHthxza!N#-u4`o4Ul5^*jn>x7L^hY$Ov7Mg%SDpRc}eE&l+vgfO{V&>N|K!( zGv^pF;GIV}4(fX~*%zpMp8~Sb70x;_|#@Yj}H0^6%E@0G9k^)bdW--~H)92jr2 zy>a8E90n6sH|M3jYgATTEEAbQLx!;>!SA^~(d9Ua=4nI}s;P-^oh_0SuOPPrD312H z&|ZWVQ$$c52l=%$s6M54A|?E``=&GLLMDCd^wLrR_x;sjtuNn?TNR6pj`;3eFeM6o z=o+SDe3|SBuECLH_`&5hd<7!x@im1-rMHJIO1&B9_Z6{|*p$nwRW9e{_Z(se(~IqQ@t>GT{-__L?>KdFE1el_23mwp9CkqVnV{!hjkiM zS*(c_*%hUog8{@*ko!FEP~jBq2d3C`tvfAFM&r<;=g9%YiR9?XdUWRCy>Jy~^7SBD zz7+7;vdT+EtmZJ7y#~N8I-jFrnN`C2?unS`OI7YP15Y!_2fJHBG3ZCpuUdNG_n#7e z?*^g+YhHSd3^m@iLAX-m+Ak*{9^TN0%u!o?BUt~ksn zihpo9lrb^g<~#^WQOhMQSlNoZm~M}ioHUnGj?BOh*lO8ypOJ$G>1ex=Ryxf^F%9(x zCEgG4ud7M$SC>Q-N-LEfTlU%s4e8gdo!SUcgx_RCesxb5t(o&7`c0M++|f4pkW=IZ zg4r<~;YRtYi*_9BArR@w%>{fvbtNUb8X8H_k9&_s($v(FebWE$r1Ix9RP&Byo6Cf0vl6I6O{w z?mr7x3By(3xm95R^^HzKnQ}!dwI!v42RT*}rBOMq=-ZeDb1TD+7dc5rQBmWaD4x2C zCC})nvpmQOFoTYb>WX#R^u)|>@@i_N-ZDjh2*4iaN}QRoo!6Z9em5WGr?(}=ICDxV z@CG;sjf4#*T9v=Tj2B2(;XleKKK!vt^}pS= ztMuSoz?A@o$zaO=&HLWOZ{@!6F`Pj5hXP)X!wAy4EMMG?{Pz+J^>#^FJ3` z(?0iEjjx87hMeufhK5zT#2=t!RuW9t6Hh~=?~3jT36&uVmr5@}Qn!9>TGT3++=<9S z#6!e^y&anYge&{K=z=W^oB67D6Uy%g0`_D0A>Jp~nxs#d>y-f!KSMStGUB8{K6eLF zL1H+s5|*xMsyJ5&%E~9L7~cDZvU>(%d050D>{2BeJ4Qk+f(4k1y*Xhfsq}I@McG(_ zN3X0DpJ8tfNNf?wmZYvX$BpV9ceRqR^Kebx-DvB<0M`5E z=|$+az0On4HYwr8G?*EECi=5|1rEA{ZvD}k<|+MrPTeyZ{y71q?&ok}oZKqmZ8U$F z3mr|D;^OLArO_w^WYw)x=ug}ymEZ=ujHO%USM3d4%a>5FI6lWS_cYA)RtO$|2v0Ak zqyMBRTe0|;aut|?I82E@N{Kh@IQ~9RvVy0QB`h z02TjEi3BdF`pLwWfVQ%UOS#XsmOU?t2hrazZy ztui{MfAqSfAa7CSFb9}WA0HoPf$6i!(foDxRsSGk6|qBNC%V&S_F~WSMDJ6)tO#HA zLqoTK*QX0|1IimHZq}VX&Y?{dgP%STsa_8;msF?NWdc=-NkhrjNmf;K*jHuNhrw9S zlD$R3+4N;^##S!K!cW>W($!RtT!XzI$;QK(M+)XL1#(zd;7FX?s~pn?$oe}HtuXt6 zL@i9ceIB>p0kIzE&s!l)@>obTTH~49z(XqxX1?Tj6#$|)Z|-`Zh9ZG-kpX@mkNm~T zBm|}OT^j0X4W&7qJsyHaKqZhdDiLL;iH6D|=HcaoAR<7blZd*mkuS`R0SkYGS@wXa zitN8E_k0oW>CJH>r?44n0lD>y5N zDOfFBM95|#C<8~E)8O8>;KV84Ps~yuU|Er+urOMKw-fgIwufkHV(GP0J#dV$uwF?C z4j{OvQ97QUm0Pbp6ag*SRIr!I{PkEHtwOT6gnMPvxg7M*d->Z{E-wX^+?OH-oS?+F zNK-=WfM!UEpjhJwS*Ln)J5dq9XT&~p;2=u}B%uD!wZY!&F|bS^ustaY_A_E*yZzka zN5t3vEj9ALQ45@GY=5?}@C{<$`J;dPlFP=mJd}Z1rdV?b>knq1$2zZqt5fO!D*l1D zi|x;gmi$*hoKWX?j$Umak#sm}H5LW@F-YE+Qqj?OORk=@;^Cr03>K`=1E}D#DG=I{ z$g$ssfy_tya=ZK^<~i+|AQT=7`$t-{hC42&gGX5Sq|rlqS2dLx&I~cv5EUC*>|M8| zt|g@~>wxm;$=T0vj(Bzit*@1qi*7b|)`Ug!}l2!0sqmIjHR!SUJz>ioM36dS{ zbkP(uS%S1V6^^yKOU#|vI>U;V0uWfM!?@9_-#)s4EDHk}D+446AfyPiWP~-qcDyn> zeRV)eXA-cyz&aWgg=m&vuqpq$F^bNA?EHjfjP{P>Bi0%t zou7!N>qJHAn3|@5Msc}2N8hCA$2FR1o-Hx;KNkJiRWSh-QAa!tr_a*S(A}@Cbmu48 zeFz~|+D0ZxlPi%m-8ZKLG&S-Y8q76_^ZD~2N(i4iXH7Nw`2QgmKvd_^yIv=MWjny* uxu2cw%BCYjbCV?w9@4M<|BPVSg4zE(IH(+HkuX3n|hdf(@LpJx%F`dX3p63ZnJ z2t@nhxxyO|h+OXMb>Tcva?YIg3Gl_=S3~Emf~C8;o2|=RTW2Q_$UD6}8R0bh@NyU8 zQ2p|t*uCY4Q%~t-H@P1FwOR0!mEu-J!jx*Bko=v=+3of>-@P#dg*A%gaFtOB$U}3Z zWcYUL0z{;q{s?W|zicKX<&MSKwfMSf+6@djR3J;cnwnmOb9}z1TP*_3tN!l6AzQAU zU@k1>UTt)0VppD=F+ISkiHP`Kl_zVEQ2-p!=gR^dDNtXSpY~L+$wd5&bB*?>2u!UiQ8?ztT|H^4dtnX#`IL*iSyg{^V)XmpE`qVMcYX0w zt_0iut3j6t@MjgB3T}0@Lm8k53fuPz!Efcc9_!tVE%WhFK(P^)GeZc`TFVMk`MS75gV40QCOsxLo!rpWjx9eC|2YSAlh zq&R+4%8ppxEe97KI1ky%ut=77OBNoi+2vHKOBA{$P3862&aFx1Zc)%8B5#pxUCU%v zJU6$CcfYkApfdVqx{yLc%EwxM{r1y}>N4kd3diCMhD#>4m>c> zoDcBVIA{?(L9je;(~VOMw!ENAe&rei+wk3#+n+eyF3lk8ny0ApTLPwp$niz^@x!^& zI()j`#)3?XW|QCMFByE@ow}B0{7h7HZS$dre;b;-s3&gg!&8MT$=O^9;c^e?x$Z9F z6|278PWjuSD$t&Na{bg#m!@YMua6e7w+gT>Pq8~k_Se}X_DVxl3yACYqxlQjpAX$8 ztG~#l<+pJ!9c=x+akMI=ePoL)h%Z`R0dIqff z{t7I9R@FlHyRWKek45F?1t)YCir&ICZk0pueE0QYOp#tN>np#1Lj!avhwRb*=CvXn z&sWt|YPxmpAqWT&3wrky33r^R`Q0e~X(}g4&}p2%Bu;{^C7X;~+v$Gdjj^(H{EU4? zXK6+2rRwv)$G2AK%F0=qb}>Pg)QE`eyL+d$SIH77TO}3ga?gO`M+j!N{uV>jYNt78 zLL;&KhJHfXy!G)MXt`9oBCLd^z`>%O(7pbSAO<>}t#?j(F8bNa>rygWI~gMU4lBOq z?8i6&@gD%!3zG|;Sa zPYT@thQjf>$CzT-6P<(hh0Fb@P=Md46}drF+NV9eJ*>cqwformYMs@Y#!^^S-iLUr zT2&^QbR2?PUoaus*)y6EZKayGlI&KUp$#;JP0hRGEfxCH$-db4`PSP6xc#dxM~Y;`48Kn&N+5@zw=S7wU0ocxK9nw1ITxw2KVrZu#2cnQmN57)up zXben1|8;}LRIT+W>i$l*Ci@D*UpWz?w z+E@_pr)D`=EY%Rg#m=^P4}te+NyAIxPhV zfnBcuhCo?V6e~bI;V%~E@c!AZx6pfq2N4zzB=@6z*O?nZSvokbf@j@7SY(pqi|C1fFq*!;*&G15cTGWNXVf=bx2E~MyT_-W82WRmhBA#V(4g8w1M2Hl@ zyGqax2~8kXWt|YH>~%6BO?(==%w2L=^>;Xq$mm$OkKi1zxp}RPQj?CLIA(j%1@GK+ zAKT1P1X@S)7OSqeH2ZXwWn_)GSOjRf^|&#Ht9jC7ZAaUzX=`$x9GdbDsOe4Q*Z;n< zt5c_Pnou-4@0&0oRu%iyPWid%8oe46o&bF7R2@X!oxXi}UPeP*T~i(C;K|s0(@Uhs z^zBcUgYwflo*d0^2KM=KztQn8cOk6RCPd~56Qbm!WXKj$L-KAaX}G=(b24;L<-Uz> zz}ItQw>}^g=HZ@oH4=tVlcc?}D#x0fXLVKgcH`ee+RvqfA?)FFaNWx>!M(b`(EKZbdYN<~;kU`Q;c`2bSN?516%tMVcN+cwHt+FY z=%~Q@gef4b;(8lyqEy@5zFTYXn^+VBUFg3Jw%N-uM!L{QkpGteyr)9WU-`3z!Ht2M z)5kPWR=K$Xf+Hdr7lR$Ic1dF_2 zVH9;UWk@8}^m^EPxj84pw}#u=y1cchoY}4TY|P(n#uxKvB`0E=TBQ^|FwT1xj$gN{ z8u2icZW6d}pM1-Zv4jfC0eN_nB&850vwqBL+V8GX&|w@Qi(TBlJhF8;)<^8wq6Ui1 zK3SJ$QZ2)y0uxP$jS|W5nbZN&^1XOM;iz%~sBJHiGx}+6QSolXQ<-TY*$(d5 z=U4wRxba>qK*1Kgfq4z@MFuk4P1e#czE%vg51mm`2AM$IMeZMN2NRhjI)vgaMD#%u zVxv~sIYaq&4@hd4WJ#xkgYpQ;|7^6i^;4G`e_3fOM^&giE@uE)(dHvafQM1Dwir}V z;G&Erap(TEhJ!p{QA<4=_;{m+G75YNi;x+Be14G0#~9PO3@c#{muij|dt5w-m^Cys zJL=sA-s;j_ioe(+wx}bS1O>D_f>|QFUw0a6p6DAI_Pq|Sj-|vxuZOQX_q#`T8i0U? zPQ?}an@&Y`An2qN(g+M=VMG;b0N#`%Uv6uJqwW_7wPs zIG~`Nz+IrahiD)xDIfoE`ZN~XYr#;dz|bE|uKY>OT&L=af0*zvfg0CQc#6#^z6YD$yt!el~( zetZ_cPU^M!K1%5B`}Rh?5i(?aF=lI0rU}-6H;B*P=`+86-TUs9lu?-=_87%FhiR_z zLFK9!oK1c|MXskN9Fg+Nr^j!fdyijUm;InIp&>~~NQO0g9JN{BHo1W`-%$xnoX+8nfI9=seM7@WD;#3O$Wq#lVeZY!~ zi?)xmiUUTJho2Xdp({#ms2H79FLB=HGj8qvNM7D|a#Ap*Hz@?`jUAM5Y^2d$=J^XK zc?cm&)7_{mEU+`GKpGmoVG+y}PF5~M?qT+PTQt}16@VVJY4%^9ve%U=7qy%sxlvo5C7GXF5_OhP|!Wjo^W{d+S)I5+k z9fnR&PXW9M@`rR?06Gzd-fA~?KS^tS!0i6jsJ_v#36{iDqL%QcBl#Z_`>b_+yGj20 zsS}bd#o_GMHnzX zH1`d8fBg~`>0zibDWnKsANr0SJfTqRea}~x16*l|Y4ls&B6iA8@JO7#R<$wbj&{ys z^h^pJzRHQirxHfNdDGz*)73Z+7eVNni0DBv*9Vw zdv|oS{;HpGvbjASZP2@95?@LAV1KuqJg3lB)0h$2-v1qi&n&!(Iy2`#)WI~%y(X8l zZLWr;dJS1oXEi;W`3JW&&J@>dXXhVq$u0q;+q+n|vLgt46x^LTM~e*h z@Jy%~KQ-RzGdA#0m?pp|(K}Od&DmAwL7STmnw~Pvs(O?&%xjLGbo?wqWK?C-cHqQcdEFdR0&dA`cn4_u*JeAHV4oIuz>-*;khZ% z8bJ9+`p&cQaAn;*aRZ+~!qEg$FcVgCF}l;-dIeU}Pv_;yV-L8Qr*<6)>$oE%l0UPc zhNuqq{gPgCzMs|s%)I} z1*D{$5`fu8;p=ZqoWv0NqN@^{@k!fu&6)E-88_;cT%M+_(b|z>jhBdyinV7g&r02A z-Co*LXxH?@NoYe|`#@m!hc~>H``1z2na@Gjn=i6Vf^c>;XR+9>$>j(OhF%M|pEqiU zMBK>aDmN%qVx!x|eBY{!bj;QTTvoZe+u#$dXRdPyDlZ?OBj!ApPI>j@Y1D3&>KX$M zasdd&&KZTB9e~&muXk)dJHR{cGeHo`^prs!r*Ckp6emF$`}|`coL&xQOqm|^yKN27 z7B7_fe0lfT9UNkx>FH;{h3+;S{Ej+|qi&*asa=(jD3l`N$yQG^+qh_8Be{MCXFg6a z@wwSEtVxKSBTz{F+U(t*%kP zA$RSFZj&@;r@KJMHu2Zy7clE2P0Gah%HuOSo1^E@+ELT>p zvg~Kv^_EVY@Bdk$@NbV9W_Lbqb)ZE%Z!#TLQqU)yOnNn++n?fB@o6&aGlAEm-pJM? z3VW7c#wz5;l{^fxSnh(qjkxvgFYZBL*^abmio{3ip+1F8|EbjbLHcbl9CcU_0Iyvyh;Bv zFi`EX2Q|{u@-;1(A-sIquY}M&tGsGQbZ;@zexYj%T_(unTjsam(!rAY8wpT}M~jnh zDhOY9@JV}nyY+8<x`|=Srh@EuE?3$VxLe+$j@e4N$Z2b>-0a=rZhd&Tf13)z7tv`hOeuEX z&(HTYJ@KI+V@yljFCgUlmh1O{EWI8Gw}5UtfsWRxAaA>uD_0vJH>+9JfP#5c4Dd4w z|8z|EBRE40vwSd=u`oO4Zo1RW4AhcSiYWm-4g)Y9yNgWr*+2! zjJ6H5omFCd@U#0m(pI=6E?`_TK-VoH;GqwIA$yQf`l&i=PNWJa41r?`EI(Ha#_-IG zi=I#HDf(AhFa2iiO_xjVY14lacara~q(L?QjX&H@?fD~qgA%@u{|$M-{}#M4YUf}R z-xc<(_wdpCGEtdX>a*-*&H%q&gH6$6$$iw#!4HyRHcx43X*mr1Ftz0H%Eb@55pE%O zP1IF@xHsO;2jf8Yj!8;IZ&bA?>oKohgUb>X27>{;%aHOin+z``)2ZG9`cDzFXUz29 zc%dAkMFBe3XmZrr8_stRzQg#C%7%u|Gzo1ousEFzL21Fhz7}_!i}%7ik98?mxvhC9 zAsrQ?93H4NkY*PRB9&PsUTj=TG~oI~4Z0lltkQk`b(v1(ITFVCJZvg?_7hJv?nSxf zWOYfGLY~#*!;{DQ352Zj``jFO^#oV)@#{KVD6p1*%~xMfATfrR>uQ?e-8&@vvfXB% zyC9shL9`&^ZW$8QI|*2-7}7wQfltQV+eJus^g2{gHsfan@O{&p=yO)4UFRfaXQ94v z@u+>#pGwMev*+-0SB=dQ*DlUq9=ttONlpd9-soqEA1hQ@+5a_`8@SlVvcjA~IgPd# zOus+H>%=S}x2s_Gb5UJ|kxwUX&!@X2&TcUXS@Xna{q3sf**?=y`JlN9b;{5hNQ-zf zw0KFHcs8tv-CBP=e|{(<$c9$DzaZMt`^OW>6PAj&@W4aTYG(woFM-@1WB>IvdxL7U z@{QSH76(R?<3n8y@)A3Xv7Rei+DxZc-+4ew)!H52paxRNLEauCD*Vo>&jK$7e_**4 zl|V^rZIqA0BnfD{ZCm$6gKV z-xOW6M|3sd?m7#;Xnv_g(}?;7U+Rf%w#4QSL(7@e9PMZAfH~67%0}98)^_y-*mTzA zRpnMHd3_5w-dW1-;!5f?6P7+AxX+|Zy1N|jn7(95_LDJ6v(Zjp%Oduw}MSky*0(&%A+047v@2AK7%U0@@@aE^3J70=FO zMR)&I37OJS^xWtg8BeA=bKsGRHJOeVL;T6Iw)FY~K0{dR*sFlpC~k&iO)tqAC%wdK z6<_lggC=GE4|;8La4H8Gs94FV1h5dnHK~HT_19~S!2mlCqWK_LbGpZLbtM`{FEP0* z?G{)H#1n1}8|J2x9O$ln&3;$ld=rQZ70Zq5nMk@Df$I4BMIsB393H}Tcfe$tYaw_{ zh3n6qG+?qa6{lw{VL8>uR^8y0F@2)*%haq&yI01wZ0qLpeW{#s$|06UwnC6oqKL@u z4?klCuGqHL0KCi3L3uraMWVP{07{}316+s^3g_rskDmIIQc^(AoYDDtfxm)uc@GdO z=?{h1Sc(M_LJfgU!ud2NkY1&M)uGh(TD2)2upC9LPq2SClL6%_(+OGQY#O3DajldB z2c0|zdHac^N6vlQqA~ui;%T4W9+bT;Zo*Acq%cP%#a!d&2G(K^o>pYg2R2p-45~b8 znZU(JK<>I*^HQOlX|Hv|Z%CHud9(~*NLO0-2L;JNPR+Z%uly{zU$cRO5_l`(CQYiP zkLIvGSa0vG#`Rj@>zOf1e;9af%xF4d*6Ay|d+GWzkhXVDo+WVueVxWMyaT%oy>(@aeVG&ebY&yft>-AQ8xu9!o@QF>Wd3_`}HF+Cimk)R;yKD~<2x}2AlrAaHJ?D-Z2n)uu zVm+i9Vip)(yrNBF2HFedvj7guBPzm5I6u_*n=||^ZrIToH%9=G5BC1P%7AMtA4>g3 zt-FrxdvGP8KXZRO=x4}H zdR{DtWZBSSbU-_yoD~-jcJg*8(n8OBy?iNj4_R(-vltRqu)R9J^39;Sk@l>Bzdfsl zB1C@na}!2u(xwIP)Nf}1x68k9zN#Hv(Z47Imw&<7Z&$k7$WfMPS*uy)vh+l^(Jfz8 zRCLvF>z1Otd`Ou=;~Pc+gL}oZ$^Bwg37xsdsr;m2ao%ka6$xUtW1{p){&Zjc;D<+^ zs4R!&S4I??t@qZ=<{e@Tq%N8fL#yWpz(+vRRR(5U`^KfioSY;Yptx6w6Ao_-boU#u z;)2@c*{f<|D#ovDKd}iM7#SWGDidzRq0;6XjXJjYE;ZtW6=g*qd#-1FZBsBF_uf-a z4#7$J2|=u53=oTKB`kj%uv&#ARfuU=*Ob-u?eX4j6dJ(jHG4X$wT^$`jm+0JHgxe> z|91Gg?zOnvFvSLVv0_8MKAs~P4kSRV&55F#Gqms|w4gr+LK@4*p=gm}52NdW!(piE z&c*>4CetRvVa?>_zw-6*)CK$eE`O5vxWE7Vc-sF4eD>_3!HvtH1}v|aQXTREGs<`H zK%d9>=*8VV5B(JIU&<7$Sv<*xVreSD3K}lww5jr%nplEL$=?_oLnXNVy#m)>7gtnp z)CHEJh7M&btBvaF#ncC&@9)|@p&i~Vnf{FC#!HknJ_Z1n1)c>nC)gsR_u5)cAvCwX zo@ruY;&>z`@b9Xss&p_}^Vt}5b(sVAb2+ksUukJ+NksNc$_m#Hz8-*xa<8dq{1li5 zrEnjYYL&l%r_zXti(UdLaQ!tkO_73E@Gu{p8ot*elX`rrxx?I=9{3km&NrcLIN>VL z5pc!P4P{7$Q$dci5;0;?>+Kw}MF4!H1Flasty}u|?{nf(E#3z{DDacI^dl9Of3yIH zFU0q_@4sCUmqSIImS~o`5RP5_v_xN6Vck#mZErJN1b%TQE_{#nj(LR;odqBp58YS4%Pj1pqp#1#& zZg|}tWBWWS)53~H?7`Qe#r*@nR+z)774g13Xu5Z~4NX-8KJ^v}Zs%Muy7nv}Kt>DV z;PD#F2)xyfBawh__^aLI^7dCO9o^T!wyO1hV0P}an{Gc2$n|~@d?-R5OCJ*>2RNqZ zxjon60r*3DyGM^)fR*-s8v~Mav~*ewhBmdrn_J1nZrl*Mn$ZT84R{oY+PBRYd-bbI zb&v-~Z~t!8(6wg`)jb|i=T~%*rBUmew$-ax8->Vcxk5DLpy7qqs|eZV#VXvqlf=wy zQciO-E8xAQjHhh-*ACB5hXYS%wv14H=az}+&xy?kllr?+xz%BRW?o6Gn4CSN*zdUo zjAsEwPa}E{w0-f$exVEEQ>&K zAJ^R1(XzdNHh(*$1T=3H#tZyX_+E3=b0D*7F%MsryAw`R-z=rwj^YIHu4;qMQw(~O`(U~5_EPD{}q!VYiOSV_U`5w zi|9Sw<{M(KtQY|IwVs;gW`iMpk(_Kkor|X?eM$&0vXzJ+!8_b}5{mI6Ntln@q9^O@&u< zeWD$?$4-Af_W9k|S9ik~)V8H>F@dg@mN@=(GIYsTJ9m-v8<`Df9dDftf8sd`{5dIUP*}(1x|vd<8p_P0%uW42}6gF z#jnx)(S-$=gP+EhNVD4oigSDBqCGJqpOPA5#0DHMQJm|m>)$xjU|hcNob&RhG@7d# zL<#20@I}Euxbd{-yoDSJ0TslqBkJ?QB(=q>r@s1NRWVc?{;F>vL!FgASSz2McB(rE z>rbY+Z`BXNQm3aTi_4O5*5cCaF%HvJPxaDL6+o`&rVA8ArK{7G0b2BsI|XQ``EsBL zps)U&mBYwG?v%W(H?sVbZM*VD2PfY(WHogy%fZO?%bVLQYQC0tGvW$g+m#%q0AQC? zdhoz`LE7P)>?}-ts&lTu2aDptvqk;ZB7AORAOkHnl6&*rr%WK3tBq`c*&6OVo5r}P zjlj0RmrORag9qRc57J0_?=r7f;2rKsR~}E;*jB*jL7HTUr+qPun+uq#$nrKk=Bc(} z=<$zom5^=1dd85*o+;m7FXQ7Ae|nsi zX!!DF&$z}V-C@*21?RhFUFO)kUaHH+Rub+rQ8)}Ed}Kq3m$Wii7}55vZl`Gnxba6C zK#sty=o&w$g$OwcI62UBRfPEsuT14lyN{~rZMfLzvp7P93?*X{KA_8zjl z-@Eu**_I<+3ltQ?U|KU2mF<0o|KJOI*)(ydsunAA`P}@2KZII-CD2m0*3Dxmlc4Rl z{(^5ZWMP3_LtC4-d`Y3Y)N0+~u&uLzlOdvQDC{;v1n3>V7%MBwnfD$@)%v5h5dHRz z7roZSiUbHy2^C^#3zhSD))z0yBPkhPePjQ5>u$W=`OSEEc@R}s@_fWV&xWp zs5h^aDBNu3(}!0x6W4Jn>gl9ctk`-PK>W7Zhb0&Sw43R_Xt&z-)Kkxin$LhX0*j|H zt~@)e6Bux(L!gnbEz<@Xjkzzwv;7s%?YK2(7at$b^<{NK4PBFC`@B4M1DF*Jrm%SO zx{4j6Cy@WrF4qfP>5iGz^Ly|}N=n%8&;f8S0LYo$NL5BQy03$1L?2tN*jQ$a^MV1q zQ{`qS_kayhSSTVbML5O6{t;O?oL4}400IhIe)nVlupZg>vjLR_aE7|^p|>>pi-E7U z7paA>T8hMX%6j~Zz7qoYVB1r_n^?Q?^@@@($x+K}->Y&&0hF`uU|>+2aYUe$o%JI^ z!cW!{TX0P~0sjE%x*6L^NU$EBx*T5$D~m&G2fiABXdAkhpif7cNJ=ncoNx-doV{-H zthOucM?BJb@;c5BSwTqF(KIh>D%LHUk0Z~`&VF1{QgUV}of_8|ZSC#V1EWO}c9WpG z+%hts!otGT&}AhhpTok=-?5iK*Vfkd^4HHjs6mv$v^6#FgqhMzRJm;x&z+Od2T3#2 za9xf1rn=0*>!KOfNWa$ z->*Tgd_V6oJ#g-wrQIJbo(48RHiB^X!{luE8d%xGkT(ytcqs9h%}?~w)9rL^Ku01K zKlwZ@^uwcK|7SAAHi<2GFM9xn|HNP(tEdPr_@hl;ueW-UoG?GyL%dOqm>H>UqV1GkX=!OC zP+DG`?W2TC7JEj_#5LaHwfiXgAQI?d_OtwLhM-wY*es?C0GEG7J;U6SvYeoXeczm} z4sT&>o_D%aA5C@!Mn$oGV?dK|*bo4m`<+_S48`;Z5Vg!czrTukG@a)u#!*Pu>D8L~AGd9S(pQa=2d3USC4SrCkjGK)INI*-Z`RhLmMv2Sg@nWV4= z^nq8l0LXEh9_vNc2IPtITb(NHg;@L3vUH>wBY}o_C})o=7G8`%P`}{wMqPv+^huC| zz)>n$RGboSw=G>+a`BB}N4x;FRG!pQw8E`a)9ZERruScGN=G~w%^|z)D+>cG)**97 z0RG4p6qd?a?OK!bOK+t0Nl9tx$oxEQhtL;nXhtFj2}s)hhaLqGsYp9zQXsDDf>?^L6S9C4S#eLplQiz^#&X73EebW(72Xe z5-yS}BAdVui=7~(1wX(2Y;BS1j7%JAJCi0_&z!N3*Hv!sdgp#7Sf504^#XcA@3|9} z70c`o05Ca-y_Yzjd3d}{^$D#_7WtdybCn_V)V1nxMXc4+ix*9zz#Ya{eZc?Fm7Uht z$+_q1X(z@3?PwtA=O6h@*8eP@F`IV$qv4tSN5|+RLTdjbW4zDzwJPxE-_4c6?}2z| z`FPh$Xzzm(OyAqGCD~X{6_ddYBtI3*&0UHfSDs)Wb;rQTOYJ`j4mI&mhQd^rrIMFWP*5fE1aPpg$l00(bu*p=BBXIn_objaOi8Oa&BH}GuaLxFww z&<#CXTONi83c4GQ{ywbp6i$=sf3-%G{DVaD(M@vy7lfkTq=H!4?E#dKd9}qaI4>V{ z`t3xPeI*Gx4*n=g9n<_rm~)WQWG$4IB{u!BNUgZ}K&cc^AV#W*&C81w7MBzQavWi0 zFLbATcR?zlA7B@q&hU=uqyuwVv2oe2H@}sW-}0Leetp0SPR#ojmk=-mWuA;9jJ8`Kv`DXI6HHk@V(U6Pg{dZR=NXFmDceLQ&wSwj^c2*TiC@U z0mG6S*fsepuUdHa|E27Sv>uQ{#@@Od%QFxA@t+t+<+bf^7P$pCz8Y;0?0p{1)13aO zmRt2TZ~txkDyiLv&9~ZQPf$RRR|dGWMM-;mRijS7Imq$UZHNoIGvjOG7{De94rru7 zY;ARaN&c>UG6?yXY)CyFekRbAfMP2ShvH%a96T0`aLg*TUYW_pai{xZvk4Aq31XKd zBcE6q@kqV>c^Q-igV9NOZuR`yjoES~`&s>mtb{FOvSSbHe^q)9>I@m=@z_4D>dI-2lNbpVSggCB+hy@!T7d`Wz>_QV7G9~f8jheSpNaN2g7ffy>8h5>EMrx z>;LI4hD!xxCHE>meb~Fyi^SR5{gad%>LO%B;neSrip#+-f4uZ4sYAt3zsaLuHq#&# z5T>IB^8~Qk5+t2u(sv=qfkz6w3D*s%^}=wa75#*XL2#nOn)7IuEsLnFqiw=u;v~@l zX33?euUFe%`{BIf6ZDMDgPY9B)y&EF+1?%2|RW{T=ns#zrg+d7RpQtKyKkt&2 z`4V?GtZo5G_-(?FVpQ(D!hKB0i>digt4WqG%D_d}?q~GMcq zFe%t4!EuYNqNY}KDKzP5xsMmM5<-7Mw!bvIG*pw}EKm%bkjlv^7Kg-TGo}S!{JjB; zRN(Ub3&)rZoVq2zN&I^x>fMBD3CMjE*k=H;kqkLRsU%?7^iuU#_j}_SFhf#1vjuny zOr~G0V&K7r*R4nFpdT36P-sH?3ITM(b4 z{;_Ao8%#p}g@^+qI*<<|I(-qrzoHG+m*qepA*7$Ak++ZF zj9#jcSG3og*&N@%F$Fi(Ae^;V;1w)_1`A~YqAi?qVd4A z^vXJ^6e6A`v`igsaEQ7~xqA>D*4hZ}=7A{Z8z`vHdj z)|V6_%_T!|`r$a0fq-%e`OJ~9^P{4C~$?{AP}dxnxEta+^tZXuj$$H zmA8=$Qzmi9Xb+8OlQYG32PT`&@8Wae*y|0UM} zYkzhRSzA}r1llJXCAswu!V(u0cNd_G9gB+)Fhy{GAF5~2ekQ!mvgo&|n4vsx1wqq4 zBo5wr=(lCCAbYHg3aR;8M&nM}5=$o>zIn?Yp;xDTABE7OvobuIdz2o@&euTb|LA)= z8lKGuDLtzg085~(iIb+pMq}+eC@9`T(~Nip+ruQ$%W7EYO4yk8KKWI+I~UokitU7w z_ivvwYA{~?)r`%-3D=6&+cdwFortMx&Tcsd<&gF*%M4m+fcurY=8!68Bf(0zP4MY= zN}2@`ZD8?`0vCTwAnATQ2@(aj{b)(M{?!_r_VTifCk;@OwOm^X9#0&^RVT>X8Lr6l z3=nduCQ#1pgz3H@+H%3CjVE)J+AC%=sy@W`f>^MfP+FwdQ4tjnv;6u|@pgfOs<=1spXW zPfD}~nT$9*hmdvd@`Jcmv0WLp}cjiN#hV0iiYpWbGvbikLT{(BFW zp55C3Gfaj!P1aIlp*r(h)z)fiMh&>M*~0sz;vr}`+m`+z4`y0KvF3_5yy9!lIgZ2x z)9ouU_A?t)=bgF9E%1guyWYcE;4HGANYDkLa@QFV(6GemoMbv?t4r)2R7?9;XN%xz z0SBlC$oxd~i@AiB78X*;nacb=*)=s+LBorSG3Jm*R=CHXei6j5c2%F{0lF*-x2|Q_ zEKHg!v6nzW^*u1a!j;12lfn5S^BB)tvCnl*OnRQm(-%~e(~H;7W~gJ&I94btRs>QD zOlYE(6^kfu@-!zlY9gHmprg!(|ByYQd=;(pL4R)Kxc~o&#`nK=H{dJirm>Bq?F49_ zyscjl&UdadKLYTCpcBfRX|x7Yc?Dbe#}!>>)%cL<@anKHuaqb^Vh58{Qit;U4J8oAZ%h z?himfSZiWZA9#RJ9gVZTn>&jnu4%)+*;llLAp(ijGar)r@D;}=&yb!+RIo%8N1 z4K@6>cufCB2F?ITciBY}x_eL}wVYkg5 z^y!e2lgW0bjiliv{r7O#LE>QA)?xS%On^;#howa7(U+T7tID)WfEsd1fODCoNhZ0x z9v~I^q?1$}2Oy=(1jx)t5Hf}Iw*@chz$X=Qmv;Cq=;!t}^bl=)%3^;sUn+Cdx&4@; zVSSdqK`%}JMARlA1Uj7}N}F2nIL?y4{Pbw<2y}AOn;3ayj#&WQHhbXrM8C_B7AwX; z;MMB-meHx@KubzVZ);NDxl|8J5S(x&iW#I{o5_)Kt5?;5Z~90l5C9X(qKn8 zkO$AM>V0s!=T~8}q^Z4>YG0wLdmeO|F4WRUkt);HxjP8VPVtFI$(cmsS9h&lgcsKF zH9RnECu}(04Im0;yalBzPIoyo9i0`G6{)^0MJ39f|Hk^{!FD!uDdie+sSOROaogBM zKOo(FJp_5mz7GG^MW_H$Z6AP2k2LI}9th`L%R@@QV7!ZR$!|tt7aMNg*4JDYjAP^H z=hu7rGV%fi;3)O%Uq%|Jp_3pBb;=tEQj7m;42#*q^*0t_>XV2*1-$aE*a zz5KAg+8Bx8_N?R6z!Wf~HF?%n(XdnzXfyZ4D(dV7R9rkClIYwmb2N7g$jdVUsrqc^ zvNu)G0cj_l>SsRepxak3_11%Iot>EgA^>^twRdr)u|X?FG3oFc5~#T7s3Qo9cL;}} z&8~-)**GUTlU3ckn(D?+1H1x>Gzbr^%Angf~&L#DSmXzG@ zx1UM~Kd<~`NeJaQ|3Q(QEM3NnZq3s2J-bvGHIo3S=hTZ#F_8KbV&{dA52aHehW=Rn z-rv#DbninKbAFA;ywT90$Stt4fz12=07Zv(c-x>SKib(21Iua(?8d-q3!b4240~co z32=3-0*>SxL8P0&UBS7BsByP*a+=(!+`cFtX;ZqLWX?_G1G0#F9HbRUJbp%&f3~$j zIG0x(cvEX_A*k;mA*aYU`ue=xufKBZ1i($IFUTIsSZW8osSus=sBMRtI;jJ!j9AEa z-nv_qnEfQc(ex-Wa*&R@@3@BE_3-d`lT@e;88CI~n5nf-Fd$=~fsf|pJX^k`JP9)_ zm5!0)R z=y!KGt zl7#y~KP-e{{?W-lHRoAhP#%~Cj`I<;+?s1l7I$PhvnJxE#;?6j;%YDAYm6&WLeD6k z=2SDwC}7{bNt19k(yBT(jsY?-mX=ol0m}OjAO8a?5M8UQs(ypZ&1ep=6E1-{4s>?n z6`SkKC;8A|D$nWJ(-|NsnSiPk{h|PH*C0-}{d+V};hpUfjrtpF|7Zc8FQA-Z^E=G% z*<{XvE}Re1VbL+eS=VxnyuSFZqlm#wb5M!f!p}^dNDq9JRk?aHtjpm7)zlHIVfNZk0E`zB^wwSHGz~Q*9k>!@Uz|?DLdTmXEh%ftwu(pf#EWPpY27=J?G|tdnz`p>NTw zu{WHI{Hlu_sx+v>zg2l5*cD=Ku%5JRRnPl0^4|hNSQ?pjJPmo2vhvhSrDkuPa;?_G ztBC=AM_de1bf=j&&ccSGPC_}bg|&ba3)d3gLlph%9}n~?GDFn<{9^*O*8hLrkNPp# z?wyh}JI}7SLgyU2;ow&bz^dUj2L=i595H9&o z2@^whQ#5C?57C=W*Je@1W!M<_61wb!{Mc zvRpsh<(|Wf^0xzQXP@6vW#13+z;|T3z!i`7=~2+yD_>qR$3jS5szoXx;%g`ims!IM zL&KRKaOnZw5ItG$4iHZ-?ecRUqi3&Qf;>zn6^Rw)JdSe-yg@P}K5`+1S`$i&A(Qp4@G=5*k{IZ?-86e%ijVB%T@j!FM>1x#fd;r z#yvO{4mACf?8|`wxR^A#0?G>jt#T=|9z&s?(iGEQ*u8sFeE`XPQCtiFRemN7et+qA zm;=6g?onBB!u=XknX}^(QCa28G^mQGp2fN=UtZa=0L+ir^cN$(9%FLON^ghpG)f*^ z^NIXTwRkwMJ`OS0bPb=DMz-3yTR|3rBTugMC}liX_VBKl$>z#p!1OE8%>{GKa!ujXHxTz zmDjUphB<&3xz!MdQ!%kfCGBv4UdZ6YXgcaLoF-mBKRt@%Zbwswc=hVY0E6xj63C5dyNiPQWToX!$klq6q1G3icV;qD7^fK*=`^N!Dz&+75JO69y`DJ9G5{&URpO2XzY`L`q_o;^OJD9FNX3IO^SCr_aOfwv z4?~_T>006hOHaEr&JeiI6xes;VOOvmP34Lqce7otV;?>GB6?ZwHp62dUFHuTK2#CO z%6f(1lsOWNV_b?cCci%CCm#(XE?){YIS5Dv0+FXrpWYMX?TCF&fuuNB^y_C^n9IWz zJr>c6p-+kee_HD_S?~bI(e$_X9mJHd(wW;UhKqAS_-8rVpfp(hA8)XWC&LJXY}Fpi zgY~zgYa~_0aC`ZO>8|{=dd3g0x;X~?v>r>OK^UuNl72YSOC|B~d|UxDv=7~RDddjU z;uj4ycjIH9A2Zg_$V*5{XfM%YscBWcx0*V=`^kQN)P7TjNagHzujXtA1?3RJqe($} zFL%Gu1SnOAks~^8e)ZP9=qXT(!$E{d%Qp~LUlBW{GAnsVxlH!Dv7`ZptJ~g;fLlo+ z-4-GZJQRmiUjgJ9Z;XrtFuYn9D5`E>26P>J1$b6TnvPF*g5JrUUwA4gD3~P2nPuSz z6y?j;YP~8>Oz8k1?L`WPFFaJ?s}-yF`>x}xHTnmZ9;IQ8%}|RA0-v7rL+rZqGHTBS z$&uPzAAW)xN(wN_gb7G%H~|#`dO*yie9lKn~X1oER>9P!`(%d zI5XPD&|hH@6-&yq=cncSCE@t*0n(oAgvhV?dHLOx$~Mp~dFX z`Jn$n-FrYawRQiZ0Te_94srwm6$JqWsZyi{q^K0>ARtWy=|OrAih@Y*oght$5b07Q zBE2IWAtDfZ4J{CoyW%l&9*3N4U2DG`qtFw zOZKE^wtzC>N-DD!uqE5Jf-*gaCC2PJ64{=xdBkjE%XaX_`5hT?Bn%(+uej`j2-_*>4S0d}4M zc7WY45n7RwfL|r{K-V|#5Py968|BOiDYefio;mqFHyA4*K~b60v?PE$rJ($0_iYBA z%>_q)1X#0tPg5y~YgY3y$RkcZzLrEs9utO2^pbw6$JGOc?J!}-0ABNTp-`ino)Ix9 zv1Aly)zDzpp5u={R*Y*vF3akHJ&#?umN1CGog~>*(+KF%Xw*H(}ij(6lX*NE+Dlw2*5oY|Vp3FTgR!0IlVYjBw^NM|%uk20H zjV$w5S%2J%dHhGWX!99AI9zR1keRC{W$z=<-4{<9c48I1n);0pYCC=vqiS^riuXp$ zD1x(8EG({9x3zLu9Gj7S8J>JUV5EJd`lR7~%3UGi2WB&5YeVb+S$TD$v*5p(fdZ9x!S;yV*!3 zAWfi2hA#@jgI0uz`svBg19+0+3IW-|EBCxFb8wQkp+29n(R2OF=x47#FEX-Do@QiX z>>AxL$UfMJ`g9z}!tue$K+7V=AtLPlris+2`ZgW$0dBdwgLr+Ux!Q+U?^w=>}Akvm~>Bh{$I4#!(pv-NeQJ*_HTA|wS)b-Ro09X4qsN<0YXd0To% zoUn@0!@(lLYWxY-{zR0nYVQHOcn746?i|34x-;&`hk3Skj~JLm3=fN3?q+$jz1Wx4 z&~TZY`iMa}i0jRpgQxaSG9HcvRB&=hF7; z%xnTV$`Ng49|wb<4JAJ4F+<}O?-4dj9?B1*+Q5piHvc9u%)rdQDls+H?lB+DYm+1->Xm z+-kj3o`PP3^qX6pl z2X&**buKRDWtrqA1iozZgnn;tuVf_{dxB`%H6WAl$As&fnZW_Yv$O8ls@}k$j+hn& ze;wDea}nv$=r>@xe7My`e5$4vj_E`v1Bg2J=FJ_@N7H#!HEx z$0-%;g{+7|9z0Z+2l2&_Yf@6I9KscK!(|a2J+W(R4*ls=bnKj>c_a9uaB!x~XZpw| zH$Pd&fYX1y@YXF7LFJrN+-ehF;?fd=;9zpi6b`Ql*=iHskFvz1xC=>18B+uv1-U26 z5K`c0s@Q+7La}u3K?lzDpzMLuP`=6`5&psKbSVeh=1iVRf^)(_U=956dYkogih3z% z`}mrJt|OWja@T$3Pl&55b-VR*%i|EXR8s>{4q>4RMyz-u4R$OU^}-<;3g*XCLI&_Y zmLOa45v_PB#+|The?|3Ayt!WU-dXa2tX7)=#UL&M zTaBIiv#S`k+UycjQu3Q5s-n`qCrb{mmxYEM)T&`A7utEr} z#rOKO1~hSxrbdf(Ju=y({}F&M+ksy|Er^4EfV~8wLbV;8Ljt6#7BzK(5dIizv(~&Bh#+%!7JPWlrAm0oX~3vGhUt6#Q$b91Gdcf%gh` z{SF0#&oh(Lq}mwicGTRo9hgrvcB);Q%i%qhTz-iwGs#-b&_Vka9R?jhc=cEZ%k(W( zw@V?2(J>C+Pga7Zf~beBY>{iE(L__KzdIY2Tkz?@F6Fg!@t^ETgsD5Srti*$ou^iZ z?w?T6KG`Qye)urgC$;%ntBQOu>*03e8<)ilPj*cP<=n0<3ucRBFFGdc433HludAt_ zJsqfiPOPOFPVxVcs%{DA>JUE{Cu-UCwBf)s?_!lyuV-AH?RPE+i=dUzwV@vb)LJ?S z_M1E0o-2{X%t$k}p0KLfz7nx{bt_C}uV>`;+bS#Y0SmZ(zD!FMhFp0D`P&%Ael0^T z%~=?t;6j6eZ3SMGhNypy@q5Jsp+maXC1rv>|5OOid>;wB+xx*xY9*m4E zVz8_!^gi3&z|`sb^T>tbtr_2~qzxG@Y^T!#b9fKS^+_J}O1(^~-K(+?_jo~fBzQjm7nW)4Gj72g5&6(Lmm8-6b9zzI;2l1O1p-> z+|$Pv$7D&wy6&mFKSupjD8_TEeIYC^%BPj*wwz-iW6jF`%09uu6g5-tVeY9;6ZnPZ zH#Uy>j?t1JQ_Di@0V4S~(%MUVj13Z6X1w<{JIjOu(O>PGNRUZ@%~rGWILigx#u2eZVB zJ=mSol!uD**dO+pd476?8~eHV{^2Oq6a@19T);b9o&1o!v6IMW{-4wz1_?WMxjFhY zYb1<*;t3l~+wfnSszLH)Zkd>vM5L#uj{~Y$pqm;m$vl7fk-qm~H%43^#d#jW!^^8> zXc(HGuMA_@)m_#J4xqg)V6xHs9^`r?aGl&}+RLA6!qxLOg^FfNEZ>ATQftScGJ_^? zzHCI_Mx3XYXsaC`u6=E)hVFQOqjgC_^{J#EKCB;d4WN{;TR^BgeDHlalvMu2S!Gzq)Xu)UBdXgJq5FAArj9YMQ3L6+uGWa%0f(G zkWrPDA`dk*3|!7Lw*-^w-6>kppl=Un-s(SGrJDN27mW(|q<-pE?c7rkTR&MQvj(Nx z6&t9eG zT~D_ixPnsasRFO^!6UazPG3|0E>gQ%TK}wL;JwT7dW|YbS-8GfSXrr?uYurK2tL1u zF>kBg{RkDy-eLMCOynPq2yBPDIXO91X3e$3iy!V{xc|am5)5CsZ~@S6BAfnQlxHZ6 zA(yRX0LQ8QSofLNTmB?faMdUSshM^SqWw5`G1}dbwy6L8rnNEpXK`ua(?c;i#70MFIWPR5+q^@d+$6m#!L?;OM931q};i` zT*hqJ^6qvp4I5V+mwN2OIIhl5vn|g~+Qh9UdvMt<-yL_iOe%<=L{0F7VP(y-op+d) z*4PqRRuXYC;z#~0`nBGa>5nkf-3OWN>N{55%Z?<{{>5E6)P3t6b@8WPcNc7ebD-t16{)iZG;(J-bW&SqAz|{2W%;N)P%TM63 z3+-UZ%1`;lP-sa-$u}9kwpXc;GJx zi%1D4G3*~DQA07NpoLO7h>Qv(pdir(g07AswgwX4s*RO1k6{0Jd1)xU+RtL?BF(|+9I?qOgW`uh zL>G|!TCggK|CJ{n2h_ra@~EiNKcuxdw@`e_%rt0OEvpT>^j%{V(4-pI_7TqP(bf=B zr)b$^!>=m@Lm(o2JoCoGlihH)H=#I+#rp=ynece^9Vp$Y9_W1U!%GYB=2v*pw0Sta zoNgdqVdl2o0DpBHDqsH2D$kY@hV2rTn|-D3kz+J)c0~gHuI4D&7yD!l9&lCAs%%Fc zD4l}dWgjwY`#`@M3=C~Orunz0bDbtDsRu+p^Il_TqQPN?^$8o$o;!Keqax~=1s6UO z&3y<=4wz-_!V4m0-tW#@3B5aJYX){Zz4$XvYOKD?_+Xz@N{`+7XtpJf&c$Fb?9acR`b-q0 z1Bz%%fXf6)J2Qu2>+MQwajR%Ifd#fvfy18&Qm=#R?>Q0>n^PYesQ3LZ8zrNzHJAzM zoQsC*suF@79)TnW<1464)Qb8i7;O(qy$5X$Jc>?NADfcs$T4$K03vu-$PYgKqLa5)ZTC zNR3Ox=j<7ilOgb|9D;DP`avGPg+NW@!+C<@)@-s<^-QOim#h_ChhpL4Cy8=d?gSr( zk2i>&VP!;It&K2ldvn^&qzn2Hg(I86=lJbJ2|sn6jD_oV^I0&xRK+3efg|N-!9tz} z^O2|vZs$WoltKk*y+4ZmDv$e+pWD?KLOYwW<^cJUQt`a9In*fpR;xlT?A7Mum%`+RBrM(lNk zkgoL_G(U(C92!i|U+JoT-ZWF!)P6a#1?~?Zb=t+%wVwJ^ zYpd&N9mejRp#}L8Ho4n@fL92 zl0Xu7k>WdkINnSoCqR%xj$q{ERLZqAPgG2JV7t6?PQLHT>1#y`{i&NE6w({ZCZ^U8 zEs!L%q!Be?g#2_k20rm4vJ1+|sgwwDvGl0E!O7{}Z|lSUbcmtlz*nxDrPVV+>EH*0 ztByzYZL(+PD(`0P@AnU1efaQUc9F8NVZr4d6qe({&gK!+X5tT=m;&S(NYoX6*71je zn0%5LR6%X}b#>M9kT}St4iPpQ9qWZ>K+dDnkH%ac5VS0S5a>@^!5fdf>%gCgnH;rg zSgmU+cOQum-N`@O>|%yd`mDGRU0|Pa6ogwUcYS$Tek%IK#6)aD$}Rq+;*nrs8G0d} z)ey-chCv0hobH8pFM!SrF3#=JtbBPHoPkO-0{y&iSa7Ka)m`O)fG2I*Gj@2}dXE&& z&(Ci-)v$sgcwFzn*A{st%)Ydi5)p7@J5VzX%(j~|jbN=H&=$@dRAoQLE-ualT0`PZ zf}fbyJpt>3G8kGmoO!Md1SB-BzFa(5eZB4)c*;c{PBGAOkfh(VJEVGP&chNs#%r_j zK)U84v*tNSY+M{tPy%kn>=sQt{d${pgBF~^`OPo%C^!PN)Nd zg8h#{^v_y7y?!&_<-8<8>s=ceBAC_P3U%t8A85hj>H!MH69szLKGNVA>$$*w^dYB2JSR{xL(7v4qB7#24~d_ib}@48T7M{eESK1KRFr|Lps(H zk+)g24EI&L9GIUe`1!gkb)DaRTz2-lMh-46!a$)oQ1|nb z284exX5#tY_h91>`j4iKEKdhEbuP_aWjOaU?My#Z#bN96wG2wWI!+=?y#vbfrG`Ee zl@B{wlM7-Ti6y=f+Yw)5vWk2W6-w^>5*Gr@8ScOeGblpyAtb$d;QQFzcYj}wUk5at z+}sBbmb@1xWMmHBFV1+qeLLHq0|w}k3OFg0WA`}bjVU%np)X6A9NWKKOGhlc3(v7j zPJKh46!XK$Gkt13F_eM(ETpr)KM9Y=ADUyj`un50ySo`6!Y_U)zNnw>g2@2gD9&@n zyWKZs`eR*D$kck|Ua!)35pQ4%xgj9XKVXSPevgG8{B^Gtq3wLl)D=fK;+m zinxJbx%IxsN{JCbFH3a~`co(%F4Nc!%?*CwXXB5r-Pzg6p7q{7ts~1^GVYcp8t(9D zk`*Y@VUC?pG0>!-7by$c)HS=-e*cJ9NB_Gf-w_O#GLn**u5>*C`kj`IcjSBK#f~EN zB<7ZmUR&QBGgQEl>(^}38}6m>3J7Qfh4$B565i8EE%rAz&-Pg0$iG@8H!h30UYbZ( zToLsB?uZdAmk1rE?@Z(85dRP(nGB_(q6(={?&$wJcB4G(lfM<~Z_SZCr|kceoh1JE z+8s@_^ByKj8GJNVzT4%pc(zCc+ZS=s@a{FD7|Ga@z4W)5u|PclDq|3aLhr$ksmeot-~5;X zTjS37OhGU8+6yt3v{YwDs1SzQ9;mC+*Sy_bn!S+J z%}Flr!=77$Vx!F&IVz%GXN-xD|C7_+qgHwmC_MhBy6){gcv$97nEt^oYz`{)>x~TD z&$_J}b*2OQ4#%pG&6bPKd>dvxOzV-${p;01qn!=k#FH}tZPg)fa3SuLm)j!KsJKH3 z)dZ!ahF$t9fcyTm$bhLv)^eHL>iT}VHWCx)UzNsngpsJ9OQI8_6Ad}=Ju!7$ss zo`|_D+kZg3a-!EzkdoU+awjbyHe#H$eRf76Bsv?z{lS1jZVlMeNML@&%(k#_sJ`i{ z(45f%8f2n!9Aej3Ox?^XOK^|(8whlQ47B*!?u>f_>igoZI(=_2Q zXXIIN)4XHnoSjdmX)2|t6~s_=POccALrJUFn3bik@g)}TxPAAArNcB_ZK{r#>>X9l zqh5{y5m))Wcs^O=iQo@5?0Q#fQqDY2?_w33-FIt(zAX)J`ArjjmKV4reqKi@R$}DM ze+SAYM}-PL?AhyE4CZK2#%WiLU7(@>D13RgbSUe&-9c{d4K2N#lH0npu-+F*3+Ucp zoM*jl`Vf8&7?9@kSuZX^`x@|j#SvsziCWd&@IDzW@u+Tnj|4^;9pnQQl?!^mEjt59 zvC83HQ^yAyudQ3~qB5)(4PFi05giqW=O9m2CA=w`g;!k%0^lRo3ASW!;D5R`Trx`b zs6Y)NI~{*pcv|8Y51@S1XmudT8uB< zm9JA16E+TZ_jGjP4!DbsQHfZ{)8Sp);N{3f(YE?uIcB8=hx-mX3^P~LBEEuA6c%j# z#P9E%Jt`xU-&9suNX=tcne>KdCe^ZHaNNs~zyx`HtoMa?puEk?z^^8Wm!}Wm=8cKTczF1A#q$W{AgF|%OX|T2-F1&2pXH*6VUVvUJm%+(MlWr?i}Jx$y*u}u zCC$0@b7FC28wRfAqjpl8pU+iL@cYjET(45GXTJ7!VA#VTpNRJKuZdw8H-&B%V0NGE zM(RD0{yzSC+@U`qEB@uJU=wPV^n%v>_F;I=B3irUGk&V`-bHjVO^pW1#G|o>7Uzwt zt|vmF0%oKm(piYRfmTmJ#n#}Poo^_a*_4U#&uz~;CghZCti57h4t?vf=iFNR z%Y@yjLw&+B57^y)&CSuQKKsrPv$Qg+B2pK8(Xg^ef@vrxq{doYPgE~*SJBNC+*9|2 zKc=>8N5gr~ne&nfurTeWid#n|a0tjhNwQNW<$C6Fvv-ZOTwHglo$pZX+CdGCw7BOD zihk_)dMqLC^l^7`q9{Kf6rGL9Jktx>Ex6R?jy>w=ookr5ovcvL;vkcePr^V9HngW&20iG-whGUj1h?*RDG8_IK;P znh~rV<@4|a+dGThOKAi{d{p}*Qb$68$?d00t+d(a#e2a|;Ej&7pK}JqYhgbIR*_68 z=R%{R40dk(YU=c7i1=us#5j{$d`%%(QI}Ar5MnA&u3}4|Rv!Jteh$`a*RdCq0N>qH zKr$8TrxFu>pKioF3H^wVi#t{}f$sXG@Ty>=#LI*A3=f??`==qCQG0`)houuW7J_vW zLOGE$;YHH4#P=}9J@JGpU0SqdvWRVL?3^Zvw&{te13LaB-bZjN)?y~u?mxhN5m}&| ztr0=^4cz=mi*^rRW7t;X)IF6%FZkK*(pd3>2~aC-pvo>nv_UvLy*ToD=!5d6CZ?SI zTvE4d)s1`DsGUybPQBr#&dzOF(F+PG-S2Ks)=ip!z}#mmNxN{<@s;jqC$J?|;RZvd z#ZlH*LsnSypUvh1^PZ#ACIsKuQS;`HK2MsD3Q5jBxu8V;udSkH32BXgm6SdIe_u&idN+#r zg}#frwom7uPU?}Afw2Z3{gFy)%%;Pm4wReWEi6m{Xb37v38@}VA3L&H{O~oL-5ImjMOtu*;ALD`GQ@?bclHGnf7 zI^s_b44RDZgiIPA6cxX?nf8Wxm*yZQ7)@bLaFiI@@?B7m25kpWvwaE|A-;=9mmpy} zy)JQif?@JYoadul3~{&XB7Ge3JFmgbelsf?;_dU?*TVsOhXFkyW#h78wL{8lVS}tP zhY8_Mw?&fn0K|Z}AHlh>(50YD`3rs>g#S5<9&;W%CtM-jsEV2=bYaEsgz?A$$SObk zHW^n&keCdA40>x)i_isZ547#{P$bJ}(Ha zt3XCp+ZElFy=Z@6R#D`T3_qm7z|_>`=jS(lZ!6Q@v8zmY(*?3>7nN^7f!n=32p57j zCz!CwPm_BBwd>Ow=-&v6HW$UU;bDt#A!~*r05Teq%uzk61PAeFX=&OQ_+aFfB&6QRT%|dGOI@e z?lt6yHVEi%hZ_Thf2(U#X7QmrANqFBSNv2vK7(%v3-?(#i$T-Mz$^CQ){C3TCx}y* zcnuOedE^3ln1S|9esZNgJb|}6{v+JE?J-%=vy0b??3Px=rNXSb6GMwbc-eQ%03QzF zO=O;A17}(QaNTPuIvI1*#}LEVRj??>jJHKBM?iOfh4YkVmmq>?v2(#k&_tLqcNdCy zhd2p2&Fr4ez{CZ_T#ik%)E<~h>1sa zA&EW&9+ElmCl!{Cn94(i-JEouBnbS3I)^>i5%{C$3KPdsdx>mv-{p`0L4%d9V&{gV zErnc?wSMc{vIHq{b{xojkhS}I=5Z<&f@9FaG* z>lo|UcL*i_CCm)|Y>45zY9P50qHC ztN(@LNw>OT?*0SRz+uvB_IL2;st|AIS>-gzxM6mMsM6hVUFWH#rDNIl*jUl`sOBZyo~y+!{^cRYd>5yo zsvcLU^MM>9EG#U|W{erT?Xc_6^j-V=y!nZ|I{G!6lt)iJJ)MCM#Wty&B*f0%UWN_* zQzEgi?>*7?j_!lE2eP!Yxg5Ab8xB8|U-}VD(zf?n#$%&+rt3ZLg97fcENSmB z80$kZ##tUQF~;8B-kF1X&&|?jgz@pmHvk!x``O;YXn9D}03`B_f3l!}WHkogZ9kmN9Ysa-Bnr~_aEN7N3Kno|6tiMXrQ9~^b>z~ z0o^|r-)X520Mli3babG+ZP2$40O$Lil z51%Q_ejXPrQdn3h1adR+ZtK&JCFYn%tj=?z)3wDsPbLx907VqPVQM&l$1)}nK7b@Y z0BY%EWeVyv1dlQp%>nQ@YZkpbH3Ko9>_Pv+PSPd#=M>)TOQ?Lgy)-dL&hySy3GH@l zI(sQz?B<%doMfZnU02Ncv!(^ZkHkG%w&%EG!~|!i%wHF6m}g+7PU-!*sM3Fx>0Z$+ zLZR!+pF;K28QVe3uQti%;8ksvsmjc7>>+6nT)uY8SQ1g%h;|V}bxpVen@7_*(?ft% zIrpP}0U!Sii-*l?|FOHyU*sfwc5ebY&R$&?yKxTf`T`8vB^ea5+C}p^Y5LRz?NN!M zYrwoPZwaP(Tn%MUBkC@jIV^zuVOP`q{bE2 zG+?qtg2wk2%BYHp5%4>GI0IA~(#41KC_J#iG8n8qHoPwQ2?DG$Z+FpC6Nq60_)2d+G;( zS}*F#SV_bS@YBn_apOj^i*M4|9OcMZ5FW$9$$2^y`Y0Z0c4&kZ;RJ*o_{=L$+|?ky z26e2`rM)kl7SIjW%_+HD+H_?1-6a_ib|+)gj|z~M^24Ky^45FZ7{7rEc-~c(F6pjfXhQV!i$HldI80ZI<{BO49|Kz3*x7xpK?kg!z#B`~ zIJq@4&ad`Up+z$#-OmaM2|)s1zdrT(en>!`@*ci!-$hXSdFjj&oEy;I=U^iO?9odB zsfM8=!N67fc0b8tc`3H`lJMx0LE@11_h)yF&=|%py&^f{J`jgAdznm}cRkj|t!fHz znHA=%R7c{VnEZW^`%ZcUc$S%mQpel6z(o(XX@Qd&y620iqw_+INc+8}7|Q+wyj;P+pSsyt^#}Qx*ByIorebIi8rQbn9(XGXY2CetKy#d`&;%L825DWD6{nf=_NJ zBUBNr5PkoFk0xm`j!PQ87`y10?#~bx@8vZ+X)OLJF#HF54pRH_rm|QHgM?K$kym7~!=J!Ax zBr9~@Twb}c98f8Bw7VQca(af)vF)2qL(GpTrT=WQj|dHI2K*65MnQRvpP%-A)KwZ> z!mMr|T8q{ii;7T#KZ-y`mI_z;5Y+8bJsFVDn!Gz$w|$jh=6ksQ6g2A_RH@ zC~COPEp+Gc)vjEtinQ1YhM@L8cz5OpKs6IIl z-h-_>!vc1V`>q~?Y7vVFcqCx%r;GQcs*uF(D*df{dDX{JQb9g%#L!HyytZCaorX}- zT@43Yzi^0(j`(uk99QPmr1jCs8}puDjC#Ew@u6d@rUf2$*e@{BZu1R48>?X4?>~tC z_*loFz@b#PhxL(r|7b&===#K4*_;nKw*AWA#eJK#8=X!%H)D2g999bwzp(SeX9MN7 z>|R73HbGtH9~joT6&@0Zq(D?v)wt4rr5U!ItIb`w=#1;mHkffwKZWDp=(RMvFsG)W0@y(3I^={QV(J)MG{eq!w6$$cO3`)I%I z7{?~`xcl^MTj}Cp>1s7O>ow@b*4kKHqt;ut?@VhUv`*#SXR0`~EmvJ$r*`8>M@+r2M--O~)Zs&Eb^n7YbxG zdVUw&3IA7U90y3Z;ri|MENA$ane$&;X#KxiI#uL9Px&Vn;QasMLzOE>&V5QVt)+WQ zSd2>`mKxSF3bSE7#ehxo??gOeM>chCFVS}FlU|82qJ~&P_bW_YgIN}S|4GY-&WY3- zwc>U>MSnNGg%v9fR*%vGSUOk_`ce;ctDy(l;BGbTI72?hdq5U?Yrxzhte3zX% z#6Mg^rwe-|yj!-{FWWe(g4*t(AGF~G+VL%Hq?e=8<90Oa%HQFREq*`2a#Yn*$&auO zYVtYMdhL$bV`&VNQ~o<0iUR|u#@2xN%*z;fCxhCSw!$DThG3z~;n)3u48cE)#V%Xc5^i9s(6}n{jp}6!$mKd?GYm0g*6U+aMzD zH!+$P9mh3PlHuoI1hc!`#P*ljlYNq^?GggcpJ4Q6ZN zsg*Y@FHe`vtZvPUN|HJXC zipGr)l4v*!T@D&jB4S_GQKTl=U&kuB5dM-71sDCXzSHhw-m;p{r;YUEOTcC+z$*TB z@^whXgML&ujV8&MF#WT$3%jx?b7cUN;n9d9xW+XfgW z@b>77R=o4|3@Bc7#-YiSAMMiW$QbNfdQ+MigcO+F#DD9h7PjWO(!|*b(xHK2C@3#k zz&}>Rk3BdO4_EK>ngZ{oTmp+?Z`9!)YEM3$xN=8r9klAGN8vk2nBVG3Pa{=v{9fiwe&3+eI1vMSFz zaOk5>^udQd536TE+4AdDn{X?qkRod>W5#Ed3%;+?0O}JLEv*|)1;zjT|59Cs72vpcl zXm%bDd=|B7JOHc`TV@{yS3R@|>y2!s|6;zB1fsZ^pTkna>{C(*Ce(eV+L4u!&*-&M z7^7k1M}FhaHt(x})&kz?I74X#+Ps>~+L&xqovQLpqJ*42ecJ2kG6T7nSgzS3hFox8 zW#C=;MPZlu4t*$YOdKWUxpCh8$YUATUnrUug+42q{kar z%i1s9ljOB+tH_@TD_P;T^;pQo6OWrt_n@QVcBl>yNwQD9A8OlnCvn&yg$Uv>U5?&| zL}z3~)YVDeHmW>BUe>EYpfCg-);BN+0V$d30ZZ3GPSDj|oNv`HJ(?|tdwUT}A5@ck z(y})7^q$c_0*Rf96+?JVQO~6)Ou% zbb5OD=R8$XP|gn5xF?6S+aPfybdb9~fXqM(fT2rLZlq(TJP^MftttP59!XCqvA+GT9ob!n&0lRx=l98^w4!;q`%K zOggcFDO21bK!!xpt-YaMISOZmGuRV*!WEDfR$WAYq(ZUkLU9Umj40c0vgucKZpv$j zG(n9Qn~MK?giD5Ri8)Tbmi0e^Y)RvcAJQ|d1MWx@bx2(MQOf|9X00VPGj?7P2E3*t z))(alhARD{lR|)Noqo91_atIW0JFGoztL#Bh||Cu(9e4Z!D+K>2<_;uQ75DZdNNcl zyd!WlaxbO{$d>m8HJ7gb209ND&(CG6-j%C$EfFUDIVNL{d4{Je8WtV;GiB(@aC->} zDV#?M5V;e*i}eturDQ7N6WJv-ax*ba2`}plVTp&&yvGluAXYdO^`rut_)mVq6uXtfmUqn zHbAE^L(boU1?-RNX`-7ti5uTGyF9rA#wvRQ3U>EcCUOtOppZ`>_bxs@JcL=DB)~|S zc)I$Tt*=g>(@nBp$lw0%7+0V2@vgw5LR+dwov(0In0Vm&Gymr&@Z8fPAqnx};+9ub zE>-P=xP7zzG5~>Dt`172piw*8MtZ}) zK*|R@mnIK(z#FuhbbfOg_Y@jC=G0oCm7`w7oXTOg)-Lk~nlwNE3=w5&@tEI`!-)}c zNz_h+)F?(^pH&h*C2jb_Q(4V-!(gJ}*V_)1gK60iJ|Z2(=fh}?G2>rwnGZYh+V88X z?n6E4N|-0EW!S#}r-J*?j51-tNvp|lsbti)XbO=NXmqC&P^T_|O3viE53Q{7ZkyEU zCi0u`yd;?3rSqQ#Sqb30p`qbGdvr?5t(24$ZB5N<5Jd#4ynN_55yZ!8(-3FVUJ|TL z8OvfNesOu992j%Dep9dRk_G?Hh?*I}KhCxf9N{lPiFq$>opTp8ibD7BzAM1P?;s!8 z5_m9UAuvXseq&?N6hKdQQQ}CsWcH33UvUBk`82@)(E9yOLzN!z0-A&XcmI+dAvMcA zsL~IoQ@$qvvRqD|`{Xz!1`y=|EZzavWvOx7|DID5&Ki#qM>QV;`zD>tuK7Saz-9ez z4T!QgwAyCyp00iq6{Mrr{ryJ=`wrw#HJF8@)$mArwc`{eWW3gu+qA?>&w|n5!RQ%r zh8|YOUJ0*}``(hrRRD?I*>VK>a|AFqd0NRD1V}$oy*4q9}NHh+Pf1 z$<(cyMCIS94U_iR_z?==h#Zp0?@wM^D*=(N`4MqhLO6G7mRuBiwC>@feo^{B-AC-l z8*y4H$TKy*d!ujDlu*0&Oh>7A@)^mt{9JcLE*QL}Kd30mM8CW3l;%>igm&f-BJLd6 zYll{Efg03KSsp9&FHPeq0Q#<4%;lek24!#^;KWO@T`eWRo{FL z^(m4P&yDbVwLK?;OdSQ*JDNKqh&LSj}$K%AG0qL?M(dwCOUh#s_^ot*`x zM`0yUoI6QA93*dMy?;*@N7cq0koKwwY-9Qg7t#;r&^COY*kP8x5iyQORal(4I(F3{ z5fuaG>}f0=0+&Ks)p?ESmgM+}ynIrs60uBOc#sTvo&6PX(QUT(0Ci3Ewem^)jmrhHTzdcc1rfLqPj!&= zM0!`FW!*)dtU8tAj$5lU$gr3R}dPzo^Ct*4ao}h_NMTE#j5`U>&KgGKV(llYWK~o!-GkZv@rnAZ4))YVmTRE# z`R)e@`_i9Pp8A;hN*+W!8*{z)?#w*t=0QYB`xOPz z7AUtVQC9>KNGT?7VUwBllwHuZ^rz@g?YXC~8MrlUibei(AWOTZ9R!x$F^C>k;XF8z z&;i`j!1?S@F)L7uQUt$@O3($hC9>SJ(PXgBo$G(t3_uXdN_mM!`h!Tf-A60Ecw@Cw z)=p%m#(D35e(PiiUWkj0{dH0SV|X@u{8~6wz8v(Y5o?HHaP)3?Ietk+YlNo!g znrnbGCDlJ4M8VEczJ?C*!vlT&sez8m@bv=nU#U(K{PVOo(*0+SiNae1KZbOubng(b>d)f=X*BdfE;yM5PqeNi;DBc*A=hl2ES zumSTgu*cs`V=e1tjVvkc>TESB@0}YUeXjUpu->8~RIK~($@&?4#%V5(c1?BNC#TOQ zaoJ?|Cqx3^El&ELAIgR1!A#*Bc6NAo7NNw6Xm4N6-61Ye>E4jxS;u@v7OcAD#}<|9 z-eid+x2s_L7E(Z7RIWz7)|fWm@6}ZP568*S0ekJ^w#cgjD1=|gt=eS6)q}Xr=(3#l zG{P5FDW3*T_w_G5u9jA`z(ZY7Qc{)emNYUt`im{?J1H}IcWpw)@Ct8VXdd(UdmI^r z#t1RvujZd#U>D#9mzZJIM|*s3T~ukejFPcl(4MSn&0g##^_G;!zN@liHNGg1d~G_J zEM#dUDxYuU*P}DG_uSZ@h^X)?8sf6*`&F2j&d?2l8X`U$Ld=H?21y#j-JRBec-7h+ z2Ccue2pg~3zN_fhx3ge>)NGCy`4iX2)Fm{mM~?_oNc$;I2T@TX_@3^!^c>E;qGQR1 zqhh7C7?$u$LgYoP47@JmC!J2~X+4e|eSK}C<*p#E^-C^1^UqQA8SWG8jn0k^$j@4B zY%7zQ`2lx5jc?Cm??+tV0*X)*Dyq#I}>`0=tITQNW z`B6g^&2S#24Zr{q$m1gP0^kmS{!%hi8|U>JTy#*~ZDZK={XWeh`= zf-NYLX1F?*B=r{sE!)nAUzM5ci49H_vJ8%u08?g8_1Epf;_u?e`O>pc#b9xH#wPNq zLCgD92WU8Y_&?3LS~n$x%35XSFOxoG{I7NQ zP4Xq%nYR-+_}Giil9*qoTg$dN(-dZBAmlB7bmi(gVfW)wv1_nU$fcqOJUgzhm$$QJ zMfRP(`sQ=HF!Iok?}1p0jdejwrA#-PbGk741~>EP1==7b&0#bQg)61)l2vMfoG1U; zzLNhF`r?z=>@t$6-bkn1Y+2ZxS=ne}j=yxNTm1ZlErHP;3W&Lt1a&{W&=-zHjuZf* zw%?N5wgZ3X@*P@Lar771Q9uq(?{-5rRk)xEH1V%jF9t5=UXT+U@1>?qAekYCf~`Hd z9}bq|(zx^i(-pX9!pcqg4lrJ@dt~g=j}FzU+~a@bX(I&FuwteQzq=%Gkmsx3I8auW#rvvaG=riN`)E(7BfAYM_PK@J`Hi<`kR=ebzK*43PRELdtqEwdv-b%)JUDeGSz%@; z@R|L-)Ma?Db3#BPJk)>DCqk}i;w|jy(`wn-r8wrNY#NQSAOpr_?l3Xf;S}<;VXJgK zHm6V20jv8?#&&D3;E5A|FoSpScA43#q7IouIwwcmXL~ZXTakgfsZ6Rk@j1WeOWkQV zfs4Po9^~xzWVoWWm@|eQ5zJq&2gPQ=*=Ui4H}O~Q{$86iUVW+hbh&EJ7eT+Vn6xq( zJ96xH<+ucrHr`auTsG1@$U9c_`dX#BQ&|MFL8>*Wke8GQ2J)iWIw6S zcVsOSiaJhYewRk=p>60*>hBZcHf(XdmAv`Gz)-6OR*<*(qu1X(Cy^??flGuZY=61j zkinPU!nQLp`6RSxgNA$;)U^4clsTb7Tpx~qscOOfY-z;4u?bO zS9OVbrPn#}f+dor`z_#vB&j4}Dm>bX@bJ&@Ri166bZVQ+2WD~ZMuNX9CNU8^=f$lA zh0oetR2&h18eU<7^28Je&b zMQiN~{SiW21wzytl&bncnnaNjM{5+R+rK)t$6I=EsIZG$JFZrBbhI?lem4C~f9xcR=lg zxbi|_4J^_rsFc=jvwczy=~s49b{%^pNu8%Y2&d0~pb9R@V3#8xL}%qnog*}!MhR|0OSUo%k+tnP=icNPkawfI2)X0t zrhofug_U!0@Ek9Y%Vnj&vwb9{L%KHX2h2c6r^k2H{pssMlP*<}(V?-btI*Yj)NV$> zF&=t&6`3)fvF#|vdD}R6Ys)bITY!h-RWCtviENiH-`V8np7CJf; zJLJ0l3EBQVu6LiC1v$?HD)Td7)@ydkzyi1b{HG&q8w( z??>ciE^koq{lJFG+JB%lZs8DpxFlIK$jl65b&idVtwe1~<#<^nnCJT*cshtE%$|nG zvb@-50uab0#jlW%F9HaV#VRdX6@E3<#Y*A@k_szv4}Ft1QD(LPV|)yz{Xnz&3Cyp} zsW`2zJ#auO?B~s<^z2Esp!I_Kwe{5zC#@JuX1}u!u*qp{-_0B@pw+H-?1Dg^!OT>& zC60$5T&^qHLXD_EMMVpt$X<0i8W{_YaDgEPZ$M%vL*U0gqa2z(>+Tkw_~(-=MgFY* z2QypWTKhDutv~AXr7GZm*C@BD_xJ$sL{@NDB<L#an7JhsH4nOw#3IXkdTzm5+Z8rzl5m9~k z7!;5*?3{mq;_;XCUAsXUeF7|C1U^T@*!O|rlKtwRafhvVXSaBEZg#>yME4ne=#+m0l$o~(<+$X^Ux6$44NN{n0j z(!$-qeJk?wZ&vzg2t{l>CJUn6%+2Ft`7pffcG5Z>$SFReuqIJB7;D^%>^gm^#A*?X zbN1-9Qx3Bu7SF{5>5>*BT4M?4`|jm)u2kCab7`K7?`xn@XSy-gb&mf2cSBXZdQEYk zacY;T-A~~18XD4dzU0!-V;yPXQmlK6<1-}Ji4P_oq z2A?KQsG{Ngs`KOlnqd(;P46I$!?x@lb>og0gBh;`MfzG1!_+gG=T?$KB$*2e4z~CN zst2ta(3%M3x{mgp#sX>OHR)rG>4OpUhvCHv8!k(d3z7N1*`o z2l$-AVathXE8*Z3?arUxrGCp3BSJezPSzPX4`ZyofBbmzx#~lpT?NLf#uy9?ZZ(TM zUpj(oFoA&#O927PHhG0b@e4&wHd-6BzE+aziYqhUm9!21Z*46U-OQHZo~7H8k)}uh zM>m#M>}uS8-Y7A;LhO=WvV;rM44=@$3a>M!heenVlddyjg?5c9I!}&>kE22@C=rdh z3e@0V{X;k01Bo{IC}>O$)W6@QA(+bFPglX-dst*}f~KxEf2{2YhoyH-^5AL3O4RO} zUVG;agTjJ>cLX=jxPW16ag+w-TEPTehgeEu*ucx~n3;9;E~PvPeY#cChwKdk127#Y z5X1NKjS|B1Te<%3Z*CfgdD#FpjdHA7zxF!un_s&YIVudQ?umS~HJj7E{>s6O_t!M7 zY?=s7J=#mKg1t4!`3W5Ruh+f_w+tcFSj-3L-4Yxw9PmofHLTP#FSvW^IG2V8z8ZCi-yQ7^8d7L*mFyx;_CyC4ZHZs7~ zSs5A4T~p$@e0Gl7jBk0`4Bu#ExofSmk+Q&VX#Gd|pF=DF)mPdev;(;3!hac`|JxTE z`LLBMHrxqIzV@!w!_vA(#dF(HnFWGeV0FL}pveA4C#vr46A_rKxvbH_!LxXEAyn(r zKF8?{fDT+V4!4kntJcZ2XL)e^5hhi$TSJj%Gm9BlPYti#(x-6cTs=ie6QXcciqT$} zWJX5@>MC6Vz;liTK%%05gU!7pn@?bGCPK!9`m-VEC+5ABb(~xhl>dlnDPmcnH) z93?9lI+MFl`s4&Ce8{tZ_iI=g= zjxbi4ag(*IlveHw)6GL8z(|5xhxVvTGm8X{O4nmifIT!jkaTUv>Is0<`V_eay7L-# z&c~vzu5RsfvMRVeo9!NipP!pDdJvHPUCaCWrV4=EN!Oth#qT3;xXj3jo{edGdAE;X z7TGLqMJ_`W^0$Rh;WT!u9*N|%fG~^U+Ec{=b-9zm(+})|qLI}~^e}o3w1Z%yPw_Kv zfx6E?^Xonf29l%A@7+7c;_Oy7u8!BorOxDjfIvEut`c!oE$c(T(xcf_eMxXINUd*qclHXAJ8@y5O~>v z_si=0WT?6%mFL|nRpvGwXLM3P>*U-_^N*G5eLa4U=6O=8(r@*q3BI57i(>a>lt=Kj z>D(L9VN4F6??5{Jqt#w-ktHc6YAHj#QHQZVy^{=bl;XSdUIJ7=ujNVN+}BIn6;K4+ zH#;&n?Y!$KpK{qFqrYLGx&(s=OEN5XAKd4VVEENN5#q6c&<*?H@R63xwO4f%cX~BE8?t?dMX#vDTy1h_~ zbZF1?$mmM3Tdk1xU%Y@nNrbMhH2p|g1?j98343_6JcpJSxMcCq(+PXRFh{QP5QS5K za32$4PPx6lcAY3EIz;6veZC;Q8+obBKN0KjtmF@wpRGkF|5+dMXTsuPWs*r@byO!w zcpxR{X~FMmjJlh=?0Bm#;OJpp(2m~-1kO$9aUBM*067aY^LxTl8XsT$@PE|v{@Xb6 zUquXQ!LEvanHR~VgFe{bK)Yh6r@YQ91~IF5uqn)j?XL;T{L8z0N)E4p{0>!96T z#Pnl&Y~=5aELHifI8V|vOH`B-v8IrUf5-V1Ku_&O#7&}dp#1-WL}(C+fA#>`=7qzo%s&+d+D@(U5T!$ zgQ5Hw&EfPknY_G|Apz(G9CLB>TULvqV9L*5%@^psMswgRk`85zM8G*u_eiJOmfdbB zWlF1UJ@-+u$@k!pvmi{^Ckv>`RNci)64pn#T-Wl3A_EyyF1Vd$Pq%GH1l2Xg&m){@ zb24u1!p3$g9eR~Pgf)sWAD#jtiRo~?tLX#A2Dwp3==|oOYN$h`haZ&pB6^)EvmGzL z@nY+FeK6ej`p1x)b-td<$v%zTLc8Wcn+!GA-m!Q%tVLY&NKD&<$e4M$nEb`y@9Ie3 zJE?*5=Rm`c&n9EFitlAcLk|x3ka4|8$_7-{S^ z&~fx52*D8jk|`>F7-@^@+azp?6v*P1w#AP~W-&Q{-CKZl%&5-cO{gh}WJ1OOwie9S zw*EJOIBBn_qOwps#A#t-0>3woX>$|Z5s(mAuuypjhr{o~*I`IFyi7|x!^zeoAXoEi zNZHR1zDiUTgcVtZB8-fN(zZ8_(DVSTJ_@6^3y0GpGU=_47?P5r8EXi{=-9wJW>NQ6 zYt(2GpNFUG_gi9_qVjXeMHhFMHzG0*H^J|)kS^e0*B2`$SPbQuDXU8r2(5XRJ`+#n zRY7+?C#dp`tSQL4p5T69hj&a<(^*@o`Zn%Qey}}DZ|#>~9zEcKeCQ^!-P^PS6Xt&# z7eX%G4j-Qo8eq3&G-D16>8{htXcL@DeH1kVG8XY?fOau(o zR%+@DvqE?f{sgR2mC*DOP2X9wTKUp{OYAgQ+0EP4QHMQBVBL3v{K{vYRGXIB?mdwg zb42yRMTx{)S2b3BGWgF}4M7TFvg0gfsp`s?H{6i_c?GlW9dr1~`1Ee1EC6 zL#ed8EAnA}Z(Zf(URw>>NJ_I<7JJ(&r}bib(6Be%4psLd)jm4Wd2kje6fikYb_z1D#LhAKS2rYco^dfoM6dld2L0YW;BBSI>F ztp+7O=URU?XlN|3b&{SwpHNiCSM+U0g`lv|e`*+91a>nSEo6+h2s3f`f^96)r){ch zp6(`3>no`2v<0RbAEF1mi4<*yf-p(3>XsNB=K`xxQcCJ{w5MuxILf;kgz>}Bbfozm zSzE6errv%0v;tTNsyB7!+VPsb{tu< z=f)}KMY+d!I*{2wa`6*|86wO%l(9=F-N7UF;c!a^M_LTM@_~F}cajLM#G(Bezj<{r z3ZLN4i1qNhtJK^h+GChv#l_DnZE&ZZMBoa<0BuDOjfBqDyhW}c+!;IRGdCE24wuk2 z!cwJxoyYo-D_DQ=CpwIjEvC8Ib9cJ9^4!D%@_jd21Uc={csS(g8!x?)G_`Q0x7FBb zPKx2W2-A`4?*i4Fo&GLKSYb#xq+T;T=W~E$Oe1E09E-r9j5$L46g%%eA(}Y<@9m1? zB8h_yr0!iv(l~x3pwf_gHTfSt33IxD2#`t;3Df`Ys&+Fi6Pm6!U10ZN!PZJ2$YyfMP6c&2w5cdVN@HS`G~j+%3E?9-yeAl!x5T zR6GEGWcq@hd7*=_B*I)>01aTL;Zv?mR_Z+(>CNz}?h2x1@k4(JZ|fERnsS&6S1>XL zN{a;>vOF5Oa-fX&$SeExP^Z+&P1Mto;8a=#%*8ymse1-Ov&|z?S7v zLNI8`MJzUkJ1mR^b5TOwstcbrt<%@mRIUfyOH4i~_?}WK|EfhbTGpG@d(KOxR<+18 z^C=Z+O<8KGvR`lEcZg6nqOg?*g{#WoF0EZ@dr&`Lw$7lXfA0-O>)=^t=ljbH-Enrj z0G~#n^h^rhN!HEYb~=9HHVmu1R0;&}6>IwIoW#oQtonjm29a+%KF74!3@~?9ceI+O ze5EpHg>4q8usVW1W7lx!jPTS{l_O<%uP248*x-tF!}D=^G}0f@+yjlm@iPK2o)%eR zy!;hy-O!G9ac1IaX5x?pW#4VfY<(szD;{L!g7x@y3`X#Fzxq>KRY6S>@C~mf?s;vX zOt1#kksfwj>SK^|RfV_%s9Q+OTc^#^UoJ1tG#=L6TAUb>uST@hproaM-)jbMzI(IL ze3RihAB|k?K>9Yj*M^biuidw^(N;W|k2cGToFN0mAx$MS3k;r=t%{ylN88@52s<{T zqD@KDq{tnny|4vcilRqw4`txRfYFCXG<)c2=Z;`|mUh`n`PF0Um?aE4ug_Qy9 zqAvav?l|X_l@4f$0|@FNr2t8LX0&=n_&>DVLZIFnF;B&7U+ePiy<@z7)3_2|``b%! z)dEjaxD)~kSJK_uV0z#l>sLuCpFL`3a%h;6D7+q+*XOrZQNE#arb zHBrSt@p_^8;`~`nB;=B}?jz3I?>`wIiFsbTb+XT6l=C*AUDhuX?Tt)(3=%LOCO=5= zKySLbrYv%qBg8HLE*9KE!nD75myt0y;{P5#|~u2If#1aiD_?r+7JZrUMiVEXAs zm`(Dg;ggemLX^MsW_6}o$5Hc<3EHqcY-uc5leYsIOceI`Kx_&Liav`e4%zmdp+&q5 z9$|?0y5jCTFhCf#c-+Gw0k$ZxWjy1YGITI0l7=SD+)PPBjGjoUmED<=B5>2ZMqIF$ z?j_W@973*U`Q}7U`XS}h)2@fK>E_h~z5a}>+vD+&pn8CrK7a{JA5LCQT&i_%W(Pr| zp0Gksi{oIe=$&1hK<8KH%>i$)0$`-P$3{fX!2*p78rJE*VKZ)EU>?AxfxHMa&pNKj z-4jv=7A!PMKf0Bqr$by44s|HlUpwi!p#OEfS2+AFa%|{v-S)aaOVh}?deyOZf%1r7 zgqg8D(DCw+fa;=dK+6uDY6UDO4`p$dvT1Vqw70$2*Dlc!=}^N%hr3uhGY|o1*q9l0 zXDC(W7aOFJ2P5v6ZE~JvqIkwj`Uv)L<4-gP5CJnuO%9T02AS(eS2DF~^gj0v6R0+C z^QldKgL^`9sOlex$PKQhBUf>_vVr1;_3o5ZI>DBRgsmISY^0V429Cz9Z>P)%w+nqv z#`u9;dc3nb!|b--AmJ6Wm47=D!4QjD{321dIt4Liw>&UfGWN8hFI$3*bU(Y)0`F4w6&)P|K!$#dT*FX=&c`BK zBCgTDiMfeRFVZxNM?yVw^M{|DexX^^h><-4tHtnWi#k*hQm_r*ows)sV&3WU(oiUR z7;g@J7o^jXZx^-V9^1RiREGjLzB@X`8Gr5nUSAMpi2Q`ye0%QTbNQy|!mY^`La@tN+aH^uQ%B&liE{T#sr$ zjcy=-0z?M8uX7IT-#(!~{M(%+U8=&9`7*wqTi&2!_%lFb~q6v}zw&OopM-D$UpH_+qKAaG+ zR#3B6N>fr%u}pyhLmT5Zo?bcsFR#(Gdy^k<&m)mdzP>&WftQ}aU|e(3`nJ+n)zoAQ z-1uy1NN^H_3doDIw=I?KV0xNKp;Q!@!8!}3WcV1(lY+4zpIIv@pjZM?#&TNuEsh+S zP2So53_SW5Y<``wiIEg^22X6cuX>x(N5CIbhV?;D##m z70-l`$73-*Z543_8RqFZG@~=Hm@mUs!BGpV)EG#GVQvZHxAQ?jqYPIdl%SvonyCbW z3X;pskM8#hV4cd$_}+o&+W7dmYyMR`9?UupxI(6tp~^fzw4<77iR=%o7oLA6ku#nn z-^A-ivt9B&j^KBPyN&=i;xZ72$tMKf0n2D=?&)U?2MhEKc^_tzLs=dpAUVNU#pKw2 z+gsznv{F@)7i9_5M>U%SXdh4m28i~VL;f@l+NRylrrLlCmaE7+jN^>??f$`YcUvVj zbeI3F-wU@{#Uwji`CeLN?b}q0$A8@Z`2~Gi`(20nD(R*B_Z^lq%%;21H(-0@b~?&7 z7sRZk%nG7ka|lI)m_=4;sqx_kUy1JlhS}iEzYTuO_IH3Y9r*_n4k8kOpBHY9Bto5*tCE z^XwM{@wo+4JSnehq$z)5V&Zd^)GVKD86^6?cKyo&kE7(kyT5)YytUoqET4E%&Sqg@ zoMx~%{_(|RI|$j&GjQ-#(|(FvXinW9vUH(%tYJcgC-3Q85)l38;a(vFr+VzB zpYP=!WO?BPvc~8Mc6<@J!(NH4j(+DA^pvL5#L&pwex3(QLA(ocO;)ah_X)7DU%%AA z=Kvo>!(jncjcK?qc7rA?RlMKe_A)CP09&%6)xAJ<0Q0(B)2YhoM6K}pFJO=ZjX~Tg zD5BF@?US*o8agdr5x<=FYW+p!Jn%OY+o3z#Z@Yu#0m{36uRIB%YfPT~pxKQT|o(lBmYg P0 Date: Wed, 24 May 2017 12:21:14 -0500 Subject: [PATCH 024/122] UAV online --- code/modules/projectiles/guns/energy/energy_gun.dm.rej | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 code/modules/projectiles/guns/energy/energy_gun.dm.rej diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm.rej b/code/modules/projectiles/guns/energy/energy_gun.dm.rej deleted file mode 100644 index b99e426279..0000000000 --- a/code/modules/projectiles/guns/energy/energy_gun.dm.rej +++ /dev/null @@ -1,10 +0,0 @@ -diff a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm (rejected hunks) -@@ -35,7 +35,7 @@ - name = "tactical energy gun" - desc = "Military issue energy gun, is able to fire stun rounds." - icon_state = "energytac" -- item_state = "energy" -+ ammo_x_offset = 2 - ammo_type = list(/obj/item/ammo_casing/energy/electrode/spec, /obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser) - - /obj/item/weapon/gun/energy/e_gun/mini/practice_phaser From 131dad6083adc1214d7157009095be1b2e067d84 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 12:34:09 -0500 Subject: [PATCH 025/122] Automatic changelog generation for PR #1142 [ci skip] --- html/changelogs/AutoChangeLog-pr-1142.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1142.yml diff --git a/html/changelogs/AutoChangeLog-pr-1142.yml b/html/changelogs/AutoChangeLog-pr-1142.yml new file mode 100644 index 0000000000..99b15ea5b2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1142.yml @@ -0,0 +1,4 @@ +author: "Steelpoint" +delete-after: True +changes: + - rscadd: "ERT Sec Tactical Energy Guns now have a unique sprite." From b42e5c8721ea4f1a8451ce3b90ea1e92158f6b74 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 16:15:47 -0500 Subject: [PATCH 026/122] Fixes clock cultists not getting their "objective" --- code/datums/antagonists/datum_clockcult.dm | 5 ++--- code/game/gamemodes/clock_cult/clock_cult.dm | 8 -------- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/code/datums/antagonists/datum_clockcult.dm b/code/datums/antagonists/datum_clockcult.dm index b8dfa00f23..6c8b83daa4 100644 --- a/code/datums/antagonists/datum_clockcult.dm +++ b/code/datums/antagonists/datum_clockcult.dm @@ -55,9 +55,8 @@ else if(isbrain(current) || isclockmob(current)) to_chat(current, "You can communicate with other servants by using the Hierophant Network action button in the upper left.") ..() - if(istype(SSticker.mode, /datum/game_mode/clockwork_cult)) - var/datum/game_mode/clockwork_cult/C = SSticker.mode - C.present_tasks(owner) //Memorize the objectives + to_chat(current, "This is Ratvar's will: [CLOCKCULT_OBJECTIVE]") + owner.memory += "Ratvar's will: [CLOCKCULT_OBJECTIVE]
" //Memorize the objectives /datum/antagonist/clockcult/apply_innate_effects(mob/living/mob_override) . = ..() diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm index 531cc873f0..132c834f10 100644 --- a/code/game/gamemodes/clock_cult/clock_cult.dm +++ b/code/game/gamemodes/clock_cult/clock_cult.dm @@ -171,14 +171,6 @@ Credit where due: return TRUE return FALSE -/datum/game_mode/clockwork_cult/proc/present_tasks(mob/living/L) //Memorizes and displays the clockwork cult's objective - if(!L || !istype(L) || !L.mind) - return 0 - var/datum/mind/M = L.mind - to_chat(M.current, "This is Ratvar's will: [CLOCKCULT_OBJECTIVE]") - M.memory += "Ratvar's will: [CLOCKCULT_OBJECTIVE]
" - return 1 - /datum/game_mode/clockwork_cult/proc/check_clockwork_victory() if(GLOB.clockwork_gateway_activated) SSticker.news_report = CLOCK_PROSELYTIZATION //failure, technically, but we have the station From 6cdf25ef490b7b33ac3963c5e1a4b3373edd2ce0 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 16:16:52 -0500 Subject: [PATCH 027/122] Adds a missing null check --- code/modules/shuttle/arrivals.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/shuttle/arrivals.dm b/code/modules/shuttle/arrivals.dm index a6888e3150..d60a832279 100644 --- a/code/modules/shuttle/arrivals.dm +++ b/code/modules/shuttle/arrivals.dm @@ -148,7 +148,8 @@ force_depart = FALSE . = ..() if(!. && !docked && !damaged) - console.say("Welcome to your new life, employees!") + if(console) + console.say("Welcome to your new life, employees!") for(var/L in queued_announces) var/datum/callback/C = L C.Invoke() From 0742aa525b22934ea2b3313f02fed39b71c4a014 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 16:16:56 -0500 Subject: [PATCH 028/122] Fixes DBCore Recovery --- code/controllers/subsystem/dbcore.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/controllers/subsystem/dbcore.dm b/code/controllers/subsystem/dbcore.dm index ad4691564c..cf3efc3bc3 100644 --- a/code/controllers/subsystem/dbcore.dm +++ b/code/controllers/subsystem/dbcore.dm @@ -23,7 +23,8 @@ SUBSYSTEM_DEF(dbcore) var/failed_connections = 0 /datum/controller/subsystem/dbcore/PreInit() - _db_con = _dm_db_new_con() + if(!_db_con) + _db_con = _dm_db_new_con() /datum/controller/subsystem/dbcore/Recover() _db_con = SSdbcore._db_con From 9033f9f0661d5f0b78bf58408a146e03f231b6ce Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 24 May 2017 16:19:03 -0500 Subject: [PATCH 029/122] Closes bold tag in bombing list secret --- code/modules/admin/secrets.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index eabc7d3fd0..e569eacd2b 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -174,7 +174,7 @@ if("list_bombers") if(!check_rights(R_ADMIN)) return - var/dat = "Bombing List

Cease any terrorist actions as soon as possible, unneeded property damage or loss of employee life will lead to your contract being terminated." + if(owner.special_role == TRAITOR_AGENT_ROLE) + fail_msg += " You no longer have permission to die. " + else + fail_msg += " The truth could still slip out! Cease any terrorist actions as soon as possible, unneeded property damage or loss of employee life will lead to your contract being terminated." reinstate_escape_objective(owner) traitored = FALSE to_chat(owner.current, fail_msg) @@ -238,6 +246,10 @@ state.add_steal_targets_timer() if(!issilicon(traitor.current)) give_pinpointer(traitor) + //Optional traitor objective + if(prob(PROB_ACTUAL_TRAITOR)) + traitor.special_role = TRAITOR_AGENT_ROLE + forge_single_objective(traitor) else ..() // Give them standard objectives. @@ -289,11 +301,18 @@ /datum/game_mode/traitor/internal_affairs/greet_traitor(datum/mind/traitor) var/crime = pick("distribution of contraband" , "unauthorized erotic action on duty", "embezzlement", "piloting under the influence", "dereliction of duty", "syndicate collaboration", "mutiny", "multiple homicides", "corporate espionage", "recieving bribes", "malpractice", "worship of prohbited life forms", "possession of profane texts", "murder", "arson", "insulting their manager", "grand theft", "conspiracy", "attempting to unionize", "vandalism", "gross incompetence") - to_chat(traitor.current, "You are the [traitor_name].") - to_chat(traitor.current, "Your target is suspected of [crime], and you have been tasked with eliminating them by any means necessary to avoid a costly and embarrassing public trial.") - to_chat(traitor.current, "While you have a license to kill, unneeded property damage or loss of employee life will lead to your contract being terminated.") - to_chat(traitor.current, "For the sake of plausible deniability, you have been equipped with an array of captured Syndicate weaponry available via uplink.") - to_chat(traitor.current, "Finally, watch your back. Your target has friends in high places, and intel suggests someone may have taken out a contract of their own to protect them.") + if(traitor.special_role == TRAITOR_AGENT_ROLE) + to_chat(traitor.current, "You are the [TRAITOR_AGENT_ROLE].") + to_chat(traitor.current, "Your target has been framed for [crime], and you have been tasked with eliminating them to prevent them defending themselves in court.") + to_chat(traitor.current, "Any damage you cause will be a further embarrassment to Nanotrasen, so you have no limits on collateral damage.") + to_chat(traitor.current, " You have been provided with a standard uplink to accomplish your task. ") + to_chat(traitor.current, "Finally, watch your back. Your target has friends in high places, and intel suggests someone may have taken out a contract of their own to protect them.") + else + to_chat(traitor.current, "You are the [traitor_name].") + to_chat(traitor.current, "Your target is suspected of [crime], and you have been tasked with eliminating them by any means necessary to avoid a costly and embarrassing public trial.") + to_chat(traitor.current, "While you have a license to kill, unneeded property damage or loss of employee life will lead to your contract being terminated.") + to_chat(traitor.current, "For the sake of plausible deniability, you have been equipped with an array of captured Syndicate weaponry available via uplink.") + to_chat(traitor.current, "Finally, watch your back. Your target has friends in high places, and intel suggests someone may have taken out a contract of their own to protect them.") traitor.announce_objectives() @@ -301,6 +320,8 @@ /datum/game_mode/traitor/internal_affairs/give_codewords(mob/living/traitor_mob) return +#undef PROB_ACTUAL_TRAITOR #undef PINPOINTER_EXTRA_RANDOM_RANGE #undef PINPOINTER_MINIMUM_RANGE #undef PINPOINTER_PING_TIME + diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 4673b572a8..6ad37815ca 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -85,40 +85,65 @@ character.make_Traitor() +/datum/game_mode/proc/forge_single_objective(datum/mind/traitor) //Returns how many objectives are added + .=1 + if(issilicon(traitor.current)) + var/special_pick = rand(1,4) + switch(special_pick) + if(1) + var/datum/objective/block/block_objective = new + block_objective.owner = traitor + traitor.objectives += block_objective + if(2) + var/datum/objective/purge/purge_objective = new + purge_objective.owner = traitor + traitor.objectives += purge_objective + if(3) + var/datum/objective/robot_army/robot_objective = new + robot_objective.owner = traitor + traitor.objectives += robot_objective + if(4) //Protect and strand a target + var/datum/objective/protect/yandere_one = new + yandere_one.owner = traitor + traitor.objectives += yandere_one + yandere_one.find_target() + var/datum/objective/maroon/yandere_two = new + yandere_two.owner = traitor + yandere_two.target = yandere_one.target + yandere_two.update_explanation_text() // normally called in find_target() + traitor.objectives += yandere_two + .=2 + else + if(prob(50)) + var/list/active_ais = active_ais() + if(active_ais.len && prob(100/GLOB.joined_player_list.len)) + var/datum/objective/destroy/destroy_objective = new + destroy_objective.owner = traitor + destroy_objective.find_target() + traitor.objectives += destroy_objective + else if(prob(30)) + var/datum/objective/maroon/maroon_objective = new + maroon_objective.owner = traitor + maroon_objective.find_target() + traitor.objectives += maroon_objective + else + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = traitor + kill_objective.find_target() + traitor.objectives += kill_objective + else + var/datum/objective/steal/steal_objective = new + steal_objective.owner = traitor + steal_objective.find_target() + traitor.objectives += steal_objective + + /datum/game_mode/proc/forge_traitor_objectives(datum/mind/traitor) if(issilicon(traitor.current)) var/objective_count = 0 if(prob(30)) - var/special_pick = rand(1,4) - switch(special_pick) - if(1) - var/datum/objective/block/block_objective = new - block_objective.owner = traitor - traitor.objectives += block_objective - objective_count++ - if(2) - var/datum/objective/purge/purge_objective = new - purge_objective.owner = traitor - traitor.objectives += purge_objective - objective_count++ - if(3) - var/datum/objective/robot_army/robot_objective = new - robot_objective.owner = traitor - traitor.objectives += robot_objective - objective_count++ - if(4) //Protect and strand a target - var/datum/objective/protect/yandere_one = new - yandere_one.owner = traitor - traitor.objectives += yandere_one - yandere_one.find_target() - objective_count++ - var/datum/objective/maroon/yandere_two = new - yandere_two.owner = traitor - yandere_two.target = yandere_one.target - yandere_two.update_explanation_text() // normally called in find_target() - traitor.objectives += yandere_two - objective_count++ + objective_count+=forge_single_objective(traitor) for(var/i = objective_count, i < config.traitor_objectives_amount, i++) var/datum/objective/assassinate/kill_objective = new @@ -142,29 +167,8 @@ assign_exchange_role(exchange_red) assign_exchange_role(exchange_blue) objective_count += 1 //Exchange counts towards number of objectives - var/list/active_ais = active_ais() for(var/i = objective_count, i < config.traitor_objectives_amount, i++) - if(prob(50)) - if(active_ais.len && prob(100/GLOB.joined_player_list.len)) - var/datum/objective/destroy/destroy_objective = new - destroy_objective.owner = traitor - destroy_objective.find_target() - traitor.objectives += destroy_objective - else if(prob(30)) - var/datum/objective/maroon/maroon_objective = new - maroon_objective.owner = traitor - maroon_objective.find_target() - traitor.objectives += maroon_objective - else - var/datum/objective/assassinate/kill_objective = new - kill_objective.owner = traitor - kill_objective.find_target() - traitor.objectives += kill_objective - else - var/datum/objective/steal/steal_objective = new - steal_objective.owner = traitor - steal_objective.find_target() - traitor.objectives += steal_objective + forge_single_objective(traitor) if(is_hijacker && objective_count <= config.traitor_objectives_amount) //Don't assign hijack if it would exceed the number of objectives set in config.traitor_objectives_amount if (!(locate(/datum/objective/hijack) in traitor.objectives)) From 3c60a6c82f1f2d3bec178701f8811a9c8ea59fc5 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 25 May 2017 10:37:50 -0500 Subject: [PATCH 044/122] Aux base plasma turrets now have range equal to the range they fire in --- code/modules/projectiles/projectile/special.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 57b339178f..867d1b8c8f 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -242,6 +242,7 @@ //Between normal and advanced for damage, made a beam so not the turret does not destroy glass name = "plasma beam" damage = 6 + range = 7 pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE From fa4e0e61d6efd55f9404611127bee89259d8c898 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 26 May 2017 09:05:52 -0500 Subject: [PATCH 045/122] Fixes adv camera leaving obscured images --- code/game/gamemodes/miniantags/abduction/machinery/camera.dm | 2 +- code/game/machinery/computer/camera_advanced.dm | 2 +- code/modules/research/xenobiology/xenobio_camera.dm | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm b/code/game/gamemodes/miniantags/abduction/machinery/camera.dm index 1e725bccba..554d992987 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/camera.dm @@ -70,12 +70,12 @@ origin.vest_mode_action.Remove(C) origin.vest_disguise_action.Remove(C) origin.set_droppoint_action.Remove(C) - remote_eye.eye_user = null C.reset_perspective(null) if(C.client) C.client.images -= remote_eye.user_image for(var/datum/camerachunk/chunk in remote_eye.visibleCameraChunks) chunk.remove(remote_eye) + remote_eye.eye_user = null C.remote_control = null C.unset_machine() Remove(C) diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index e3637d3430..1719695cf5 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -151,13 +151,13 @@ obj/machinery/computer/camera_advanced/attack_ai(mob/user) var/mob/camera/aiEye/remote/remote_eye = C.remote_control remote_eye.origin.current_user = null remote_eye.origin.jump_action.Remove(C) - remote_eye.eye_user = null if(C.client) C.reset_perspective(null) if(remote_eye.visible_icon) C.client.images -= remote_eye.user_image for(var/datum/camerachunk/chunk in remote_eye.visibleCameraChunks) chunk.remove(remote_eye) + remote_eye.eye_user = null C.remote_control = null C.unset_machine() Remove(C) diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index ff7c3f6340..f43a89eef4 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -96,12 +96,12 @@ origin.feed_slime_action.Remove(C) origin.monkey_recycle_action.Remove(C) //All of this stuff below could probably be a proc for all advanced cameras, only the action removal needs to be camera specific - remote_eye.eye_user = null C.reset_perspective(null) if(C.client) C.client.images -= remote_eye.user_image for(var/datum/camerachunk/chunk in remote_eye.visibleCameraChunks) chunk.remove(remote_eye) + remote_eye.eye_user = null C.remote_control = null C.unset_machine() Remove(C) From 4cc3f81b3e12584f99630589a3b0d61eb0601dc5 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 26 May 2017 11:12:09 -0500 Subject: [PATCH 046/122] Moves attack chain proc from global to obj/item --- code/_onclick/click.dm | 4 ++-- code/_onclick/cyborg.dm | 4 ++-- code/_onclick/item_attack.dm | 10 +++++----- code/_onclick/telekinesis.dm | 3 ++- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index a8e2681dc9..5b26067725 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -119,7 +119,7 @@ //User itself, current loc, and user inventory if(DirectAccess(A)) if(W) - melee_item_attack_chain(src,W,A,params) + W.melee_attack_chain(src, A, params) else if(ismob(A)) changeNext_move(CLICK_CD_MELEE) @@ -133,7 +133,7 @@ //Standard reach turf to turf or reaching inside storage if(CanReach(A,W)) if(W) - melee_item_attack_chain(src,W,A,params) + W.melee_attack_chain(src, A, params) else if(ismob(A)) changeNext_move(CLICK_CD_MELEE) diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index c52b3441db..3bb15c1947 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -71,7 +71,7 @@ // cyborgs are prohibited from using storage items so we can I think safely remove (A.loc in contents) if(A == loc || (A in loc) || (A in contents)) - melee_item_attack_chain(src, W, A, params) + W.melee_attack_chain(src, A, params) return if(!isturf(loc)) @@ -80,7 +80,7 @@ // cyborgs are prohibited from using storage items so we can I think safely remove (A.loc && isturf(A.loc.loc)) if(isturf(A) || isturf(A.loc)) if(A.Adjacent(src)) // see adjacent.dm - melee_item_attack_chain(src, W, A, params) + W.melee_attack_chain(src, A, params) return else W.afterattack(A, src, 0, params) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 24f6559dd6..72694a434c 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -1,10 +1,10 @@ -/proc/melee_item_attack_chain(mob/user, obj/item/I, atom/target, params) - if(I.pre_attackby(target, user, params)) +/obj/item/proc/melee_attack_chain(mob/user, atom/target, params) + if(pre_attackby(target, user, params)) // Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example) - var/resolved = target.attackby(I,user,params) - if(!resolved && target && I) - I.afterattack(target, user, 1, params) // 1: clicking something Adjacent + var/resolved = target.attackby(src, user, params) + if(!resolved && target && !QDELETED(src)) + afterattack(target, user, 1, params) // 1: clicking something Adjacent // Called when the item is in the active hand, and clicked; alternately, there is an 'activate held object' verb or you can hit pagedown. diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index c7ad66440e..0ca0fb31a9 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -124,7 +124,8 @@ if(!isturf(target) && istype(focus,/obj/item) && target.Adjacent(focus)) apply_focus_overlay() - melee_item_attack_chain(tk_user, focus, target, params) //isn't copying the attack chain fun. we should do it more often. + var/obj/item/I = focus + I.melee_attack_chain(tk_user, target, params) //isn't copying the attack chain fun. we should do it more often. if(check_if_focusable(focus)) focus.do_attack_animation(target, null, focus) else From 11c74ee6b44afd6d50f6c2137533262f8dcbd6b8 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 26 May 2017 11:13:15 -0500 Subject: [PATCH 047/122] Adds cycling delay to PKborg dampeners, fixes dampener projectors leaving fields behind when server is lagging --- code/game/objects/items/robot/robot_items.dm | 27 ++++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 97a343311d..5bca9cf535 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -504,6 +504,8 @@ S.change_head_color(color2) dropped = TRUE +#define PKBORG_DAMPEN_CYCLE_DELAY 20 + //Peacekeeper Cyborg Projectile Dampenening Field /obj/item/borg/projectile_dampen name = "Hyperkinetic Dampening projector" @@ -526,6 +528,7 @@ var/image/projectile_effect var/field_radius = 3 var/active = FALSE + var/cycle_delay = 0 /obj/item/borg/projectile_dampen/debug maxenergy = 50000 @@ -545,29 +548,31 @@ return ..() /obj/item/borg/projectile_dampen/attack_self(mob/user) - if(!istype(dampening_field)) - activate_field() - active = TRUE + if(cycle_delay < world.time) + to_chat(user, "\the [src] is still recycling its projectors!") + return + cycle_delay = world.time + PKBORG_DAMPEN_CYCLE_DELAY + active = !active + if(active) + activate_field(user) else deactivate_field() - active = FALSE + update_icon() to_chat(user, "You [active? "activate":"deactivate"] the [src].") /obj/item/borg/projectile_dampen/update_icon() - . = ..() icon_state = "[initial(icon_state)][active]" /obj/item/borg/projectile_dampen/proc/activate_field() - if(!istype(dampening_field)) - dampening_field = make_field(/datum/proximity_monitor/advanced/peaceborg_dampener, list("current_range" = field_radius, "host" = src, "projector" = src)) - update_icon() + if(istype(dampening_field)) + QDEL_NULL(dampening_field) + dampening_field = make_field(/datum/proximity_monitor/advanced/peaceborg_dampener, list("current_range" = field_radius, "host" = src, "projector" = src)) /obj/item/borg/projectile_dampen/proc/deactivate_field() QDEL_NULL(dampening_field) - visible_message("The [src] shuts off!") - for(var/obj/item/projectile/P in tracked) + visible_message("\The [src] shuts off!") + for(var/P in tracked) restore_projectile(P) - update_icon() /obj/item/borg/projectile_dampen/dropped() . = ..() From a84bcdd42ea6abecdb182f69c27fe525a02611c1 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 26 May 2017 11:14:20 -0500 Subject: [PATCH 048/122] Adds goliath cloak & a recipe (Lavaland PvE primitive item) --- code/modules/clothing/suits/cloaks.dm | 18 +++++++++++++++++- code/modules/crafting/recipes.dm | 13 +++++++++++-- icons/obj/clothing/suits.dmi | Bin 105013 -> 105553 bytes 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index 1a8c96e802..e90c750d12 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -50,12 +50,28 @@ name = "captain's cloak" desc = "Worn by the commander of Space Station 13." icon_state = "capcloak" - + /obj/item/clothing/neck/cloak/hop name = "head of personnel's cloak" desc = "Worn by the Head of Personnel. It smells faintly of bureaucracy." icon_state = "hopcloak" +/obj/item/clothing/suit/hooded/cloak/goliath + name = "goliath cloak" + icon_state = "goliath_cloak" + desc = "A staunch, practical cape made out of numerous monster materials, it is coveted amongst exiles & hermits." + allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/internals, /obj/item/weapon/pickaxe, /obj/item/weapon/twohanded/spear, /obj/item/weapon/twohanded/bonespear, /obj/item/organ/hivelord_core/legion, /obj/item/weapon/kitchen/knife/combat/bone, /obj/item/weapon/kitchen/knife/combat/survival) + armor = list(melee = 35, bullet = 10, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 60, acid = 60) //a fair alternative to bone armor, requiring alternative materials and gaining a suit slot + hoodtype = /obj/item/clothing/head/hooded/cloakhood/goliath + body_parts_covered = CHEST|GROIN|ARMS + +/obj/item/clothing/head/hooded/cloakhood/goliath + name = "goliath cloak hood" + icon_state = "golhood" + desc = "A protective & concealing hood." + armor = list(melee = 35, bullet = 10, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 60, acid = 60) + flags_inv = HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR + /obj/item/clothing/suit/hooded/cloak/drake name = "drake armour" icon_state = "dragon" diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 72088961de..a489d0fb6a 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -337,9 +337,9 @@ /obj/item/weapon/restraints/handcuffs/cable = 1 ) category = CAT_MISC - + /datum/crafting_recipe/toysword - name = "Toy Sword" + name = "Toy Sword" reqs = list(/obj/item/weapon/light/bulb = 1, /obj/item/stack/cable_coil = 1, /obj/item/stack/sheet/plastic = 4) result = /obj/item/toy/sword category = CAT_MISC @@ -398,6 +398,15 @@ reqs = list(/obj/item/stack/sheet/bone = 4) category = CAT_PRIMAL +/datum/crafting_recipe/goliathcloak + name = "Goliath Cloak" + result = /obj/item/clothing/suit/hooded/cloak/goliath + time = 50 + reqs = list(/obj/item/stack/sheet/leather = 2, + /obj/item/stack/sheet/sinew = 2, + /obj/item/stack/sheet/animalhide/goliath_hide = 2) //it takes 4 goliaths to make 1 cloak if the plates are skinned + category = CAT_PRIMAL + /datum/crafting_recipe/drakecloak name = "Ash Drake Armour" result = /obj/item/clothing/suit/hooded/cloak/drake diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 27e02e2e7ccf4c80558ae376ae0aef362fb7a2fb..3a59c48c2e194df8a74f430b0b43c56f84ebfe5e 100644 GIT binary patch delta 10752 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 delta 10186 zcmXwfbwE?!`|w69Em9&3q$Q=LJEW0D7)lBV2-2_%3L+pNC0(L)N`rI>NSEa3(OrYF zz4P;ZfA^1j&VBBQd!CLv)<95OL-2(S99+fjhEIQ;4N?5H7=%RoT_Wda<^iy_spLz` zs(!~0P5AXq_~1ns;Pj}lm^TDtRX31js7`bzB$Oh)@&QqlrZ}C7f`W^l3(M%i2g!H4 zIfXKk7uNN440Urg&0LE2?HCkP=cZ$Vw?6T{45v`UQU7gjTViOSv4~vTXfcd`gm)5o z_v|(Z8sz6wBq?rGv6B&S(1^H*Eof>oh94B%lJ3#>my^Ql0RI@u#H6I{^8La>E))v& z&W^Y^KvqJ+RPH-sYb+1MKhr0mie$`<-aW+pZ4ce$XtK=unC~(_+$2y#*uHp@xduYZ z4{E^_(uE4EZ}DsJZeDLFy?b*DM}C3majKA#lJd8J#L`Js^cU)!m$e3F8iVYWL+1@B zpz6r%iupnyu+`P3`MN^(>S43{^1hov3`FMH&T{U;Q5T{{gd71s~^|{Mp-Qp3z8*E>ldWVX`y2_MJ)am}%*w}qq zTHLJ}Dh@5jOKDb1yEjRWuU@@sHvDB@OWMU=h>Ja9hHCmx@gIS$OaZJ&4-%9(!4a>3M_fM!m+u*5GW8ax9VsGTCSBb4>+^+bXQP3M ziO+BxiX&lrFOv;1RG7}WTq%B!imFo_iiUjnNZvW-h?ryGFDNX0AOM9-Z@5U^5Q|Q1 zm*S^I$-TL9w?sNypfh%(rE%rg(n)udHU_N#PHC>tZrJgam_-T)22{+qLk@E}^!?Qm zWY)UprId&%sc7B#X(f!;8w(i;y+if;&mT5EzUU`5y*2X$zSn2l#t3}6Xquo3OXsy+ zt;*FN4yXm$7ExX-E)#6zFll_;;QjmeXY}6M+N5IX+9sVa80@c$Sdi)g0->g-NAUyr z@x#))Ex;U|`nTGFysE{YYQCht{H)e4SwGMLuKj$XMI&w)dW8*FBxZ8v~bu`Avi1k@XrKs zmJu2;VT6-TdmB$hKMG}GlO}PoLX7|gCEeJUG6f^e&nG4dx2zmrhnNIjaEB=HbpW6c zg^q`^fhpVdx8@@tN0Ai;mh0MziaQByO1fw&y7JAJ7stnWMg0dSNY&L00y;yL!wgP& z9@_i&za%EwHlVr_eJMwOk&bgy==uzjGsP*ov}H|B%_*Z<*2sH~Ls3h(guop>x+5)- zLy#cbZG|vdIIe)el<~Cv(gUo_luSKycNhHeR@pjfChN(G zIfTF3eke`scC)$Xs<60H-?;Q~L-C1!a)<9hH`R%pq<*1vpyl_gwO`CJAc$DO?GHaV zrZA-TjIlTi#}^?jYU$qH4w%bctEIlo4%u9~JU;GNac@|#-#I+g4GNOsNaz=2&H05! ztrkrpyn-IBzDAb+ej1NB-?WHgfLzr#|H4JNd~S82aBHni$zb(EWPGfg5dU3E#d&96 zp4s^gDHeNsOO2NFV$zn5cKgiCJ{jFUKdtKzCZsJbv{f|l+kQ7_0FBSS(`Wq(veoHj)xE zc-b*}EFwJ1SeSpWD&-RE=LH$RhC$HLfB3yKM116S3UtK=#8f$V)$jkr@ej`caF|Ub zvfB|@9t5xljr^u(YN{R>D6L4O#X*HtS*}l0Myo%{(`s><@>liB(X|Rsd@qy4DWU%2!4s;#^`rE_kueSOU#1FYC3v`w9#GR)W=e z<1{8#e(YEk=Ae!9JvP@2iRHuw6(oiykNe!}?Q!SDK>D7O!6~jGgnM!V&)JUktt{|y zW^k}%u}%sCfdqXlKW|H1_Yt3aJWHH=Cc_7R%IrQEp}0}JS(+StaME^w86ClOFTdGJ z@=QjQq8Jz$yf(RIDcHJ+Jbpw`(+tJyXwH9UMm zs_eq1T0&AyDo_~G@BStNT&&=}4|HoN2I$cC5!QHPu&2piGVaTO%iy;UXG$S8ji@ol z%e;^LRVkL&@ad|VOw7%T39nwe-qsz!f?fM5k{`gJDE)f-ai5;M|Fwcl}pVC zgI=sWJU?7p%M(zVnx5W?C}N|9AkK=YGf`#{5&L{KW|*zG?dvoQdhuyZSzqvn;Eb^s zm~vlW*8Ct<6yN`SzwKvm<*S~%GK@d%i4v2OJ=dbecY1?`@$vCNzfOmxhDXHT8#8@D zDTSrYFWL=*weK)&!7hQCz~lzW`|3CI^Er9Jna39w2L?Ai{Lt~B(dk?GwU*_nT<8O? zzn67$-d+|>%zaL^fyiafzLalK-Ma@e zI(D|eNfv+((?SDZHms)01~p~rsWndvoi-{yA5D%7G?C!BZO@AHzmO|iV6ce>2?$h> z)z3U_URew&*wAbumt!PaEx_H1v>Lfad`HzvuCDeVd%;93N9X5LNzHZW3U1iG^xf#* zUe&;$ppgb;_i~`n^q4|uKbY-lGQJ}2&#^o4=s8gIcDAA zqv@Cxe)&#*b-h1fQXhOP+Y(s76=C zr)L2`q2wd#X6E<)XjXnoX*cW3gbXE>FV`L+a4v zPW&J}AL*o|T3&WXsT`4v`3z4&$B{!P!JKZH7w;egl`GqwvuhO8i<- zrQ!fWmFQcVX`^!$?>%2VcV2$a4aI67vUOl{v#Hc)Da(g@Fj<}LUWD?axEI!ezgog# z>wOAHT0FOT;{JiZr%%xL@F%rlU#qhvGc$7g7NOYxjcyFRb96}yMx$3Ko_ zLOm$0$%v_@bT}32epD4{ptCgpt?W@W7MCv94u|rCu}k*oT7BUCmALkT#|cUwTRNK_6}FI1U8u{jK6Z#QK2`z{&hxjqH|A$?9_+ zs<_L`E7GlKj~0;cZ5ZNmQS7xr0nF631@_)|S-g!Bl-`C^TkGiZLx>7u(W3q$E-me` z!Sm;qOHquqUSV$z0aq$e>#ERK{^s{pHhqzGu|EdO+f80f7h`_(I`GI+rHi?ZL$a7g z!Z=*Z!wP zh}v#HmOu`O2NIhP8oJ)Vkte+8l_gB6d~KQKI}0J$Q~phRE;}>p(!~3QFu1Kh^vBQf zmNuWb=N3Gud^ZcmJFZoxmA=r$>!)_k{HgHeFJCAqDJjRwTfcpKzq8|1kIrs;C}WWM z*L87PM@Q`q;O0!&)nd8gr7$sR{ z(>%D_zHH&T5`)P0nb$t5PtKyOD6hb8H=gyF4gpNvKulTpyW2*9xi=?J3qh!@UC`b3 zq6vU+>~~A&RCTAYFfgP9`1Zd!k-0?|<%Y6*h#QM$$% zcsXy^cN5V;l22q_eTx1xb(2{tp`q_bsZV9RT)poD>Q?Q3V2g(rxxRi0`aRT=ytS21 zMBJRZu#kGa%fSioKIV}tXz*nm4vH26aAZw?D!-6BmfVYuc0nOjDaaH%6*Y92axROw zN^&bBAi+GJq>ssUzc zX-Vq(*Ya|3j5X|)knnqdWe+Z?i;VGkRg(R%c#9q~txx`gPwBz@$)F|7I&1mEr)eXy zmStKgf)T-$6wd~p`39{ht`d;FYR@r5U!N!*Uwmtel#{+l*_x4yo1|p*-HldBOiZGn zpy>>~lW?^+F*T6Hs&>K_$jj>k*s_ zt2h&hfMW$q=*5F?JVBVsCI7{eU1#LH=17A|Yd(rq2{(d-bTSE6ab(@X&$Ij7%0dv% z_kT33tQ0&sk+d=x7#w8f#Msza@fqD;F<2>lawbc3 zmuNIepzs+K2#`qrfP=H(fvHV`W-;c<@rMRJD!BWoK;FFi1d3(}yiD|eR(Ltp&0pTW z8YCJK5mDR;Md!{5yrEFmd5w4~XfHiPE}oE>$VPUBteV_91o}p7Uu~~m zHlFNM?G5#>Oo+obC;K09z$KI9WY3{jgm~^lTZ27amm@!lzb681YdSAWYCI1ANbP4b z>iK+ufA!j(j_9ag8o2R284x)yg*-5YxZo|RImu2&VZD|2`K0v{HEQ-m0XGEhiIzgE zCXX=igu^z~Y}p{eR4vmo;~cvo=<^HX66%EhNhj}7>TevSqYweuF;rPa<;hLbY*T#f zHf0`k1ZF3uudnYUSAfWr;~T(4@^qR3XUo2;1}3#>8zcP-MDiXd0rzPuSoyuEqnI9! zP@9A@IN^ziiRr8N=rg7`+Vp+81fKYZYR{CKsRUN~jUA~Oh6UHaMi5i9s=9g*F*pP>6GA|f|G z|Kq~K3)iOYe17=Z@X26gjOT8i^C!(_#^CW^F5lvXKoW7)8A$@V>_YiKZ0^ZSh3VsK zHj;KZE(*=#5tR4vLxR2{@gM~=>N{~eT7mEg5A^lLd`ez`O-ZfCuVul6{1LG;%w_jY zMXn#{F%J)YGEHYJ;XanlxA*=0{IG46&!JTf%+id2OZuYWh&p+t3$}A#>J(^BmubZ3 z&8$EBtO=@yrVfp+19(=~yMj2O0?{O$<$I4>4~Y>^VrY8!zJ^Wg#z75U{L+Eq(1||I zB&Xe99d1lMp3t2i`wIG&=e9c8ImA`1Bh@mE84p{!sSJZ564pz)USN!44>{Y>dxE8>oevU$2M@rtqPUVt%bq@p@CGj;YyK>JLe z+7+^xtec=&GIn%exaJL(f2zdAypjL-C-ZmF`^FNZdNjZFn8+V(czkMV|F;dk!8lL1 zLv3T@uMY@E^MT~(;7xX-ae`X6!MAV&B?E)_hUOelupA*?Miu;UcL!ve@kQRsDvM=p zlmw*jreFc!e0q3K@%4w!7@2~1xH&FvwXJwL=ZAj`%2sIU zZNk1u6qa(?Yz%B%sa`A}5N>`+6H9sE%ovr0l40K{*v=eH-cA+nf0{AaNei__5^7dW zO$)squysi?3eIV&yDlA=nK&6y#%497y!S>2*-1$Okd~`e?DPN#3t*OzxC-okXATR} z<_2X8Wc)4O<42+uLLM&FYYNPW6dE5mA3D@N#>GApV{+t`HUh412_<}watzGO`i+!u zwpJ{Drx-$w%U@_%SuydLlut&7eEM z1iV&LgHJv~W}7#d9Ugm6OWa;#39GCISAKge=`VAli6ynuxg?@%?~m3-Hq@coZsKxs zW*$UWn+t)p!aiTYTbc2QLi$HydwU6VvSqcky{MzLwGligr5Wbq>K_)D4&FLxZeoXQJc z9d+x!l`n&@WdK*%>q{86j|I7x1nM8o-Av4So77m~Tm|-+Z(M8(?|l1~w@tgKdFN@o z?#N*s1%yg%IEFFsqBEObI8dSudL(jNevL1D(3+rddwo1HH&SI*hIa$t3tlP9208IW zklfiUF6r~QIivT=t}vZ1g5c;5%28n*(m*jA0;TksEO4u%w+1c=Dd`4Q_(#8WM{{s+ ze6)aA<~84dU17E#V2pFlMD?;wy>CufSy_?$8Bdiz)^S~iAN0GtCMPwVPj^^XUE98d zvbITQtQpB58#&VY69CSHgoG|^OjkAQf=vw84=gpjO*q(`nMOtpM4fGfL^FtQ2f1ao zL|{8rPpa!Qg|zcKK0`1h!Q~6&GPjN;vf)`UL-Bi{-dKPj;kA46y3?QGKZf?hDMcuh zC#5zSp@h8tuQMn=6awAzmLdyh7G$PS(Z4#F*Zw$+uAK$WR~(GkEgBmgn!`N1;#i6=ObgYb3a za{URo7(s2wWy^C};ax`BSUFn$zi9>Y3ezh>P=T>sogO)T1m#g}L$z-sOamG5fXS+1+ccjxa7Yn=` zst}}>@Xi{?4HJukdMgo3@nqItb$lc2OQ`i^z*=E)HH$3Kp2_Z?3__pafo+?V6smg! zzcW&c0&C7#!OQL<3a6na$0xl@e?zk?1gw^n8mx?edszH%%?eK4)6=7@riOde%lY=|=En1KQkteh!$}OKyLJ27{&f1yGl!Wo z(ph}a(WEe7aKDGRjVW#bo(&j-C0d+0l>``iy8sv%p3gB|X7<7DIhAJ?5E#kR2klz& za!Ne;H}H6uvgqpS${lmaBwHbnSFqvik|iEnLCg2*^p~H% z`|n^q=C9cB*m|MCqt_0fUWmrQAj^;5@ea=9z(KF(F^=2Ov1kZwN}%@DHS%TsJS7>S zwzl?19^lPInWgyO{j(PFoJA#P&+}hVX056)nC$HAEC~2sP(Tc-p4D=6YG`pSu;HPVxV`?vBWB^zaXE@eVTu6NgkA%uHjz z-g{3~UVm8q33ZUj1B14N(@}+vOMcsa`UtmI*tqkdoO|#S@!QDwXn4Hf=HmfkV&rBX zdEu!za6GIz5{2TLGMHrpAe2R*i zfXJ74=zV!|R~+kLL{^{3*%jHX^=gagz<_w_R}y(&1?>NdYmg>-_IaD^*;(G7pf%^E;Rk&S;;pW=Y|9I}L9K7^gy6l0 zl*?%K%6+Wb*ij-uf1?G5fUmB7g_3Big>ZL{Y+pdNuqHWnP z5r|!(-_H(4$hmKyq-s6n()O}w4Z#NeJqNaiEsei)OWHu*&5Qf}!JqTHWQ5%?Z^1!< zzZz~Qv-VKDzb)w%kx@w%B=2w;(RJ+a1KOuz zqe4@@PJK>?%;p^8sDHX+d&w=)>Y17=zC68PbG>_hmz)O7!gsKbHA|B|U_2l+R3RzJ zhMjt#D*l3gZkSfL4Kw^u+E?!mF)>w0NSR4uMlz_>xa1``_&5lv*Bisgqhsd8&Bqt! zGoE@p&KrMw+c?L)v}^$Y9y4>y+?M;{4+MQ-V;H`FKE#TrTinT?!OstpVobj(RH#kT zV`3qnIekYJg~H_&2P_3}fo#^VVZyu770B&^{rj?)TrEtE5v!}Z&1Xy!YmU=L44ivi zeKUkT4817U2tNA89C@3(st&-x;QL%!v+!_4h@}5P4;!@WRTURjQg9r-5hdurAzTUw zMAyZIms2@%$Nc;N2R7Co-89WvUbZeS zE;gKLHgPh6wmz4ZSPO;Sw(mRL%fSTp-+D}FhYU%9=IT|*?yv+2xVXY6Sr}o=YlQ4k z^9N1oow3P+TOsf`q#Jq0Ic^|k1JScm%1)BvN0=R0nNo3y$ilh-uaR&3T-rg$gCn7uk4_rU1ErkcPcel6|@4|I0p}%hh z(4zy^f@x#@K|PSHpsz`8tvKz#uOkk?4+RFf23a!^X9fOD>aZ5cf?;y)q^w(>FNA#T zxAhn#3$`07vJx$?o88(sMAJ_Zx!ZqzUi|m8fStA-z?v03`^;${oIlq>={)5`h;WEb z_1;Gk86rJiVu$JES=8Btw^B72hu5sh@N;V*iB%+ym3vP;?qC0XN>xmrTqhYoj7doq zwr|=$or&Lj7*J7enSS~J_2V(rbK4ExYB`2;9cbyIF=;C-2Qw{PDn zD=X^(`uZIaRGfu{g$)$KZcp5o<#jUjNP`iZ^<3zN1_`o<5+K*#I7B<%?eCsjH}eKR zFc)jzKcDtACy;RNJN^*gQ*qD~-gpW*Jc~l_Z_xIn^&HZF3zXq&1wmQ`d80vjLD7%Xb|itx^kziz+~? zuzj^z%8)&_#{MZLW?BY>HL>@psb4>N;>w_@tQ@MYt-Z0_@qtzu>FfZyPeXI>-o0^t zYIiR$(c|M|S1GFHVNY92(&8yRAF$uK7a(2 z@=7S8_IydC#m;V-2O{ib*wjkQ>AvM|Jqk`?w=%J^FlYKA>xF`bz zE}EPmT7f;$oI}oXPqEdGOHXJTy@L9E7UJrl6?JrGsZ(Xok;e1GQW^u!+Tt{gv$}Sv=#o z%yI8L?Pp!?qS22!UUM(=6tvCYTBHr)6EvYMbNRsy<#K{<`OQGLH_tt$nT0(sHt7Qm zq$pDyxzl^d;J4R9{UPQ%1<^*Pi`cB@0@Z}K8-E=iEHk%D8iXxJ1PBh=KfjB*9b@Vr z(#Q1ccpd1Wop*PWR`WRyh(m7>wJv~GrZ>B%ka)c0{YDdmTUtd?6mkN3GwP|4n0P^p!R0tbBSdz?l=+oWxoH0AXzVvlU)7NVBPHx`=>f$ z(3w_BWQnA1jJ}8WIw4!!J7KF`0X+GWINHXLzN9)k-RQxoCiI-YTYLf>*Kz4mxB2JT zJeZv}<#*AmU_Sv+IG@sJdGxab*5ijBcjO;!t9}Q5FjAsdmLX*Nq4hjKKd~ZF=oTi8 zBIu@=JcPonpjig=`b|*F_(g8*?N!H`t^Gmw&mV-1jhFH10TosRqMt?=*Af~+u*)Ac zm(WYT`%Di+a!Stb5bEaX5KkBhoBig&g|Lh0ewtJni~I_G}Xl0*zkLJ zxEGtfv@dXecr)u!$Z3BO;P3liu_@Uw87vGWlOPiNkTVIrQ9+H!(5v*hS~G^d?u)&S z9nMfs%7t12lqG?^S|<# zhWJKlI9PO!p~`&M{PAR7e^E&_cy!cSP2yo$mQC&Sn4_DBd&+<3RsZ~5iM;*OI{Fbi z3t6yR-KO5Y3lY$eGiTl>Zs7@1*Z5?k>;Y`!fBCQK#^5o{9{l@AZ$QUnH|7vvc2OVZMAlTm^kU+(>x8nSd zU?*ormJqQ2)59x`6Wt6U$4~$Ndp1840PRM}q%^lT-4sms)r)?_E8%lW-hRWqzQ|WI zB@#U+#lyRb;%mO>=L`97&O27gGf-$)*y;xMkF7F)P|P|L4l_SXl~LO@LGuy;4EwuE zE*DnrIYPg@4gTK@@nJ`h%WSRg@yW?OMWTm8^Qddi0uaSLx^|X=);Q;t+?2F=Zv@kZ z>05fFT!|(Kez+vyfcf8CVeD=$OO0wKORVuXQP%_k;UTa&{t#^`Z_OV9|3m*~sY39u z;q>%9RlVl@V7r2nGw*+uOm()!Y)>JOPLjEVk<)7vfFJz+Ub0>?SUfp68BF-^hEIpm ZJjEnhzb^1Mrvm-EG*ony%N4EP|3AuqkKh0R From fabe1e98a7139c304b52961d9cd3653e9cfc6b39 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Fri, 26 May 2017 12:02:26 -0500 Subject: [PATCH 049/122] update blackbox.dm --- code/controllers/subsystem/blackbox.dm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm index ecc5f3cc17..f606a0d61a 100644 --- a/code/controllers/subsystem/blackbox.dm +++ b/code/controllers/subsystem/blackbox.dm @@ -1,8 +1,8 @@ SUBSYSTEM_DEF(blackbox) name = "Blackbox" wait = 6000 - flags = SS_NO_TICK_CHECK | SS_NO_INIT - runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME + flags = SS_NO_TICK_CHECK | SS_NO_INIT + runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME var/list/msg_common = list() var/list/msg_science = list() @@ -86,12 +86,11 @@ SUBSYSTEM_DEF(blackbox) if (!SSdbcore.Connect()) return - + var/list/sqlrowlist = list() for (var/datum/feedback_variable/FV in feedback) - sqlrowlist += list("time" = "Now()", "round_id" = GLOB.round_id, "var_name" = "'[sanitizeSQL(FV.get_variable())]'", "var_value" = FV.get_value(), "details" = "'[sanitizeSQL(FV.get_details())]'") - + 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())]'")) if (!length(sqlrowlist)) return From 5387b4e2a76591ed8b0b7d9258e2ac552c38269b Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 26 May 2017 13:20:50 -0500 Subject: [PATCH 050/122] Makes a thing use QDEL_NULL --- code/game/machinery/doors/airlock.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 1750aa7aa8..cfc5eb2979 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -199,8 +199,7 @@ qdel(src) /obj/machinery/door/airlock/Destroy() - qdel(wires) - wires = null + QDEL_NULL(wires) if(charge) qdel(charge) charge = null From 3e05ac328a14c9a87e6d68ac3acb93612e079a79 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 26 May 2017 13:21:59 -0500 Subject: [PATCH 051/122] Fixes typos and lies --- tools/readme.txt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tools/readme.txt b/tools/readme.txt index a1c1a17c3b..fbd99e3760 100644 --- a/tools/readme.txt +++ b/tools/readme.txt @@ -1,6 +1,4 @@ the compiled exe file for the Unstandardness text for DM program is in: UnstandardnessTestForDM\bin\Debug\UnstandardnessTestForDM.exe -of -UnstandardnessTestForDM\bin\Release\UnstandardnessTestForDM.exe -You have to move it to the root folder (where the dme file is) and run it from there for it to work. \ No newline at end of file +You have to move it to the root folder (where the dme file is) and run it from there for it to work. From db90467ff2bacce9e7c023d12ffadc0da2662980 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 26 May 2017 13:22:05 -0500 Subject: [PATCH 052/122] Deletes the old java mapmerge --- tools/mapmerge/old_java_mapmerge/MapMerge.jar | Bin 20574 -> 0 bytes .../old_java_mapmerge/Run Map Merge.bat | 4 - .../old_java_mapmerge/Source/.classpath | 7 - .../old_java_mapmerge/Source/.project | 17 - .../.settings/org.eclipse.jdt.core.prefs | 11 - .../Source/.settings/org.eclipse.jdt.ui.prefs | 60 ---- .../Source/bin/FileFinder.class | Bin 1882 -> 0 bytes .../Source/bin/MapMerge.class | Bin 3519 -> 0 bytes .../Source/bin/MapPatcher.jar | Bin 10136 -> 0 bytes .../Source/src/FileFinder.java | 25 -- .../Source/src/MapMerge.java | 108 ------ .../src/MapPatcher Source/Location.java | 42 --- .../Source/src/MapPatcher Source/Map.java | 314 ------------------ .../src/MapPatcher Source/MapPatcher.java | 304 ----------------- .../src/MapPatcher Source/SavingThread.java | 37 --- .../Source/src/MapPatcher.jar | Bin 10136 -> 0 bytes 16 files changed, 929 deletions(-) delete mode 100644 tools/mapmerge/old_java_mapmerge/MapMerge.jar delete mode 100644 tools/mapmerge/old_java_mapmerge/Run Map Merge.bat delete mode 100644 tools/mapmerge/old_java_mapmerge/Source/.classpath delete mode 100644 tools/mapmerge/old_java_mapmerge/Source/.project delete mode 100644 tools/mapmerge/old_java_mapmerge/Source/.settings/org.eclipse.jdt.core.prefs delete mode 100644 tools/mapmerge/old_java_mapmerge/Source/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 tools/mapmerge/old_java_mapmerge/Source/bin/FileFinder.class delete mode 100644 tools/mapmerge/old_java_mapmerge/Source/bin/MapMerge.class delete mode 100644 tools/mapmerge/old_java_mapmerge/Source/bin/MapPatcher.jar delete mode 100644 tools/mapmerge/old_java_mapmerge/Source/src/FileFinder.java delete mode 100644 tools/mapmerge/old_java_mapmerge/Source/src/MapMerge.java delete mode 100644 tools/mapmerge/old_java_mapmerge/Source/src/MapPatcher Source/Location.java delete mode 100644 tools/mapmerge/old_java_mapmerge/Source/src/MapPatcher Source/Map.java delete mode 100644 tools/mapmerge/old_java_mapmerge/Source/src/MapPatcher Source/MapPatcher.java delete mode 100644 tools/mapmerge/old_java_mapmerge/Source/src/MapPatcher Source/SavingThread.java delete mode 100644 tools/mapmerge/old_java_mapmerge/Source/src/MapPatcher.jar diff --git a/tools/mapmerge/old_java_mapmerge/MapMerge.jar b/tools/mapmerge/old_java_mapmerge/MapMerge.jar deleted file mode 100644 index d0f0ce08028cdbb917fe185b48e331f8433d49c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20574 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 AYXATM diff --git a/tools/mapmerge/old_java_mapmerge/Run Map Merge.bat b/tools/mapmerge/old_java_mapmerge/Run Map Merge.bat deleted file mode 100644 index 5bb8f1736b..0000000000 --- a/tools/mapmerge/old_java_mapmerge/Run Map Merge.bat +++ /dev/null @@ -1,4 +0,0 @@ -@echo off -call java -jar MapMerge.jar "../../_maps/" /wait - -pause \ No newline at end of file diff --git a/tools/mapmerge/old_java_mapmerge/Source/.classpath b/tools/mapmerge/old_java_mapmerge/Source/.classpath deleted file mode 100644 index 8a11d5b17e..0000000000 --- a/tools/mapmerge/old_java_mapmerge/Source/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/tools/mapmerge/old_java_mapmerge/Source/.project b/tools/mapmerge/old_java_mapmerge/Source/.project deleted file mode 100644 index df472fbdf1..0000000000 --- a/tools/mapmerge/old_java_mapmerge/Source/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - MapMerger - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/tools/mapmerge/old_java_mapmerge/Source/.settings/org.eclipse.jdt.core.prefs b/tools/mapmerge/old_java_mapmerge/Source/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 3a21537071..0000000000 --- a/tools/mapmerge/old_java_mapmerge/Source/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,11 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.8 diff --git a/tools/mapmerge/old_java_mapmerge/Source/.settings/org.eclipse.jdt.ui.prefs b/tools/mapmerge/old_java_mapmerge/Source/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index ea0a123b8b..0000000000 --- a/tools/mapmerge/old_java_mapmerge/Source/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,60 +0,0 @@ -cleanup.add_default_serial_version_id=false -cleanup.add_generated_serial_version_id=true -cleanup.add_missing_annotations=true -cleanup.add_missing_deprecated_annotations=true -cleanup.add_missing_methods=false -cleanup.add_missing_nls_tags=false -cleanup.add_missing_override_annotations=true -cleanup.add_missing_override_annotations_interface_methods=true -cleanup.add_serial_version_id=false -cleanup.always_use_blocks=true -cleanup.always_use_parentheses_in_expressions=true -cleanup.always_use_this_for_non_static_field_access=false -cleanup.always_use_this_for_non_static_method_access=false -cleanup.convert_functional_interfaces=false -cleanup.convert_to_enhanced_for_loop=false -cleanup.correct_indentation=true -cleanup.format_source_code=true -cleanup.format_source_code_changes_only=false -cleanup.insert_inferred_type_arguments=false -cleanup.make_local_variable_final=true -cleanup.make_parameters_final=false -cleanup.make_private_fields_final=true -cleanup.make_type_abstract_if_missing_method=false -cleanup.make_variable_declarations_final=false -cleanup.never_use_blocks=false -cleanup.never_use_parentheses_in_expressions=false -cleanup.organize_imports=true -cleanup.qualify_static_field_accesses_with_declaring_class=false -cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -cleanup.qualify_static_member_accesses_with_declaring_class=true -cleanup.qualify_static_method_accesses_with_declaring_class=true -cleanup.remove_private_constructors=true -cleanup.remove_redundant_type_arguments=true -cleanup.remove_trailing_whitespaces=false -cleanup.remove_trailing_whitespaces_all=true -cleanup.remove_trailing_whitespaces_ignore_empty=false -cleanup.remove_unnecessary_casts=true -cleanup.remove_unnecessary_nls_tags=true -cleanup.remove_unused_imports=true -cleanup.remove_unused_local_variables=true -cleanup.remove_unused_private_fields=true -cleanup.remove_unused_private_members=true -cleanup.remove_unused_private_methods=true -cleanup.remove_unused_private_types=true -cleanup.sort_members=false -cleanup.sort_members_all=false -cleanup.use_anonymous_class_creation=false -cleanup.use_blocks=true -cleanup.use_blocks_only_for_return_and_throw=false -cleanup.use_lambda=true -cleanup.use_parentheses_in_expressions=true -cleanup.use_this_for_non_static_field_access=true -cleanup.use_this_for_non_static_field_access_only_if_necessary=true -cleanup.use_this_for_non_static_method_access=true -cleanup.use_this_for_non_static_method_access_only_if_necessary=true -cleanup.use_type_arguments=false -cleanup_profile=_Default -cleanup_settings_version=2 -eclipse.preferences.version=1 diff --git a/tools/mapmerge/old_java_mapmerge/Source/bin/FileFinder.class b/tools/mapmerge/old_java_mapmerge/Source/bin/FileFinder.class deleted file mode 100644 index ab01a656c458ab21fe7af582f5c7246df388f46e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1882 zcmb7FZBrXn7(F)$EQAGGNTIbLMXi!eY3ggWi>W}1Vne76O$A>!$r3Imo6PP_$A0!# z_%GD4VC{_4&;BOI@!UJm;Q!^Y_1h{srJYd}kmc5MPs3cTIX_ z*EbLonA>+AI%!YV)4QBV=Vh&-=c{f(22$010i))q(w@t=i`nkvyN=r1XieHg-mN#i zvW^7;=US;vC9COW-*+BmWuTZeoR<~PQBB_!NcGEE>QlqcaOL2V^rXrVdZCq4b-YSC zuYBoM>|{Y8wpuT{aYQk0VgzRdq6^7_feC@hkajnhIL=~x7=$xnU?`4hTrhB6;6itg zT8jLmK)JQR#4EVSJ}a)e)OOsqy@&Q#f!%L+!;^8(4QK!sjNksTgGOzTUax2`-Dw9q&D#>K07|P6mYt)49OjR1U@%$2U(sK zr%b1H9j(pczFSgua%UJh+%>Q%Fx$;u)9nz$#22_n)2(jiw$^j^Nph}7>z)NvFSZ-* zRH7$Qx5L>1y*cb)v1j_ldqz|*6mc}KoYD^)PNQw8?>jx)Zts5~zswDBn*1vhAL1kW zB42O%rSK}H<8|jP3t!b53S93geB$CgCY|d57Z!VjM>~ zni$6zk{sV#Qeq>zup6Sd3qG$lxbNG|qhL2|gCcS-<1j;uEY! z@H0$)Bv^g@!Ef03g-KC7FFeV{5`4~Kme;c`Y_))n3(q5uEfyj;?xVm$1~2Icj79M! zqm<KQUu4zQy+L_!XOA+8APY5^noIvl@g3;peX>)qmy diff --git a/tools/mapmerge/old_java_mapmerge/Source/bin/MapMerge.class b/tools/mapmerge/old_java_mapmerge/Source/bin/MapMerge.class deleted file mode 100644 index dff913a6b9443f37dd53caf7992a08c542a9cf10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3519 zcma)9YgZfB72Q`7%pecgR{SEEWGFc1VUUCABY<&j7biG891APKY2yyk0Aout>SzQe ztsA>_)1+zKhx^K-Y10>dH^!-;_Da9EYxQGSv--Kep=-sUsC+?eUknhGKU+s+&FMm%HKv+;@P^JdBusIlx^fzJm< z{k4K;W#WmHVcVuVAP~(N-rS_aAbEiufr)K7@fj;)#!qpLHtJw1W7(EBBoJ=zND4%b zJ8AA$FR=Z-n045S?FzP4VM#3JJu|Bzh6e;fmMyR|*or%iNO%d)HI3{*6dHDF*oEB! zwS%QS_q1Kv`bZzO1)Y@{<}yF-B)cw$O%XPf-(P z(W;o>Qo_lal$1TIFPOHcFSw39+Y`l8NGLd6#z(1CcxsrGHBfRgSjLVbiDwi%T{iXw zu&yf&Q&P5DedB~@q%KUlM#@z2tU%|uqtD3FaBtVtecp7-)^n~iZ>7z&p0-?`1&+Je zqT(|ID@oNoN6)hDX`Z1#`gIBRoQBUzOf~*CvK^;2q>$zzV4D{`*+Do;olqmCH zG#QxqH_@v=9kmyTk>VMZQV8CtrJ&Suilr9ZqQrDH1vK1M-PDV@ps@wI0yR|^ad0z< z4KYl;Par$rKNb|s5M9EWwGFS}a`&E+mjAD49Z3~L-S&jDKtAooQYF%kzUUP61%qOc zOiQsHk%SgB%u7Nel28Q~1$J*7+QDIStYFEKM6nOgYxq3AKyv4eOu?KW&_^m;HaO(V zy;NC`C>GGC;susVxAMB}c)Fo8h?S-?JSuYmS2TPHU*<_`NZpm8%jaIeVMXW? zIyT<|zM|npUmczk*vkxG((p3A#;VR4`Ee#WVzYPHerM(4*EPHn#bQCZGH-t5;^yv5>GL8pN80dBd|kL6BpGri4FZv_4+HP0*; z(5&JYWTt1D-CfA3_$6!8oywR7&xT*)w+enkQmI;YS!&L7HRx#JOy10}yLl@;%0N8X zBD`yJ@&de9SF+Q{@x)B2)53hI^yd|!1;NbpId(JG0w|>yGi`b06~%MT<&AlEi<&d? zc~;V)dBQ2UDfYFzfa{6W|1#;3IMBkgH_Q*05Tf$R<|ryJDn29pt>c@(7QXfRRzSmT zXj98*Siz2)*mJ}8e9-p_`M>qFZt`bAPu}Sz|2Ut5^EI6-*t_9Y>rbk_ixwE*Av{dO zI!Pm8eT3r(S6U?uktd7@XRdXId&BQx-zxUsME7mPr(%z;;LzwYy1Q2Kv8TJ<#o*Y1 zB0l*R9z3v$6H9n*d>JQW<3*h6F5=7*{MWO5mD8Ut;<;t)DZ=>QLH%gks-oQ>&Mw}O zy}T;tDRszF5TNBCh(Jlk2a(w)Rio@Rh-)H_;&7uSxf{e>ELm z5+Xdbg#D!m&8zsPjBuS1I-865ZV^8SB3%uO=1$i6?X`c%0B^96OV}6e-ybQtH%2}b z!TSM%q2@QRB?yE=&6Q}-QVJ6LArZ)}iuh6NC+n#!t*yu$SMak6VEqv}x4!Mq1MB{p z#z=oH{}hGNoeIa65>t`Jn#5F1V{Kxpwoys+tBvX^eswjpw)gclA=@O7(TkJ-C>j+# z7}s$EzvH;bYQD#M z{)N_m!;|y*Cqh;aAAc-J4b zQs#f;sD?;diTWM>L(#={Sm8(^sv4|P_$u2Z5Ojbk%Qq?LHq>u<_%0q2cNtXvwcbIj Z7^AU7(XV!z#zetWMSd{MnL>` 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 I_ { - private PathMatcher matcher; - public ArrayList foundPaths = new ArrayList<>(); - public FileFinder(String pattern) { - matcher = FileSystems.getDefault().getPathMatcher("glob:" + pattern); - } - - @Override - public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { - Path name = file.getFileName(); - if (matcher.matches(name)) { - foundPaths.add(file); - } - return FileVisitResult.CONTINUE; - } -} \ No newline at end of file diff --git a/tools/mapmerge/old_java_mapmerge/Source/src/MapMerge.java b/tools/mapmerge/old_java_mapmerge/Source/src/MapMerge.java deleted file mode 100644 index 552a406b13..0000000000 --- a/tools/mapmerge/old_java_mapmerge/Source/src/MapMerge.java +++ /dev/null @@ -1,108 +0,0 @@ -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Scanner; - -public class MapMerge { - - private static Scanner input = new Scanner(System.in); - private static Path pathToMaps; - - public static void main(String[] mapPath) throws IOException { - pathToMaps = Paths.get(mapPath[0]); - FileFinder dmmFinder = new FileFinder("*.dmm"); - Files.walkFileTree(pathToMaps, dmmFinder); - ArrayList foundFiles = dmmFinder.foundPaths; - if (foundFiles.size() > 0) { - try { - MapMerge.merge(foundFiles); - } catch (Exception e) { - System.out.println("Something went wrong."); - e.printStackTrace(); - } - } else { - System.out.println("No files were found in provided directory!"); - System.out.print("Path to maps folder: "); - pathToMaps = Paths.get(input.nextLine()); - dmmFinder = new FileFinder("*.dmm"); - Files.walkFileTree(pathToMaps, dmmFinder); - foundFiles = dmmFinder.foundPaths; - try { - MapMerge.merge(foundFiles); - } catch (Exception e) { - System.out.println("Something went wrong."); - e.printStackTrace(); - } - } - } - - public static void merge(ArrayList foundFiles) throws IOException { - - System.out.println("How many files do you want to merge?"); - int selection1; - inputCheck: while (true) { - while (!input.hasNextInt()) { - String temp = input.next(); - System.out.println(temp + " is not a valid int."); - } - selection1 = input.nextInt(); - if (selection1 < 0) { - System.out.println("Use a number greater than 0!"); - continue inputCheck; - } else { - break inputCheck; - } - } - - for (int numOfFiles = selection1; numOfFiles != 0; numOfFiles--) { - - for (int num = 0; num < foundFiles.size(); num++) { - System.out.println(num + ": " + foundFiles.get(num)); - } - - System.out.print("File to use: "); - int selection2; - inputCheck: while (true) { - while (!input.hasNextInt()) { - String temp = input.next(); - System.out.println(temp + " is not a valid int."); - } - selection2 = input.nextInt(); - if ((selection2 < 0) || (selection2 >= foundFiles.size())) { - if (selection2 < 0) { - System.out.println("Use a number greater than 0!"); - } else { - System.out.println("Use a number less than " + foundFiles.size() + "!"); - } - continue inputCheck; - } else { - break inputCheck; - } - } - - String selected_map = foundFiles.get(selection2) + ""; - String backup_map = selected_map + ".backup"; - String edited_map = selected_map; - String to_save = selected_map; - String[] passInto = { "-clean", backup_map, edited_map, to_save }; - MapPatcher.main(passInto); - - // Will try to fix when I have time ~CorruptComputer - /*try{ - Process process = new ProcessBuilder("dmm2tgm\\dmm2tgm.exe", selected_map).start(); - }catch(Exception e1){ - System.out.println("You are not on a windows machine, trying the .py"); - try{ - Process process = new ProcessBuilder("dmm2tgm\\Source\\dmm2tgm.py", selected_map).start(); - }catch(Exception e2){ - System.out.println("You do not have python 2.7.x installed."); - System.out.println("Downloads can be found here: https://www.python.org/downloads/"); - } - } - */ - - } - } -} \ No newline at end of file diff --git a/tools/mapmerge/old_java_mapmerge/Source/src/MapPatcher Source/Location.java b/tools/mapmerge/old_java_mapmerge/Source/src/MapPatcher Source/Location.java deleted file mode 100644 index 2a901d54b2..0000000000 --- a/tools/mapmerge/old_java_mapmerge/Source/src/MapPatcher Source/Location.java +++ /dev/null @@ -1,42 +0,0 @@ -class Location -{ - int x; - int y; - int z; - - public Location() - { - } - - public Location(int paramInt1, int paramInt2, int paramInt3) - { - this.x = paramInt1; - this.y = paramInt2; - this.z = paramInt3; - } - - public void set(int paramInt1, int paramInt2, int paramInt3) - { - this.x = paramInt1; - this.y = paramInt2; - this.z = paramInt3; - } - - public boolean equals(Object paramObject) - { - if (!(paramObject instanceof Location)) return false; - Location localLocation = (Location)paramObject; - if ((this.x != localLocation.x) || (this.y != localLocation.y) || (this.z != localLocation.z)) return false; - return true; - } - - public int hashCode() - { - return (this.z * 256 + this.y) * 256 + this.x; - } - - public String toString() - { - return "(" + this.x + "," + this.y + "," + this.z + ")"; - } -} diff --git a/tools/mapmerge/old_java_mapmerge/Source/src/MapPatcher Source/Map.java b/tools/mapmerge/old_java_mapmerge/Source/src/MapPatcher Source/Map.java deleted file mode 100644 index 949db7e6ca..0000000000 --- a/tools/mapmerge/old_java_mapmerge/Source/src/MapPatcher Source/Map.java +++ /dev/null @@ -1,314 +0,0 @@ -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileWriter; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Set; -import java.util.Vector; - -public class Map -{ - boolean sizeunknown; - int minx; - int miny; - int minz; - int maxx; - int maxy; - int maxz; - HashMap tile_types; - HashMap codes_by_value; - HashMap tiles; - - public Map() - { - this.sizeunknown = true; - this.tile_types = new HashMap(); - this.codes_by_value = new HashMap(); - this.tiles = new HashMap(); - } - - public Map(File paramFile) - { - this(paramFile, false); - } - - public Map(File paramFile, boolean paramBoolean) - { - this.sizeunknown = true; - try { - BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(paramFile))); - - this.tile_types = new HashMap(); - this.codes_by_value = new HashMap(); - this.tiles = new HashMap(); - - MapPatcher.Systemoutprintln(new StringBuilder().append("Loading map ").append(paramFile.getName()).toString()); - MapPatcher.Systemoutprint("Loading tiles"); - String str1 = ""; - int i = 0; - while ((str1 = localBufferedReader.readLine()) != null) - { - if (str1.equals("")) break; - if (str1.startsWith("\"")) - { - if (i < 1) - { - int j = str1.indexOf("\"", 1); - i = j - 1; - } - String str2 = str1.substring(1, 1 + i); - String str3 = str1.substring(str1.indexOf("(")); - this.tile_types.put(str2, str3); - this.codes_by_value.put(str3, str2); - } - } - - MapPatcher.Systemoutprintln(new StringBuilder().append(" ").append(this.tile_types.size()).toString()); - if (!paramBoolean) - { - MapPatcher.Systemoutprintln("Loading levels"); - while (true) - { - if ((str1 = localBufferedReader.readLine()) != null) { if (str1.startsWith("(")) break label270; } else { - label270: if (str1 == null) - { - break; - } - int k = str1.indexOf(",", 1); - int m = Integer.parseInt(str1.substring(1, k)); - str1 = str1.substring(k); - k = str1.indexOf(",", 1); - int n = Integer.parseInt(str1.substring(1, k)); - str1 = str1.substring(k); - k = str1.indexOf(")", 1); - int i1 = Integer.parseInt(str1.substring(1, k)); - - MapPatcher.Systemoutprintln(new StringBuilder().append("New map part from (").append(m).append(",").append(n).append(",").append(i1).append(")").toString()); - - int i3 = n; - if (this.sizeunknown) - { - this.minx = m; this.maxx = this.minx; - this.miny = n; this.maxy = this.miny; - this.minz = i1; this.maxz = this.minz; - this.sizeunknown = false; - } - if (this.minz > i1) this.minz = i1; - if (this.maxz < i1) this.maxz = i1; - while (!(str1 = localBufferedReader.readLine()).startsWith("\"}")) - { - int i2 = m; - if (this.miny > i3) this.miny = i3; - if (this.maxy < i3) this.maxy = i3; - while (str1.length() > 0) - { - String str4 = str1.substring(0, i); - Location localLocation = new Location(i2, i3, i1); - if (this.minx > i2) this.minx = i2; - if (this.maxx < i2) this.maxx = i2; - this.tiles.put(localLocation, this.tile_types.get(str4)); - str1 = str1.substring(i); - i2++; - } - i3++; - } - } - } - } - localBufferedReader.close(); - } - catch (Exception localException) - { - localException.printStackTrace(); - } - } - - public void mirrorY() - { - for (int i = this.minz; i <= this.maxz; i++) - for (int j = this.minx; j <= this.maxx; j++) - for (int k = this.miny; k < (this.miny + this.maxy) / 2; k++) - { - int m = this.maxy - (k - this.miny); - String str = contentAt2(j, k, i); - setAt(j, k, i, contentAt2(j, m, i)); - setAt(j, m, i, str); - } - } - - public String contentAt(int paramInt1, int paramInt2, int paramInt3) - { - Location localLocation = new Location(paramInt1, paramInt2, paramInt3); - String str = (String)this.tiles.get(localLocation); - if (str == null) System.err.println(new StringBuilder().append("Null at ").append(paramInt1).append(",").append(paramInt2).append(",").append(paramInt3).append(" Possible loading error").toString()); - return str == null ? "null" : str; - } - - public String contentAt2(int paramInt1, int paramInt2, int paramInt3) - { - Location localLocation = new Location(paramInt1, paramInt2, paramInt3); - return (String)this.tiles.get(localLocation); - } - - public void setAt(int paramInt1, int paramInt2, int paramInt3, String paramString) - { - if (this.sizeunknown) - { - this.minx = (this.maxx = paramInt1); - this.miny = (this.maxy = paramInt2); - this.minz = (this.maxz = paramInt3); - this.sizeunknown = false; - } - else - { - this.minx = Math.min(this.minx, paramInt1); - this.miny = Math.min(this.miny, paramInt2); - this.minz = Math.min(this.minz, paramInt3); - this.maxx = Math.max(this.maxx, paramInt1); - this.maxy = Math.max(this.maxy, paramInt2); - this.maxz = Math.max(this.maxz, paramInt3); - } - Location localLocation = new Location(paramInt1, paramInt2, paramInt3); - localLocation.set(paramInt1, paramInt2, paramInt3); - this.tiles.put(localLocation, paramString); - } - - public void save(File paramFile) throws Exception - { - saveReferencing(paramFile, null); - } - - public void saveReferencing(File paramFile, Map paramMap) throws Exception - { - FileWriter localFileWriter = new FileWriter(paramFile); - - this.tile_types.clear(); - this.codes_by_value.clear(); - Vector localVector1 = new Vector(); - for (Object localObject1 = this.tiles.keySet().iterator(); ((Iterator)localObject1).hasNext(); ) { Location localLocation = (Location)((Iterator)localObject1).next(); - - String str1 = (String)this.tiles.get(localLocation); - if (!localVector1.contains(str1)) - localVector1.add(str1); - } - MapPatcher.Systemoutprintln(new StringBuilder().append("We have ").append(localVector1.size()).append(" different tiles").toString()); - localObject1 = new String[] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; - - int i = 1; - int j = localObject1.length; - while (j < localVector1.size()) - { - j *= localObject1.length; - i++; - } - Vector localVector2; - if (paramMap == null) { - localVector2 = localVector1; - } - else { - localVector2 = new Vector(); - for (Iterator localIterator = localVector1.iterator(); localIterator.hasNext(); ) { localObject2 = (String)localIterator.next(); - - if (paramMap.codes_by_value.containsKey(localObject2)) - { - localObject3 = paramMap.getIdFor((String)localObject2); - this.tile_types.put(localObject3, localObject2); - this.codes_by_value.put(localObject2, localObject3); - } - else { - localVector2.add(localObject2); - } } - localVector1.clear(); - } - - int k = 0; - for (Object localObject2 = localVector2.iterator(); ((Iterator)localObject2).hasNext(); ) { localObject3 = (String)((Iterator)localObject2).next(); - do - { - str2 = int2code((String[])localObject1, k, i); - k++; - }while (this.tile_types.containsKey(str2)); - this.tile_types.put(str2, localObject3); - this.codes_by_value.put(localObject3, str2); - } - String str2; - localVector2.clear(); - - k = 0; - for (int m = 0; m < this.tile_types.size(); m++) - { - do - { - localObject3 = int2code((String[])localObject1, k, i); - k++; - }while (!this.tile_types.containsKey(localObject3)); - str2 = (String)this.tile_types.get(localObject3); - localFileWriter.write(new StringBuilder().append("\"").append((String)localObject3).append("\" = ").append(str2).append("\r\n").toString()); - } - localVector2.clear(); - - localFileWriter.write("\n"); - - m = 1 + this.maxz - this.minz; - Object localObject3 = new SavingThread[m]; - int n = (this.maxy - this.miny) * ((this.maxx - this.minx) * i + 2) + 32; - - for (k = 0; k < m; k++) - { - localObject3[k] = new SavingThread(this.minz + k, this, n); - localObject3[k].start(); - } - - int i1 = 0; - String str3 = ""; - while (i1 == 0) { - try { - Thread.sleep(100L); } catch (Exception localException) { - } - i1 = 1; - - str3 = ""; - for (k = 0; k < m; k++) - { - if (!localObject3[k].done) - i1 = 0; - if (str3.length() != 0) str3 = new StringBuilder().append(str3).append(" ").toString(); - str3 = new StringBuilder().append(str3).append(localObject3[k].done ? "Done" : new StringBuilder().append(localObject3[k].progress).append("%").toString()).toString(); - } - MapPatcher.Systemoutprint(new StringBuilder().append(str3).append("\r").toString()); - } - - for (k = 0; k < m; k++) { - localFileWriter.write(localObject3[k].result.toString()); - } - localFileWriter.flush(); - localFileWriter.close(); - } - - public String getIdFor(String paramString) - { - if (this.codes_by_value.containsKey(paramString)) - { - return (String)this.codes_by_value.get(paramString); - } - return "???"; - } - - public String int2code(String[] paramArrayOfString, int paramInt1, int paramInt2) - { - String str = ""; - while (paramInt1 >= paramArrayOfString.length) - { - int i = paramInt1 % paramArrayOfString.length; - str = new StringBuilder().append(paramArrayOfString[i]).append(str).toString(); - paramInt1 -= i; - paramInt1 /= paramArrayOfString.length; - } - str = new StringBuilder().append(paramArrayOfString[paramInt1]).append(str).toString(); - while (str.length() < paramInt2) str = new StringBuilder().append(paramArrayOfString[0]).append(str).toString(); - return str; - } -} diff --git a/tools/mapmerge/old_java_mapmerge/Source/src/MapPatcher Source/MapPatcher.java b/tools/mapmerge/old_java_mapmerge/Source/src/MapPatcher Source/MapPatcher.java deleted file mode 100644 index c8d50b9b2f..0000000000 --- a/tools/mapmerge/old_java_mapmerge/Source/src/MapPatcher Source/MapPatcher.java +++ /dev/null @@ -1,304 +0,0 @@ -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileWriter; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.Arrays; - -public class MapPatcher -{ - static boolean silent = false; - - public static void main(String[] paramArrayOfString) - { - String str1 = "usage: [me] -diff [old_map] [new_map] [diff_file]"; - String str2 = "usage: [me] -patch [old_map] [diff_file] [new_map]"; - String str3 = "usage: [me] -pack [unpacked] [packed.dmm]"; - String str4 = "usage: [me] -unpack [packed.dmm] [unpacked]"; - String str5 = "usage: [me] -clean [oldmap.dmm] [newmap.dmm] [cleaned.dmm]"; - String str6 = "usage: [me] -merge [original] [local] [remote] [output]"; - - for (int i = 0; i < paramArrayOfString.length; i++) - if (paramArrayOfString[i].equalsIgnoreCase("-silent")) - { - silent = true; - for (; i < paramArrayOfString.length - 1; i++) - paramArrayOfString[i] = paramArrayOfString[(i + 1)]; - paramArrayOfString = (String[])Arrays.copyOf(paramArrayOfString, paramArrayOfString.length - 1); - break; - } - Object localObject; - int i2; - int i3; - int i5; - if ((paramArrayOfString.length > 0) && (paramArrayOfString[0].equalsIgnoreCase("-merge"))) - { - if (paramArrayOfString.length < 5) - { - System.out.println(str6); - try { System.in.read(); } catch (Exception localException1) { - }return; - } - - Map localMap1 = new Map(new File(paramArrayOfString[1])); - localObject = new Map(new File(paramArrayOfString[2])); - Map localMap8 = new Map(new File(paramArrayOfString[3])); - Map localMap9 = new Map(); - - if ((localMap1.minx != ((Map)localObject).minx) || (localMap1.minx != localMap8.minx) || (localMap1.maxx != ((Map)localObject).maxx) || (localMap1.maxx != localMap8.maxx) || (localMap1.miny != ((Map)localObject).miny) || (localMap1.miny != localMap8.miny) || (localMap1.maxy != ((Map)localObject).maxy) || (localMap1.maxy != localMap8.maxy) || (localMap1.minz != ((Map)localObject).minz) || (localMap1.minz != localMap8.minz) || (localMap1.maxz != ((Map)localObject).maxz) || (localMap1.maxz != localMap8.maxz)) - { - Systemoutprintln("Map sizes differ"); - System.exit(1); - } - try - { - for (int n = localMap1.minz; n <= localMap1.maxz; n++) - for (i2 = localMap1.miny; i2 <= localMap1.maxy; i2++) - for (i3 = localMap1.minx; i3 <= localMap1.maxx; i3++) - { - boolean bool1 = localMap1.contentAt(i3, i2, n).equals(((Map)localObject).contentAt(i3, i2, n)); - boolean bool2 = localMap1.contentAt(i3, i2, n).equals(localMap8.contentAt(i3, i2, n)); - i5 = ((Map)localObject).contentAt(i3, i2, n).equals(localMap8.contentAt(i3, i2, n)); - if ((!bool1) && (!bool2)) - { - if (i5 == 0) - { - Systemoutprintln(i3 + "," + i2 + "," + n + " local and remote don't match original and differ"); - System.exit(1); - } - else { - localMap9.setAt(i3, i2, n, ((Map)localObject).contentAt(i3, i2, n)); - } - } else if (!bool1) - localMap9.setAt(i3, i2, n, ((Map)localObject).contentAt(i3, i2, n)); - else if (!bool2) - localMap9.setAt(i3, i2, n, localMap8.contentAt(i3, i2, n)); - else - localMap9.setAt(i3, i2, n, localMap1.contentAt(i3, i2, n)); - } - Systemoutprintln("Saving"); - localMap9.saveReferencing(new File(paramArrayOfString[4]), localMap1); - Systemoutprintln("Done"); - } - catch (Exception localException12) - { - localException12.printStackTrace(); - } - } - else - { - int m; - int i1; - if ((paramArrayOfString.length > 0) && (paramArrayOfString[0].equalsIgnoreCase("-diff"))) - { - if (paramArrayOfString.length < 4) - { - System.out.println(str1); - try { System.in.read(); } catch (Exception localException2) { - }return; - } - - Map localMap2 = new Map(new File(paramArrayOfString[1])); - localObject = new Map(new File(paramArrayOfString[2])); - - int j = Math.max(localMap2.minx, ((Map)localObject).minx); - m = Math.min(localMap2.maxx, ((Map)localObject).maxx); - i1 = Math.max(localMap2.miny, ((Map)localObject).miny); - i2 = Math.min(localMap2.maxy, ((Map)localObject).maxy); - i3 = Math.max(localMap2.minz, ((Map)localObject).minz); - int i4 = Math.min(localMap2.maxz, ((Map)localObject).maxz); - Systemoutprintln("Comparing: x(" + j + "-" + m + ") y(" + i1 + "-" + i2 + ") z(" + i3 + "-" + i4 + ")"); - try - { - FileWriter localFileWriter2 = new FileWriter(paramArrayOfString[3]); - i5 = 0; - for (int i6 = i3; i6 <= i4; i6++) - { - Systemoutprintln("Z-level " + i6); - for (int i7 = i1; i7 <= i2; i7++) - for (int i8 = j; i8 <= m; i8++) - if (!localMap2.contentAt(i8, i7, i6).equals(((Map)localObject).contentAt(i8, i7, i6))) - { - localFileWriter2.write("(" + i8 + "," + (1 + ((Map)localObject).maxy - i7) + "," + i6 + ")=" + ((Map)localObject).contentAt(i8, i7, i6) + "\n"); - i5++; - } - } - localFileWriter2.flush(); - localFileWriter2.close(); - if (i5 == 0) - Systemoutprintln("Files do match"); - else - Systemoutprintln("Writed out " + i5 + " differences"); - } - catch (Exception localException13) - { - localException13.printStackTrace(); - } - - Systemoutprintln("Done"); - } - else - { - String str7; - String str8; - if ((paramArrayOfString.length > 0) && (paramArrayOfString[0].equalsIgnoreCase("-patch"))) - { - if (paramArrayOfString.length < 4) - { - System.out.println(str2); - try { System.in.read(); } catch (Exception localException3) { - }return; - } - - Map localMap3 = new Map(new File(paramArrayOfString[1])); - try - { - localObject = new BufferedReader(new InputStreamReader(new FileInputStream(paramArrayOfString[2]))); - - while ((str7 = ((BufferedReader)localObject).readLine()) != null) - { - str7 = str7.trim(); - if (str7.length() != 0) - { - m = str7.indexOf(",", 1); - i1 = Integer.parseInt(str7.substring(1, m)); - str7 = str7.substring(m); - m = str7.indexOf(",", 1); - i2 = Integer.parseInt(str7.substring(1, m)); - str7 = str7.substring(m); - m = str7.indexOf(")", 1); - i3 = Integer.parseInt(str7.substring(1, m)); - str8 = str7.substring(str7.indexOf("=") + 1); - localMap3.setAt(i1, 1 + localMap3.maxy - i2, i3, str8); - } - } - localMap3.save(new File(paramArrayOfString[3])); - } - catch (Exception localException8) - { - localException8.printStackTrace(); - } - - Systemoutprintln("Done"); - } - else if ((paramArrayOfString.length > 0) && (paramArrayOfString[0].equalsIgnoreCase("-pack"))) - { - if (paramArrayOfString.length < 3) - { - System.out.println(str3); - try { System.in.read(); } catch (Exception localException4) { - }return; - } - - Map localMap4 = new Map(); - try { - BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(paramArrayOfString[1]))); - Systemoutprintln("Loading"); - - while ((str7 = localBufferedReader.readLine()) != null) - { - str7 = str7.trim(); - if (str7.length() != 0) - { - m = str7.indexOf(",", 1); - i1 = Integer.parseInt(str7.substring(1, m)); - str7 = str7.substring(m); - m = str7.indexOf(",", 1); - i2 = Integer.parseInt(str7.substring(1, m)); - str7 = str7.substring(m); - m = str7.indexOf(")", 1); - i3 = Integer.parseInt(str7.substring(1, m)); - str8 = str7.substring(str7.indexOf("=") + 1); - localMap4.setAt(i1, i2, i3, str8); - } - } - Systemoutprintln("Flipping"); - localMap4.mirrorY(); - Systemoutprintln("Saving, bounds: x{" + localMap4.minx + " - " + localMap4.maxx + "}, y{" + localMap4.miny + " - " + localMap4.maxy + "}, z{" + localMap4.minz + " - " + localMap4.maxz + "}"); - localMap4.save(new File(paramArrayOfString[2])); - Systemoutprintln("Done"); - } - catch (Exception localException9) - { - localException9.printStackTrace(); - } - } - else if ((paramArrayOfString.length > 0) && (paramArrayOfString[0].equalsIgnoreCase("-unpack"))) - { - if (paramArrayOfString.length < 3) - { - System.out.println(str4); - try { System.in.read(); } catch (Exception localException5) { - }return; - } - - Systemoutprintln("Loading"); - Map localMap5 = new Map(new File(paramArrayOfString[1])); - try { - FileWriter localFileWriter1 = new FileWriter(paramArrayOfString[2]); - Systemoutprintln("Saving"); - for (int k = localMap5.minz; k <= localMap5.maxz; k++) - { - Systemoutprintln("Z-level " + k); - for (m = localMap5.miny; m <= localMap5.maxy; m++) - for (i1 = localMap5.minx; i1 <= localMap5.maxx; i1++) - localFileWriter1.write("(" + i1 + "," + (1 + localMap5.maxy - m) + "," + k + ")=" + localMap5.contentAt(i1, m, k) + "\n"); - localFileWriter1.write("\n"); - } - localFileWriter1.flush(); - localFileWriter1.close(); - - Systemoutprintln("Done"); - } - catch (Exception localException10) - { - localException10.printStackTrace(); - } - } - else if ((paramArrayOfString.length > 0) && (paramArrayOfString[0].equalsIgnoreCase("-clean"))) - { - if (paramArrayOfString.length < 4) - { - System.out.println(str5); - try { System.in.read(); } catch (Exception localException6) { - }return; - } - - Map localMap6 = new Map(new File(paramArrayOfString[1]), true); - Map localMap7 = new Map(new File(paramArrayOfString[2])); - try - { - localMap7.saveReferencing(new File(paramArrayOfString[3]), localMap6); - Systemoutprintln("Done"); - } - catch (Exception localException11) - { - localException11.printStackTrace(); - } - } - else - { - System.out.println(str1); - System.out.println(str2); - System.out.println(str3); - System.out.println(str4); - System.out.println(str5); - System.out.println(str6); - try { - System.in.read(); } catch (Exception localException7) { } - } - } - } - } - - public static void Systemoutprintln(String paramString) { if (!silent) - System.out.println(paramString); } - - public static void Systemoutprint(String paramString) - { - if (!silent) - System.out.print(paramString); - } -} diff --git a/tools/mapmerge/old_java_mapmerge/Source/src/MapPatcher Source/SavingThread.java b/tools/mapmerge/old_java_mapmerge/Source/src/MapPatcher Source/SavingThread.java deleted file mode 100644 index 24a3d7b04d..0000000000 --- a/tools/mapmerge/old_java_mapmerge/Source/src/MapPatcher Source/SavingThread.java +++ /dev/null @@ -1,37 +0,0 @@ -class SavingThread extends Thread -{ - int z; - Map mymap; - boolean done; - int progress; - StringBuilder result; - - public SavingThread(int paramInt1, Map paramMap, int paramInt2) - { - this.z = paramInt1; - this.mymap = paramMap; - this.progress = 0; - this.done = false; - this.result = new StringBuilder(paramInt2); - } - - public void run() - { - this.result.append("(" + this.mymap.minx + "," + this.mymap.miny + "," + this.z + ") = {\"\r\n"); - - int i = (this.mymap.maxx - this.mymap.minx) * (this.mymap.maxy - this.mymap.miny) / 100; - int j = 0; - for (int k = this.mymap.miny; k <= this.mymap.maxy; k++) - { - for (int m = this.mymap.minx; m <= this.mymap.maxx; m++) - { - this.result.append(this.mymap.getIdFor(this.mymap.contentAt(m, k, this.z))); - j++; if (j >= i) { j = 0; this.progress += 1; } - } - this.result.append("\r\n"); - } - this.result.append("\"}\r\n"); - this.result.append("\r\n"); - this.done = true; - } -} diff --git a/tools/mapmerge/old_java_mapmerge/Source/src/MapPatcher.jar b/tools/mapmerge/old_java_mapmerge/Source/src/MapPatcher.jar deleted file mode 100644 index 5cbaad488c146d8a7453f114260dbccfe61e7861..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10136 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 I_ Date: Fri, 26 May 2017 14:36:26 -0500 Subject: [PATCH 053/122] Removes Fastload.dmm --- _maps/map_files/generic/Fastload.dmm | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 _maps/map_files/generic/Fastload.dmm diff --git a/_maps/map_files/generic/Fastload.dmm b/_maps/map_files/generic/Fastload.dmm deleted file mode 100644 index 96b4a26934..0000000000 --- a/_maps/map_files/generic/Fastload.dmm +++ /dev/null @@ -1,3 +0,0 @@ -"a" = () - -(1,1,1, 1,1,1) = {""} From 93c19d0e4b05acb7094fcc66dd206e6af9aec934 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 26 May 2017 14:41:35 -0500 Subject: [PATCH 054/122] Replaces parentcommit with originmastercommit --- code/datums/helper_datums/getrev.dm | 31 ++++++++++++++++------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/code/datums/helper_datums/getrev.dm b/code/datums/helper_datums/getrev.dm index b90e2ec652..2e95629d30 100644 --- a/code/datums/helper_datums/getrev.dm +++ b/code/datums/helper_datums/getrev.dm @@ -1,34 +1,37 @@ /datum/getrev - var/parentcommit + var/originmastercommit var/commit var/list/testmerge = list() var/has_pr_details = FALSE //example data in a testmerge entry when this is true: https://api.github.com/repositories/3234987/pulls/22586 var/date /datum/getrev/New() - var/head_file = file2text(".git/logs/HEAD") if(SERVERTOOLS && fexists("..\\prtestjob.lk")) var/list/tmp = world.file2list("..\\prtestjob.lk") for(var/I in tmp) if(I) testmerge |= I - var/testlen = max(testmerge.len - 1, 0) - var/regex/head_log = new("(\\w{40}) .+> (\\d{10}).+(?=(\n.*(\\w{40}).*){[testlen]}\n*\\Z)") - head_log.Find(head_file) - parentcommit = head_log.group[1] - date = unix2date(text2num(head_log.group[2])) - commit = head_log.group[4] + log_world("Running /tg/ revision:") - log_world("[date]") + var/list/logs = world.file2list(".git/logs/HEAD") + if(logs) + logs = splittext(logs[logs.len - 1], " ") + date = unix2date(text2num(logs[5])) + commit = logs[2] + log_world("[date]") + logs = world.file2list(".git/logs/refs/remotes/origin/master") + if(logs) + originmastercommit = splittext(logs[logs.len - 1], " ")[2] + if(testmerge.len) log_world(commit) for(var/line in testmerge) if(line) log_world("Test merge active of PR #[line]") SSblackbox.add_details("testmerged_prs","[line]") - log_world("Based off master commit [parentcommit]") + log_world("Based off origin/master commit [originmastercommit]") else - log_world(parentcommit) + log_world(originmastercommit) /datum/getrev/proc/DownloadPRDetails() if(!config.githubrepoid) @@ -73,13 +76,13 @@ set name = "Show Server Revision" set desc = "Check the current server code revision" - if(GLOB.revdata.parentcommit) + if(GLOB.revdata.originmastercommit) to_chat(src, "Server revision compiled on: [GLOB.revdata.date]") var/prefix = "" if(GLOB.revdata.testmerge.len) to_chat(src, GLOB.revdata.GetTestMergeInfo()) - prefix = "Based off master commit: " - var/pc = GLOB.revdata.parentcommit + prefix = "Based off origin/master commit: " + var/pc = GLOB.revdata.originmastercommit to_chat(src, "[prefix][copytext(pc, 1, min(length(pc), 7))]") else to_chat(src, "Revision unknown") From 25059558cb6f83bdcf3870b2ca6157cea8e91533 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Fri, 26 May 2017 15:26:08 -0500 Subject: [PATCH 055/122] admin related shit --- code/modules/admin/admin.dm | 38 ++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index f8329b1f69..fdc18652d0 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -37,7 +37,7 @@ body += " \[Heal\] " if(M.client) - body += "
\[Player Age: [M.client.player_age]\]\[Byond Age: [M.client.account_age]\]" + body += "
\[First Seen: [M.client.player_join_date]\]\[Byond account registered on: [M.client.account_join_date]\]" body += "
Show related accounts by: " body += "\[ CID | " body += "IP \]" @@ -48,7 +48,7 @@ body += "PM - " body += "SM - " body += "FLW - " - body += "LOGS\]
" + body += "LOGS\]
" body += "Mob type = [M.type]

" @@ -239,21 +239,21 @@ if(6) dat+="ERROR: Could not submit Feed story to Network.

" if(src.admincaster_feed_channel.channel_name=="") - dat+="•Invalid receiving channel name.
" + dat+="Invalid receiving channel name.
" if(src.admincaster_feed_message.returnBody(-1) == "" || src.admincaster_feed_message.returnBody(-1) == "\[REDACTED\]") - dat+="•Invalid message body.
" + dat+="Invalid message body.
" dat+="
Return
" if(7) dat+="ERROR: Could not submit Feed Channel to Network.

" if(src.admincaster_feed_channel.channel_name =="" || src.admincaster_feed_channel.channel_name == "\[REDACTED\]") - dat+="•Invalid channel name.
" + dat+="Invalid channel name.
" var/check = 0 for(var/datum/newscaster/feed_channel/FC in GLOB.news_network.network_channels) if(FC.channel_name == src.admincaster_feed_channel.channel_name) check = 1 break if(check) - dat+="•Channel name already in use.
" + dat+="Channel name already in use.
" dat+="
Return
" if(9) dat+="[admincaster_feed_channel.channel_name]: \[created by: [admincaster_feed_channel.returnAuthor(-1)]\]
" @@ -354,9 +354,9 @@ if(16) dat+="ERROR: Wanted Issue rejected by Network.

" if(src.admincaster_wanted_message.criminal =="" || src.admincaster_wanted_message.criminal == "\[REDACTED\]") - dat+="•Invalid name for person wanted.
" + dat+="Invalid name for person wanted.
" if(src.admincaster_wanted_message.body == "" || src.admincaster_wanted_message.body == "\[REDACTED\]") - dat+="•Invalid description.
" + dat+="Invalid description.
" dat+="
Return
" if(17) dat+="Wanted Issue successfully deleted from Circulation
" @@ -419,18 +419,18 @@ set desc="Restarts the world immediately" if (!usr.client.holder) return - - var/list/options = list("Regular Restart", "Hard Restart (No Delay/Feeback Reason)", "Hardest Restart (No actions, just reboot)") - var result = input(usr, "Select reboot method", "World Reboot", options[1]) as null|anything in options - if(result) + + var/list/options = list("Regular Restart", "Hard Restart (No Delay/Feeback Reason)", "Hardest Restart (No actions, just reboot)") + 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! - switch(result) - if("Regular Restart") - SSticker.Reboot("Initiated by [usr.client.holder.fakekey ? "Admin" : usr.key].", "end_error", "admin reboot - by [usr.key] [usr.client.holder.fakekey ? "(stealth)" : ""]", 10) - if("Hard Restart (No Delay, No Feeback Reason)") - world.Reboot() - if("Hardest Restart (No actions, just reboot)") - world.Reboot(fast_track = TRUE) + switch(result) + if("Regular Restart") + SSticker.Reboot("Initiated by [usr.client.holder.fakekey ? "Admin" : usr.key].", "admin reboot - by [usr.key] [usr.client.holder.fakekey ? "(stealth)" : ""]", 10) + if("Hard Restart (No Delay, No Feeback Reason)") + world.Reboot() + if("Hardest Restart (No actions, just reboot)") + world.Reboot(fast_track = TRUE) /datum/admins/proc/end_round() set category = "Server" From 04df45c9075f56bde888f29c600052a956102b75 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 26 May 2017 18:02:13 -0500 Subject: [PATCH 056/122] Ports defibs to Initialize --- code/game/objects/items/weapons/defib.dm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index f251cbabab..4bdf6ddf3c 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -23,14 +23,14 @@ var/combat = 0 //can we revive through space suits? var/grab_ghost = FALSE // Do we pull the ghost back into their body? -/obj/item/weapon/defibrillator/New() //starts without a cell for rnd - ..() +/obj/item/weapon/defibrillator/Initialize() //starts without a cell for rnd + . = ..() paddles = make_paddles() update_icon() return -/obj/item/weapon/defibrillator/loaded/New() //starts with hicap - ..() +/obj/item/weapon/defibrillator/loaded/Initialize() //starts with hicap + . = ..() paddles = make_paddles() bcell = new(src) update_icon() @@ -237,8 +237,8 @@ if(slot == user.getBeltSlot()) return 1 -/obj/item/weapon/defibrillator/compact/loaded/New() - ..() +/obj/item/weapon/defibrillator/compact/loaded/Initialize() + . = ..() paddles = make_paddles() bcell = new(src) update_icon() @@ -249,8 +249,8 @@ combat = 1 safety = 0 -/obj/item/weapon/defibrillator/compact/combat/loaded/New() - ..() +/obj/item/weapon/defibrillator/compact/combat/loaded/Initialize() + . = ..() paddles = make_paddles() bcell = new /obj/item/weapon/stock_parts/cell/infinite(src) update_icon() From 0e40cd7f6d28d68d97bea997d775d2a8e4b92cf1 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 26 May 2017 18:03:17 -0500 Subject: [PATCH 057/122] Ports stunbatons to Initialize --- code/game/objects/items/weapons/stunbaton.dm | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 5393f40ec6..c1b932d1bc 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -21,10 +21,9 @@ user.visible_message("[user] is putting the live [name] in [user.p_their()] mouth! It looks like [user.p_theyre()] trying to commit suicide!") return (FIRELOSS) -/obj/item/weapon/melee/baton/New() - ..() +/obj/item/weapon/melee/baton/Initialize() + . = ..() update_icon() - return /obj/item/weapon/melee/baton/throw_impact(atom/hit_atom) ..() @@ -32,10 +31,9 @@ if(status && prob(throw_hit_chance) && iscarbon(hit_atom)) baton_stun(hit_atom) -/obj/item/weapon/melee/baton/loaded/New() //this one starts with a cell pre-installed. - ..() +/obj/item/weapon/melee/baton/loaded/Initialize() //this one starts with a cell pre-installed. bcell = new(src) - update_icon() + . = ..() /obj/item/weapon/melee/baton/proc/deductcharge(chrgdeductamt) if(bcell) @@ -188,8 +186,8 @@ slot_flags = SLOT_BACK var/obj/item/device/assembly/igniter/sparkler = 0 -/obj/item/weapon/melee/baton/cattleprod/New() - ..() +/obj/item/weapon/melee/baton/cattleprod/Initialize() + . = ..() sparkler = new (src) /obj/item/weapon/melee/baton/cattleprod/baton_stun() From 15482314d43044a8aa591236318757f1932bd716 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 26 May 2017 18:03:21 -0500 Subject: [PATCH 058/122] Makes a thing use QDEL_NULL --- code/game/machinery/doors/airlock.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 1750aa7aa8..020f7aa309 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -204,9 +204,7 @@ if(charge) qdel(charge) charge = null - if(electronics) - qdel(electronics) - electronics = null + QDEL_NULL(electronics) if (cyclelinkedairlock) if (cyclelinkedairlock.cyclelinkedairlock == src) cyclelinkedairlock.cyclelinkedairlock = null From b977d6989de28600cf31c6af46039458eb3ed73d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 26 May 2017 18:04:26 -0500 Subject: [PATCH 059/122] Makes shades/constructs able to speak galcommon again --- code/modules/language/language_holder.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/language/language_holder.dm b/code/modules/language/language_holder.dm index 918f179591..a649041e01 100644 --- a/code/modules/language/language_holder.dm +++ b/code/modules/language/language_holder.dm @@ -107,7 +107,6 @@ /datum/language_holder/construct languages = list(/datum/language/common, /datum/language/narsie) - only_speaks_language = /datum/language/narsie /datum/language_holder/drone languages = list(/datum/language/common, /datum/language/drone, /datum/language/machine) From b089a14c536e35b1b1343128e42d551d3dd6b450 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 26 May 2017 19:06:39 -0500 Subject: [PATCH 060/122] Ports guns to Initialize --- .../objects/items/weapons/chrono_eraser.dm | 6 +++--- .../mission_code/stationCollision.dm | 8 ++++---- code/modules/clothing/chameleon.dm | 4 ++-- code/modules/projectiles/gun.dm | 4 ++-- code/modules/projectiles/guns/ballistic.dm | 4 ++-- .../projectiles/guns/ballistic/automatic.dm | 19 ++++++++---------- .../guns/ballistic/laser_gatling.dm | 20 +++++++++---------- .../projectiles/guns/ballistic/revolver.dm | 16 +++++++-------- .../projectiles/guns/ballistic/shotgun.dm | 8 ++++---- .../modules/projectiles/guns/ballistic/toy.dm | 4 ++-- code/modules/projectiles/guns/energy.dm | 4 ++-- .../projectiles/guns/energy/energy_gun.dm | 4 ++-- .../guns/energy/kinetic_accelerator.dm | 2 +- code/modules/projectiles/guns/energy/pulse.dm | 4 ++-- code/modules/projectiles/guns/magic.dm | 4 ++-- code/modules/projectiles/guns/magic/wand.dm | 4 ++-- code/modules/projectiles/guns/medbeam.dm | 8 ++++---- code/modules/projectiles/guns/syringe_gun.dm | 4 ++-- 18 files changed, 62 insertions(+), 65 deletions(-) diff --git a/code/game/objects/items/weapons/chrono_eraser.dm b/code/game/objects/items/weapons/chrono_eraser.dm index e32d365298..86664404d1 100644 --- a/code/game/objects/items/weapons/chrono_eraser.dm +++ b/code/game/objects/items/weapons/chrono_eraser.dm @@ -54,10 +54,10 @@ var/obj/effect/chrono_field/field = null var/turf/startpos = null -/obj/item/weapon/gun/energy/chrono_gun/New(var/obj/item/weapon/chrono_eraser/T) +/obj/item/weapon/gun/energy/chrono_gun/Initialize() . = ..() - if(istype(T)) - TED = T + if(istype(loc, /obj/item/weapon/chrono_eraser)) + TED = loc else //admin must have spawned it TED = new(src.loc) qdel(src) diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm index fb1d375854..441d40db8f 100644 --- a/code/modules/awaymissions/mission_code/stationCollision.dm +++ b/code/modules/awaymissions/mission_code/stationCollision.dm @@ -46,8 +46,8 @@ //Syndicate sub-machine guns. /obj/item/weapon/gun/ballistic/automatic/c20r/sc_c20r -/obj/item/weapon/gun/ballistic/automatic/c20r/sc_c20r/New() - ..() +/obj/item/weapon/gun/ballistic/automatic/c20r/sc_c20r/Initialize() + . = ..() for(var/ammo in magazine.stored_ammo) if(prob(95)) //95% chance magazine.stored_ammo -= ammo @@ -55,8 +55,8 @@ //Barman's shotgun /obj/item/weapon/gun/ballistic/shotgun/sc_pump -/obj/item/weapon/gun/ballistic/shotgun/sc_pump/New() - ..() +/obj/item/weapon/gun/ballistic/shotgun/sc_pump/Initialize() + . = ..() for(var/ammo in magazine.stored_ammo) if(prob(95)) //95% chance magazine.stored_ammo -= ammo diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index 0de56aa86a..3a91c3207e 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -420,8 +420,8 @@ var/badmin_mode = FALSE var/static/list/blacklisted_vars = list("locs", "loc", "contents", "x", "y", "z") -/obj/item/weapon/gun/energy/laser/chameleon/New() - ..() +/obj/item/weapon/gun/energy/laser/chameleon/Initialize() + . = ..() chameleon_action = new(src) chameleon_action.chameleon_type = /obj/item/weapon/gun chameleon_action.chameleon_name = "Gun" diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 2dffe0a567..6fb4e6276f 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -60,8 +60,8 @@ var/datum/action/toggle_scope_zoom/azoom -/obj/item/weapon/gun/New() - ..() +/obj/item/weapon/gun/Initialize() + . = ..() if(pin) pin = new pin(src) if(gun_light) diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index a7a8b75da2..80be30a06a 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -9,8 +9,8 @@ var/obj/item/ammo_box/magazine/magazine var/casing_ejector = 1 //whether the gun ejects the chambered casing -/obj/item/weapon/gun/ballistic/New() - ..() +/obj/item/weapon/gun/ballistic/Initialize() + . = ..() if(!spawnwithmagazine) update_icon() return diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 2f7036cab8..70d399b107 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -99,10 +99,9 @@ /obj/item/weapon/gun/ballistic/automatic/c20r/unrestricted pin = /obj/item/device/firing_pin -/obj/item/weapon/gun/ballistic/automatic/c20r/New() - ..() +/obj/item/weapon/gun/ballistic/automatic/c20r/Initialize() + . = ..() update_icon() - return /obj/item/weapon/gun/ballistic/automatic/c20r/afterattack() ..() @@ -150,20 +149,18 @@ fire_delay = 2 pin = /obj/item/device/firing_pin/implant/pindicate -/obj/item/weapon/gun/ballistic/automatic/m90/New() - ..() +/obj/item/weapon/gun/ballistic/automatic/m90/Initialize() + . = ..() underbarrel = new /obj/item/weapon/gun/ballistic/revolver/grenadelauncher(src) update_icon() - return /obj/item/weapon/gun/ballistic/automatic/m90/unrestricted pin = /obj/item/device/firing_pin -/obj/item/weapon/gun/ballistic/automatic/m90/unrestricted/New() - ..() +/obj/item/weapon/gun/ballistic/automatic/m90/unrestricted/Initialize() + . = ..() underbarrel = new /obj/item/weapon/gun/ballistic/revolver/grenadelauncher/unrestricted(src) update_icon() - return /obj/item/weapon/gun/ballistic/automatic/m90/afterattack(atom/target, mob/living/user, flag, params) if(select == 2) @@ -259,8 +256,8 @@ /obj/item/weapon/gun/ballistic/automatic/shotgun/bulldog/unrestricted pin = /obj/item/device/firing_pin -/obj/item/weapon/gun/ballistic/automatic/shotgun/bulldog/New() - ..() +/obj/item/weapon/gun/ballistic/automatic/shotgun/bulldog/Initialize() + . = ..() update_icon() /obj/item/weapon/gun/ballistic/automatic/shotgun/bulldog/update_icon() diff --git a/code/modules/projectiles/guns/ballistic/laser_gatling.dm b/code/modules/projectiles/guns/ballistic/laser_gatling.dm index bc0668cd66..a246871e61 100644 --- a/code/modules/projectiles/guns/ballistic/laser_gatling.dm +++ b/code/modules/projectiles/guns/ballistic/laser_gatling.dm @@ -9,16 +9,16 @@ item_state = "backpack" slot_flags = SLOT_BACK w_class = WEIGHT_CLASS_HUGE - var/obj/item/weapon/gun/ballistic/minigun/gun = null + var/obj/item/weapon/gun/ballistic/minigun/gun var/armed = 0 //whether the gun is attached, 0 is attached, 1 is the gun is wielded. var/overheat = 0 var/overheat_max = 40 var/heat_diffusion = 1 -/obj/item/weapon/minigunpack/New() +/obj/item/weapon/minigunpack/Initialize() + . = ..() gun = new(src) START_PROCESSING(SSobj, src) - ..() /obj/item/weapon/minigunpack/Destroy() STOP_PROCESSING(SSobj, src) @@ -110,15 +110,15 @@ casing_ejector = 0 var/obj/item/weapon/minigunpack/ammo_pack -/obj/item/weapon/gun/ballistic/minigun/New() +/obj/item/weapon/gun/ballistic/minigun/Initialize() SET_SECONDARY_FLAG(src, SLOWS_WHILE_IN_HAND) - if(!ammo_pack) - if(istype(loc,/obj/item/weapon/minigunpack)) //We should spawn inside a ammo pack so let's use that one. - ammo_pack = loc - ..() - else - qdel(src)//No pack, no gun + if(istype(loc, /obj/item/weapon/minigunpack)) //We should spawn inside a ammo pack so let's use that one. + ammo_pack = loc + else + return INITIALIZE_HINT_QDEL //No pack, no gun + + return ..() /obj/item/weapon/gun/ballistic/minigun/attack_self(mob/living/user) return diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 892defa9f4..2ce432bf31 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -6,8 +6,8 @@ origin_tech = "combat=3;materials=2" casing_ejector = 0 -/obj/item/weapon/gun/ballistic/revolver/New() - ..() +/obj/item/weapon/gun/ballistic/revolver/Initialize() + . = ..() if(!istype(magazine, /obj/item/ammo_box/magazine/internal/cylinder)) verbs -= /obj/item/weapon/gun/ballistic/revolver/verb/spin @@ -95,8 +95,8 @@ unique_rename = 1 unique_reskin = 1 -/obj/item/weapon/gun/ballistic/revolver/detective/New() - ..() +/obj/item/weapon/gun/ballistic/revolver/detective/Initialize() + . = ..() options["Default"] = "detective" options["Leopard Spots"] = "detective_leopard" options["Black Panther"] = "detective_panther" @@ -177,8 +177,8 @@ mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rus357 var/spun = FALSE -/obj/item/weapon/gun/ballistic/revolver/russian/New() - ..() +/obj/item/weapon/gun/ballistic/revolver/russian/Initialize() + . = ..() do_spin() spun = TRUE update_icon() @@ -271,8 +271,8 @@ unique_rename = 1 unique_reskin = 1 -/obj/item/weapon/gun/ballistic/revolver/doublebarrel/New() - ..() +/obj/item/weapon/gun/ballistic/revolver/doublebarrel/Initialize() + . = ..() options["Default"] = "dshotgun" options["Dark Red Finish"] = "dshotgun-d" options["Ash"] = "dshotgun-f" diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index 918acd27a1..6fc3fd3687 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -147,8 +147,8 @@ mag_type = /obj/item/ammo_box/magazine/internal/boltaction/enchanted/arcane_barrage -/obj/item/weapon/gun/ballistic/shotgun/boltaction/enchanted/New() - ..() +/obj/item/weapon/gun/ballistic/shotgun/boltaction/enchanted/Initialize() + . = ..() bolt_open = 1 pump() gun_type = type @@ -213,8 +213,8 @@ var/toggled = 0 var/obj/item/ammo_box/magazine/internal/shot/alternate_magazine -/obj/item/weapon/gun/ballistic/shotgun/automatic/dual_tube/New() - ..() +/obj/item/weapon/gun/ballistic/shotgun/automatic/dual_tube/Initialize() + . = ..() if (!alternate_magazine) alternate_magazine = new mag_type(src) diff --git a/code/modules/projectiles/guns/ballistic/toy.dm b/code/modules/projectiles/guns/ballistic/toy.dm index 89f6655d8e..9b8044dac8 100644 --- a/code/modules/projectiles/guns/ballistic/toy.dm +++ b/code/modules/projectiles/guns/ballistic/toy.dm @@ -35,9 +35,9 @@ /obj/item/weapon/gun/ballistic/automatic/toy/pistol/riot mag_type = /obj/item/ammo_box/magazine/toy/pistol/riot -/obj/item/weapon/gun/ballistic/automatic/toy/pistol/riot/New() +/obj/item/weapon/gun/ballistic/automatic/toy/pistol/riot/Initialize() magazine = new /obj/item/ammo_box/magazine/toy/pistol/riot(src) - ..() + return ..() /obj/item/weapon/gun/ballistic/automatic/toy/pistol/unrestricted pin = /obj/item/device/firing_pin diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 9e642b0cef..b022941f78 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -25,8 +25,8 @@ update_icon() -/obj/item/weapon/gun/energy/New() - ..() +/obj/item/weapon/gun/energy/Initialize() + . = ..() if(cell_type) power_supply = new cell_type(src) else diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm index 52f9852344..a8edc727b3 100644 --- a/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/code/modules/projectiles/guns/energy/energy_gun.dm @@ -22,9 +22,9 @@ charge_sections = 3 can_flashlight = 0 // Can't attach or detach the flashlight, and override it's icon update -/obj/item/weapon/gun/energy/e_gun/mini/New() +/obj/item/weapon/gun/energy/e_gun/mini/Initialize() gun_light = new /obj/item/device/flashlight/seclite(src) - ..() + return ..() /obj/item/weapon/gun/energy/e_gun/mini/update_icon() ..() diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 0f108fcc76..e8d48373da 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -68,7 +68,7 @@ unique_frequency = TRUE max_mod_capacity = 80 -/obj/item/weapon/gun/energy/kinetic_accelerator/New() +/obj/item/weapon/gun/energy/kinetic_accelerator/Initialize() . = ..() if(!holds_charge) empty() diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index b3e55f2423..43431a65c3 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -17,9 +17,9 @@ /obj/item/weapon/gun/energy/pulse/prize pin = /obj/item/device/firing_pin -/obj/item/weapon/gun/energy/pulse/prize/New() +/obj/item/weapon/gun/energy/pulse/prize/Initialize() . = ..() - GLOB.poi_list |= src + GLOB.poi_list += src var/msg = "A pulse rifle prize has been created at [ADMIN_COORDJMP(src)]" message_admins(msg) diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index 58a756a28d..9c30eefd2f 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -44,8 +44,8 @@ charges--//... drain a charge recharge_newshot() -/obj/item/weapon/gun/magic/New() - ..() +/obj/item/weapon/gun/magic/Initialize() + . = ..() charges = max_charges chambered = new ammo_type(src) if(can_charge) diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index fe93a58838..247273e3f4 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -9,13 +9,13 @@ max_charges = 100 //100, 50, 50, 34 (max charge distribution by 25%ths) var/variable_charges = 1 -/obj/item/weapon/gun/magic/wand/New() +/obj/item/weapon/gun/magic/wand/Initialize() if(prob(75) && variable_charges) //25% chance of listed max charges, 50% chance of 1/2 max charges, 25% chance of 1/3 max charges if(prob(33)) max_charges = Ceiling(max_charges / 3) else max_charges = Ceiling(max_charges / 2) - ..() + return ..() /obj/item/weapon/gun/magic/wand/examine(mob/user) ..() diff --git a/code/modules/projectiles/guns/medbeam.dm b/code/modules/projectiles/guns/medbeam.dm index 37d576a8ff..46758f8889 100644 --- a/code/modules/projectiles/guns/medbeam.dm +++ b/code/modules/projectiles/guns/medbeam.dm @@ -16,8 +16,8 @@ weapon_weight = WEAPON_MEDIUM -/obj/item/weapon/gun/medbeam/New() - ..() +/obj/item/weapon/gun/medbeam/Initialize() + . = ..() START_PROCESSING(SSobj, src) /obj/item/weapon/gun/medbeam/Destroy(mob/user) @@ -128,6 +128,6 @@ /obj/item/weapon/gun/medbeam/mech mounted = 1 -/obj/item/weapon/gun/medbeam/mech/New() - ..() +/obj/item/weapon/gun/medbeam/mech/Initialize() + . = ..() STOP_PROCESSING(SSobj, src) //Mech mediguns do not process until installed, and are controlled by the holder obj diff --git a/code/modules/projectiles/guns/syringe_gun.dm b/code/modules/projectiles/guns/syringe_gun.dm index 09547b0d98..2e8a29cded 100644 --- a/code/modules/projectiles/guns/syringe_gun.dm +++ b/code/modules/projectiles/guns/syringe_gun.dm @@ -14,8 +14,8 @@ var/list/syringes = list() var/max_syringes = 1 -/obj/item/weapon/gun/syringe/New() - ..() +/obj/item/weapon/gun/syringe/Initialize() + . = ..() chambered = new /obj/item/ammo_casing/syringegun(src) /obj/item/weapon/gun/syringe/recharge_newshot() From e3e040fee0646b14f7f417e5c0a46f261045bf65 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 26 May 2017 19:41:20 -0500 Subject: [PATCH 061/122] Fixes pre-round-start logs --- code/world.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/world.dm b/code/world.dm index 566c9e213c..df083571c4 100644 --- a/code/world.dm +++ b/code/world.dm @@ -18,7 +18,7 @@ SetupExternalRSC() - GLOB.config_error_log = file("data/logs/config_error.log") //temporary file used to record errors with loading config, moved to log directory once logging is set bl + GLOB.config_error_log = GLOB.world_href_log = GLOB.world_runtime_log = GLOB.world_attack_log = GLOB.world_game_log = file("data/logs/config_error.log") //temporary file used to record errors with loading config, moved to log directory once logging is set bl make_datum_references_lists() //initialises global lists for referencing frequently used datums (so that we only ever do it once) From 4ffca03a530fb9c9a8909efb2af7faa2c1121f03 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 26 May 2017 23:04:25 -0500 Subject: [PATCH 062/122] Automatic changelog generation for PR #1210 [ci skip] --- html/changelogs/AutoChangeLog-pr-1210.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1210.yml diff --git a/html/changelogs/AutoChangeLog-pr-1210.yml b/html/changelogs/AutoChangeLog-pr-1210.yml new file mode 100644 index 0000000000..4dd2b1de7d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1210.yml @@ -0,0 +1,4 @@ +author: "Kor" +delete-after: True +changes: + - bugfix: "The chaplains possessed blade, shades, and constructs, can once again speak galactic common." From 4680f045ffa61ba648e055457e93d0c1e28fb81c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 26 May 2017 23:22:32 -0500 Subject: [PATCH 063/122] Automatic changelog generation for PR #1195 [ci skip] --- html/changelogs/AutoChangeLog-pr-1195.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1195.yml diff --git a/html/changelogs/AutoChangeLog-pr-1195.yml b/html/changelogs/AutoChangeLog-pr-1195.yml new file mode 100644 index 0000000000..0a5716bcb7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1195.yml @@ -0,0 +1,6 @@ +author: "Moonlighting Mac says" +delete-after: True +changes: + - rscadd: "You can now craft a strong cloak with a hood made out of goliath and monster materials from within the primitive crafting screen." + - rscadd: "The cloak has a suit slot for all kind of primitive supplies, however it cannot carry most electronic miner equipment. +balance: Due to the recipe requiring leather, it is not normally accessible to all ghost roles without a source of water & electricity." From 2fbcba23557ef6159ec4a33187c936d623b28856 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 26 May 2017 23:23:48 -0500 Subject: [PATCH 064/122] Automatic changelog generation for PR #1183 [ci skip] --- html/changelogs/AutoChangeLog-pr-1183.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1183.yml diff --git a/html/changelogs/AutoChangeLog-pr-1183.yml b/html/changelogs/AutoChangeLog-pr-1183.yml new file mode 100644 index 0000000000..4a627f949b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1183.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "20% of internal affairs agents are actually traitors" From 83971cf8fb06f4b19e78511ffee766987ae98ef9 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 26 May 2017 23:24:09 -0500 Subject: [PATCH 065/122] Automatic changelog generation for PR #1182 [ci skip] --- html/changelogs/AutoChangeLog-pr-1182.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1182.yml diff --git a/html/changelogs/AutoChangeLog-pr-1182.yml b/html/changelogs/AutoChangeLog-pr-1182.yml new file mode 100644 index 0000000000..a2c7d10876 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1182.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - spellcheck: "typo fix for origin tech" From 127a9ff6d41d66c56d06cec7d4394db89e29195c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:26:50 -0500 Subject: [PATCH 066/122] Vapes are tiny (#1231) --- code/game/objects/items/weapons/cigs_lighters.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 82229bb7cf..86bbb340b1 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -622,6 +622,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon = 'icons/obj/clothing/masks.dmi' icon_state = null item_state = null + w_class = WEIGHT_CLASS_TINY var/chem_volume = 100 var/vapetime = 0 //this so it won't puff out clouds every tick var/screw = 0 // kinky From 63ac84ab6d9be6d2bfc40c12baea238d9814cae6 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:26:51 -0500 Subject: [PATCH 067/122] Automatic changelog generation for PR #1231 [ci skip] --- html/changelogs/AutoChangeLog-pr-1231.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1231.yml diff --git a/html/changelogs/AutoChangeLog-pr-1231.yml b/html/changelogs/AutoChangeLog-pr-1231.yml new file mode 100644 index 0000000000..7fad1ab274 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1231.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - tweak: "E-Cigarettes can now fit in your pocket." From c9ab875da92896f4162f878341b57e24a512da0a Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:26:59 -0500 Subject: [PATCH 068/122] Ports clonepods to Initialize (#1230) --- code/game/machinery/cloning.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index ec87cf6ba9..6df194cf25 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -44,8 +44,8 @@ "corazone", // prevents cardiac arrest damage "mimesbane") // stops them gasping from lack of air. -/obj/machinery/clonepod/New() - ..() +/obj/machinery/clonepod/Initialize() + . = ..() var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/clonepod(null) B.apply_default_parts(src) From 6c1159bf856ac7c470002fb96c439ed0312a55cb Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:27:33 -0500 Subject: [PATCH 069/122] Puts the Viruses back in the viro fridge at the syndicate base. (#1229) --- .../RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index 4b50904ea2..0bc99060de 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -726,7 +726,7 @@ }, /area/ruin/powered/syndicate_lava_base) "bM" = ( -/obj/machinery/smartfridge/chemistry/virology, +/obj/machinery/smartfridge/chemistry/virology/preloaded, /turf/open/floor/plasteel/podhatch{ tag = "icon-podhatch (EAST)"; icon_state = "podhatch"; From e5f2a0962298ebb07fc371d9c098c8d1faa82334 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:27:52 -0500 Subject: [PATCH 070/122] Pixel projectile ricochets and reflections! (#1220) --- code/__DEFINES/flags.dm | 2 ++ code/__HELPERS/maths.dm | 18 ++++++++++++++++-- code/game/atoms.dm | 3 +++ code/game/turfs/closed.dm | 3 --- .../turfs/simulated/wall/mineral_walls.dm | 1 + code/game/turfs/simulated/walls.dm | 14 ++++++++++++++ code/modules/projectiles/projectile.dm | 19 ++++++++++++++++++- code/modules/projectiles/projectile/beams.dm | 4 +++- 8 files changed, 57 insertions(+), 7 deletions(-) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index a5e69bdc7b..e443e57b14 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -14,6 +14,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define NOBLUDGEON 4 // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() #define MASKINTERNALS 8 // mask allows internals #define HEAR 16 // This flag is what recursive_hear_check() uses to determine wether to add an item to the hearer list or not. +#define CHECK_RICOCHET 32 // Projectiels will check ricochet on things impacted that have this. #define CONDUCT 64 // conducts electricity (metal etc.) #define ABSTRACT 128 // for all things that are technically items but used for various different stuff, made it 128 because it could conflict with other flags other way #define NODECONSTRUCT 128 // For machines and structures that should not break into parts, eg, holodeck stuff @@ -57,6 +58,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define UNUSED_TRANSIT_TURF 2 #define CAN_BE_DIRTY 4 //If a turf can be made dirty at roundstart. This is also used in areas. #define NO_DEATHRATTLE 16 // Do not notify deadchat about any deaths that occur on this turf. +//#define CHECK_RICOCHET 32 //Same thing as atom flag. /* These defines are used specifically with the atom/pass_flags bitmask diff --git a/code/__HELPERS/maths.dm b/code/__HELPERS/maths.dm index 7e892e8dd4..7e0fd531eb 100644 --- a/code/__HELPERS/maths.dm +++ b/code/__HELPERS/maths.dm @@ -130,6 +130,22 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, var/t = round((val - min) / d) return val - (t * d) +#define NORM_ROT(rot) ((((rot % 360) + (rot - round(rot, 1))) > 0) ? ((rot % 360) + (rot - round(rot, 1))) : (((rot % 360) + (rot - round(rot, 1))) + 360)) + +/proc/get_angle_of_incidence(face_angle, angle_in, auto_normalize = TRUE) + + var/angle_in_s = NORM_ROT(angle_in) + var/face_angle_s = NORM_ROT(face_angle) + var/incidence = face_angle_s - angle_in_s + var/incidence_s = incidence + while(incidence_s < -90) + incidence_s += 180 + while(incidence_s > 90) + incidence_s -= 180 + if(auto_normalize) + return incidence_s + else + return incidence //A logarithm that converts an integer to a number scaled between 0 and 1 (can be tweaked to be higher). //Currently, this is used for hydroponics-produce sprite transforming, but could be useful for other transform functions. @@ -141,8 +157,6 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, return size_factor + scaling_modifier //scale mod of 0 results in a number from 0 to 1. A scale modifier of +0.5 returns 0.5 to 1.5 //to_chat(world, "Transform multiplier of [src] is [size_factor + scaling_modifer]") - - //converts a uniform distributed random number into a normal distributed one //since this method produces two random numbers, one is saved for subsequent calls //(making the cost negligble for every second call) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 4a0f05602b..65d4cf1449 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -104,6 +104,9 @@ return ..() +/atom/proc/handle_ricochet(obj/item/projectile/P) + return + /atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5) return (!density || !height) diff --git a/code/game/turfs/closed.dm b/code/game/turfs/closed.dm index 741d4f2958..2c3e60694d 100644 --- a/code/game/turfs/closed.dm +++ b/code/game/turfs/closed.dm @@ -24,9 +24,6 @@ /turf/closed/indestructible/oldshuttle/corner icon_state = "corner" - - - /turf/closed/indestructible/splashscreen name = "Space Station 13" icon = 'config/title_screens/images/blank.png' diff --git a/code/game/turfs/simulated/wall/mineral_walls.dm b/code/game/turfs/simulated/wall/mineral_walls.dm index b78099c6bb..2cfb32f6dc 100644 --- a/code/game/turfs/simulated/wall/mineral_walls.dm +++ b/code/game/turfs/simulated/wall/mineral_walls.dm @@ -175,6 +175,7 @@ desc = "A light-weight titanium wall used in shuttles." icon = 'icons/turf/walls/shuttle_wall.dmi' icon_state = "map-shuttle" + flags = CAN_BE_DIRTY | CHECK_RICOCHET sheet_type = /obj/item/stack/sheet/mineral/titanium smooth = SMOOTH_MORE|SMOOTH_DIAGONAL canSmoothWith = list(/turf/closed/wall/mineral/titanium, /obj/machinery/door/airlock/shuttle, /obj/machinery/door/airlock/, /turf/closed/wall/shuttle, /obj/structure/window/shuttle, /obj/structure/shuttle/engine/heater, /obj/structure/falsewall/titanium) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 068dd0f218..44dc1afee7 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -28,6 +28,20 @@ /turf/closed/wall/attack_tk() return +/turf/closed/wall/handle_ricochet(obj/item/projectile/P) //A huge pile of shitcode! + var/turf/p_turf = get_turf(P) + var/face_direction = get_dir(src, p_turf) + var/face_angle = dir2angle(face_direction) + var/incidence_s = get_angle_of_incidence(face_angle, P.Angle) + var/new_angle = face_angle + incidence_s + var/new_angle_s = new_angle + while(new_angle_s > 180) // Translate to regular projectile degrees + new_angle_s -= 360 + while(new_angle_s < -180) + new_angle_s += 360 + P.Angle = new_angle_s + return TRUE + /turf/closed/wall/proc/dismantle_wall(devastated=0, explode=0) if(devastated) devastate_wall() diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 3dbadc85c5..8c810155db 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -28,6 +28,9 @@ var/spread = 0 //amount (in degrees) of projectile spread var/legacy = 0 //legacy projectile system animate_movement = 0 //Use SLIDE_STEPS in conjunction with legacy + var/ricochets = 0 + var/ricochets_max = 2 + var/ricochet_chance = 30 var/damage = 10 var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE are the only things that should be in here @@ -132,7 +135,11 @@ /obj/item/projectile/Bump(atom/A, yes) if(!yes) //prevents double bumps. return - if(firer) + if(check_ricochet() && check_ricochet_flag(A) && ricochets < ricochets_max) + ricochets++ + if(A.handle_ricochet(src)) + return FALSE + if(firer && !ricochets) if(A == firer || (A == firer.loc && istype(A, /obj/mecha))) //cannot shoot yourself or your mech loc = A.loc return 0 @@ -166,6 +173,16 @@ picked_mob.bullet_act(src, def_zone) qdel(src) +/obj/item/projectile/proc/check_ricochet() + if(prob(ricochet_chance)) + return TRUE + return FALSE + +/obj/item/projectile/proc/check_ricochet_flag(atom/A) + if(A.flags & CHECK_RICOCHET) + return TRUE + return FALSE + /obj/item/projectile/Process_Spacemove(var/movement_dir = 0) return 1 //Bullets don't drift in space diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 766d8b5e39..427f590ba5 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -11,7 +11,9 @@ eyeblur = 2 impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser light_color = LIGHT_COLOR_RED - + ricochets_max = 50 //Honk! + ricochet_chance = 80 + /obj/item/projectile/beam/laser /obj/item/projectile/beam/laser/heavylaser From 06234fa915aa5f4a71a1dfd4fc168c3d07ff867c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:27:53 -0500 Subject: [PATCH 071/122] Automatic changelog generation for PR #1220 [ci skip] --- html/changelogs/AutoChangeLog-pr-1220.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1220.yml diff --git a/html/changelogs/AutoChangeLog-pr-1220.yml b/html/changelogs/AutoChangeLog-pr-1220.yml new file mode 100644 index 0000000000..a9590654e2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1220.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "Nanotrasen's new titanium wall blueprints are smooth enough that it can reflect projectiles!" From 9288106128a3dea2b1dd2877f15869a43af67e1c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:29:32 -0500 Subject: [PATCH 072/122] Fixes monkeys having two Initializes and not returning a hint (#1188) --- code/modules/mob/living/carbon/monkey/monkey.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index a05614fe09..f6f7665ae8 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -31,10 +31,8 @@ create_internal_organs() - ..() + . = ..() -/mob/living/carbon/monkey/Initialize() - ..() create_dna(src) dna.initialize_dna(random_blood_type()) From 51dd042af54100599385cbc8e6bae946b512395c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:30:25 -0500 Subject: [PATCH 073/122] Necropolis tendrils glow again (#1228) --- .../simple_animal/hostile/mining_mobs.dm | 57 ++++++++++++------- 1 file changed, 36 insertions(+), 21 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index eaabcf5980..97fa07b5be 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -1037,6 +1037,11 @@ regenerate_icons() //Nests +/obj/effect/light_emitter/tendril + set_luminosity = 4 + set_cap = 2.5 + light_color = LIGHT_COLOR_LAVA + /mob/living/simple_animal/hostile/spawner/lavaland name = "necropolis tendril" desc = "A vile tendril of corruption, originating deep underground. Terrible monsters are pouring out of it." @@ -1046,7 +1051,6 @@ icon_dead = "tendril" faction = list("mining") weather_immunities = list("lava","ash") - luminosity = 1 health = 250 maxHealth = 250 max_mobs = 3 @@ -1059,9 +1063,17 @@ loot = list(/obj/effect/collapse, /obj/structure/closet/crate/necropolis/tendril) del_on_death = 1 var/gps = null + var/obj/effect/light_emitter/tendril/emitted_light + +/mob/living/simple_animal/hostile/spawner/lavaland/goliath + mob_type = /mob/living/simple_animal/hostile/asteroid/goliath/beast + +/mob/living/simple_animal/hostile/spawner/lavaland/legion + mob_type = /mob/living/simple_animal/hostile/asteroid/hivelord/legion /mob/living/simple_animal/hostile/spawner/lavaland/Initialize() - ..() + . = ..() + emitted_light = new(loc) for(var/F in RANGE_TURFS(1, src)) if(ismineralturf(F)) var/turf/closed/mineral/M = F @@ -1069,7 +1081,8 @@ gps = new /obj/item/device/gps/internal(src) /mob/living/simple_animal/hostile/spawner/lavaland/Destroy() - qdel(gps) + QDEL_NULL(emitted_light) + QDEL_NULL(gps) . = ..() #define MEDAL_PREFIX "Tendril" @@ -1096,29 +1109,31 @@ /obj/effect/collapse name = "collapsing necropolis tendril" desc = "Get clear!" - luminosity = 1 - layer = ABOVE_OPEN_TURF_LAYER + layer = BELOW_OBJ_LAYER icon = 'icons/mob/nest.dmi' icon_state = "tendril" anchored = TRUE + density = TRUE + var/obj/effect/light_emitter/tendril/emitted_light -/obj/effect/collapse/New() - ..() +/obj/effect/collapse/Initialize() + . = ..() + emitted_light = new(loc) visible_message("The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!") visible_message("Something falls free of the tendril!") - playsound(get_turf(src),'sound/effects/tendril_destroyed.ogg', 200, 0, 50, 1, 1) - spawn(50) - for(var/mob/M in range(7,src)) - shake_camera(M, 15, 1) - playsound(get_turf(src),'sound/effects/explosionfar.ogg', 200, 1) - visible_message("The tendril falls inward, the ground around it widening into a yawning chasm!") - for(var/turf/T in range(2,src)) - if(!T.density) - T.TerraformTurf(/turf/open/chasm/straight_down/lava_land_surface) - qdel(src) + playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, 0, 50, 1, 1) + addtimer(CALLBACK(src, .proc/collapse), 50) -/mob/living/simple_animal/hostile/spawner/lavaland/goliath - mob_type = /mob/living/simple_animal/hostile/asteroid/goliath/beast +/obj/effect/collapse/Destroy() + QDEL_NULL(emitted_light) + return ..() -/mob/living/simple_animal/hostile/spawner/lavaland/legion - mob_type = /mob/living/simple_animal/hostile/asteroid/hivelord/legion +/obj/effect/collapse/proc/collapse() + for(var/mob/M in range(7,src)) + shake_camera(M, 15, 1) + playsound(get_turf(src),'sound/effects/explosionfar.ogg', 200, 1) + visible_message("The tendril falls inward, the ground around it widening into a yawning chasm!") + for(var/turf/T in range(2,src)) + if(!T.density) + T.TerraformTurf(/turf/open/chasm/straight_down/lava_land_surface) + qdel(src) From a884c7efcd1f4f4762d36670bdc3d53c0c17832a Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:30:26 -0500 Subject: [PATCH 074/122] Automatic changelog generation for PR #1228 [ci skip] --- html/changelogs/AutoChangeLog-pr-1228.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1228.yml diff --git a/html/changelogs/AutoChangeLog-pr-1228.yml b/html/changelogs/AutoChangeLog-pr-1228.yml new file mode 100644 index 0000000000..1b9058a75c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1228.yml @@ -0,0 +1,4 @@ +author: "Joan" +delete-after: True +changes: + - bugfix: "Necropolis tendrils will once again emit light." From 3ed1975ddaee08e6e71998cbca0c35c084291196 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:31:13 -0500 Subject: [PATCH 075/122] Fixes dirty in lavaland (#1227) --- code/game/area/areas/mining.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/area/areas/mining.dm b/code/game/area/areas/mining.dm index 48271f479d..a88816f187 100644 --- a/code/game/area/areas/mining.dm +++ b/code/game/area/areas/mining.dm @@ -86,6 +86,7 @@ /area/lavaland icon_state = "mining" has_gravity = 1 + flags = NONE /area/lavaland/surface name = "Lavaland" @@ -123,4 +124,4 @@ icon_state = "danger" /area/lavaland/surface/outdoors/explored - name = "Lavaland Labor Camp" \ No newline at end of file + name = "Lavaland Labor Camp" From 41ba91a2a48a3fab3a9e376761bdf65b22101ef5 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:31:29 -0500 Subject: [PATCH 076/122] The Syndicate has fired their chemist and hired a replacement. (#1232) --- code/modules/paperwork/pen.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 73f4c73cfa..b6f8ee8f74 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -154,7 +154,7 @@ /obj/item/weapon/pen/sleepy/New() create_reagents(45) - reagents.add_reagent("morphine", 20) + reagents.add_reagent("chloralhydrate2", 20) reagents.add_reagent("mutetoxin", 15) reagents.add_reagent("tirizene", 10) ..() @@ -205,4 +205,4 @@ /obj/item/weapon/pen/poison/on_write(obj/item/weapon/paper/P, mob/user) P.contact_poison = "delayed_toxin" P.contact_poison_volume = 10 - add_logs(user,P,"used poison pen on") \ No newline at end of file + add_logs(user,P,"used poison pen on") From d900d20119becde9a85cc13bf2d91a1f491646a5 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:31:30 -0500 Subject: [PATCH 077/122] Automatic changelog generation for PR #1232 [ci skip] --- html/changelogs/AutoChangeLog-pr-1232.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1232.yml diff --git a/html/changelogs/AutoChangeLog-pr-1232.yml b/html/changelogs/AutoChangeLog-pr-1232.yml new file mode 100644 index 0000000000..97344d4418 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1232.yml @@ -0,0 +1,4 @@ +author: "Iamgoofball" +delete-after: True +changes: + - bugfix: "After the Syndicate realized their top chemist was both mixing a stamina destroying drug with a stimulant to avoid slowdowns entirely in their sleepypens, they fired him and replaced him with a new chemist." From 7b820cf7cac649aca95d68828a6c32f131bf2ef1 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:32:11 -0500 Subject: [PATCH 078/122] Fixes missing bracket in domi spawner message (#1234) --- code/game/gamemodes/gang/gang_items.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/gang/gang_items.dm b/code/game/gamemodes/gang/gang_items.dm index aec9b040cd..5a190d4a18 100644 --- a/code/game/gamemodes/gang/gang_items.dm +++ b/code/game/gamemodes/gang/gang_items.dm @@ -422,7 +422,7 @@ return FALSE if(dominator_excessive_walls(user)) - to_chat(user, "span class='warning'>The dominator will not function here! The dominator requires a sizable open space within three standard units so that walls do not interfere with the signal.") + to_chat(user, "The dominator will not function here! The dominator requires a sizable open space within three standard units so that walls do not interfere with the signal.") return FALSE if(!(usrarea.type in gang.territory|gang.territory_new)) From 740f1727725dd5126cdecdb12022c83781fddd4d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:32:49 -0500 Subject: [PATCH 079/122] Fixes airlocks having two Initializes (#1198) --- code/game/machinery/doors/airlock.dm | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index cd1d4de617..2175be22fe 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -97,7 +97,14 @@ var/static/list/airlock_overlays = list() /obj/machinery/door/airlock/Initialize() - ..() + . = ..() + + if (cyclelinkeddir) + cyclelinkairlock() + if(frequency) + set_frequency(frequency) + update_icon() + wires = new /datum/wires/airlock(src) if(src.closeOtherId != null) spawn (5) @@ -120,14 +127,6 @@ diag_hud.add_to_hud(src) diag_hud_set_electrified() -/obj/machinery/door/airlock/Initialize() - ..() - if (cyclelinkeddir) - cyclelinkairlock() - if(frequency) - set_frequency(frequency) - update_icon() - /obj/machinery/door/airlock/proc/cyclelinkairlock() if (cyclelinkedairlock) cyclelinkedairlock.cyclelinkedairlock = null From 8a3cd334db1a6450cca6739a0b23940397362134 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:32:59 -0500 Subject: [PATCH 080/122] Port vapes to Initialize() (#1224) --- code/game/objects/items/weapons/cigs_lighters.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 86bbb340b1..61ac601e71 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -634,8 +634,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM return (TOXLOSS|OXYLOSS) -/obj/item/clothing/mask/vape/New(loc, var/param_color = null) - ..() +/obj/item/clothing/mask/vape/Initialize(mapload, param_color) + . = ..() create_reagents(chem_volume) reagents.set_reacting(FALSE) // so it doesn't react until you light it reagents.add_reagent("nicotine", 50) From 4e381aaca40635717357f624257349431457d422 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:33:30 -0500 Subject: [PATCH 081/122] Fixes legion icon (#1222) --- code/modules/mob/living/simple_animal/hostile/mining_mobs.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index 97fa07b5be..c2bd44d8ef 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -840,6 +840,9 @@ health = 120 brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/advanced icon_state = "dwarf_legion" + icon_living = "dwarf_legion" + icon_aggro = "dwarf_legion" + icon_dead = "dwarf_legion" /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/advanced stat_attack = 2 @@ -859,6 +862,7 @@ max_mobs = 3 spawn_time = 200 spawn_text = "peels itself off from" + mob_type = /mob/living/simple_animal/hostile/asteroid/hivelord/legion melee_damage_lower = 20 melee_damage_upper = 20 anchored = FALSE From 6c79b06e2ca3bb1f8d236468ec805066f1271fc7 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:34:00 -0500 Subject: [PATCH 082/122] c4 now takes 3 seconds instead of 5 to plant (#1186) --- code/game/objects/items/weapons/grenades/plastic.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/grenades/plastic.dm b/code/game/objects/items/weapons/grenades/plastic.dm index 21a71f371d..a528a832c0 100644 --- a/code/game/objects/items/weapons/grenades/plastic.dm +++ b/code/game/objects/items/weapons/grenades/plastic.dm @@ -235,7 +235,7 @@ to_chat(user, "You start planting the bomb...") - if(do_after(user, 50, target = AM)) + if(do_after(user, 30, target = AM)) if(!user.temporarilyRemoveItemFromInventory(src)) return src.target = AM From f1239b1b9cc6f759a7e0bc7d5b3d43f265a71f7f Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:34:01 -0500 Subject: [PATCH 083/122] Automatic changelog generation for PR #1186 [ci skip] --- html/changelogs/AutoChangeLog-pr-1186.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1186.yml diff --git a/html/changelogs/AutoChangeLog-pr-1186.yml b/html/changelogs/AutoChangeLog-pr-1186.yml new file mode 100644 index 0000000000..205bc61c7a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1186.yml @@ -0,0 +1,4 @@ +author: "4dplanner, robustin" +delete-after: True +changes: + - bugfix: "c4 has always taken 3 seconds to plant, and you are not allow to believe otherwise" From 833c0c549cf5482b70f304f2de84697596712d00 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:35:52 -0500 Subject: [PATCH 084/122] Make dance machine mob dancing asynchronous (#1221) --- code/game/machinery/dance_machine.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm index 8632243b67..214feeb63a 100644 --- a/code/game/machinery/dance_machine.dm +++ b/code/game/machinery/dance_machine.dm @@ -317,7 +317,7 @@ /obj/machinery/disco/proc/dance(var/mob/living/M) //Show your moves - + set waitfor = FALSE switch(rand(0,9)) if(0 to 1) dance2(M) From e9d00c2affc727d1e38472585c9d3275d318e85e Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:36:44 -0500 Subject: [PATCH 085/122] [READY] Adds ability to add bayonets to weapons - Only enabled on kinetic accelerators - refactors gunlight/bayonet sprites to ballistics too (#1191) --- code/game/objects/items/weapons/kitchen.dm | 4 +- code/modules/projectiles/gun.dm | 131 ++++++++++++------ code/modules/projectiles/guns/energy.dm | 13 +- .../guns/energy/kinetic_accelerator.dm | 15 +- icons/obj/guns/bayonets.dmi | Bin 0 -> 268 bytes icons/obj/guns/flashlights.dmi | Bin 0 -> 457 bytes 6 files changed, 98 insertions(+), 65 deletions(-) create mode 100644 icons/obj/guns/bayonets.dmi create mode 100644 icons/obj/guns/flashlights.dmi diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 54a41b2214..e11e36bbb6 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -65,6 +65,7 @@ attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") sharpness = IS_SHARP_ACCURATE armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50) + var/bayonet = FALSE //Can this be attached to a gun? /obj/item/weapon/kitchen/knife/attack(mob/living/carbon/M, mob/living/carbon/user) if(user.zone_selected == "eyes") @@ -107,7 +108,7 @@ throwforce = 20 origin_tech = "materials=3;combat=4" attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") - + bayonet = TRUE /obj/item/weapon/kitchen/knife/combat/survival name = "survival knife" @@ -115,6 +116,7 @@ desc = "A hunting grade survival knife." force = 15 throwforce = 15 + bayonet = TRUE /obj/item/weapon/kitchen/knife/combat/bone name = "bone dagger" diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 6fb4e6276f..04761befdc 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -43,8 +43,11 @@ var/obj/item/device/firing_pin/pin = /obj/item/device/firing_pin //standard firing pin for most guns - var/obj/item/device/flashlight/gun_light = null + var/obj/item/device/flashlight/gun_light var/can_flashlight = 0 + var/obj/item/weapon/kitchen/knife/bayonet + var/can_bayonet = FALSE + var/datum/action/item_action/toggle_gunlight/alight var/list/upgrades = list() @@ -52,6 +55,8 @@ var/ammo_y_offset = 0 var/flight_x_offset = 0 var/flight_y_offset = 0 + var/knife_x_offset = 0 + var/knife_y_offset = 0 //Zooming var/zoomable = FALSE //whether the gun generates a Zoom action on creation @@ -65,8 +70,7 @@ if(pin) pin = new pin(src) if(gun_light) - verbs += /obj/item/weapon/gun/proc/toggle_gunlight - new /datum/action/item_action/toggle_gunlight(src) + alight = new /datum/action/item_action/toggle_gunlight(src) build_zooming() @@ -268,52 +272,88 @@ SSblackbox.add_details("gun_fired","[src.type]") return 1 +/obj/item/weapon/gun/update_icon() + ..() + cut_overlays() + if(gun_light && can_flashlight) + var/state = "flight[gun_light.on? "_on":""]" //Generic state. + if(gun_light.icon_state in icon_states('icons/obj/guns/flashlights.dmi')) //Snowflake state? + state = gun_light.icon_state + var/mutable_appearance/flashlight_overlay = mutable_appearance('icons/obj/guns/flashlights.dmi', state) + flashlight_overlay.pixel_x = flight_x_offset + flashlight_overlay.pixel_y = flight_y_offset + add_overlay(flashlight_overlay) + if(bayonet && can_bayonet) + var/state = "bayonet" //Generic state. + if(bayonet.icon_state in icon_states('icons/obj/guns/bayonets.dmi')) //Snowflake state? + state = bayonet.icon_state + var/mutable_appearance/knife_overlay = mutable_appearance('icons/obj/guns/bayonets.dmi', state) + knife_overlay.pixel_x = knife_x_offset + knife_overlay.pixel_y = knife_y_offset + add_overlay(knife_overlay) + /obj/item/weapon/gun/attack(mob/M as mob, mob/user) if(user.a_intent == INTENT_HARM) //Flogging - ..() - else - return + if(bayonet) + bayonet.attack(M, user) + return + return ..() + +/obj/item/weapon/gun/attack_obj(obj/O, mob/user) + if(user.a_intent == INTENT_HARM) + if(bayonet) + bayonet.attack_obj(O, user) + return + return ..() /obj/item/weapon/gun/attackby(obj/item/I, mob/user, params) - if(can_flashlight) - if(istype(I, /obj/item/device/flashlight/seclite)) - var/obj/item/device/flashlight/seclite/S = I - if(!gun_light) - if(!user.transferItemToLoc(I, src)) - return - to_chat(user, "You click [S] into place on [src].") - if(S.on) - set_light(0) - gun_light = S - update_icon() - update_gunlight(user) - verbs += /obj/item/weapon/gun/proc/toggle_gunlight - var/datum/action/A = new /datum/action/item_action/toggle_gunlight(src) - if(loc == user) - A.Grant(user) - - if(istype(I, /obj/item/weapon/screwdriver)) - if(gun_light) - for(var/obj/item/device/flashlight/seclite/S in src) - to_chat(user, "You unscrew the seclite from [src].") - gun_light = null - S.forceMove(get_turf(user)) - update_gunlight(user) - S.update_brightness(user) - update_icon() - verbs -= /obj/item/weapon/gun/proc/toggle_gunlight - for(var/datum/action/item_action/toggle_gunlight/TGL in actions) - qdel(TGL) + if(user.a_intent == INTENT_HARM) + return ..() + else if(istype(I, /obj/item/device/flashlight/seclite)) + if(!can_flashlight) + return ..() + var/obj/item/device/flashlight/seclite/S = I + if(!gun_light) + if(!user.transferItemToLoc(I, src)) + return + to_chat(user, "You click \the [S] into place on \the [src].") + if(S.on) + set_light(0) + gun_light = S + update_icon() + update_gunlight(user) + alight = new /datum/action/item_action/toggle_gunlight(src) + if(loc == user) + alight.Grant(user) + else if(istype(I, /obj/item/weapon/kitchen/knife)) + if(!can_bayonet) + return ..() + var/obj/item/weapon/kitchen/knife/K = I + if(!bayonet) + if(!user.transferItemToLoc(I, src)) + return + to_chat(user, "You attach \the [K] to the front of ]the [src].") + bayonet = K + update_icon() + else if(istype(I, /obj/item/weapon/screwdriver)) + if(gun_light) + var/obj/item/device/flashlight/seclite/S = gun_light + to_chat(user, "You unscrew the seclite from \the [src].") + gun_light = null + S.forceMove(get_turf(user)) + update_gunlight(user) + S.update_brightness(user) + update_icon() + QDEL_NULL(alight) + if(bayonet) + var/obj/item/weapon/kitchen/knife/K = bayonet + K.forceMove(get_turf(user)) + bayonet = null + update_icon() else - ..() - - + return ..() /obj/item/weapon/gun/proc/toggle_gunlight() - set name = "Toggle Gunlight" - set category = "Object" - set desc = "Click to toggle your weapon's attached flashlight." - if(!gun_light) return @@ -343,12 +383,16 @@ ..() if(azoom) azoom.Grant(user) + if(alight) + alight.Grant(user) /obj/item/weapon/gun/dropped(mob/user) ..() zoom(user,FALSE) if(azoom) azoom.Remove(user) + if(alight) + alight.Remove(user) /obj/item/weapon/gun/AltClick(mob/user) @@ -370,9 +414,6 @@ to_chat(M, "Your gun is now skinned as [choice]. Say hello to your new friend.") update_icon() - - - /obj/item/weapon/gun/proc/handle_suicide(mob/living/carbon/human/user, mob/living/carbon/human/target, params) if(!ishuman(user) || !ishuman(target)) return diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index b022941f78..f8d0911011 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -10,6 +10,7 @@ var/list/ammo_type = list(/obj/item/ammo_casing/energy) var/select = 1 //The state of the select fire switch. Determines from the ammo_type list what kind of shot is fired next. var/can_charge = 1 //Can it be charged in a recharger? + var/automatic_charge_overlays = TRUE //Do we handle overlays with base update_icon()? var/charge_sections = 4 ammo_x_offset = 2 var/shaded_charge = 0 //if this gun uses a stateful charge bar for more detail @@ -116,7 +117,9 @@ return /obj/item/weapon/gun/energy/update_icon() - cut_overlays() + ..() + if(!automatic_charge_overlays) + return var/ratio = Ceiling((power_supply.charge / power_supply.maxcharge) * charge_sections) var/obj/item/ammo_casing/energy/shot = ammo_type[select] var/iconState = "[icon_state]_charge" @@ -138,14 +141,6 @@ add_overlay(charge_overlay) else add_overlay("[icon_state]_charge[ratio]") - if(gun_light && can_flashlight) - var/iconF = "flight" - if(gun_light.on) - iconF = "flight_on" - var/mutable_appearance/flashlight_overlay = mutable_appearance(icon, iconF) - flashlight_overlay.pixel_x = flight_x_offset - flashlight_overlay.pixel_y = flight_y_offset - add_overlay(flashlight_overlay) if(itemState) itemState += "[ratio]" item_state = itemState diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index e8d48373da..1799a33cbb 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -16,6 +16,9 @@ var/holds_charge = FALSE var/unique_frequency = FALSE // modified by KA modkits var/overheat = FALSE + can_bayonet = TRUE + knife_x_offset = 15 + knife_y_offset = 13 var/max_mod_capacity = 100 var/list/modkits = list() @@ -129,19 +132,11 @@ overheat = FALSE /obj/item/weapon/gun/energy/kinetic_accelerator/update_icon() - cut_overlays() + ..() + if(empty_state && !can_shoot()) add_overlay(empty_state) - if(gun_light && can_flashlight) - var/iconF = "flight" - if(gun_light.on) - iconF = "flight_on" - var/mutable_appearance/flashlight_overlay = mutable_appearance(icon, iconF) - flashlight_overlay.pixel_x = flight_x_offset - flashlight_overlay.pixel_y = flight_y_offset - add_overlay(flashlight_overlay) - //Casing /obj/item/ammo_casing/energy/kinetic projectile_type = /obj/item/projectile/kinetic diff --git a/icons/obj/guns/bayonets.dmi b/icons/obj/guns/bayonets.dmi new file mode 100644 index 0000000000000000000000000000000000000000..176005b7d7035e71552d4cd37702734f719e3045 GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvp#Yx{*8>L*$jNBBxdct0ySA#K z&)CrZ#MN9|pe$oakY6x^!?PP{Ku&g5NJNQCYH@N=WKhlO#F@nvH#g*lHV9hnrO5Ui=W(a2tZ zt4n9MvFhd(5*kS-j?N65GGjJZqPF&qUppIk*%+!`Nd0B`pA!bO*3i?%F+^ixa)Jcw zVKEL)t(iM^>`-74X`Ry2+uJLsfvl_hC>f>Nw2Reg3>|2}-|^N-1zw+!ni}7#MjyT^vI)8sE-z^g9f+b-(txi;;&|WmfJz6~o}i!oFhqoCUMj zbhYR^+@4xJF)_78VCp5mRr*Kv_$qmStp9g%&7@<6N9xlKiX{lMZeYFP!kEKo7RV6Y z;45-~SfS6)xljDOXLH_P&mq(|G&WH#U@A97nuYVsmG(KeHlt1rm_U4}7y5@4R=Z9Qb7%oK3R(`H?ujV_) zl%Pxb`McT6Cq@_M{)ZT;u9l*F@@O1TaS?83{1OPJ)#rgmM literal 0 HcmV?d00001 From 8b0bc4ebcf57d44bd73b12f8f8ef1cadefb497bb Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:36:45 -0500 Subject: [PATCH 086/122] Automatic changelog generation for PR #1191 [ci skip] --- html/changelogs/AutoChangeLog-pr-1191.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1191.yml diff --git a/html/changelogs/AutoChangeLog-pr-1191.yml b/html/changelogs/AutoChangeLog-pr-1191.yml new file mode 100644 index 0000000000..9e1d3c3eaa --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1191.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "You can now add bayonets to kinetic accelerators. However, only combat knives and survival knives can be added. Harm intent attacking things will cause you to attack that thing with the bayonet instead!" From 0b44c77bfbfbe8bafb9f26e87c33f01231419808 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:37:45 -0500 Subject: [PATCH 087/122] UPDATE: Removes airlock charge from uplink (#1216) --- 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 667742afc4..f603612bbf 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -725,16 +725,6 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. item = /obj/item/weapon/grenade/clusterbuster/soap cost = 6 -/datum/uplink_item/stealthy_weapons/door_charge - name = "Explosive Airlock Charge" - desc = "A small, easily concealable device. It can be applied to an open airlock panel, booby-trapping it. \ - The next person to use that airlock will trigger an explosion, knocking them down and destroying \ - the airlock maintenance panel." - item = /obj/item/device/doorCharge - cost = 2 - surplus = 10 - exclude_modes = list(/datum/game_mode/nuclear) - // Stealth Items /datum/uplink_item/stealthy_tools category = "Stealth and Camouflage Items" From 9006cfeb60043f100f67528d7c27cfc5fc414978 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:39:51 -0500 Subject: [PATCH 088/122] Map conversions will always write out LF (#1212) --- tools/mapmerge/map_helpers.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/mapmerge/map_helpers.py b/tools/mapmerge/map_helpers.py index 2e96e7e7e2..ea06641f50 100644 --- a/tools/mapmerge/map_helpers.py +++ b/tools/mapmerge/map_helpers.py @@ -125,7 +125,7 @@ def merge_map(newfile, backupfile, tgm): ####################### #write to file helpers# def write_dictionary_tgm(filename, dictionary, header = None): #write dictionary in tgm format - with open(filename, "w") as output: + with open(filename, "w", newline='\n') as output: output.write("{}\n".format(tgm_header)) if header: output.write("{}\n".format(header)) @@ -172,7 +172,7 @@ def write_dictionary_tgm(filename, dictionary, header = None): #write dictionary def write_grid_coord_small(filename, grid, maxx, maxy): #thanks to YotaXP for finding out about this one - with open(filename, "a") as output: + with open(filename, "a", newline='\n') as output: output.write("\n") for x in range(1, maxx+1): @@ -183,7 +183,7 @@ def write_grid_coord_small(filename, grid, maxx, maxy): #thanks to YotaXP for fi def write_dictionary(filename, dictionary, header = None): #writes a tile dictionary the same way Dreammaker does - with open(filename, "w") as output: + with open(filename, "w", newline='\n') as output: for key, value in dictionary.items(): if header: output.write("{}\n".format(header)) @@ -191,7 +191,7 @@ def write_dictionary(filename, dictionary, header = None): #writes a tile dictio def write_grid(filename, grid, maxx, maxy): #writes a map grid the same way Dreammaker does - with open(filename, "a") as output: + with open(filename, "a", newline='\n') as output: output.write("\n") output.write("(1,1,1) = {\"\n") From a1ebd8c7910f80c444ecd6bae8a7d467ef554af4 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:40:09 -0500 Subject: [PATCH 089/122] Refactors how diagonal smoothing underlays work (#1187) --- code/__HELPERS/icon_smoothing.dm | 21 +++----- code/game/turfs/closed.dm | 8 +++ code/game/turfs/open.dm | 3 ++ code/game/turfs/simulated/chasm.dm | 9 ++++ .../game/turfs/simulated/floor/fancy_floor.dm | 21 ++++++-- .../turfs/simulated/floor/plating/lava.dm | 5 ++ code/game/turfs/simulated/minerals.dm | 9 +++- code/game/turfs/space/space.dm | 6 +++ code/game/turfs/space/transit.dm | 54 +++++++++++-------- code/game/turfs/turf.dm | 6 +++ code/modules/mining/mine_items.dm | 5 +- 11 files changed, 105 insertions(+), 42 deletions(-) diff --git a/code/__HELPERS/icon_smoothing.dm b/code/__HELPERS/icon_smoothing.dm index de46e18fde..a0de8d9840 100644 --- a/code/__HELPERS/icon_smoothing.dm +++ b/code/__HELPERS/icon_smoothing.dm @@ -167,23 +167,14 @@ underlay_appearance.icon = fixed_underlay["icon"] underlay_appearance.icon_state = fixed_underlay["icon_state"] else - var/turf/T = get_step(src, turn(adjacencies, 180)) - if(T && (T.density || T.smooth)) + var/turned_adjacency = turn(adjacencies, 180) + var/turf/T = get_step(src, turned_adjacency) + if(!T.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency)) T = get_step(src, turn(adjacencies, 135)) - if(T && (T.density || T.smooth)) + if(!T.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency)) T = get_step(src, turn(adjacencies, 225)) - - if(isspaceturf(T) && !istype(T, /turf/open/space/transit)) - underlay_appearance.icon = 'icons/turf/space.dmi' - underlay_appearance.icon_state = SPACE_ICON_STATE - underlay_appearance.plane = PLANE_SPACE - else if(T && !T.density && !T.smooth) - underlay_appearance.icon = T.icon - underlay_appearance.icon_state = T.icon_state - else if(baseturf && !initial(baseturf.density) && !initial(baseturf.smooth)) - underlay_appearance.icon = initial(baseturf.icon) - underlay_appearance.icon_state = initial(baseturf.icon_state) - else + //if all else fails, ask our own turf + if(!T.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency) && !get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency)) underlay_appearance.icon = DEFAULT_UNDERLAY_ICON underlay_appearance.icon_state = DEFAULT_UNDERLAY_ICON_STATE underlays = U diff --git a/code/game/turfs/closed.dm b/code/game/turfs/closed.dm index 2c3e60694d..a459ac5903 100644 --- a/code/game/turfs/closed.dm +++ b/code/game/turfs/closed.dm @@ -5,6 +5,9 @@ density = 1 blocks_air = 1 +/turf/closed/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) + return FALSE + /turf/closed/indestructible name = "wall" icon = 'icons/turf/walls.dmi' @@ -108,6 +111,11 @@ explosion_block = 50 baseturf = /turf/closed/indestructible/necropolis +/turf/closed/indestructible/necropolis/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) + underlay_appearance.icon = 'icons/turf/floors.dmi' + underlay_appearance.icon_state = "necro1" + return TRUE + /turf/closed/indestructible/riveted/hierophant name = "wall" desc = "A wall made out of a strange metal. The squares on it pulse in a predictable pattern." diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index ff278b415a..718451bcb0 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -45,6 +45,9 @@ /turf/open/indestructible/hierophant/two +/turf/open/indestructible/hierophant/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) + return FALSE + /turf/open/indestructible/paper name = "notebook floor" desc = "A floor made of invulnerable notebook paper." diff --git a/code/game/turfs/simulated/chasm.dm b/code/game/turfs/simulated/chasm.dm index 4f22487537..8f0de9675d 100644 --- a/code/game/turfs/simulated/chasm.dm +++ b/code/game/turfs/simulated/chasm.dm @@ -22,6 +22,10 @@ if(!drop_stuff()) STOP_PROCESSING(SSobj, src) +/turf/open/chasm/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) + underlay_appearance.icon = 'icons/turf/floors.dmi' + underlay_appearance.icon_state = "basalt" + return TRUE /turf/open/chasm/attackby(obj/item/C, mob/user, params, area/area_restriction) ..() @@ -171,6 +175,11 @@ planetary_atmos = TRUE initial_gas_mix = "o2=14;n2=23;TEMP=300" +/turf/open/chasm/jungle/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) + underlay_appearance.icon = 'icons/turf/floors.dmi' + underlay_appearance.icon_state = "dirt" + return TRUE + /turf/open/chasm/straight_down/jungle icon = 'icons/turf/floors/junglechasm.dmi' planetary_atmos = TRUE diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm index 4f6da47bde..91ed7a7cd6 100644 --- a/code/game/turfs/simulated/floor/fancy_floor.dm +++ b/code/game/turfs/simulated/floor/fancy_floor.dm @@ -140,7 +140,7 @@ floor_tile = /obj/item/stack/tile/carpet broken_states = list("damaged") smooth = SMOOTH_TRUE - canSmoothWith = list(/turf/open/floor/carpet, /turf/open/chasm) + canSmoothWith = list(/turf/open/floor/carpet) flags = NONE /turf/open/floor/carpet/Initialize() @@ -175,15 +175,22 @@ burnt = 1 update_icon() +/turf/open/floor/carpet/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) + return FALSE -turf/open/floor/fakepit +/turf/open/floor/fakepit desc = "A clever illusion designed to look like a bottomless pit." smooth = SMOOTH_TRUE | SMOOTH_BORDER | SMOOTH_MORE - canSmoothWith = list(/turf/open/floor/fakepit, /turf/open/chasm) + canSmoothWith = list(/turf/open/floor/fakepit) icon = 'icons/turf/floors/Chasms.dmi' icon_state = "smooth" +/turf/open/floor/fakepit/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) + underlay_appearance.icon = 'icons/turf/floors.dmi' + underlay_appearance.icon_state = "basalt" + return TRUE + /turf/open/floor/fakespace icon = 'icons/turf/space.dmi' icon_state = "0" @@ -193,4 +200,10 @@ turf/open/floor/fakepit /turf/open/floor/fakespace/Initialize() ..() - icon_state = "[rand(0,25)]" + icon_state = SPACE_ICON_STATE + +/turf/open/floor/fakespace/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) + underlay_appearance.icon = 'icons/turf/space.dmi' + underlay_appearance.icon_state = SPACE_ICON_STATE + underlay_appearance.plane = PLANE_SPACE + return TRUE diff --git a/code/game/turfs/simulated/floor/plating/lava.dm b/code/game/turfs/simulated/floor/plating/lava.dm index 9321b4f082..ead1e97d22 100644 --- a/code/game/turfs/simulated/floor/plating/lava.dm +++ b/code/game/turfs/simulated/floor/plating/lava.dm @@ -38,6 +38,11 @@ /turf/open/floor/plating/lava/make_plating() return +/turf/open/floor/plating/lava/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) + underlay_appearance.icon = 'icons/turf/floors.dmi' + underlay_appearance.icon_state = "basalt" + return TRUE + /turf/open/floor/plating/lava/GetHeatCapacity() . = 700000 diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm index 0a8230e186..9c3d8ed0c7 100644 --- a/code/game/turfs/simulated/minerals.dm +++ b/code/game/turfs/simulated/minerals.dm @@ -26,7 +26,7 @@ /turf/closed/mineral/Initialize() if (!canSmoothWith) - canSmoothWith = list(/turf/closed) + canSmoothWith = list(/turf/closed/mineral, /turf/closed/indestructible) pixel_y = -4 pixel_x = -4 icon = smooth_icon @@ -42,6 +42,13 @@ setDir(angle2dir(rotation+dir2angle(dir))) queue_smooth(src) +/turf/closed/mineral/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) + if(turf_type) + underlay_appearance.icon = initial(turf_type.icon) + underlay_appearance.icon_state = initial(turf_type.icon_state) + return TRUE + return ..() + /turf/closed/mineral/attackby(obj/item/weapon/pickaxe/P, mob/user, params) if (!user.IsAdvancedToolUser()) diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index 1876d6f782..bac25e68c0 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -160,6 +160,12 @@ /turf/open/space/acid_act(acidpwr, acid_volume) return 0 +/turf/open/space/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) + underlay_appearance.icon = 'icons/turf/space.dmi' + underlay_appearance.icon_state = SPACE_ICON_STATE + underlay_appearance.plane = PLANE_SPACE + return TRUE + /turf/open/space/rcd_vals(mob/user, obj/item/weapon/construction/rcd/the_rcd) if(!CanBuildHere()) diff --git a/code/game/turfs/space/transit.dm b/code/game/turfs/space/transit.dm index 68c00c54ec..c447b83a1f 100644 --- a/code/game/turfs/space/transit.dm +++ b/code/game/turfs/space/transit.dm @@ -4,6 +4,11 @@ baseturf = /turf/open/space/transit flags = NOJAUNT //This line goes out to every wizard that ever managed to escape the den. I'm sorry. +/turf/open/space/transit/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) + . = ..() + underlay_appearance.icon_state = "speedspace_ns_[get_transit_state(asking_turf)]" + underlay_appearance.transform = turn(matrix(), get_transit_angle(asking_turf)) + /turf/open/space/transit/south dir = SOUTH @@ -69,25 +74,32 @@ throw_atom(AM) /turf/open/space/transit/proc/update_icon() - var/p = 9 - var/angle = 0 - var/state = 1 - switch(dir) - if(NORTH) - angle = 180 - state = ((-p*x+y) % 15) + 1 - if(state < 1) - state += 15 - if(EAST) - angle = 90 - state = ((x+p*y) % 15) + 1 - if(WEST) - angle = -90 - state = ((x-p*y) % 15) + 1 - if(state < 1) - state += 15 - else - state = ((p*x+y) % 15) + 1 + icon_state = "speedspace_ns_[get_transit_state(src)]" + transform = turn(matrix(), get_transit_angle(src)) - icon_state = "speedspace_ns_[state]" - transform = turn(matrix(), angle) \ No newline at end of file +/proc/get_transit_state(turf/T) + var/p = 9 + . = 1 + switch(T.dir) + if(NORTH) + . = ((-p*T.x+T.y) % 15) + 1 + if(. < 1) + . += 15 + if(EAST) + . = ((T.x+p*T.y) % 15) + 1 + if(WEST) + . = ((T.x-p*T.y) % 15) + 1 + if(. < 1) + . += 15 + else + . = ((p*T.x+T.y) % 15) + 1 + +/proc/get_transit_angle(turf/T) + . = 0 + switch(T.dir) + if(NORTH) + . = 180 + if(EAST) + . = 90 + if(WEST) + . = -90 \ No newline at end of file diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index c4d35d7bd1..9d556e896f 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -394,6 +394,12 @@ if(ismob(A) || .) A.ratvar_act() +/turf/proc/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) + underlay_appearance.icon = icon + underlay_appearance.icon_state = icon_state + underlay_appearance.dir = adjacency_dir + return TRUE + /turf/proc/add_blueprints(atom/movable/AM) var/image/I = new I.appearance = AM.appearance diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 3df4d521ff..10b7bc1eac 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -217,6 +217,7 @@ /area/survivalpod name = "\improper Emergency Shelter" icon_state = "away" + dynamic_lighting = DYNAMIC_LIGHTING_FORCED requires_power = 0 has_gravity = 1 @@ -394,7 +395,9 @@ icon = 'icons/obj/lavaland/donkvendor.dmi' icon_on = "donkvendor" icon_off = "donkvendor" - luminosity = 8 + light_range = 5 + light_power = 1.2 + light_color = "#DDFFD3" max_n_of_items = 10 pixel_y = -4 flags = NODECONSTRUCT From fd2c61f3d30b234a7fd6862a77b6b4b497852ab2 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:42:58 -0500 Subject: [PATCH 090/122] [MIRROR] Adds a minor documentation comment (#1097) * Adds a minor documentation comment * Update subsystems.dm * Delete subsystems.dm.rej --- code/__DEFINES/subsystems.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 8c8b360497..7303f0f33a 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -39,6 +39,7 @@ // Subsystem init_order, from highest priority to lowest priority +// Subsystems shutdown in the reverse of the order they initialize in // The numbers just define the ordering, they are meaningless otherwise. #define INIT_ORDER_SERVER_MAINT 16 @@ -71,4 +72,4 @@ #define RUNLEVEL_GAME 4 #define RUNLEVEL_POSTGAME 8 -#define RUNLEVELS_DEFAULT (RUNLEVEL_SETUP | RUNLEVEL_GAME | RUNLEVEL_POSTGAME) \ No newline at end of file +#define RUNLEVELS_DEFAULT (RUNLEVEL_SETUP | RUNLEVEL_GAME | RUNLEVEL_POSTGAME) From d1e38d9e1f8a82feefaccc1115bed2d82bfdbf73 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:43:20 -0500 Subject: [PATCH 091/122] Fixed very minor capitalization and punctuation inconsistencies. (#1104) --- code/game/objects/structures/artstuff.dm | 4 ++-- code/game/objects/structures/signs.dm | 20 +++++++++---------- .../living/simple_animal/bot/construction.dm | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/code/game/objects/structures/artstuff.dm b/code/game/objects/structures/artstuff.dm index 23bbc40ed8..989bb6755b 100644 --- a/code/game/objects/structures/artstuff.dm +++ b/code/game/objects/structures/artstuff.dm @@ -5,7 +5,7 @@ /obj/structure/easel name = "easel" - desc = "only for the finest of art!" + desc = "Only for the finest of art!" icon = 'icons/obj/artstuff.dmi' icon_state = "easel" density = 1 @@ -49,7 +49,7 @@ GLOBAL_LIST_INIT(globalBlankCanvases, new(AMT_OF_CANVASES)) /obj/item/weapon/canvas name = "canvas" - desc = "draw out your soul on this canvas!" + desc = "Draw out your soul on this canvas!" icon = 'icons/obj/artstuff.dmi' icon_state = "11x11" resistance_flags = FLAMMABLE diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index 445af97b4e..8ffebdc0ab 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -146,49 +146,49 @@ /obj/structure/sign/biohazard name = "\improper BIOHAZARD" - desc = "A warning sign which reads 'BIOHAZARD'" + desc = "A warning sign which reads 'BIOHAZARD'." icon_state = "bio" /obj/structure/sign/electricshock name = "\improper HIGH VOLTAGE" - desc = "A warning sign which reads 'HIGH VOLTAGE'" + desc = "A warning sign which reads 'HIGH VOLTAGE'." icon_state = "shock" /obj/structure/sign/examroom name = "\improper EXAM ROOM" - desc = "A guidance sign which reads 'EXAM ROOM'" + desc = "A guidance sign which reads 'EXAM ROOM'." icon_state = "examroom" /obj/structure/sign/vacuum name = "\improper HARD VACUUM AHEAD" - desc = "A warning sign which reads 'HARD VACUUM AHEAD'" + desc = "A warning sign which reads 'HARD VACUUM AHEAD'." icon_state = "space" /obj/structure/sign/deathsposal name = "\improper DISPOSAL: LEADS TO SPACE" - desc = "A warning sign which reads 'DISPOSAL: LEADS TO SPACE'" + desc = "A warning sign which reads 'DISPOSAL: LEADS TO SPACE'." icon_state = "deathsposal" /obj/structure/sign/pods name = "\improper ESCAPE PODS" - desc = "A warning sign which reads 'ESCAPE PODS'" + desc = "A warning sign which reads 'ESCAPE PODS'." icon_state = "pods" /obj/structure/sign/fire name = "\improper DANGER: FIRE" - desc = "A warning sign which reads 'DANGER: FIRE'" + desc = "A warning sign which reads 'DANGER: FIRE'." icon_state = "fire" /obj/structure/sign/nosmoking_1 name = "\improper NO SMOKING" - desc = "A warning sign which reads 'NO SMOKING'" + desc = "A warning sign which reads 'NO SMOKING'." icon_state = "nosmoking" /obj/structure/sign/nosmoking_2 name = "\improper NO SMOKING" - desc = "A warning sign which reads 'NO SMOKING'" + desc = "A warning sign which reads 'NO SMOKING'." icon_state = "nosmoking2" /obj/structure/sign/radiation @@ -223,7 +223,7 @@ /obj/structure/sign/nanotrasen name = "\improper NanoTrasen Logo " - desc = "A sign with the Nanotrasen Logo on it. Glory to Nanotrasen!" + desc = "A sign with the Nanotrasen Logo on it. Glory to Nanotrasen!" icon_state = "nanotrasen" /obj/structure/sign/science //These 3 have multiple types, just var-edit the icon_state to whatever one you want on the map diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm index 25be049546..b3b4725914 100644 --- a/code/modules/mob/living/simple_animal/bot/construction.dm +++ b/code/modules/mob/living/simple_animal/bot/construction.dm @@ -273,7 +273,7 @@ //Medbot Assembly /obj/item/weapon/firstaid_arm_assembly - name = "incomplete medibot assembly." + name = "incomplete medibot assembly" desc = "A first aid kit with a robot arm permanently grafted to it." icon = 'icons/mob/aibots.dmi' icon_state = "firstaid_arm" From 499ef04593c0786d1797b876ed53cdf18a8c366d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 15:43:21 -0500 Subject: [PATCH 092/122] Automatic changelog generation for PR #1104 [ci skip] --- html/changelogs/AutoChangeLog-pr-1104.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1104.yml diff --git a/html/changelogs/AutoChangeLog-pr-1104.yml b/html/changelogs/AutoChangeLog-pr-1104.yml new file mode 100644 index 0000000000..caffe5a257 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1104.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - spellcheck: "Fixed very minor inconsistencies on items & punctuation on items." From 2cc74f4a8fae1c8db4f48a8cd442f6556f58232c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 20:55:04 -0500 Subject: [PATCH 093/122] Changes incorporeal movement to use defines --- code/__DEFINES/mobs.dm | 5 +++++ code/game/gamemodes/miniantags/revenant/revenant.dm | 12 ++++++------ code/modules/clothing/suits/miscellaneous.dm | 2 +- code/modules/mob/living/living_defines.dm | 3 ++- .../living/simple_animal/guardian/types/ranged.dm | 4 ++-- code/modules/mob/living/simple_animal/parrot.dm | 2 +- code/modules/mob/mob_movement.dm | 6 +++--- 7 files changed, 20 insertions(+), 14 deletions(-) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 2d36d72ee3..e5d1f4c19e 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -124,3 +124,8 @@ #define MAX_CHICKENS 50 #define UNHEALING_EAR_DAMAGE 100 + + +#define INCORPOREAL_MOVE_BASIC 1 +#define INCORPOREAL_MOVE_SHADOW 2 // leaves a trail of shadows +#define INCORPOREAL_MOVE_JAUNT 3 // is blocked by holy water/salt \ No newline at end of file diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index 293b114b36..da7cdee931 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -15,7 +15,7 @@ var/icon_stun = "revenant_stun" var/icon_drain = "revenant_draining" var/stasis = FALSE - incorporeal_move = 3 + incorporeal_move = INCORPOREAL_MOVE_JAUNT invisibility = INVISIBILITY_REVENANT health = INFINITY //Revenants don't use health, they use essence instead maxHealth = INFINITY @@ -102,7 +102,7 @@ if(unreveal_time && world.time >= unreveal_time) unreveal_time = 0 revealed = FALSE - incorporeal_move = 3 + incorporeal_move = INCORPOREAL_MOVE_JAUNT invisibility = INVISIBILITY_REVENANT to_chat(src, "You are once more concealed.") if(unstun_time && world.time >= unstun_time) @@ -222,7 +222,7 @@ R.essence = max(reforming_essence - 15 * perfectsouls, 75) //minus any perfect souls R.client_to_revive = client //If the essence reforms, the old revenant is put back in the body R.revenant = src - invisibility = INVISIBILITY_ABSTRACT + invisibility = INVISIBILITY_ABSTRACT revealed = FALSE ghostize(0)//Don't re-enter invisible corpse return @@ -236,7 +236,7 @@ return revealed = TRUE invisibility = 0 - incorporeal_move = 0 + incorporeal_move = FALSE if(!unreveal_time) to_chat(src, "You have been revealed!") unreveal_time = world.time + time @@ -309,12 +309,12 @@ /mob/living/simple_animal/revenant/proc/death_reset() revealed = FALSE - unreveal_time = 0 + unreveal_time = 0 notransform = 0 unstun_time = 0 inhibited = FALSE draining = FALSE - incorporeal_move = 3 + incorporeal_move = INCORPOREAL_MOVE_JAUNT invisibility = INVISIBILITY_REVENANT alpha=255 stasis = FALSE diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index bc1f25cfa7..02040b4469 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -541,5 +541,5 @@ name = "spooky ghost" desc = "this is obviously just a bedsheet, but maybe try it on?" icon_state = "bedsheet" - user_vars_to_edit = list("name" = "Spooky Ghost", "real_name" = "Spooky Ghost" , "incorporeal_move" = 1, "appearance_flags" = KEEP_TOGETHER|TILE_BOUND, "alpha" = 150) + user_vars_to_edit = list("name" = "Spooky Ghost", "real_name" = "Spooky Ghost" , "incorporeal_move" = INCORPOREAL_MOVE_BASIC, "appearance_flags" = KEEP_TOGETHER|TILE_BOUND, "alpha" = 150) alternate_worn_layer = ABOVE_BODY_FRONT_LAYER //so the bedsheet goes over everything but fire diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index fbf9c35303..83cc990a52 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -24,7 +24,8 @@ var/last_special = 0 //Used by the resist verb, likely used to prevent players from bypassing next_move by logging in/out. //Allows mobs to move through dense areas without restriction. For instance, in space or out of holder objects. - var/incorporeal_move = 0 //0 is off, 1 is normal, 2 is for ninjas. + var/incorporeal_move = FALSE //FALSE is off, INCORPOREAL_MOVE_BASIC is normal, INCORPOREAL_MOVE_SHADOW is for ninjas + //and INCORPOREAL_MOVE_JAUNT is blocked by holy water/salt var/list/surgeries = list() //a list of surgery datums. generally empty, they're added when the player wants them. 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 37777a5ead..e3792d40ba 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm @@ -37,7 +37,7 @@ environment_smash = initial(environment_smash) alpha = 255 range = initial(range) - incorporeal_move = 0 + incorporeal_move = FALSE to_chat(src, "You switch to combat mode.") toggle = FALSE else @@ -48,7 +48,7 @@ environment_smash = ENVIRONMENT_SMASH_NONE alpha = 45 range = 255 - incorporeal_move = 1 + incorporeal_move = INCORPOREAL_MOVE_BASIC to_chat(src, "You switch to scout mode.") toggle = TRUE else diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index e5dc99ea27..a0c1fe9fbe 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -948,7 +948,7 @@ color = "#FFFFFF77" speak_chance = 20 status_flags = GODMODE - incorporeal_move = 1 + incorporeal_move = INCORPOREAL_MOVE_BASIC butcher_results = list(/obj/item/weapon/ectoplasm = 1) /mob/living/simple_animal/parrot/Poly/ghost/Initialize() diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index e85dca9cad..43d8a924a1 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -209,10 +209,10 @@ return var/mob/living/L = mob switch(L.incorporeal_move) - if(1) + if(INCORPOREAL_MOVE_BASIC) L.loc = get_step(L, direct) L.setDir(direct) - if(2) + if(INCORPOREAL_MOVE_SHADOW) if(prob(50)) var/locx var/locy @@ -250,7 +250,7 @@ new /obj/effect/temp_visual/dir_setting/ninja/shadow(mobloc, L.dir) L.loc = get_step(L, direct) L.setDir(direct) - if(3) //Incorporeal move, but blocked by holy-watered tiles and salt piles. + if(INCORPOREAL_MOVE_JAUNT) //Incorporeal move, but blocked by holy-watered tiles and salt piles. var/turf/open/floor/stepTurf = get_step(L, direct) for(var/obj/effect/decal/cleanable/salt/S in stepTurf) to_chat(L, "[S] bars your passage!") From a4b0d04fe4b0562f6afe61c1810c09bbe559320b Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 20:56:13 -0500 Subject: [PATCH 094/122] Fixes a runtime with contraband crates --- code/modules/cargo/packs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index b88cfc0315..421b8a057e 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1582,7 +1582,7 @@ name = "Contraband Crate" contraband = TRUE cost = 3000 - num_contained = 6 + num_contained = 5 contains = list(/obj/item/weapon/poster/random_contraband, /obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims, /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori, From de3d21902a07a7b9bd8d08acd753ea5880d0658f Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 20:56:17 -0500 Subject: [PATCH 095/122] Fixes typo in garbage subsystem --- code/controllers/subsystem/garbage.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index 2611bc53e6..234569bfdc 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -164,8 +164,8 @@ SUBSYSTEM_DEF(garbage) if (time > highest_del_time) highest_del_time = time if (time > 10) - log_game("Error: [type]([refID]) took longer then 1 second to delete (took [time/10] seconds to delete)") - message_admins("Error: [type]([refID]) took longer then 1 second to delete (took [time/10] seconds to delete).") + log_game("Error: [type]([refID]) took longer than 1 second to delete (took [time/10] seconds to delete)") + message_admins("Error: [type]([refID]) took longer than 1 second to delete (took [time/10] seconds to delete).") postpone(time/5) /datum/controller/subsystem/garbage/proc/HardQueue(datum/A) From fdb54c3ce3ead0b67282e724ad9140138727d8ff Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sat, 27 May 2017 22:49:20 -0500 Subject: [PATCH 096/122] hat --- code/modules/clothing/head/cit_hats.dm | 3 ++- icons/mob/head.dmi | Bin 174767 -> 174987 bytes 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/clothing/head/cit_hats.dm b/code/modules/clothing/head/cit_hats.dm index d562802db1..31b36b7723 100644 --- a/code/modules/clothing/head/cit_hats.dm +++ b/code/modules/clothing/head/cit_hats.dm @@ -1,5 +1,6 @@ /obj/item/clothing/head/hunter name = "hunter hat" desc = "It's a flimsy looking hat." - icon_state = "hunter" + item_state = "hunter" + icon_state = "hunter-worn" icon = 'icons/obj/clothing/cit_hats.dmi' \ No newline at end of file diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 9d63c276bc9ef32dd74be79e7ccea017ab24aa39..f98009ca3a5aaa6cab59b15bdcbede5583112ae2 100644 GIT binary patch delta 19809 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�GeihR*oMG;??cctAd;8ZWlC2&A?d$D*R)#^(j-_?yAPoDNHuy`)Lid=s5#_!j zGGsv!?;2K0p~cjDcPUeIfa_BV0;zJK?DlAOe1E@c;a|c3!WhR?=)LJ!dM7u153iMC zys>~!E2)v2-Pt6YWrFJO*0d9D`=wjNb_;Hw-M?p8pvg zl~v~=7o_oMRQ~VxJQNUzPIA+WPr{h&4=`4@72kgGKvM^Z*>Zw^AJU07PL=OLrQ0{W#VolOx*b= zQ#_{4x@giC)3KX-`H2X}Z~T*^lZbI9$ciM@$8CZu;{b|1e6zJ3p}O{#IT!RDHEx=< z)0*{ZaA6vtX7{5^L*1>`AR}&%k=<@2a{Jy>lsKF=k-?kh7>DyYgrM zBEW|EjokJ-qZ@^bietwne3AV*}e3zUvZ3y=KDytarzY@<|JS-CEPEgX& z;G+U!6wAQsAuBf5reLQ}^=)2zQf}BHt}B}U%AYC8a#XcH#Ix#T`@ysJdD!OfCEq(1 z*8l8}RL`dH_*>uqN?1bqEV;>)|K9BeOZF_+GP8LMmYd)1^BT>xd5ur%9^XnApG}=t zxY?@GHM=yjz=9UQ1sx?)IrXnK2U+mGs;ongw(gX`n~S+{AprpaQv!~fpcgM*WN)oB zxUzm!&7VZp-(+r z>OPPx(`Z&w_VPx48(f2|Uhibju*e~I^Q(WE2|M2?kss~8}f79s21-o*&W zYL+T?+|y|wT=Xj6h^qbgm^_D)kM5GiKO;zpt%RoSPR8!>$!4-SaC@qCYE>#!+T{y) zSassn{wgM2ZK~%(1Mvo42 z1Nu;Lbt2!YacUBm+!vJhtZRLW?@T2;Xa6-$Sb~)_MsFsvf zdr4QcQ@SGMgg%jFh0pj)5ZK;kdosfc(|u2Os98`1WiXA*0WS!&YcG{^N^I$*OR^yI zmqSAHU*ofW*m*WE$@`BEpTXyhKYI|QA4PXzbyOVGqjPDRW;a0^TBrc)rv>!!b;Ei; zp)4Q_>y-eaM-XCk-0o!3j`3DFFwGXzQ*!XG9_@HF_UBJXX=$nK-xtbU$nC|MxM#Iz*oi!Jl}qI%nv_CPl=;a>(BWoQW_tc4EQ z3Bhs@j!b!srS)MTW(Y>NScfvWzP^t7IocqLcfev96(fs-2wk!t8K^%%`UqVdjts%y z*YCiRgy);$kBMR`edlDvy>IDVEZz}^god7;+=he3v{DRqHTUyFLmxX`@H;PGef^9i zE&PgcB3(zXo8$D}p%^Dtz@m{4-e>ju0Hmv7%yh20COw32yyszV{yF7LP0 ze@Zhb_n55T3ac)f@;Z;DOp+<+hYQ*xjy3f1lCJCZqfY-*=2=>Lf|$OLj6`*Mm-aE+G;N=*AV)_8k?7W~{$YGMn~J|2U7^U7Y<;g71v|qmr^|q;Cj}EI zwGij+iry1?{CHgO1QQW^=YIQ0@r?QI`?T(8;PxzS8U~-=_RP>qws+W_AMcAKBqjzg zE-uPmUSDI!uL(-R7#~KHv%G9?JSE0>ae12y94}Hoh2?#^!vJX>{A+DH@Xb8DLRCp~vGx0kx4lRTK7 znzS`Ko|1i6cby6981m9u#l5FbQsS|8MOnPay0t!tor_7jqGH+m><{^>rd&|1NJzOG z-K$=qUV4mW=qH+sK_33=@h$bYjLL2QZsJes<@l&@V5R_!xh|OIF=pFApO{?FyuAzj zGE-5zg;%=MpV)R=R;X>=Qb5WXD?3dX-AU=rpw{aEW*od#gYQiU50OjO<>C7W$gFX~ zv~Z(HKcTsbIE(H}-L|d@z{vXM@nmLQ(Am6;k%W4m9+lb1wM#4of9eiQT@}SRhq#4O z6w<;t)?BXW_&AcPBPS-g?>846_;~tanw<_kZt&fT5hd}tAYAFsF8WV16&Igf@2oR8 zFQ8pOdfhp9>;UQCyu1$}cF-^LabSvB_-8)uoO~X7nMc6eiT5|?vbQF;^lz-uRJOLZ zQJQAK)z!kA&_G(o|5)xIB9rTm-5(UE^vKVGlnw#iu>2E zUliwE8_h20$f?h4>>IRCXtr{flMA{z!qayyBaxy>O#%k#c?bjp~u#=#mr(- z!BPE3HNHR2Y5=~tD3^gF<4e7lUt~bsY2^OM_lAasr2rYn5+)xc;)=Z0nsi~y=;uKs zX`aPnJQ&xhucYd0Q$ADe6G)XW=C+FrIdiYn4 zH<9DYNa)S6(D4jX84uAG3L-e7DL-IvTyAyq)3oO7%&!J0EtIXah`kB(23cO3EHK+6 zLa_i>p`03G-?x;0@D|js?5_%ScSf&u8}AzW4m+gk(L{c$;hk$%QH(5)!y3@b;<57o zX@9^yX)NUifKP?LdmJ*Z*Vp3?(M}3Zb%)@)cZ>~a^>3X^aCiA7)CyPO(YDW7V#Z>` zs%2YL62>qKC|Hl_e~#<~zj;nx;*r)H<&wNmSJTsF;a9K*0v;3uWek5|g{rO2Sx}z2 z8KrziK3t$W!QQ1(udA({tsDL_nP^u~P(a`y&_LXJPuK;*CKR>yKLA+PAy22&#SWAj z4-O89iByM(GxgBDjoi9 zU6c;EsEA*h->H|%ul8xhm#Pyw-^Xu*Q%WEmIl~xWO&(HD=-vL&S`BC=x(4(U>O~Js zo>1oa%ONkT7tTu~BRUIzgs4MDQaxfyY&I_FPrfWb&!AqniVK^dv;t8R+2-?ckt{*a z#HR@y>f+1^iC?JCln)Zho3gsyksl&lhrIt=43BVy#bAkZ{GX%wcGkk-&)ix>IhmzC zxy-Fjc5Sy9>{H+=q%}4o)nQid)|I z5K%s|Z;EbNaF-Pd0t&PCF{mens;(Q$ko^4vP1N!{J50auU6&Q@88or z-@7{iJ0q*?H)+mQnBi@noUTbO>tZ=@yQ8A~>9G=xui~qW!~HvM;(Ivyp`yN#!QMT* zrj~Z76u>6Ufkm}m3I(q(ce3FxZ@$jeKme{ta;L*FkGY*C-z0hwYbLEJ(bZT4=&|5E zn0c7$@wd*DqB#&==&~0o@zj#Fgi8^7LPHCBI7npiRN7{0E?yT^)I)#>$G}{9 zUM!cJ+hbj}mrFX9ycD=V9M)AkV+t#Vq~ZJCJqHEK+G;g<^m02S!SWo9L`uB5Y5aqp@{=fnFg4}fd#VD>fmH-#gmuKrlkLWSmzjTN&_j$_Mp@<8 z1v)o@ie?$Ky=icG$NkI&MR~RS;~})U zboFOk&534a`HX$%bH=>^cQ+r(awNcS|T{uS4>KwGnJ94+8Gk6vYQJ$>*-LaN6B5?db}{J z1k9sDLf^kPuDJ~=4y?Q=pi>F(lWYy^42CYaDILEhkeQZq<31;>{4kQZ4eQP@`xd(lw zr9t^&g6Fch%${|&9NWO)J??Li2VM{#c7sf>P@MVEdNZjM*pe5GA8#=yVpJHqgA-sf5ol31GY z6k4P!la#*o(6M~-$rJk>k()8UDZ?w!OXLrWHcpN<0k!`yRo*_>c@y|u?SHbZYU|M-$Q#JeriS?XUMi`YXY-%PALc#>{6K=K#SCJva&1rr%g9_Hv>K= zeeIlGVN!#4eGOilvSAzdkjr3+4}2A|``tNT=X7Ynlg~QcT4zF%ElR8je555-O&=Dg zW%@`P3JC_Z0#9+Lm)ni!&&cZ$9oEMdIK$cT8(m%EWxV2n2lQF#4=;(Y@>@D6dsO55 zAF)$F#q!sB$RB&0*_cmvKzILwY9j$-$4vHj)I(&!&LAA$H#2Q{amv3!iJ+ifp=@Pw zD+{2gj7W$(Oqh#6b+gK61CEboX7Wjo$~$&1`qp)RD&T~N0l@P64fM$!mk$=eun&J6 zq}V!nqQ)FJ&6>v9>D<$>|Ks83&(sUUu0<7UI?tlcDO{!(n-t4zow~ztpq@FU6oL{0 zDmd}dpx#psZX%%4b;iP+Jh+y$3!~ToK&Y2=I)(rK<-!_$dvP5?mgEUW8h|wmP9m%4 zb&M=|fSlS|YK(?F)6|^WKAfvj^S3ZHjecz14*-fvissW~J~MK!7}Yg2AizI&uB_cu zqm0=2rpre7c}c}X{)g1h+aN`fNFo4?CL&JE_{@KI*-=@fQxu#81;iC1k@b;TTD<(q zZk32^K#G$ycg8BG9{Q}L6bDEhwrgS2F=S*4EzBG}Q2KqTUbn+sxANQ)Eo)^&VDA;s zT~6T_uJf1k3fBjoFY;^Hq0qK;K3#~&uPu@NTaY)mYEgymoXSGgn?_P)m;fj89 zxEoRL`7*@|uiGnkfrOiZW`bh4<>9e;i?>5$E0(;na+qis?(gysu=Rgw*5rQjkZ7MobrJ`M zt*DGtt*0C2k~8opWTFks@3vuh0he(;(b*6d!SnI^M@;AtHVU* zi=?i{0aD{+wI4NSwhQg$H@CK*F9F}|zr`e1O%DhFU*or}J|CxnVget76KJ~AX6~rX zAtODkz*`p=JldZ{0pC$4=<6MmouSf-d5>eytLtm_oR0Q{$%yilYMmV$KMxO)`T6;T z#x*^OaOlB8i_!B8X%h@GXTx1@E{+WPS6GA)=Ooi7qx0CgVhU#Fftk}}CiNJt>N=!w z6!-#NO%{J&{S3r3`q%i^j*$DA%{bs>Su!y>?#9K{$NS)c>f2{UlN9>#x`sP18*Ahr zC93+rmEMP@o7>wQQc{eVAP9h^F5lcP&-^4H(|>E!HDX5_;jAK$5?+QJE-6A?3 z;VItLE(cyN$>G3eEWtZhdzKAX$iUe*T={y$C_*wVzcV8|u>Ov{cfPGJo82@*q6L_hZKdozb>K62xeA|Qu0}Rd22=nH&7=*EHGs84{&fP^AZp^Cn6w# z%{eDqtawXcV_~`R!EVMG6~&%_@=Rem>stq4bm(*^Ph-QVEAAK*#p}BPo{>^UlXJ2K zJjcqg;FMRIUucoy#J+xNh0H0QD3KPVR#BwQuTt_(!2mtAHuJ&38sY-x?FB}>9|)*Y zXYdLAF8PZr>G$#z=C+twnr-&tn=Um8JveX%{!t;1tounyE!s?5@WIUt0?R<{1ye^% z=6GbJ|KCJ_dVExEMRa1Pj*r1Qmf!QV{~uM9c&TOPMki7+snOkh*xEh^m7`%X*Y4N#E&rBWR~zZB`qSyz^O2qC-nl5g$J8gP93rzXgfnd#|>Nh6=N^6dK6Z)#-*QfiHV-O355v2;Dn^BbaJu+0C7#?Uc6R2NYI>S4RqX zZ@KJM1BbM<8F9O?uy8_pdd$a5OnoFrSa2DS1uMkFr(<4DRd+495{NN%u{2=I)V(cA_@DQ==$T5 zR#OjUok!t+lP`O5k@$0?UQ}Fh6k;tmIK4t37vZX`{4Meo zM8H|`v6~YX+wqFl#aEhV#_|6z?Vg@qcQPavkaQhi;ql-hfA8$3O~&q>EKAxEGEj$$ zMcp>b3+?ahI!tdw$1WLz32r{`iF_xv&;N}X*h)Uj<+T);*SXR8?ptupncB?LvsRWa zxRS6jj&HzAVzWuET>N+mRuMu3lmu1(7}egRY%lV1ZNIjI%rp?DeTvZi-=LhU7NvB?6%p?7*qFM{suWcQD z(SR5xn&Kf9HjK@N$jiTGTMidZo!sCcaV)co1pYXS!K=xlic&%#nI6!}srDRTBy*C2 zTUvV2r8x^i?Y5oa_G5qF5kTVT#vu?E-ahL{*5-41D<81x{B3>>g)=X%++8@#4-wn~ zr=lDm%d-eRH#Dw*Npj3Ev=`)DF24Pw)YzS;2yH2}z=6P)npSM^b@szqCfRh_u!`q- zgew$(SU{%gJEnr7F#Q~CC%~mNcj+w%92yy+RjLwmJ+j0%LnD`HQ|hdcP6- zblGlv3N6hMMNh8B=2E9w5ac+=AH71!h5;#m_T z{~@MR8;H5f=oVSDlq2hn6tKF%oNZ>vzPLp#_zN^nPRR~Z4vUO*8Z9X)abFol<-C$> zyFKUR5EC=>w=gvP?sS)1z8NS)83>h$0~xRo7Nfx1M^pGY{{QQbnRO>*F(bW#hVrp4 z{js&8CM<+<7%NheLD#?{`0$n77Zm>Mq8V0d=%Cx#t0dw()D<}bdE}zB|1y{hp704Y zj19?L>trl}$yDq%+`5!zSGO5cm;O4EQX1XDFAZE}vt4pDS8SY}tHM{+S<}sG47XL(=>PM0EAb24*w6{_(nNsUhWisTt_#Iy+IcaQ5$= zjy?J4yIqM(+U%Ppk3aJ{YIil^G2oE}D!6{_-}u1oE${&X{|o%tCpY+X%-w;Nrw;B{ zCu_138|&+CJ=NLI(If#EUNPIk`y&cbnf4ng0h_Qq2@Q~Ki(|BxbENXh1_V((j&>jN{7{dY|A*xs)W3Nld z+)KK5b4%*!bBDPbav9a&>7Zmk ze8}N-gp!>=9ALkTg)oOmdLZ@Phco`0#NjR4%QU3QdF?At(SMUVCefxl$P_M$x&8Py znu3I!bYHKdtc+Qt5Y+x+A;%%`k7GDFiOz-q)6TvOJ=h^SnA!VB@7UnK_Hb!81l;EF z9T^Ma!iHc`8sxho*KVpcV_X0O4#GNRUi*xnc&sAGm2v$K_89Ym^V24N?6ZY2#vryr z5?l#D2QSqSQcTet#^xCKN^)wZ`)T&ElmlHD3uJa~9@MFP$oK#r9sXO)xTnDY_*Ls* z``sW)GklCIOvC))Yg2n8*6&`;cc?PiS>9@+&xp+ST-{w7SkwQemxGxWkiTkX(y#bc zJMv7FP)3n=0qN~onhmX-78)E;_~i&c6PnB7`Lpv4UXA)&zw?1w$u3)L@F4Uid4(tF z^3O3iaxMAyU5)Q`L5le@o(#NXExl#`a_7zbs&g9NerT+A3}(UV?dwCN`COe?1z;e- zE)sTgfDRG@*d9C}q>aI)jX`*%e*XMz7_*(?6?*d>B@J_dj1l%vMEFqOufk0{D|oh< zAdxN(5EU1vsFOgbpuk-Uz6^rqb@;xZfrC6Iuz*FY2DjLa;1FHrQBj3m)^WXD7`xuXfgGs3em$5r zF9x093yb*>JFYl*R{d@Xebm^3s`hs|E^}>LxSC&}n~Z>%hp}@HGqlG>N9}?hC4@Q@ zNy(nX!IRKqSQ3Suu#mPPB zMtU&(Mk_4TZ*&xMLG75SOGz2H9e??_>!MOWrG_ww$<=)iGNNYtyvX(O{7gMPqU4yq z9Wv&6?Z2?fkICB479=d-feR;mBD4=o@YqDAk&Csz_KNr&5X{fZS9q?@V(XVBm#dav zlXlunI2L(Lc>}P~%QE(ip4{T{d+A@fUK*Bl=M_xvlo<750ki_Rn6jd?V=@^W%>4WQ zyVoBOeGpn#08F3#yXhd&`EK@>X zgnF5N?_%gJ=vnvFPyUE}u1aphkhApZBTMs?QO{H0nMvk{kOL-an;oDM&srG1Fs%c3 zTw{behi1q&?kxNFY6!LA06NqKD~v$v`5%pcb!PK;3&XoY z%w(n>wYDz8c}#*A>aE8tm~3QOhx)n2At_1pzZ@E2oq^XgEv-K;j5Vy7*7s{_+=Un)^3a3%f(?^AW_;B^xEprm-cx5MS(qZj7Uxi&DJF`~odiQvT zj$QoZSTb!3vl|m-9x2g5(51J6%%9wmbjC;lwLxxTlA}{^-dOkcp1tF5^rqb|)Kqxk z41O*Lecrsu@4c;kVC;6t|AJqrfq3J*@*rzLx#yI~*UP7;EUtQdCb+N%-bbgyFb_8NjMshHZGG;;p_4?iBZ)c@SR zR{c*JVr)p~G(j>)IE}y7Hv$fZH(RIQ+=74nBCwWn12GiV+aWSGm*)kGiEeFc>CI%o z4T9~})t?vouilhJ2DC${TdhPqeoBTh3hTxiZBDPei@UxDcbe=RIvpFBEWj$(*oy6a ziOt>ewKC#U`?&m#`vY5p4brRYY9Rt9s*9&&WQ++5!wHLsSdS5E2LS2I`2pYaEcn{NiN2A}N<&rExFG1MXTncw+$`{C zAG@=HwOt8E`F@?yY9tv`|J4U~-iHsn{iW0?85oH2$9c<8JCR?jprd4%y}@hAY1Rpt zRksd9X605@QFa7fk)6iKwLS1sj`G{h->_~Y`Hnn#8``p8k!{npJ8t0{v>+yp-1C}k zf|9Txj(St$v`R9mv-FSUphT^IzUP$Gky-$s-sA-vN1as@ z?QxD{psoD!#gl*t{Jaf)s{SQ+;(my)9Iaw}qTA3>lcq1|m90t#o4*kA6cg(rmZyWg zpBcHw8i?$J&ATl_7Ju*Q_4VR&LjcU?$p%@Ke;I<*RO#pQ>4e$$Ckg! zEF;i$G61M?hN%9NS**+u0lV0-iy|l8(>xVHs3lAjn-5J-z`R zAd${PCYF}*j4q9k1=*GDPb&jOv%D>Cd^|jA{!AF;buxUCkdmG zkBUm&w5rKsU>-Q_;~J=G9iviDLF-$6)`vm|*oh0r`+k(v0lSdNHoySje zDBUE4oR6M5`&r+uP!I5VG=K65Bg7}V$?_eWgWI?<1%7|G^F^(}^-g~;L-06()4n-H z-!zmPz>ki3{Fq%KJx=->Av2W08nkDE@ybxV;seO!sXkNs_c@Km$maykH;eA)=?Ah! zg1nV1`+Lrx(;U8dp+F{wt+M0nG{Q}cYnOIEWUu))uPq1tlpgX3n#4ZdfN zQ~FtSu;qn_Ie8kaIf{?Lx~fax+pc+&+eXMF{G?x%n#VXnXEAD@KgNstD`Q2-s|4FB zC%ubL2AwPthA%ec<}qf}N8k41IpFb9H_9G`Fbe7*$n*aV2v%$E@`A z_205H0f+5iUY??VCV$;FEigqdyLippfZRj&nU+Gor7WEOA zpC4>_%u7EEv2wUn8HYMM`CB)VV$O<%g_XF*Sw`i5+|trgFoO?US5gBAuCA`wPNRL9 z7C{_f?ER0ukmci6?8d)@Uu`0E{miXu<&H?^M^tCLw-hBZ#`)L%l*AWK4&5wjZcE&L zAVB}o;O`MuS+)@5Bz~=5{pb|M$UN&iJz(HuxJp3SK(1Q3i|;POzQmpR2Wz4fRw*)( zD|#YE9>9c*Is)!EUqx+99{wOEDpfF22rhkzy*L0l7C7s9p46VfQJw@K1-+V*^W?_P9!e@;P) z3r+neCY>ozM?Q(HG){1+jBwcxWFbi~$DjlzH~L#iON;E~YZ-F0=B}It1Dz?9MWW-q z{oKNO=%?J`z274R=(jsNb9I?6H-1Jl_(&GhJ>RS117zG^B%I1*(r?Exg>R`6Jh12Cad4k6qDuN1rs80Ia^(N&5oUqm%U!PgC(<*d@{=9T+gem4QrJ>lR5YgA z@w1hnH$D5n@Tk${hrBBz_s4i8B_&SUg4nL)%z~@oo`&4qTwP*Z^Pg|3RttSBBXiiO zg6_KIs(7Iv#m+PjlT1B`mv2EEw;=6Yjg@#mZ@&5W%g#c+tB|U99gu3F?vwniCG}z~ z-F=VD;kEAuR~rqK^b@CqHkM&l80^8cT5_EBw9Dr%Wn*O#1J-pA;v?A3qdm|xN*G~YVjF_vpb7Vf0&{Px zSOfQ-Veb64wA+y(Q#%!bkW$@-1R>XKWudOgnp>Ubz)m%sbBduGBDR)JhA10qSNOJB zrWAef2D?(yl{uk-%+>gu7;9k2EwizE|~g0Bos+*sZa&yBzw5K^`ZPV#KPM z1%de!gExU@G|m+l*Bk#ueYq*bniZ(4Z$7AxY;FHEEk!iEVCe`|!}#pr6*Tr7;dU@f zh?~zYt@jC|t>FD-XxXf}&bL=r1rcs~dY|eX{32X2^Q7aK=hu5sVxM>BD*&*GKcU## z`f|1X|5a|?e@$dtd`KYj6zNiQk*e#8pePWCNLwH(Qld{Oks^weh=3rWB+Sr+r7265 z@`$h?0uoqC5FtcBY(aVp5ZWS0h=39{hV};c^ZtN$ez~8yb3b$MoO|Yb&z$o;c~KJY z?SmWds=K7#p*B2o;OplsO5AU7$PdN>b5#Oyhv>mGn?Wo&y#$27Rn}Z>O!GgBa`axx zjfi?1VyrPtTp5vT8KZc0jp)>Pw091tfsX@uPThf@4uxsmyVu&0=t(TDtYdomUEy@w zwJzpUw@xi{xvX%581jJ0P*dV*ue#r&_6)gZ6 zFeLes22LzS|TkHkANNncK9~^!zwJBTO~pi7QxL7X^1}izEL>8d6jH z&1ifAP*cnP5RUi=W=^HhtiLtzX16?!4HNGqak-ZxcD}WER&Avl49`BfJgMYofIrtF zV3eSD*Py0W5ZVM&iR3*vKW|uOzfkgT&iXlPJiThcWhZ6$t3@{PY(wOqZsVj0jR{U` zOBiis@A~er#g_M)Bf}+Jmf&3^Tu=0Xwd2bjle5bN*?S(hZl{MXrRG6y_+lBahe466 z)pa3a4T5mm^qmh>EcwT*Mb@K76d7IkM?GFkZP>BI`x|{|1rBEvMI3fOs%ElPuTLN) zO)+1qCQ~XV^JAOPs^)HxHg9l>8?oWvTRP})SQsFMy@>?8qE9=-2Ke@%9AnM_jRLUi z0suXF%QvQ`D|MX9r6~v9?s~oc>m1+9Q`6TfwLO1TCsfzp#Om#dC3_J6Dsr>-&jX&F z0VmEs{wqrW1pCL-&h4RCZ}n8$OC2~6S6X^h7=>DY?1sZdHL)-c;37^~bdUWaAFl8b zj)cf8;sHkIFuPA{^F{b=S%A_Ewjqjpp~d&ky88DQqyhK^RgSvpNSg;2PiO3DZaFtK z-yhdTzD*mDkoX4CX!47PqWnWLrz=j1Tl=+Nt)1zp`&=WcBUDh}QdY$^>sdK`Eb-^{ zNaE#-%8tmB6(^TR9_E#@MF9T%7aP`W*N$^Mr{O8VWcIyjmCV zZ*vLYcQ&T(8hJwSJu~&Gtcjq!6^?OA6?Y!stx1Yx>!QXldbH?8+Iw4WqlC0j- z=VA7G6{B$}IXW;DXj5;8L?loDS{=4e+TwhfRF*AxvaX(|V#Gvp3+UcHN)I~zP@oM^ z%MJGz_wLiulGC`fH$E`xX`Mb3-k74JaYZGs5ez6Rt3N?OM{KYjDlC*YH&4l-sk|!T zaSlVGifClDE&?Uf#N;mI6UB_(s@ndp3OmGjzR(!1WVCY@XrNX^s7xLy?i*O~`@p(4 z4oWLhQ}j1(*&a6P;)bYRKYz=JjmM{2c9&AVL?NtVjDM|^4%%AxgYZhh1}Us+F6K!Y;5Y4mQ6y0_o>eY^77JG z8p3Fg45hzV^d9D;;-^bqe!B6!^kI)9=&V+eaV4eXi1$GK%qRzqa0Z!~*T-tQc}wv% zvz>_qIoBAN3g^dKoqdCIa{4VXac}H{xV^wnBG@0c9n%LP8+U&k^(Hb`5IrJ{G1&xd zz;)v3{eMj-TOsMAS4+=1D0dgiYt~jC_02FLk)YnRSKb6dOs|31Hi`khp>+2)lR5id zZl6NE^~0`i`*K%dn_gMJ_UIH_;%Tn)jg@sQ*(J%E6KBymyQRJnQCPqT)lr^%m@BpR z`Cx3y3!(ZFWy&%dQ)85Dj?qU2ffy;XxPt=h(UZ@pTCZCD>=OV?1BG# zW!5VD*+GC|P#A8(ECZ1M31psx9QrB3Bnm*#E-#&F=@dAvqdF>lW;XaDzR0gaz*Uha z2KN?qtK}L!`J&_eC4=Uj5h-S!PlZ^6dS#YZi^{Esd<>pUG{A4oIh_=}_3n8qsUO>i z9W~rN8vuyGFqM^+rBEnLszt@=vv1@j-;@#aHA0k>8`}PU0IVSD=P{n zI|3qn;5^{lVD@jJh121zt^A5(p!b_1J)O|*+p_tyqK&&iKrBZk4RttTOJ3w~MI-?L zC4)HYD#m1@j97`vh(<8k;ejxR7Q9 z_QQJ|X(1t5-`6>JLn4nZn5pjT8`o-yG^I>_Zr@X3-`pDFh$l#tYv#q19qe_OV}uc( zg2iH*G0Qn3c;96H_r;|4i|~NNzlUd5UL6+}7Q7lHQz}0?+*LFN5w2PjqPmXq^{=Kk z8U;o@6h=kKA)1)7kmr56wZQTnrVP+m9e;K(7Ph`7?q~Qoil2$;WH+4f)+Q zCTs2v{T`r75mPEaH+W!h=$8ic7|wsO&e%kQVrqJWZ}rcY(gneeE#r55ERiCWSj14c zB@EnQfpsE2K3A%P=4o&=sKayX^?bQg-~^rS%3qsBvH~gy)WVSoHam_=H#k8SWy6Rc zOQjC`j0s}Q{FTMh4~Ql%DbBQ{A5lPiD5zat6fmjBMPH}o_BVR|C7d1SAHu7h5djjg zq#92@L(Eh99=l~ARAggjt+guaApIGe4L0Nd0F4enJP(QYZlsk01CL>4FRQk9xLPjL zExA0}{`!;T7(OmOBr36)L$q#{KA!er1)cd12A`e+w2vRZekm_2Iw$9R4yRIGy6NT1 z)$iG7?Qys+>KTocw~6wWpPWP8{Jxx_e*2K@dF(I%2w`{Y#@#hU;xFuLbsi8f9!uUG zNpXXnwPyp8+Wb*j*!<#ef*q5p=*tHDPmfy_d<&DXq#Kcy(DWgfaQ@iEANs^71^_Sy z1v|O#Hn3n6R}6o6KtC3@u$dj@h{%9bo_ieyJKT{P02YP{$iXdXCPQfu62AOD8r*8| V=n$6hm9zVp3zoJPRp#!|{{>ez#~T0u From fa42d8631a73f4dfc8b07e4a2484fab918b83a1d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 27 May 2017 23:27:19 -0500 Subject: [PATCH 097/122] Comm Console Fix --- code/game/machinery/computer/communications.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index c9a448fc7b..605cd60ce6 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -54,7 +54,7 @@ /obj/machinery/computer/communications/Topic(href, href_list) if(..()) return - if (src.z > ZLEVEL_CENTCOM) //Can only use on centcom and SS13 + if (z != ZLEVEL_STATION && z != ZLEVEL_CENTCOM) //Can only use on centcom and SS13 to_chat(usr, "Unable to establish a connection: \black You're too far away from the station!") return usr.set_machine(src) From f64ba98e9092daa26870487b919532cdcde3e0be Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 08:12:11 -0500 Subject: [PATCH 098/122] Ports modular computers to initialize --- .../computers/machinery/console_presets.dm | 2 +- .../computers/machinery/modular_computer.dm | 8 +++----- .../computers/machinery/modular_console.dm | 8 ++++---- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/code/modules/modular_computers/computers/machinery/console_presets.dm b/code/modules/modular_computers/computers/machinery/console_presets.dm index b2f0c5fb07..18a43defb6 100644 --- a/code/modules/modular_computers/computers/machinery/console_presets.dm +++ b/code/modules/modular_computers/computers/machinery/console_presets.dm @@ -5,7 +5,7 @@ var/_has_battery = 0 var/_has_ai = 0 -/obj/machinery/modular_computer/console/preset/New() +/obj/machinery/modular_computer/console/preset/Initialize() . = ..() if(!cpu) return diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm index b7b258d1ef..c8c303e453 100644 --- a/code/modules/modular_computers/computers/machinery/modular_computer.dm +++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm @@ -27,15 +27,13 @@ var/obj/item/device/modular_computer/processor/cpu = null // CPU that handles most logic while this type only handles power and other specific things. -/obj/machinery/modular_computer/New() - ..() +/obj/machinery/modular_computer/Initialize() + . = ..() cpu = new(src) cpu.physical = src /obj/machinery/modular_computer/Destroy() - if(cpu) - qdel(cpu) - cpu = null + QDEL_NULL(cpu) return ..() /obj/machinery/modular_computer/attack_ghost(mob/dead/observer/user) diff --git a/code/modules/modular_computers/computers/machinery/modular_console.dm b/code/modules/modular_computers/computers/machinery/modular_console.dm index 60315198ca..3f53ba715f 100644 --- a/code/modules/modular_computers/computers/machinery/modular_console.dm +++ b/code/modules/modular_computers/computers/machinery/modular_console.dm @@ -20,8 +20,8 @@ max_integrity = 300 integrity_failure = 150 -/obj/machinery/modular_computer/console/buildable/New() - ..() +/obj/machinery/modular_computer/console/buildable/Initialize() + . = ..() // User-built consoles start as empty frames. var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD] var/obj/item/weapon/computer_hardware/hard_drive/network_card = cpu.all_components[MC_NET] @@ -30,8 +30,8 @@ qdel(network_card) qdel(hard_drive) -/obj/machinery/modular_computer/console/New() - ..() +/obj/machinery/modular_computer/console/Initialize() + . = ..() var/obj/item/weapon/computer_hardware/battery/battery_module = cpu.all_components[MC_CELL] if(battery_module) qdel(battery_module) From 9f665647c20c7cc5a62554311d584a6a4521077c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 08:13:16 -0500 Subject: [PATCH 099/122] Ports cable structures to Initialize --- code/modules/power/cable.dm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 5bf4bab33e..c0ad4fd2b7 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -66,9 +66,8 @@ By design, d1 is the smallest direction and d2 is the highest icon = 'icons/obj/power_cond/power_cond_white.dmi' // the power cable object -/obj/structure/cable/New() - ..() - +/obj/structure/cable/Initialize() + . = ..() // ensure d1 & d2 reflect the icon_state for entering and exiting cable var/dash = findtext(icon_state, "-") @@ -529,7 +528,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai return(OXYLOSS) /obj/item/stack/cable_coil/New(loc, new_amount = null, var/param_color = null) - ..() + . = ..() if(new_amount) // MAXCOIL by default amount = new_amount if(param_color) From 4b9a7ce9cf092886698114f4f9bcc40b5c284a18 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 08:14:21 -0500 Subject: [PATCH 100/122] Adds AI follow links to PDA messages and holopad speech --- code/game/objects/items/devices/PDA/PDA.dm | 9 ++++++++- code/modules/mob/living/silicon/ai/ai.dm | 16 ++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 4a64cf5c0d..f3c32d3d68 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -632,7 +632,14 @@ GLOBAL_LIST_EMPTY(PDAs) L = get(src, /mob/living/silicon) if(L && L.stat != UNCONSCIOUS) - to_chat(L, "\icon[src] Message from [source.owner] ([source.ownjob]), \"[msg.message]\"[msg.get_photo_ref()] (Reply)") + + var/hrefstart + var/hrefend + if (isAI(L)) + hrefstart = "" + hrefend = "" + + to_chat(L, "\icon[src.icon] Message from [hrefstart][source.owner] ([source.ownjob])[hrefend], \"[msg.message]\"[msg.get_photo_ref()] (Reply)") update_icon() add_overlay(icon_alert) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index d3fe5eb6d2..f4cfb363fd 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -833,8 +833,20 @@ /mob/living/silicon/ai/proc/relay_speech(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode) raw_message = lang_treat(speaker, message_language, raw_message, spans, message_mode) - var/name_used = speaker.GetVoice() - var/rendered = "Relayed Speech: [name_used] [raw_message]" + var/start = "Relayed Speech: " + var/namepart = "[speaker.GetVoice()][speaker.get_alt_name()]" + var/hrefpart = "" + var/jobpart + + if (iscarbon(speaker)) + var/mob/living/carbon/S = speaker + if(S.job) + jobpart = "[S.job]" + else + jobpart = "Unknown" + + var/rendered = "[start][hrefpart][namepart] ([jobpart]) [raw_message]" + show_message(rendered, 2) /mob/living/silicon/ai/fully_replace_character_name(oldname,newname) From f89d732d0ae80f87bf450b5d5f7f38ebf4ad0cde Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 08:16:35 -0500 Subject: [PATCH 101/122] Removes duplicate sharpener from gang uplink --- code/game/gamemodes/gang/gang_datum.dm | 2 -- 1 file changed, 2 deletions(-) diff --git a/code/game/gamemodes/gang/gang_datum.dm b/code/game/gamemodes/gang/gang_datum.dm index 0ff9ef4f2d..f5db21f0ab 100644 --- a/code/game/gamemodes/gang/gang_datum.dm +++ b/code/game/gamemodes/gang/gang_datum.dm @@ -53,7 +53,6 @@ /datum/gang_item/weapon/ammo/uzi_ammo, /datum/gang_item/equipment/sharpener, /datum/gang_item/equipment/spraycan, - /datum/gang_item/equipment/sharpener, /datum/gang_item/equipment/emp, /datum/gang_item/equipment/c4, /datum/gang_item/equipment/frag, @@ -91,7 +90,6 @@ /datum/gang_item/weapon/ammo/uzi_ammo, /datum/gang_item/equipment/sharpener, /datum/gang_item/equipment/spraycan, - /datum/gang_item/equipment/sharpener, /datum/gang_item/equipment/emp, /datum/gang_item/equipment/c4, /datum/gang_item/equipment/frag, From 64562ba0c478623465f365cbd69d27fdd27059a7 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 08:17:44 -0500 Subject: [PATCH 102/122] Fixes clown creampie cannon not recharging properly --- code/game/objects/items/weapons/pneumaticCannon.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/pneumaticCannon.dm b/code/game/objects/items/weapons/pneumaticCannon.dm index 64fb4c7ecc..91b605543b 100644 --- a/code/game/objects/items/weapons/pneumaticCannon.dm +++ b/code/game/objects/items/weapons/pneumaticCannon.dm @@ -270,4 +270,4 @@ /obj/item/weapon/pneumatic_cannon/pie/selfcharge/process() if(++charge_tick >= charge_ticks) - fill_with_type(/obj/item/weapon/reagent_containers/food/snacks/pie, charge_amount) + fill_with_type(/obj/item/weapon/reagent_containers/food/snacks/pie/cream, charge_amount) From cd554d253795ac758b9cd52f9ba6733c41adfb94 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 11:09:34 -0500 Subject: [PATCH 103/122] Fixes crew monitoring console minimaps --- .../{Box Station_1.png => Box Station_2.png} | Bin .../{CereStation_1.png => CereStation_2.png} | Bin .../{Delta Station_1.png => Delta Station_2.png} | Bin .../{MetaStation_1.png => MetaStation_2.png} | Bin .../{OmegaStation_1.png => OmegaStation_2.png} | Bin 5 files changed, 0 insertions(+), 0 deletions(-) rename icons/minimaps/{Box Station_1.png => Box Station_2.png} (100%) rename icons/minimaps/{CereStation_1.png => CereStation_2.png} (100%) rename icons/minimaps/{Delta Station_1.png => Delta Station_2.png} (100%) rename icons/minimaps/{MetaStation_1.png => MetaStation_2.png} (100%) rename icons/minimaps/{OmegaStation_1.png => OmegaStation_2.png} (100%) diff --git a/icons/minimaps/Box Station_1.png b/icons/minimaps/Box Station_2.png similarity index 100% rename from icons/minimaps/Box Station_1.png rename to icons/minimaps/Box Station_2.png diff --git a/icons/minimaps/CereStation_1.png b/icons/minimaps/CereStation_2.png similarity index 100% rename from icons/minimaps/CereStation_1.png rename to icons/minimaps/CereStation_2.png diff --git a/icons/minimaps/Delta Station_1.png b/icons/minimaps/Delta Station_2.png similarity index 100% rename from icons/minimaps/Delta Station_1.png rename to icons/minimaps/Delta Station_2.png diff --git a/icons/minimaps/MetaStation_1.png b/icons/minimaps/MetaStation_2.png similarity index 100% rename from icons/minimaps/MetaStation_1.png rename to icons/minimaps/MetaStation_2.png diff --git a/icons/minimaps/OmegaStation_1.png b/icons/minimaps/OmegaStation_2.png similarity index 100% rename from icons/minimaps/OmegaStation_1.png rename to icons/minimaps/OmegaStation_2.png From 13b6a18f428c6163afeea0a8518ae7ea4f4f96ae Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 14:16:07 -0500 Subject: [PATCH 104/122] Automatic changelog generation for PR #1268 [ci skip] --- html/changelogs/AutoChangeLog-pr-1268.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1268.yml diff --git a/html/changelogs/AutoChangeLog-pr-1268.yml b/html/changelogs/AutoChangeLog-pr-1268.yml new file mode 100644 index 0000000000..1ed2a4fcb7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1268.yml @@ -0,0 +1,4 @@ +author: "QualityVan" +delete-after: True +changes: + - bugfix: "Crew monitoring consoles once again have minimaps while you're on the station level" From 7e88443115a94e41a61cddc6751e1252abc1dc9d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 14:32:19 -0500 Subject: [PATCH 105/122] Automatic changelog generation for PR #1255 [ci skip] --- html/changelogs/AutoChangeLog-pr-1255.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1255.yml diff --git a/html/changelogs/AutoChangeLog-pr-1255.yml b/html/changelogs/AutoChangeLog-pr-1255.yml new file mode 100644 index 0000000000..fdd7e8ac0f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1255.yml @@ -0,0 +1,5 @@ +author: "cacogen" +delete-after: True +changes: + - rscadd: "Adds AI follow links to holopad speech and PDA messages. Note that PDA messages point to the owner of the PDA and not the PDA's actual location." + - bugfix: "Fixes PDA icon not showing up beside received messages for AIs" From 42edd006b88b9711486e988712c149d244727311 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 28 May 2017 14:57:17 -0500 Subject: [PATCH 106/122] A BUNCH OF SHIT --- code/citadel/cit_clothing.dm | 6 +++ code/modules/clothing/head/cit_hats.dm | 2 +- code/modules/power/singularity/collector.dm | 40 +++++++++--------- .../power/singularity/collector.dm.rej | 12 ------ icons/mob/head.dmi | Bin 174987 -> 174985 bytes icons/obj/clothing/cit_hats.dmi | Bin 390 -> 286 bytes tgstation.dme | 2 +- 7 files changed, 29 insertions(+), 33 deletions(-) create mode 100644 code/citadel/cit_clothing.dm delete mode 100644 code/modules/power/singularity/collector.dm.rej diff --git a/code/citadel/cit_clothing.dm b/code/citadel/cit_clothing.dm new file mode 100644 index 0000000000..31b36b7723 --- /dev/null +++ b/code/citadel/cit_clothing.dm @@ -0,0 +1,6 @@ +/obj/item/clothing/head/hunter + name = "hunter hat" + desc = "It's a flimsy looking hat." + item_state = "hunter" + icon_state = "hunter-worn" + icon = 'icons/obj/clothing/cit_hats.dmi' \ No newline at end of file diff --git a/code/modules/clothing/head/cit_hats.dm b/code/modules/clothing/head/cit_hats.dm index 31b36b7723..a5b9d1a1b6 100644 --- a/code/modules/clothing/head/cit_hats.dm +++ b/code/modules/clothing/head/cit_hats.dm @@ -2,5 +2,5 @@ name = "hunter hat" desc = "It's a flimsy looking hat." item_state = "hunter" - icon_state = "hunter-worn" + icon_state = "hunter" icon = 'icons/obj/clothing/cit_hats.dmi' \ No newline at end of file diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 28e8709984..ac4873a09b 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -30,7 +30,7 @@ GLOBAL_LIST_EMPTY(rad_collectors) /obj/machinery/power/rad_collector/process() if(loaded_tank) if(!loaded_tank.air_contents.gases["plasma"]) - investigate_log("out of fuel.", INVESTIGATE_SINGULO) + investigate_log("out of fuel.", INVESTIGATE_SINGULO) eject() else loaded_tank.air_contents.gases["plasma"][MOLES] -= 0.001*drainratio @@ -46,9 +46,11 @@ GLOBAL_LIST_EMPTY(rad_collectors) toggle_power() user.visible_message("[user.name] turns the [src.name] [active? "on":"off"].", \ "You turn the [src.name] [active? "on":"off"].") - var/fuel = loaded_tank.air_contents.gases["plasma"] + var/fuel + if(loaded_tank) + fuel = loaded_tank.air_contents.gases["plasma"] fuel = fuel ? fuel[MOLES] : 0 - investigate_log("turned [active?"on":"off"] by [user.key]. [loaded_tank?"Fuel: [round(fuel/0.29)]%":"It is empty"].", INVESTIGATE_SINGULO) + investigate_log("turned [active?"on":"off"] by [user.key]. [loaded_tank?"Fuel: [round(fuel/0.29)]%":"It is empty"].", INVESTIGATE_SINGULO) return else to_chat(user, "The controls are locked!") @@ -73,34 +75,34 @@ GLOBAL_LIST_EMPTY(rad_collectors) /obj/machinery/power/rad_collector/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/device/multitool)) to_chat(user, "The [W.name] detects that [last_power]W were recently produced.") - return TRUE + return TRUE else if(istype(W, /obj/item/device/analyzer) && loaded_tank) atmosanalyzer_scan(loaded_tank.air_contents, user) else if(istype(W, /obj/item/weapon/tank/internals/plasma)) if(!anchored) to_chat(user, "The [src] needs to be secured to the floor first!") - return TRUE + return TRUE if(loaded_tank) to_chat(user, "There's already a plasma tank loaded!") - return TRUE + return TRUE if(!user.drop_item()) - return TRUE + return TRUE loaded_tank = W W.forceMove(src) update_icons() else if(istype(W, /obj/item/weapon/crowbar)) - if(loaded_tank) - if(locked) - to_chat(user, "The controls are locked!") - return TRUE + if(loaded_tank) + if(locked) + to_chat(user, "The controls are locked!") + return TRUE eject() - return TRUE - else - to_chat(user, "There isn't a tank loaded!") - return TRUE + return TRUE + else + to_chat(user, "There isn't a tank loaded!") + return TRUE else if(istype(W, /obj/item/weapon/wrench)) default_unfasten_wrench(user, W, 0) - return TRUE + return TRUE else if(W.GetID()) if(allowed(user)) if(active) @@ -110,7 +112,7 @@ GLOBAL_LIST_EMPTY(rad_collectors) to_chat(user, "The controls can only be locked when \the [src] is active!") else to_chat(user, "Access denied.") - return TRUE + return TRUE else return ..() @@ -147,11 +149,11 @@ GLOBAL_LIST_EMPTY(rad_collectors) /obj/machinery/power/rad_collector/proc/update_icons() cut_overlays() if(loaded_tank) - add_overlay("ptank") + add_overlay("ptank") if(stat & (NOPOWER|BROKEN)) return if(active) - add_overlay("on") + add_overlay("on") /obj/machinery/power/rad_collector/proc/toggle_power() diff --git a/code/modules/power/singularity/collector.dm.rej b/code/modules/power/singularity/collector.dm.rej deleted file mode 100644 index 68aa14d5d7..0000000000 --- a/code/modules/power/singularity/collector.dm.rej +++ /dev/null @@ -1,12 +0,0 @@ -diff a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm (rejected hunks) -@@ -46,7 +46,9 @@ GLOBAL_LIST_EMPTY(rad_collectors) - toggle_power() - user.visible_message("[user.name] turns the [src.name] [active? "on":"off"].", \ - "You turn the [src.name] [active? "on":"off"].") -- var/fuel = loaded_tank.air_contents.gases["plasma"] -+ var/fuel -+ if(loaded_tank) -+ fuel = loaded_tank.air_contents.gases["plasma"] - fuel = fuel ? fuel[MOLES] : 0 - investigate_log("turned [active?"on":"off"] by [user.key]. [loaded_tank?"Fuel: [round(fuel/0.29)]%":"It is empty"].","singulo") - return diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index f98009ca3a5aaa6cab59b15bdcbede5583112ae2..d27cfca0f9f3ff5f20de4b9f2f830af7c7ca7243 100644 GIT binary patch delta 52 zcmV-40L%Z2*9wW(3XmiLBe5kD2pIXc!25Oc`=4JnU;g;|_&>*n`Azihtz@%8b4kN(RKVoO-WgHQ;E MPzV9HPzVA!qrsXP5dZ)H diff --git a/icons/obj/clothing/cit_hats.dmi b/icons/obj/clothing/cit_hats.dmi index 25a03dc97e193cdfc267cc0555ad5b47f9e1ebb2..2f2b877effcf352a32a805499db394a0b1530d17 100644 GIT binary patch delta 158 zcmZo;p2wuv8Q|y6%O%Cdz`(%k>ERLtq!mDzg&9aThNK^#sA$fZH8Cu&0)_)2iBL{Q4GJ0x0000DNk~Le0000$0000$1Oos709Z$C?U5lj0c(+2 zR)3_6i!-e#F*g;&Hsn%PaP@Nmn+pJ3T^giU6)fBU005#%L_t(YiS3lZ4Z<)CMIB{< zd@=#f0z0N7gh|<*DRqNMs%4l@Cu^g{a7{Ng?X~pmF?zeXbUO=SI#Sy$^?g032$OA z(xlpkkhjrjyfjPQojpa(|HHWlkklRM9_h-_*xr;`J5B%b04kNrE+3Ks5XqgBazp?C N002ovPDHLkV1nZAYV-gA diff --git a/tgstation.dme b/tgstation.dme index f61256862c..7e42602839 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -161,6 +161,7 @@ #include "code\citadel\_cit_helpers.dm" #include "code\citadel\cit_areas.dm" #include "code\citadel\cit_arousal.dm" +#include "code\citadel\cit_clothing.dm" #include "code\citadel\cit_genemods.dm" #include "code\citadel\cit_guns.dm" #include "code\citadel\cit_kegs.dm" @@ -1194,7 +1195,6 @@ #include "code\modules\clothing\gloves\miscellaneous.dm" #include "code\modules\clothing\gloves\vg_gloves.dm" #include "code\modules\clothing\head\beanie.dm" -#include "code\modules\clothing\head\cit_hats.dm" #include "code\modules\clothing\head\collectable.dm" #include "code\modules\clothing\head\hardhat.dm" #include "code\modules\clothing\head\helmet.dm" From 2d41b7fe17eebf07620f5ed1f313469ee20e160c Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 28 May 2017 15:49:22 -0500 Subject: [PATCH 107/122] EHHH --- code/citadel/cit_clothing.dm | 6 ------ code/modules/clothing/head/cit_hats.dm | 6 ------ code/modules/clothing/head/misc.dm | 6 ++++++ icons/mob/head.dmi | Bin 174985 -> 174985 bytes icons/obj/clothing/hats.dmi | Bin 76536 -> 76690 bytes tgstation.dme | 1 - 6 files changed, 6 insertions(+), 13 deletions(-) delete mode 100644 code/citadel/cit_clothing.dm delete mode 100644 code/modules/clothing/head/cit_hats.dm diff --git a/code/citadel/cit_clothing.dm b/code/citadel/cit_clothing.dm deleted file mode 100644 index 31b36b7723..0000000000 --- a/code/citadel/cit_clothing.dm +++ /dev/null @@ -1,6 +0,0 @@ -/obj/item/clothing/head/hunter - name = "hunter hat" - desc = "It's a flimsy looking hat." - item_state = "hunter" - icon_state = "hunter-worn" - icon = 'icons/obj/clothing/cit_hats.dmi' \ No newline at end of file diff --git a/code/modules/clothing/head/cit_hats.dm b/code/modules/clothing/head/cit_hats.dm deleted file mode 100644 index a5b9d1a1b6..0000000000 --- a/code/modules/clothing/head/cit_hats.dm +++ /dev/null @@ -1,6 +0,0 @@ -/obj/item/clothing/head/hunter - name = "hunter hat" - desc = "It's a flimsy looking hat." - item_state = "hunter" - icon_state = "hunter" - icon = 'icons/obj/clothing/cit_hats.dmi' \ No newline at end of file diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 3bf866cc2c..c2979b1bcf 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -280,3 +280,9 @@ name = "magnificent crown" desc = "A crown worn by only the highest emperors of the land." icon_state = "fancycrown" + +/obj/item/clothing/head/hunter + name = "hunter hat" + desc = "It's a flimsy looking hat." + item_state = "hunter_hat" + icon_state = "hunter_hat" diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index d27cfca0f9f3ff5f20de4b9f2f830af7c7ca7243..86e720a42176ed23692088b882c5e6181f8f5d30 100644 GIT binary patch delta 47 zcmV+~0MP%5*9wW(3a~f`7%M5_*Uj&Le%XBa(%hM00wmV;0ThfoLsw@?TI FIipE-7OVgO delta 47 zcmV+~0MP%5*9wW(3a~f`82Prq`*rjCpIfYNw?}JbXhfoLsw@?TI FIirJn84Caa diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 6b0dd135f6e54f49c0bd608fa8e29e3eeb3473db..520ed276b83f3d377211292283a0c1d8b507f920 100644 GIT binary patch delta 20836 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 Date: Sun, 28 May 2017 17:10:46 -0500 Subject: [PATCH 108/122] Lets bayonets butcher, fixes bayoneting typo (#1242) --- code/modules/projectiles/gun.dm | 6 +++--- icons/obj/guns/projectile.dmi | Bin 31842 -> 31844 bytes 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 04761befdc..89baa173c1 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -295,14 +295,14 @@ /obj/item/weapon/gun/attack(mob/M as mob, mob/user) if(user.a_intent == INTENT_HARM) //Flogging if(bayonet) - bayonet.attack(M, user) + M.attackby(bayonet, user) return return ..() /obj/item/weapon/gun/attack_obj(obj/O, mob/user) if(user.a_intent == INTENT_HARM) if(bayonet) - bayonet.attack_obj(O, user) + O.attackby(bayonet, user) return return ..() @@ -332,7 +332,7 @@ if(!bayonet) if(!user.transferItemToLoc(I, src)) return - to_chat(user, "You attach \the [K] to the front of ]the [src].") + to_chat(user, "You attach \the [K] to the front of \the [src].") bayonet = K update_icon() else if(istype(I, /obj/item/weapon/screwdriver)) diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index 7cb9f2a3ff850efb26d82416b0aa04f60c0a4163..dd6146d7fb813cb53568e2f79f99b2a6dfffa33e 100644 GIT binary patch delta 43 zcmV+`0M!5D_yOej0gxmCeX%8O0~ejSb;ozr*B?*S)A#4?Z?yt%24@_s*|Vqvx_IJ% B77_pe delta 41 zcmV+^0M`HH_yOYh0gxmCd$A>M0~IZB@2amqo~ozs&)eVA;BIvJt~P+Pssp-szZn)( From 636f9b9fa19662bb2db49b2d2c2369296729cdc3 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 17:10:47 -0500 Subject: [PATCH 109/122] Automatic changelog generation for PR #1242 [ci skip] --- html/changelogs/AutoChangeLog-pr-1242.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1242.yml diff --git a/html/changelogs/AutoChangeLog-pr-1242.yml b/html/changelogs/AutoChangeLog-pr-1242.yml new file mode 100644 index 0000000000..a50edc4efb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1242.yml @@ -0,0 +1,4 @@ +author: "QualityVan" +delete-after: True +changes: + - bugfix: "Bayonets can now be used for butchery" From dec17dcfe65c432b552fbe06edcbc3384f56abd5 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 17:11:06 -0500 Subject: [PATCH 110/122] Dog beds can now be renamed after new owners (#1238) --- code/game/objects/structures/beds_chairs/bed.dm | 9 +++++++++ code/modules/mob/living/simple_animal/friendly/dog.dm | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm index 757a0bbb8d..744740c6f9 100644 --- a/code/game/objects/structures/beds_chairs/bed.dm +++ b/code/game/objects/structures/beds_chairs/bed.dm @@ -161,7 +161,16 @@ anchored = 0 buildstacktype = /obj/item/stack/sheet/mineral/wood buildstackamount = 10 + var/mob/living/owner = null +/obj/structure/bed/dogbed/proc/update_owner(mob/living/M) + owner = M + name = "[M]'s bed" + desc = "[M]'s bed! Looks comfy." + +/obj/structure/bed/dogbed/buckle_mob(mob/living/M, force, check_loc) + . = ..() + update_owner(M) /obj/structure/bed/alien name = "resting contraption" diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index a2ae3b4b2d..e691ff2dfd 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -44,6 +44,13 @@ butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab/pug = 3) gold_core_spawnable = 2 +/mob/living/simple_animal/pet/dog/Initialize() + var/dog_area = get_area(src) + for(var/obj/structure/bed/dogbed/D in dog_area) + if(!D.owner) + D.update_owner(src) + break + /mob/living/simple_animal/pet/dog/corgi/Initialize() ..() regenerate_icons() From fa3db4309422d4dacdc308293bd351a038277477 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 17:11:08 -0500 Subject: [PATCH 111/122] Automatic changelog generation for PR #1238 [ci skip] --- html/changelogs/AutoChangeLog-pr-1238.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1238.yml diff --git a/html/changelogs/AutoChangeLog-pr-1238.yml b/html/changelogs/AutoChangeLog-pr-1238.yml new file mode 100644 index 0000000000..f2e48eb64f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1238.yml @@ -0,0 +1,5 @@ +author: "cacogen" +delete-after: True +changes: + - rscadd: "You can now rename dog beds by buckling a new owner to them" + - rscadd: "Dogs that spawn in an area with a vacant bed will take possession of and rename the bed" From 7aff4f588e5e6874f198b8ac7b86659a8c19a755 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 17:13:04 -0500 Subject: [PATCH 112/122] [MIRROR] refactors how vehicles use offsets + multiseat (#1128) * refactors how vehicles use offsets + multiseat * RIDE --- code/datums/riding.dm | 175 ++++++++++------------------- code/modules/vehicles/speedbike.dm | 1 + 2 files changed, 60 insertions(+), 116 deletions(-) diff --git a/code/datums/riding.dm b/code/datums/riding.dm index c069e0cdeb..1d989cc653 100644 --- a/code/datums/riding.dm +++ b/code/datums/riding.dm @@ -1,6 +1,4 @@ /datum/riding - var/generic_pixel_x = 0 //All dirs show this pixel_x for the driver - var/generic_pixel_y = 0 //All dirs show this pixel_y for the driver, use these vars if the pixel shift is stable across all dir, override handle_vehicle_offsets otherwise. 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 @@ -34,16 +32,29 @@ /datum/riding/proc/force_dismount(mob/living/M) ridden.unbuckle_mob(M) -//Override this to set your vehicle's various pixel offsets -//if they differ between directions, otherwise use the -//generic variables /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 - buckled_mob.setDir(ridden.dir) - buckled_mob.pixel_x = generic_pixel_x - buckled_mob.pixel_y = generic_pixel_y + var/list/offsets = get_offsets(passindex) + 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)) //KEYS /datum/riding/proc/keycheck(mob/user) @@ -100,10 +111,12 @@ //atv /datum/riding/atv keytype = /obj/item/key - generic_pixel_x = 0 - generic_pixel_y = 4 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 @@ -150,24 +163,9 @@ keytype = /obj/item/key/janitor -/datum/riding/janicart/handle_vehicle_offsets() - ..() - if(ridden.has_buckled_mobs()) - for(var/m in ridden.buckled_mobs) - var/mob/living/buckled_mob = m - switch(buckled_mob.dir) - if(NORTH) - buckled_mob.pixel_x = 0 - buckled_mob.pixel_y = 4 - if(EAST) - buckled_mob.pixel_x = -12 - buckled_mob.pixel_y = 7 - if(SOUTH) - buckled_mob.pixel_x = 0 - buckled_mob.pixel_y = 7 - if(WEST) - buckled_mob.pixel_x = 12 - buckled_mob.pixel_y = 7 +/datum/riding/janicart/get_offsets(pass_index) // list(dir = x, y, layer) + return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(-12, 7), "[EAST]" = list(0, 7), "[WEST]" = list( 12, 7)) + //scooter /datum/riding/scooter/handle_vehicle_layer() if(ridden.dir == SOUTH) @@ -175,20 +173,14 @@ 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 - switch(buckled_mob.dir) - if(NORTH) - buckled_mob.pixel_x = 0 - if(EAST) - buckled_mob.pixel_x = -2 - if(SOUTH) - buckled_mob.pixel_x = 0 - if(WEST) - buckled_mob.pixel_x = 2 if(buckled_mob.get_num_legs() > 0) buckled_mob.pixel_y = 5 else @@ -209,16 +201,18 @@ //secway /datum/riding/secway keytype = /obj/item/key/security - generic_pixel_x = 0 - generic_pixel_y = 4 + +/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 - generic_pixel_x = 0 - generic_pixel_y = 4 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 @@ -233,54 +227,28 @@ ridden.pixel_x = -18 ridden.pixel_y = 0 -/datum/riding/space/speedbike/handle_vehicle_offsets() - if(ridden.has_buckled_mobs()) - for(var/m in ridden.buckled_mobs) - var/mob/living/buckled_mob = m - buckled_mob.setDir(ridden.dir) - switch(ridden.dir) - if(NORTH) - buckled_mob.pixel_x = 0 - buckled_mob.pixel_y = -8 - if(SOUTH) - buckled_mob.pixel_x = 0 - buckled_mob.pixel_y = 4 - if(EAST) - buckled_mob.pixel_x = -10 - buckled_mob.pixel_y = 5 - if(WEST) - buckled_mob.pixel_x = 10 - buckled_mob.pixel_y = 5 +/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_offsets() - if(ridden.has_buckled_mobs()) - for(var/m in ridden.buckled_mobs) - var/mob/living/buckled_mob = m - buckled_mob.setDir(ridden.dir) - ridden.pixel_x = -48 - ridden.pixel_y = -48 - switch(ridden.dir) - if(NORTH) - buckled_mob.pixel_x = -10 - buckled_mob.pixel_y = -3 - if(SOUTH) - buckled_mob.pixel_x = 16 - buckled_mob.pixel_y = 3 - if(EAST) - buckled_mob.pixel_x = -4 - buckled_mob.pixel_y = 30 - if(WEST) - buckled_mob.pixel_x = 4 - buckled_mob.pixel_y = -1 - /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/weapon/oar @@ -297,17 +265,15 @@ /datum/riding/boat/dragon keytype = null - generic_pixel_y = 2 - generic_pixel_x = 1 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 - generic_pixel_x = 0 - generic_pixel_y = 4 /datum/riding/animal/handle_ride(mob/user, direction) if(user.incapacitated()) @@ -335,7 +301,7 @@ /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]!") + M.visible_message("[M] falls off of [ridden]!") Unbuckle(M) return FALSE if(M.restrained(TRUE)) @@ -345,22 +311,8 @@ if(H.pulling == M) H.stop_pulling() -/datum/riding/human/handle_vehicle_offsets() - for(var/mob/living/M in ridden.buckled_mobs) - M.setDir(ridden.dir) - switch(ridden.dir) - if(NORTH) - M.pixel_x = 0 - M.pixel_y = 6 - if(SOUTH) - M.pixel_x = 0 - M.pixel_y = 6 - if(EAST) - M.pixel_x = -6 - M.pixel_y = 4 - if(WEST) - M.pixel_x = 6 - M.pixel_y = 4 +/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) @@ -375,7 +327,7 @@ ridden.unbuckle_mob(user) user.Weaken(3) user.Stun(3) - user.visible_message("[ridden] pushes [user] off of them!") + user.visible_message("[ridden] pushes [user] off of them!") /datum/riding/cyborg keytype = null @@ -407,6 +359,9 @@ 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) @@ -417,26 +372,14 @@ M.pixel_x = R.module.ride_offset_x[dir2text(ridden.dir)] M.pixel_y = R.module.ride_offset_y[dir2text(ridden.dir)] else - switch(ridden.dir) - if(NORTH) - M.pixel_x = 0 - M.pixel_y = 4 - if(SOUTH) - M.pixel_x = 0 - M.pixel_y = 4 - if(EAST) - M.pixel_x = -6 - M.pixel_y = 3 - if(WEST) - M.pixel_x = 6 - M.pixel_y = 3 + ..() /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.visible_message("[M] is thrown clear of [ridden]!") M.throw_at(target, 14, 5, ridden) M.Weaken(3) diff --git a/code/modules/vehicles/speedbike.dm b/code/modules/vehicles/speedbike.dm index 7cd2839b4b..d67e769ea3 100644 --- a/code/modules/vehicles/speedbike.dm +++ b/code/modules/vehicles/speedbike.dm @@ -35,6 +35,7 @@ icon_state = "speedwagon" layer = LYING_MOB_LAYER overlay_state = "speedwagon_cover" + max_buckled_mobs = 4 var/crash_all = FALSE //CHAOS pixel_y = -48 //to fix the offset when Initialized() pixel_x = -48 From e3d228aa000cc79e8e9f4dbb6dd19592f79f0a71 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 17:19:46 -0500 Subject: [PATCH 113/122] [MIRROR] ID card mapping aid (#1223) * ID card mapping aid * Update cards_ids.dm * lf --- code/game/objects/items/weapons/cards_ids.dm | 8 +++++ code/modules/jobs/access.dm | 31 +++++++++----------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 222fbe4174..021966570a 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -83,6 +83,14 @@ var/list/access = list() var/registered_name = null // The name registered_name on the card var/assignment = null + var/access_txt // mapping aid + + + +/obj/item/weapon/card/id/Initialize(mapload) + . = ..() + if(mapload && access_txt) + access = text2access(access_txt) /obj/item/weapon/card/id/attack_self(mob/user) user.visible_message("[user] shows you: \icon[src] [src.name].", \ diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index d3a8c089d6..bf554f85a9 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -136,26 +136,23 @@ GLOBAL_VAR_CONST(access_away_generic4, 208) /obj/item/proc/GetID() return null +/obj/proc/text2access(access_text) + . = list() + if(!access_text) + return + var/list/split = splittext(access_text,";") + for(var/x in split) + var/n = text2num(x) + if(n) + . += n + //Call this before using req_access or req_one_access directly /obj/proc/gen_access() //These generations have been moved out of /obj/New() because they were slowing down the creation of objects that never even used the access system. - if(!src.req_access) - src.req_access = list() - if(src.req_access_txt) - var/list/req_access_str = splittext(req_access_txt,";") - for(var/x in req_access_str) - var/n = text2num(x) - if(n) - req_access += n - - if(!src.req_one_access) - src.req_one_access = list() - if(src.req_one_access_txt) - var/list/req_one_access_str = splittext(req_one_access_txt,";") - for(var/x in req_one_access_str) - var/n = text2num(x) - if(n) - req_one_access += n + for(var/a in text2access(req_access_txt)) + req_access += a + for(var/b in text2access(req_one_access_txt)) + req_one_access += b /obj/proc/check_access(obj/item/I) gen_access() From ee638d81a5db198f977872c6593287b42902d2b2 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 17:20:00 -0500 Subject: [PATCH 114/122] Fixes projectile dampening fields being on infinite cooldown (#1263) --- code/game/objects/items/robot/robot_items.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 5bca9cf535..eafd5fdba4 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -548,7 +548,7 @@ return ..() /obj/item/borg/projectile_dampen/attack_self(mob/user) - if(cycle_delay < world.time) + if(cycle_delay > world.time) to_chat(user, "\the [src] is still recycling its projectors!") return cycle_delay = world.time + PKBORG_DAMPEN_CYCLE_DELAY From 53fb384b63545aadeb99a4637228f3b7bc714f57 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 17:22:10 -0500 Subject: [PATCH 115/122] Emagging a cloner drops bits, cloners don't keep extra flesh (#1264) --- code/game/machinery/cloning.dm | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 6df194cf25..fac4f7f31b 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -358,8 +358,12 @@ /obj/machinery/clonepod/proc/go_out() countdown.stop() var/mob/living/mob_occupant = occupant + var/turf/T = get_turf(src) if(mess) //Clean that mess and dump those gibs! + for(var/obj/fl in unattached_flesh) + fl.forceMove(T) + unattached_flesh.Cut() mess = FALSE new /obj/effect/gibspawner/generic(loc) audible_message("You hear a splat.") @@ -375,10 +379,12 @@ to_chat(occupant, "There is a bright flash!
You feel like a new being.
") mob_occupant.flash_act() - var/turf/T = get_turf(src) occupant.forceMove(T) icon_state = "pod_0" mob_occupant.domutcheck(1) //Waiting until they're out before possible monkeyizing. The 1 argument forces powers to manifest. + for(var/fl in unattached_flesh) + qdel(fl) + unattached_flesh.Cut() occupant = null @@ -389,8 +395,7 @@ SPEAK("Critical error! Please contact a Thinktronic Systems \ technician, as your warranty may be affected.") mess = TRUE - for(var/obj/item/O in unattached_flesh) - qdel(O) + maim_clone(mob_occupant) //Remove every bit that's grown back so far to drop later, also destroys bits that haven't grown yet icon_state = "pod_g" if(mob_occupant.mind != clonemind) clonemind.transfer_to(mob_occupant) @@ -450,9 +455,10 @@ var/static/list/zones = list("r_arm", "l_arm", "r_leg", "l_leg") for(var/zone in zones) var/obj/item/bodypart/BP = H.get_bodypart(zone) - BP.drop_limb() - BP.forceMove(src) - unattached_flesh += BP + if(BP) + BP.drop_limb() + BP.forceMove(src) + unattached_flesh += BP for(var/o in H.internal_organs) var/obj/item/organ/organ = o From fac3bfb81b9d2ee3ff5b00a1a4ea5c4e8d800085 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 17:22:11 -0500 Subject: [PATCH 116/122] Automatic changelog generation for PR #1264 [ci skip] --- html/changelogs/AutoChangeLog-pr-1264.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1264.yml diff --git a/html/changelogs/AutoChangeLog-pr-1264.yml b/html/changelogs/AutoChangeLog-pr-1264.yml new file mode 100644 index 0000000000..774cea31f2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1264.yml @@ -0,0 +1,5 @@ +author: "QualityVan" +delete-after: True +changes: + - tweak: "Cloning pods which are interrupted by a emagging will now produce a slightly lumpier smoothie" + - bugfix: "Cloning pods that have stopped cloning early can no longer be broken open to extract leftover parts" From 4576d03eb46ee579f6c0d6aa4ccb9861335153d9 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 17:27:25 -0500 Subject: [PATCH 117/122] Fixes attaching heads without brainmobs (#1273) --- code/modules/surgery/bodyparts/dismemberment.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 585f452de4..089d8be105 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -294,10 +294,11 @@ /obj/item/bodypart/head/attach_limb(mob/living/carbon/C, special) //Transfer some head appearance vars over if(brain) - brainmob.container = null //Reset brainmob head var. - brainmob.loc = brain //Throw mob into brain. - brain.brainmob = brainmob //Set the brain to use the brainmob - brainmob = null //Set head brainmob var to null + if(brainmob) + brainmob.container = null //Reset brainmob head var. + brainmob.loc = brain //Throw mob into brain. + brain.brainmob = brainmob //Set the brain to use the brainmob + brainmob = null //Set head brainmob var to null brain.Insert(C) //Now insert the brain proper brain = null //No more brain in the head From 455ac22c90550c1dae7623ddce847bcb91cd58d6 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 17:27:26 -0500 Subject: [PATCH 118/122] Automatic changelog generation for PR #1273 [ci skip] --- html/changelogs/AutoChangeLog-pr-1273.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1273.yml diff --git a/html/changelogs/AutoChangeLog-pr-1273.yml b/html/changelogs/AutoChangeLog-pr-1273.yml new file mode 100644 index 0000000000..27ad107949 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1273.yml @@ -0,0 +1,4 @@ +author: "Swindly" +delete-after: True +changes: + - bugfix: "fixed not being able to attach heads without brainmobs in them" From 6b6a156c2f82a7a58e543e64d45144002c931968 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 17:27:50 -0500 Subject: [PATCH 119/122] Lavaland Lighting Fix + ruin varedit cleanup (#1257) --- .../LavaRuins/lavaland_surface_xeno_nest.dmm | 420 ++---------------- code/game/area/areas/ruins.dm | 13 + 2 files changed, 55 insertions(+), 378 deletions(-) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm index 8993318f00..8f1e550e17 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm @@ -8,185 +8,81 @@ }, /obj/structure/alien/resin/wall, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "c" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" }, /obj/structure/alien/resin/wall, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "d" = ( /obj/structure/alien/resin/wall, /obj/structure/alien/weeds{ icon_state = "weeds2" }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "e" = ( /obj/structure/alien/weeds{ icon_state = "weeds1" }, /obj/structure/alien/egg/burst, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "f" = ( /obj/structure/alien/weeds, /obj/structure/alien/weeds{ icon_state = "weeds2" }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "g" = ( /obj/structure/alien/weeds, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "h" = ( /obj/structure/alien/weeds, /obj/structure/alien/resin/wall, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "i" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "j" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" }, /mob/living/simple_animal/hostile/alien, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "k" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" }, /obj/structure/alien/egg/burst, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "l" = ( /obj/structure/alien/weeds/node, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "m" = ( /obj/structure/alien/weeds{ icon_state = "weeds1" }, /obj/structure/bed/nest, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "n" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" }, /obj/structure/bed/nest, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "o" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, @@ -198,43 +94,19 @@ }, /obj/item/weapon/gun/ballistic/automatic/pistol, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "p" = ( /obj/structure/alien/weeds{ icon_state = "weeds1" }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "q" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "r" = ( /obj/structure/alien/weeds{ icon_state = "weeds1" @@ -242,112 +114,48 @@ /obj/structure/alien/resin/wall, /obj/structure/alien/resin/wall, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "s" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" }, /obj/structure/alien/egg, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "t" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" }, /mob/living/simple_animal/hostile/alien/sentinel, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "u" = ( /obj/structure/alien/weeds{ icon_state = "weeds1" }, /obj/effect/decal/cleanable/blood/gibs, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "v" = ( /obj/structure/alien/weeds/node, /obj/effect/decal/cleanable/blood, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "w" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/blood/gibs, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "x" = ( /obj/structure/alien/weeds, /obj/structure/alien/egg/burst, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "y" = ( /obj/structure/alien/weeds/node, /obj/structure/alien/resin/wall, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "z" = ( /obj/structure/alien/weeds{ icon_state = "weeds1" @@ -364,28 +172,12 @@ /obj/item/weapon/melee/baton/loaded, /obj/item/clothing/head/helmet, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "A" = ( /obj/structure/alien/weeds, /obj/structure/alien/egg, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "B" = ( /obj/structure/alien/weeds{ icon_state = "weeds1" @@ -393,59 +185,27 @@ /obj/structure/alien/egg/burst, /obj/effect/decal/cleanable/blood/gibs, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "C" = ( /obj/structure/alien/weeds, /obj/structure/alien/egg/burst, /obj/effect/decal/cleanable/blood, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "D" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" }, /obj/effect/decal/cleanable/blood/gibs, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "E" = ( /obj/structure/alien/weeds, /mob/living/simple_animal/hostile/alien/drone{ plants_off = 1 }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "F" = ( /obj/structure/alien/weeds, /mob/living/simple_animal/hostile/alien/queen/large{ @@ -455,15 +215,7 @@ plants_off = 1 }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "G" = ( /obj/structure/alien/weeds{ icon_state = "weeds1" @@ -472,28 +224,12 @@ plants_off = 1 }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "H" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/blood, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "I" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, @@ -507,56 +243,24 @@ /obj/item/clothing/under/syndicate, /obj/item/clothing/glasses/night, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "J" = ( /obj/structure/alien/weeds, /mob/living/simple_animal/hostile/alien/sentinel, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "K" = ( /obj/structure/alien/weeds/node, /mob/living/simple_animal/hostile/alien, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "L" = ( /obj/structure/alien/weeds/node, /mob/living/simple_animal/hostile/alien/drone{ plants_off = 1 }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "M" = ( /obj/structure/alien/weeds{ icon_state = "weeds1" @@ -573,15 +277,7 @@ stat = 2 }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "N" = ( /obj/structure/alien/weeds, /obj/structure/alien/resin/wall, @@ -590,15 +286,7 @@ "O" = ( /obj/structure/alien/weeds/node, /turf/template_noop, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "P" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" @@ -615,41 +303,17 @@ plants_off = 1 }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "R" = ( /obj/structure/alien/weeds, /turf/template_noop, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "S" = ( /obj/structure/alien/weeds{ icon_state = "weeds2" }, /turf/template_noop, -/area/awaycontent/a5{ - always_unpowered = 1; - has_gravity = 1; - name = "The Hive"; - power_environ = 0; - power_equip = 0; - power_light = 0; - poweralm = 0 - }) +/area/ruin/xenonest) "T" = ( /obj/structure/alien/weeds/node, /obj/structure/alien/resin/wall, diff --git a/code/game/area/areas/ruins.dm b/code/game/area/areas/ruins.dm index 828d165dd8..4a1fd86c20 100644 --- a/code/game/area/areas/ruins.dm +++ b/code/game/area/areas/ruins.dm @@ -5,6 +5,7 @@ icon_state = "away" has_gravity = 1 hidden = TRUE + dynamic_lighting = DYNAMIC_LIGHTING_FORCED /area/ruin/unpowered @@ -199,3 +200,15 @@ /area/ruin/abandonedzoo name = "Abandoned Zoo" icon_state = "green" + + +//Xeno Nest + +/area/ruin/xenonest + name = "The Hive" + always_unpowered = 1 + power_environ = 0 + power_equip = 0 + power_light = 0 + poweralm = 0 + \ No newline at end of file From f42bcaf76002aea78249daab7e82d8c045e8f796 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 28 May 2017 17:28:51 -0500 Subject: [PATCH 120/122] Finally remembers to make drakes unclickable while they're in the invulnerable stage of swooping (#1262) --- .../mob/living/simple_animal/hostile/megafauna/dragon.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index 1c1fc8fb9e..5df35b2d93 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -193,6 +193,7 @@ Difficulty: Medium return animate(src, transform = matrix()*0.7, time = 7) swooping |= SWOOP_INVULNERABLE + mouse_opacity = 0 sleep(7) var/list/flame_hit = list() while(swoop_duration > 0) @@ -233,6 +234,7 @@ Difficulty: Medium animate(src, transform = oldtransform, time = 5) sleep(5) swooping &= ~SWOOP_INVULNERABLE + mouse_opacity = initial(mouse_opacity) icon_state = "dragon" playsound(src.loc, 'sound/effects/meteorimpact.ogg', 200, 1) for(var/mob/living/L in orange(1, src)) From e0fab7fa5ec20d7375bae62ff8e593964e9db63b Mon Sep 17 00:00:00 2001 From: LetterJay Date: Mon, 29 May 2017 01:25:02 -0500 Subject: [PATCH 121/122] fixes an oopsie --- code/modules/jobs/access.dm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index bf554f85a9..527b6ff736 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -149,10 +149,14 @@ GLOBAL_VAR_CONST(access_away_generic4, 208) //Call this before using req_access or req_one_access directly /obj/proc/gen_access() //These generations have been moved out of /obj/New() because they were slowing down the creation of objects that never even used the access system. - for(var/a in text2access(req_access_txt)) - req_access += a - for(var/b in text2access(req_one_access_txt)) - req_one_access += b + if(!req_access) + req_access = list() + for(var/a in text2access(req_access_txt)) + req_access += a + if(!req_one_access) + req_one_access = list() + for(var/b in text2access(req_one_access_txt)) + req_one_access += b /obj/proc/check_access(obj/item/I) gen_access() From 4bb28836384b5654db5f67d308f2e2c9b4ce2a98 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 29 May 2017 01:27:52 -0500 Subject: [PATCH 122/122] Fixes gun rapid-melee attack exploit (#1276) --- code/modules/projectiles/gun.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 89baa173c1..d9a0ee78a2 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -297,7 +297,9 @@ if(bayonet) M.attackby(bayonet, user) return - return ..() + else + return ..() + return /obj/item/weapon/gun/attack_obj(obj/O, mob/user) if(user.a_intent == INTENT_HARM)