From de1c378621b0b99c11ab25d9e03051fb22cded90 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Tue, 12 Dec 2017 21:39:33 -0500 Subject: [PATCH 01/94] restores the PDA sprites by cecily and toriate --- .../code/game/objects/items/devices/PDA/PDA.dm | 4 ++++ modular_citadel/icons/obj/pda.dmi | Bin 0 -> 24533 bytes tgstation.dme | 1 + 3 files changed, 5 insertions(+) create mode 100644 modular_citadel/code/game/objects/items/devices/PDA/PDA.dm create mode 100644 modular_citadel/icons/obj/pda.dmi diff --git a/modular_citadel/code/game/objects/items/devices/PDA/PDA.dm b/modular_citadel/code/game/objects/items/devices/PDA/PDA.dm new file mode 100644 index 0000000000..85ac3982ed --- /dev/null +++ b/modular_citadel/code/game/objects/items/devices/PDA/PDA.dm @@ -0,0 +1,4 @@ +//Overrides TG's PDA sprites with Cit's PDA sprites. Remind me to turn this into a pref somewhere down the line. + +/obj/item/device/pda + icon = 'modular_citadel/icons/obj/pda.dmi' diff --git a/modular_citadel/icons/obj/pda.dmi b/modular_citadel/icons/obj/pda.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5404b908c6de23dc93dad0659900e9f63117bac0 GIT binary patch literal 24533 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 literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 11399a1b14..f5271b7a30 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2452,4 +2452,5 @@ #include "modular_citadel\hypereutactic_blade.dm" #include "modular_citadel\polychromic_clothes.dm" #include "modular_citadel\code\datums\uplink_items_cit.dm" +#include "modular_citadel\code\game\objects\items\devices\PDA\PDA.dm" // END_INCLUDE From fcceb5ec77af75e15f4dcf3c6125ecd9d0596d23 Mon Sep 17 00:00:00 2001 From: vuonojenmustaturska Date: Thu, 14 Dec 2017 23:39:34 +0200 Subject: [PATCH 02/94] Finishes the forceMove port --- code/game/atoms_movable.dm | 2 +- code/game/gamemodes/blob/overmind.dm | 4 +- code/game/gamemodes/blob/powers.dm | 4 +- .../gamemodes/miniantags/revenant/revenant.dm | 2 +- code/game/gamemodes/wizard/artefact.dm | 18 ++-- code/game/machinery/PDApainter.dm | 2 +- .../machinery/computer/telecrystalconsoles.dm | 2 +- code/game/machinery/constructable_frame.dm | 10 +-- code/game/machinery/doors/airlock.dm | 4 +- code/game/machinery/doors/windowdoor.dm | 4 +- code/game/machinery/hologram.dm | 10 +-- code/game/machinery/newscaster.dm | 4 +- code/game/machinery/robot_fabricator.dm | 2 +- code/game/machinery/spaceheater.dm | 2 +- code/game/machinery/transformer.dm | 2 +- code/game/mecha/equipment/mecha_equipment.dm | 2 +- code/game/mecha/equipment/tools/work_tools.dm | 4 +- code/game/mecha/mecha_construction_paths.dm | 10 +-- code/game/mecha/mecha_wreckage.dm | 2 +- code/game/objects/effects/spiders.dm | 4 +- code/game/objects/items.dm | 1 - code/game/objects/items/chrono_eraser.dm | 6 +- code/game/objects/items/defib.dm | 2 +- code/game/objects/items/devices/PDA/PDA.dm | 4 +- .../objects/items/devices/chameleonproj.dm | 4 +- .../objects/items/devices/laserpointer.dm | 2 +- .../objects/items/devices/radio/headset.dm | 4 +- .../game/objects/items/devices/radio/radio.dm | 2 +- .../objects/items/grenades/chem_grenade.dm | 6 +- .../objects/items/implants/implantcase.dm | 83 +++++++++++++++++++ code/game/objects/items/robot/robot_parts.dm | 6 +- code/game/objects/items/tanks/watertank.dm | 8 +- code/game/objects/items/twohanded.dm | 2 +- code/game/objects/structures/artstuff.dm | 4 +- code/game/objects/structures/displaycase.dm | 2 +- code/game/objects/structures/electricchair.dm | 2 +- code/game/objects/structures/kitchen_spike.dm | 2 +- code/game/objects/structures/noticeboard.dm | 4 +- code/game/objects/structures/tables_racks.dm | 2 +- code/game/objects/structures/target_stake.dm | 6 +- .../objects/structures/windoor_assembly.dm | 8 +- code/game/objects/structures/window.dm | 3 +- code/game/turfs/space/space.dm | 3 +- code/modules/admin/fun_balloon.dm | 2 +- code/modules/admin/topic.dm | 4 +- code/modules/admin/verbs/adminjump.dm | 4 +- code/modules/admin/verbs/debug.dm | 2 +- code/modules/assembly/holder.dm | 4 +- code/modules/assembly/shock_kit.dm | 33 ++++++++ .../atmospherics/machinery/portable/pump.dm | 2 +- .../machinery/portable/scrubber.dm | 2 +- code/modules/clothing/head/helmet.dm | 2 +- .../modules/clothing/spacesuits/chronosuit.dm | 10 +-- code/modules/clothing/spacesuits/hardsuit.dm | 2 +- code/modules/clothing/under/accessories.dm | 6 +- code/modules/games/cards.dm | 2 +- code/modules/holiday/halloween.dm | 4 +- code/modules/holodeck/items.dm | 2 +- code/modules/hydroponics/beekeeping/beebox.dm | 21 +++-- code/modules/hydroponics/biogenerator.dm | 2 +- code/modules/hydroponics/gene_modder.dm | 6 +- code/modules/hydroponics/hydroponics.dm | 2 +- code/modules/hydroponics/seed_extractor.dm | 6 +- code/modules/library/lib_items.dm | 6 +- code/modules/library/lib_machines.dm | 4 +- .../mining/lavaland/necropolis_chests.dm | 6 +- code/modules/mining/lavaland/ruins/gym.dm | 6 +- code/modules/mining/machine_stacking.dm | 2 +- code/modules/mob/camera/camera.dm | 13 +++ code/modules/mob/dead/dead.dm | 3 + .../modules/mob/dead/new_player/new_player.dm | 6 +- code/modules/mob/dead/observer/observer.dm | 10 +-- code/modules/mob/living/brain/MMI.dm | 6 +- code/modules/mob/living/brain/posibrain.dm | 2 +- .../carbon/alien/humanoid/alien_powers.dm | 2 +- .../living/carbon/alien/humanoid/humanoid.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 12 +-- .../mob/living/carbon/human/human_defense.dm | 2 +- .../mob/living/carbon/human/interactive.dm | 16 ++-- code/modules/mob/living/carbon/human/life.dm | 2 +- code/modules/mob/living/silicon/ai/ai.dm | 2 +- .../mob/living/simple_animal/friendly/dog.dm | 4 +- .../friendly/drone/drones_as_items.dm | 2 +- .../mob/living/simple_animal/parrot.dm | 14 ++-- code/modules/mob/mob_movement.dm | 4 +- code/modules/mob/transform_procs.dm | 8 +- code/modules/paperwork/clipboard.dm | 4 +- code/modules/paperwork/folders.dm | 2 +- code/modules/paperwork/photocopier.dm | 10 +-- code/modules/power/antimatter/control.dm | 2 +- code/modules/power/apc.dm | 2 +- code/modules/power/cable.dm | 2 +- code/modules/power/singularity/collector.dm | 2 +- .../power/singularity/field_generator.dm | 3 +- code/modules/power/solar.dm | 4 +- code/modules/power/tracker.dm | 4 +- .../projectiles/ammunition/caseless.dm | 2 +- .../boxes_magazines/internal_mag.dm | 4 +- code/modules/projectiles/gun.dm | 5 +- code/modules/projectiles/guns/ballistic.dm | 5 +- .../projectiles/guns/ballistic/automatic.dm | 2 +- .../projectiles/guns/ballistic/revolver.dm | 4 +- .../projectiles/guns/ballistic/shotgun.dm | 2 +- code/modules/projectiles/guns/beam_rifle.dm | 6 +- code/modules/projectiles/guns/syringe_gun.dm | 4 +- .../modules/projectiles/projectile/special.dm | 3 +- code/modules/recycling/disposal/bin.dm | 4 +- code/modules/research/experimentor.dm | 6 +- code/modules/shuttle/navigation_computer.dm | 3 +- .../surgery/bodyparts/dismemberment.dm | 6 +- 110 files changed, 364 insertions(+), 239 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 4d7a417e53..93f44f2a2d 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -403,7 +403,7 @@ for(var/m in buckled_mobs) var/mob/living/buckled_mob = m if(!buckled_mob.Move(newloc, direct)) - loc = buckled_mob.loc + forceMove(buckled_mob.loc) last_move = buckled_mob.last_move inertia_dir = last_move buckled_mob.inertia_dir = last_move diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm index 4f26563da1..3fabb0af38 100644 --- a/code/game/gamemodes/blob/overmind.dm +++ b/code/game/gamemodes/blob/overmind.dm @@ -215,12 +215,12 @@ GLOBAL_LIST_EMPTY(blob_nodes) if(placed) var/obj/structure/blob/B = locate() in range("3x3", NewLoc) if(B) - loc = NewLoc + forceMove(NewLoc) else return 0 else var/area/A = get_area(NewLoc) if(isspaceturf(NewLoc) || istype(A, /area/shuttle)) //if unplaced, can't go on shuttles or space tiles return 0 - loc = NewLoc + forceMove(NewLoc) return 1 diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm index aa1a3e7046..2ef047506f 100644 --- a/code/game/gamemodes/blob/powers.dm +++ b/code/game/gamemodes/blob/powers.dm @@ -42,7 +42,7 @@ return 0 else if(placement_override == 1) var/turf/T = pick(GLOB.blobstart) - loc = T //got overrided? you're somewhere random, motherfucker + forceMove(T) //got overrided? you're somewhere random, motherfucker if(placed && blob_core) blob_core.forceMove(loc) else @@ -74,7 +74,7 @@ var/node_name = input(src, "Choose a node to jump to.", "Node Jump") in nodes var/obj/structure/blob/node/chosen_node = nodes[node_name] if(chosen_node) - loc = chosen_node.loc + forceMove(chosen_node.loc) /mob/camera/blob/proc/createSpecial(price, blobType, nearEquals, needsNode, turf/T) if(!T) diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index 727203b150..b4dc0794cc 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -374,7 +374,7 @@ return var/key_of_revenant message_admins("Revenant ectoplasm was left undestroyed for 1 minute and is reforming into a new revenant.") - loc = get_turf(src) //In case it's in a backpack or someone's hand + forceMove(drop_location()) //In case it's in a backpack or someone's hand revenant.forceMove(loc) if(client_to_revive) for(var/mob/M in GLOB.dead_mob_list) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index c59ad05cd5..21de0fc2f9 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -213,7 +213,7 @@ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' var/mob/living/carbon/human/target = null var/list/mob/living/carbon/human/possible = list() - var/obj/item/link = null + var/obj/item/linked_item = null var/cooldown_time = 30 //3s var/cooldown = 0 max_integrity = 10 @@ -237,10 +237,10 @@ cooldown = world.time +cooldown_time return - if(!link) + if(!linked_item) if(I.loc == user && istype(I) && I.w_class <= WEIGHT_CLASS_SMALL) if (user.transferItemToLoc(I,src)) - link = I + linked_item = I to_chat(user, "You attach [I] to the doll.") update_targets() @@ -255,11 +255,11 @@ return if(user.zone_selected == "chest") - if(link) + if(linked_item) target = null - link.loc = get_turf(src) - to_chat(user, "You remove the [link] from the doll.") - link = null + linked_item.forceMove(drop_location()) + to_chat(user, "You remove the [linked_item] from the doll.") + linked_item = null update_targets() return @@ -291,10 +291,10 @@ /obj/item/voodoo/proc/update_targets() possible = list() - if(!link) + if(!linked_item) return for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) - if(md5(H.dna.uni_identity) in link.fingerprints) + if(md5(H.dna.uni_identity) in linked_item.fingerprints) possible |= H /obj/item/voodoo/proc/GiveHint(mob/victim,force=0) diff --git a/code/game/machinery/PDApainter.dm b/code/game/machinery/PDApainter.dm index 61d5627354..6156ee1d86 100644 --- a/code/game/machinery/PDApainter.dm +++ b/code/game/machinery/PDApainter.dm @@ -134,7 +134,7 @@ return if(storedpda) - storedpda.loc = get_turf(src.loc) + storedpda.forceMove(drop_location()) storedpda = null update_icon() else diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm index 959253036b..10f131f8be 100644 --- a/code/game/machinery/computer/telecrystalconsoles.dm +++ b/code/game/machinery/computer/telecrystalconsoles.dm @@ -51,7 +51,7 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E /obj/machinery/computer/telecrystals/uplinker/proc/ejectuplink() if(uplinkholder) - uplinkholder.loc = get_turf(src.loc) + uplinkholder.forceMove(drop_location()) uplinkholder = null update_icon() diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 99cbded13a..4328a22222 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -157,15 +157,15 @@ if(istype(P, /obj/item/crowbar)) playsound(src.loc, P.usesound, 50, 1) state = 2 - circuit.loc = src.loc + circuit.forceMove(drop_location()) components.Remove(circuit) circuit = null if(components.len == 0) to_chat(user, "You remove the circuit board.") else to_chat(user, "You remove the circuit board and other components.") - for(var/atom/movable/A in components) - A.loc = src.loc + for(var/atom/movable/AM in components) + AM.forceMove(drop_location()) desc = initial(desc) req_components = null components = null @@ -186,9 +186,9 @@ qdel(O) new_machine.component_parts = list() for(var/obj/O in src) - O.loc = null + O.moveToNullspace() new_machine.component_parts += O - circuit.loc = null + circuit.moveToNullspace() new_machine.RefreshParts() qdel(src) return diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index d30554d258..775c9dd894 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1036,7 +1036,7 @@ panel_open = TRUE update_icon(AIRLOCK_OPENING) visible_message("[src]'s panel is blown off in a spray of deadly shrapnel!") - charge.loc = get_turf(src) + charge.forceMove(drop_location()) charge.ex_act(EXPLODE_DEVASTATE) detonated = 1 charge = null @@ -1340,7 +1340,7 @@ else ae = electronics electronics = null - ae.loc = src.loc + ae.forceMove(drop_location()) qdel(src) /obj/machinery/door/airlock/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 2313afec3b..dce884b794 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -275,7 +275,7 @@ else ae = electronics electronics = null - ae.loc = src.loc + ae.forceMove(drop_location()) qdel(src) return @@ -495,4 +495,4 @@ /obj/machinery/door/window/brigdoor/security/holding/southright dir = SOUTH icon_state = "rightsecure" - base_state = "rightsecure" \ No newline at end of file + base_state = "rightsecure" diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index d6d8c93ed1..10a552564b 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -75,7 +75,7 @@ Possible to do for anyone motivated enough: replay_stop() if(record_mode) record_stop() - + QDEL_NULL(disk) holopads -= src @@ -256,12 +256,12 @@ Possible to do for anyone motivated enough: temp = "" if(outgoing_call) outgoing_call.Disconnect() - + else if(href_list["disk_eject"]) if(disk && !replay_mode) disk.forceMove(drop_location()) disk = null - + else if(href_list["replay_stop"]) replay_stop() else if(href_list["replay_start"]) @@ -424,7 +424,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ if(masters[user]) var/obj/effect/overlay/holo_pad_hologram/H = masters[user] step_to(H, new_turf) - H.loc = new_turf + H.forceMove(new_turf) var/area/holo_area = get_area(src) var/area/eye_area = new_turf.loc @@ -505,7 +505,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ current_delay += entry[2] var/time_delta = world.time - record_start - current_delay - + if(time_delta >= 1) disk.record.entries += list(list(HOLORECORD_DELAY,time_delta)) disk.record.entries += list(list(HOLORECORD_SAY,message)) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 18acd9ece7..ee9b1ff31a 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -780,7 +780,7 @@ GLOBAL_LIST_EMPTY(allCasters) /obj/machinery/newscaster/proc/AttachPhoto(mob/user) if(photo) if(!photo.sillynewscastervar) - photo.loc = loc + photo.forceMove(drop_location()) if(!issilicon(user)) user.put_in_inactive_hand(photo) else @@ -856,7 +856,7 @@ GLOBAL_LIST_EMPTY(allCasters) NEWSPAPER.wantedBody = GLOB.news_network.wanted_issue.body if(GLOB.news_network.wanted_issue.img) NEWSPAPER.wantedPhoto = GLOB.news_network.wanted_issue.img - NEWSPAPER.loc = get_turf(src) + NEWSPAPER.forceMove(drop_location()) NEWSPAPER.creationTime = GLOB.news_network.lastAction paper_remaining-- diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm index 606f64c7f3..c01c72d7a8 100644 --- a/code/game/machinery/robot_fabricator.dm +++ b/code/game/machinery/robot_fabricator.dm @@ -137,7 +137,7 @@ Please wait until completion...
spawn (build_time) if (!isnull(src.being_built)) - src.being_built.loc = get_turf(src) + src.being_built.forceMove(drop_location()) src.being_built = null src.use_power = IDLE_POWER_USE operating = FALSE diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index b45b393ab2..3d3911581d 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -228,7 +228,7 @@ settableTemperatureMedian + settableTemperatureRange) if("eject") if(panel_open && cell) - cell.loc = get_turf(src) + cell.forceMove(drop_location()) cell = null . = TRUE diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm index fe18365a9c..7624312f84 100644 --- a/code/game/machinery/transformer.dm +++ b/code/game/machinery/transformer.dm @@ -57,7 +57,7 @@ var/move_dir = get_dir(loc, AM.loc) var/mob/living/carbon/human/H = AM if((transform_standing || H.lying) && move_dir == EAST)// || move_dir == WEST) - AM.loc = src.loc + AM.forceMove(drop_location()) do_transform(AM) /obj/machinery/transformer/CanPass(atom/movable/mover, turf/target) diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index e2a35ac591..54530d368c 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -104,7 +104,7 @@ /obj/item/mecha_parts/mecha_equipment/proc/attach(obj/mecha/M) M.equipment += src chassis = M - src.loc = M + forceMove(M) M.log_message("[src] initialized.") if(!M.selected && selectable) M.selected = src diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index d456642633..f076b723ae 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -39,7 +39,7 @@ O.anchored = TRUE if(do_after_cooldown(target)) cargo_holder.cargo += O - O.loc = chassis + O.forceMove(chassis) O.anchored = FALSE occupant_message("[target] successfully loaded.") log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]") @@ -91,7 +91,7 @@ O.anchored = TRUE if(do_after_cooldown(target)) cargo_holder.cargo += O - O.loc = chassis + O.forceMove(chassis) O.anchored = FALSE occupant_message("[target] successfully loaded.") log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]") diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 272d3530a6..de50d6f86f 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -542,7 +542,7 @@ else user.visible_message("[user] removes the capacitor from the [holder].", "You remove the capacitor from the [holder].") var/obj/item/I = locate(/obj/item/stock_parts/capacitor) in holder - I.loc = get_turf(holder) + I.forceMove(holder.drop_location()) holder.icon_state = "gygax12" if(9) if(diff==FORWARD) @@ -1155,7 +1155,7 @@ else user.visible_message("[user] removes the scanner module from the [holder].", "You remove the scanner module from the [holder].") var/obj/item/I = locate(/obj/item/stock_parts/scanning_module) in holder - I.loc = get_turf(holder) + I.forceMove(holder.drop_location()) holder.icon_state = "durand10" if(11) if(diff==FORWARD) @@ -1173,7 +1173,7 @@ else user.visible_message("[user] removes the super capacitor from the [holder].", "You remove the capacitor from the [holder].") var/obj/item/I = locate(/obj/item/stock_parts/capacitor) in holder - I.loc = get_turf(holder) + I.forceMove(holder.drop_location()) holder.icon_state = "durand12" if(9) if(diff==FORWARD) @@ -1480,7 +1480,7 @@ else user.visible_message("[user] removes the phasic scanner module from the [holder].", "You remove the scanner module from the [holder].") var/obj/item/I = locate(/obj/item/stock_parts/scanning_module) in holder - I.loc = get_turf(holder) + I.forceMove(holder.drop_location()) holder.icon_state = "phazon10" if(15) if(diff==FORWARD) @@ -1498,7 +1498,7 @@ else user.visible_message("[user] removes the super capacitor from the [holder].", "You remove the capacitor from the [holder].") var/obj/item/I = locate(/obj/item/stock_parts/capacitor) in holder - I.loc = get_turf(holder) + I.forceMove(holder.drop_location()) holder.icon_state = "phazon12" if(13) if(diff==FORWARD) diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index 67e5c1dbd1..de8f8ecb3a 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -68,7 +68,7 @@ if(crowbar_salvage && crowbar_salvage.len) var/obj/S = pick(crowbar_salvage) if(S) - S.loc = get_turf(user) + S.forceMove(user.drop_location()) crowbar_salvage -= S user.visible_message("[user] pries [S] from [src].", "You pry [S] from [src].") return diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 89a5ce7353..4ecba7c982 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -150,7 +150,7 @@ spawn(travel_time) if(!exit_vent || exit_vent.welded) - loc = entry_vent + forceMove(entry_vent) entry_vent = null return @@ -162,7 +162,7 @@ forceMove(entry_vent) entry_vent = null return - loc = exit_vent.loc + forceMove(exit_vent.loc) entry_vent = null var/area/new_area = get_area(loc) if(new_area) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index f4dd741695..5f5c39f509 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -713,4 +713,3 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) /obj/item/MouseExited() deltimer(tip_timer)//delete any in-progress timer if the mouse is moved off the item before it finishes closeToolTip(usr) - diff --git a/code/game/objects/items/chrono_eraser.dm b/code/game/objects/items/chrono_eraser.dm index 8ac9643c39..5d4c85ac4d 100644 --- a/code/game/objects/items/chrono_eraser.dm +++ b/code/game/objects/items/chrono_eraser.dm @@ -163,7 +163,7 @@ /obj/effect/chrono_field/New(loc, var/mob/living/target, var/obj/item/gun/energy/chrono_gun/G) if(target && isliving(target) && G) - target.loc = src + target.forceMove(src) src.captured = target var/icon/mob_snapshot = getFlatIcon(target) var/icon/cached_icon = new() @@ -198,7 +198,7 @@ if(captured) if(tickstokill > initial(tickstokill)) for(var/atom/movable/AM in contents) - AM.loc = loc + AM.forceMove(drop_location()) qdel(src) else if(tickstokill <= 0) to_chat(captured, "As the last essence of your being is erased from time, you begin to re-experience your most enjoyable memory. You feel happy...") @@ -213,7 +213,7 @@ else captured.Unconscious(80) if(captured.loc != src) - captured.loc = src + captured.forceMove(src) update_icon() if(gun) if(gun.field_check(src)) diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index bbeed24168..e501e24c6a 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -328,7 +328,7 @@ O.unwield() to_chat(user, "The paddles snap back into the main unit.") defib.on = 0 - loc = defib + forceMove(defib) defib.update_icon() return unwield(user) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 1f7fd77c4a..f2bc8b5686 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -543,7 +543,7 @@ GLOBAL_LIST_EMPTY(PDAs) if("2") // Eject pAI device var/turf/T = get_turf(src.loc) if(T) - pai.loc = T + pai.forceMove(T) //LINK FUNCTIONS=================================== @@ -578,7 +578,7 @@ GLOBAL_LIST_EMPTY(PDAs) M.put_in_hands(id) to_chat(usr, "You remove the ID from the [name].") else - id.loc = get_turf(src) + id.forceMove(drop_location()) id = null update_icon() diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index b405e21ca6..a07d8d8d60 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -85,7 +85,7 @@ /obj/item/device/chameleon/proc/eject_all() for(var/atom/movable/A in active_dummy) - A.loc = active_dummy.loc + A.forceMove(active_dummy.loc) if(ismob(A)) var/mob/M = A M.reset_perspective(null) @@ -106,7 +106,7 @@ VRD.force_dismount(M) else V.unbuckle_mob(M, force = TRUE) - M.loc = src + M.forceMove(src) master = C master.active_dummy = src diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index b1b200f489..eb1ccd15f4 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -50,7 +50,7 @@ else if(istype(W, /obj/item/screwdriver)) if(diode) to_chat(user, "You remove the [diode.name] from \the [src].") - diode.loc = get_turf(src.loc) + diode.forceMove(drop_location()) diode = null else return ..() diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 9ff19ba57c..750e1f0511 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -227,7 +227,7 @@ if(keyslot) var/turf/T = get_turf(user) if(T) - keyslot.loc = T + keyslot.forceMove(T) keyslot = null @@ -235,7 +235,7 @@ if(keyslot2) var/turf/T = get_turf(user) if(T) - keyslot2.loc = T + keyslot2.forceMove(T) keyslot2 = null recalculateChannels() diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 236f3df93e..8227d75069 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -569,7 +569,7 @@ if(keyslot) var/turf/T = get_turf(user) if(T) - keyslot.loc = T + keyslot.forceMove(T) keyslot = null recalculateChannels() diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index e791a74541..8698594555 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -110,12 +110,12 @@ else if(stage == WIRED && istype(I, /obj/item/wrench)) if(beakers.len) for(var/obj/O in beakers) - O.loc = get_turf(src) + O.forceMove(drop_location()) beakers = list() to_chat(user, "You open the [initial(name)] assembly and remove the payload.") return // First use of the wrench remove beakers, then use the wrench to remove the activation mechanism. if(nadeassembly) - nadeassembly.loc = get_turf(src) + nadeassembly.forceMove(drop_location()) nadeassembly.master = null nadeassembly = null else // If "nadeassembly = null && stage == WIRED", then it most have been cable_coil that was used. @@ -167,7 +167,7 @@ playsound(loc, 'sound/items/screwdriver2.ogg', 50, 1) if(beakers.len) for(var/obj/O in beakers) - O.loc = get_turf(src) + O.forceMove(drop_location()) beakers = list() stage_change(EMPTY) return diff --git a/code/game/objects/items/implants/implantcase.dm b/code/game/objects/items/implants/implantcase.dm index 7c363fe052..aa700b6e37 100644 --- a/code/game/objects/items/implants/implantcase.dm +++ b/code/game/objects/items/implants/implantcase.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /obj/item/implantcase name = "implant case" desc = "A glass case containing an implant." @@ -77,3 +78,85 @@ name = "implant case - 'Adrenaline'" desc = "A glass case containing an adrenaline implant." imp_type = /obj/item/implant/adrenalin +======= +/obj/item/implantcase + name = "implant case" + desc = "A glass case containing an implant." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "implantcase-0" + item_state = "implantcase" + lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' + throw_speed = 2 + throw_range = 5 + w_class = WEIGHT_CLASS_TINY + materials = list(MAT_GLASS=500) + var/obj/item/implant/imp = null + var/imp_type + + +/obj/item/implantcase/update_icon() + if(imp) + icon_state = "implantcase-[imp.item_color]" + reagents = imp.reagents + else + icon_state = "implantcase-0" + reagents = null + + +/obj/item/implantcase/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/pen)) + var/t = stripped_input(user, "What would you like the label to be?", name, null) + if(user.get_active_held_item() != W) + return + if(!in_range(src, user) && loc != user) + return + if(t) + name = "implant case - '[t]'" + else + name = "implant case" + else if(istype(W, /obj/item/implanter)) + var/obj/item/implanter/I = W + if(I.imp) + if(imp || I.imp.imp_in) + return + I.imp.forceMove(src) + imp = I.imp + I.imp = null + update_icon() + I.update_icon() + else + if(imp) + if(I.imp) + return + imp.forceMove(I) + I.imp = imp + imp = null + update_icon() + I.update_icon() + + else + return ..() + +/obj/item/implantcase/Initialize(mapload) + . = ..() + if(imp_type) + imp = new imp_type(src) + update_icon() + + +/obj/item/implantcase/tracking + name = "implant case - 'Tracking'" + desc = "A glass case containing a tracking implant." + imp_type = /obj/item/implant/tracking + +/obj/item/implantcase/weapons_auth + name = "implant case - 'Firearms Authentication'" + desc = "A glass case containing a firearms authentication implant." + imp_type = /obj/item/implant/weapons_auth + +/obj/item/implantcase/adrenaline + name = "implant case - 'Adrenaline'" + desc = "A glass case containing an adrenaline implant." + imp_type = /obj/item/implant/adrenalin +>>>>>>> 5233ec1... Finishes the forceMove port (#33519) diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 09e3ccdeb0..339b7fbf4b 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -69,7 +69,7 @@ if(!l_arm && !r_arm && !l_leg && !r_leg && !chest && !head) if (M.use(1)) var/obj/item/ed209_assembly/B = new /obj/item/ed209_assembly - B.loc = get_turf(src) + B.forceMove(drop_location()) to_chat(user, "You arm the robot frame.") var/holding_this = user.get_inactive_held_item()==src qdel(src) @@ -227,7 +227,7 @@ O.job = "Cyborg" O.cell = chest.cell - chest.cell.loc = O + chest.cell.forceMove(O) chest.cell = null W.forceMove(O)//Should fix cybros run time erroring when blown up. It got deleted before, along with the frame. if(O.mmi) //we delete the mmi created by robot/New() @@ -271,7 +271,7 @@ O.cell = chest.cell - chest.cell.loc = O + chest.cell.forceMove(O) chest.cell = null O.locked = panel_locked O.job = "Cyborg" diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 58aadadce0..fa7d14d572 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -131,7 +131,7 @@ ..() to_chat(user, "The mister snaps back onto the watertank.") tank.on = 0 - loc = tank + forceMove(tank) /obj/item/reagent_containers/spray/mister/attack_self() return @@ -236,13 +236,13 @@ tank = parent_tank reagents = tank.reagents max_water = tank.volume - loc = tank + forceMove(tank) /obj/item/extinguisher/mini/nozzle/Move() ..() if(loc != tank.loc) - loc = tank + forceMove(tank) return /obj/item/extinguisher/mini/nozzle/attack_self(mob/user) @@ -268,7 +268,7 @@ ..() to_chat(user, "The nozzle snaps back onto the tank!") tank.on = 0 - loc = tank + forceMove(tank) /obj/item/extinguisher/mini/nozzle/afterattack(atom/target, mob/user) if(nozzle_mode == EXTINGUISHER) diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index 9058e837ab..c11d41eaa8 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -447,7 +447,7 @@ return if(explosive && wielded) user.say("[war_cry]") - explosive.loc = AM + explosive.forceMove(AM) explosive.prime() qdel(src) diff --git a/code/game/objects/structures/artstuff.dm b/code/game/objects/structures/artstuff.dm index 39fbbe3335..aabbba6b2f 100644 --- a/code/game/objects/structures/artstuff.dm +++ b/code/game/objects/structures/artstuff.dm @@ -20,7 +20,7 @@ var/obj/item/canvas/C = I user.dropItemToGround(C) painting = C - C.loc = get_turf(src) + C.forceMove(get_turf(src)) C.layer = layer+0.1 user.visible_message("[user] puts \the [C] on \the [src].","You place \the [C] on \the [src].") else @@ -32,7 +32,7 @@ var/turf/T = get_turf(src) ..() if(painting && painting.loc == T) //Only move if it's near us. - painting.loc = get_turf(src) + painting.forceMove(get_turf(src)) else painting = null diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 241d7ea41c..30384d2da9 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -224,7 +224,7 @@ G.use(10) var/obj/structure/displaycase/display = new(src.loc) if(electronics) - electronics.loc = display + electronics.forceMove(display) display.electronics = electronics if(electronics.one_access) display.req_one_access = electronics.accesses diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm index 81c9e9cc63..f2b0efb6b7 100644 --- a/code/game/objects/structures/electricchair.dm +++ b/code/game/objects/structures/electricchair.dm @@ -15,7 +15,7 @@ var/obj/structure/chair/C = new /obj/structure/chair(loc) playsound(loc, W.usesound, 50, 1) C.setDir(dir) - part.loc = loc + part.forceMove(loc) part.master = null part = null qdel(src) diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index 5f1fa2ebb7..d6b50d0b1a 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -81,7 +81,7 @@ return playsound(src.loc, 'sound/effects/splat.ogg', 25, 1) L.visible_message("[user] slams [L] onto the meat spike!", "[user] slams you onto the meat spike!", "You hear a squishy wet noise.") - L.loc = src.loc + L.forceMove(drop_location()) L.emote("scream") L.add_splatter_floor() L.adjustBruteLoss(30) diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm index aeca1453e3..f667832843 100644 --- a/code/game/objects/structures/noticeboard.dm +++ b/code/game/objects/structures/noticeboard.dm @@ -18,7 +18,7 @@ if(notices > 4) break if(istype(I, /obj/item/paper)) - I.loc = src + I.forceMove(src) notices++ icon_state = "nboard0[notices]" @@ -58,7 +58,7 @@ return var/obj/item/I = locate(href_list["remove"]) in contents if(istype(I) && I.loc == src) - I.loc = usr.loc + I.forceMove(usr.loc) usr.put_in_hands(I) notices-- icon_state = "nboard0[notices]" diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 26582515f8..299409b3a3 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -121,7 +121,7 @@ T.quick_empty() for(var/obj/item/C in oldContents) - C.loc = src.loc + C.forceMove(drop_location()) user.visible_message("[user] empties [I] on [src].") return diff --git a/code/game/objects/structures/target_stake.dm b/code/game/objects/structures/target_stake.dm index c3496678c2..58b4186ad5 100644 --- a/code/game/objects/structures/target_stake.dm +++ b/code/game/objects/structures/target_stake.dm @@ -18,7 +18,7 @@ /obj/structure/target_stake/Move() ..() if(pinned_target) - pinned_target.loc = loc + pinned_target.forceMove(loc) /obj/structure/target_stake/attackby(obj/item/target/T, mob/user) if(pinned_target) @@ -36,7 +36,7 @@ /obj/structure/target_stake/proc/removeTarget(mob/user) pinned_target.layer = OBJ_LAYER - pinned_target.loc = user.loc + pinned_target.forceMove(user.loc) pinned_target.nullPinnedLoc() nullPinnedTarget() if(ishuman(user)) @@ -44,7 +44,7 @@ user.put_in_hands(pinned_target) to_chat(user, "You take the target out of the stake.") else - pinned_target.loc = get_turf(user) + pinned_target.forceMove(user.drop_location()) to_chat(user, "You take the target out of the stake.") /obj/structure/target_stake/bullet_act(obj/item/projectile/P) diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index b29df0aaf4..bb5be3a501 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -216,13 +216,13 @@ if(do_after(user, 40, target = src)) if(!src || electronics) - W.loc = src.loc + W.forceMove(drop_location()) return to_chat(user, "You install the airlock electronics.") name = "near finished windoor assembly" electronics = W else - W.loc = loc + W.forceMove(drop_location()) //Screwdriver to remove airlock electronics. Step 6 undone. else if(istype(W, /obj/item/screwdriver)) @@ -240,7 +240,7 @@ var/obj/item/electronics/airlock/ae ae = electronics electronics = null - ae.loc = loc + ae.forceMove(drop_location()) else if(istype(W, /obj/item/pen)) var/t = stripped_input(user, "Enter the name for the door.", name, created_name,MAX_NAME_LEN) @@ -285,7 +285,7 @@ else windoor.req_access = electronics.accesses windoor.electronics = electronics - electronics.loc = windoor + electronics.forceMove(windoor) if(created_name) windoor.name = created_name qdel(src) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 2b9494c535..e2da7630df 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -283,11 +283,10 @@ return if(!disassembled) playsound(src, breaksound, 70, 1) - var/turf/T = loc if(!(flags_1 & NODECONSTRUCT_1)) for(var/i in debris) var/obj/item/I = i - I.loc = T + I.forceMove(drop_location()) transfer_fingerprints_to(I) qdel(src) update_nearby_icons() diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index 54c43cdcea..a0cf52cae9 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -138,7 +138,7 @@ var/mob/living/L = A if(L.pulling) var/turf/T = get_step(L.loc,turn(A.dir, 180)) - L.pulling.loc = T + L.pulling.forceMove(T) //now we're on the new z_level, proceed the space drifting stoplag()//Let a diagonal move finish, if necessary @@ -199,4 +199,3 @@ destination_x = dest_x destination_y = dest_y destination_z = dest_z - diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm index 3336f3d0a8..480ba20b4d 100644 --- a/code/modules/admin/fun_balloon.dm +++ b/code/modules/admin/fun_balloon.dm @@ -95,7 +95,7 @@ var/obj/docking_port/stationary/SM = S if(SM.id == "emergency_home") var/new_dir = turn(SM.dir, 180) - SM.loc = get_ranged_target_turf(SM, new_dir, rand(3,15)) + SM.forceMove(get_ranged_target_turf(SM, new_dir, rand(3,15))) break qdel(src) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index de8dff1518..478af10211 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1307,7 +1307,7 @@ if(alert(usr, "Send [key_name(M)] to Prison?", "Message", "Yes", "No") != "Yes") return - M.loc = pick(GLOB.prisonwarp) + M.forceMove(pick(GLOB.prisonwarp)) to_chat(M, "You have been sent to Prison!") log_admin("[key_name(usr)] has sent [key_name(M)] to Prison!") @@ -1543,7 +1543,7 @@ C.admin_ghost() var/mob/dead/observer/A = C.mob A.ManualFollow(AM) - + else if(href_list["admingetmovable"]) if(!check_rights(R_ADMIN)) return diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm index 1e7f89fc8d..779ea64640 100644 --- a/code/modules/admin/verbs/adminjump.dm +++ b/code/modules/admin/verbs/adminjump.dm @@ -34,7 +34,7 @@ log_admin("[key_name(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]") message_admins("[key_name_admin(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]") - usr.loc = T + usr.forceMove(T) SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Turf") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return @@ -137,7 +137,7 @@ admin_ticket_log(M, msg) if(M) M.forceMove(get_turf(usr)) - usr.loc = M.loc + usr.forceMove(M.loc) SSblackbox.record_feedback("tally", "admin_verb", 1, "Get Key") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/sendmob(mob/M in sortmobs()) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index e3c8c19c31..033523e8bf 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -737,7 +737,7 @@ GLOBAL_PROTECT(LastAdminCalledProc) Plasma.air_contents.gases[/datum/gas/plasma][MOLES] = 70 Rad.drainratio = 0 Rad.loaded_tank = Plasma - Plasma.loc = Rad + Plasma.forceMove(Rad) if(!Rad.active) Rad.toggle_power() diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index b929e83ada..6ac1ef093d 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -88,10 +88,10 @@ return 0 if(a_left) a_left.holder = null - a_left.loc = T + a_left.forceMove(T) if(a_right) a_right.holder = null - a_right.loc = T + a_right.forceMove(T) qdel(src) else ..() diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm index 1b21738391..aeb81054f0 100644 --- a/code/modules/assembly/shock_kit.dm +++ b/code/modules/assembly/shock_kit.dm @@ -7,6 +7,7 @@ var/obj/item/device/electropack/part2 = null w_class = WEIGHT_CLASS_HUGE flags_1 = CONDUCT_1 +<<<<<<< HEAD /obj/item/assembly/shock_kit/Destroy() qdel(part1) @@ -40,3 +41,35 @@ var/obj/structure/chair/e_chair/C = loc C.shock() return +======= + +/obj/item/assembly/shock_kit/Destroy() + qdel(part1) + qdel(part2) + return ..() + +/obj/item/assembly/shock_kit/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/wrench)) + part1.forceMove(drop_location()) + part2.forceMove(drop_location()) + part1.master = null + part2.master = null + part1 = null + part2 = null + qdel(src) + return + add_fingerprint(user) + return + +/obj/item/assembly/shock_kit/attack_self(mob/user) + part1.attack_self(user) + part2.attack_self(user) + add_fingerprint(user) + return + +/obj/item/assembly/shock_kit/receive_signal() + if(istype(loc, /obj/structure/chair/e_chair)) + var/obj/structure/chair/e_chair/C = loc + C.shock() + return +>>>>>>> 5233ec1... Finishes the forceMove port (#33519) diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm index 3f2bceaa04..db153d60a4 100644 --- a/code/modules/atmospherics/machinery/portable/pump.dm +++ b/code/modules/atmospherics/machinery/portable/pump.dm @@ -135,7 +135,7 @@ investigate_log("was set to [pump.target_pressure] kPa by [key_name(usr)].", INVESTIGATE_ATMOS) if("eject") if(holding) - holding.loc = get_turf(src) + holding.forceMove(drop_location()) holding = null . = TRUE update_icon() diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm index 564e6d294f..3ba7e0a110 100644 --- a/code/modules/atmospherics/machinery/portable/scrubber.dm +++ b/code/modules/atmospherics/machinery/portable/scrubber.dm @@ -96,7 +96,7 @@ . = TRUE if("eject") if(holding) - holding.loc = get_turf(src) + holding.forceMove(drop_location()) holding = null . = TRUE if("toggle_filter") diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 5691dbb782..15d4579d33 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -283,7 +283,7 @@ for(var/obj/item/device/flashlight/seclite/S in src) to_chat(user, "You unscrew the seclite from [src].") F = null - S.loc = get_turf(user) + S.forceMove(user.drop_location()) update_helmlight(user) S.update_brightness(user) update_icon() diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index 1715636b57..2b25188b80 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -98,7 +98,7 @@ I.flags_1 &= ~NODROP_1 if(camera) camera.remove_target_ui() - camera.loc = user + camera.forceMove(user) teleport_now.UpdateButtonIcon() /obj/item/clothing/suit/space/chronos/proc/chronowalk(atom/location) @@ -278,19 +278,19 @@ if(loc == user) forceMove(get_turf(user)) if(user.client && user.client.eye != src) - src.loc = get_turf(user) + src.forceMove(user.drop_location()) user.reset_perspective(src) user.set_machine(src) var/atom/step = get_step(src, direction) if(step) if((step.x <= TRANSITIONEDGE) || (step.x >= (world.maxx - TRANSITIONEDGE - 1)) || (step.y <= TRANSITIONEDGE) || (step.y >= (world.maxy - TRANSITIONEDGE - 1))) if(!src.Move(step)) - src.loc = step + src.forceMove(step) else - src.loc = step + src.forceMove(step) if((x == holder.x) && (y == holder.y) && (z == holder.z)) remove_target_ui() - loc = user + forceMove(user) else if(!target_ui) create_target_ui() phase_time = world.time + phase_time_length diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index cc1df785b5..8e2251980d 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -136,7 +136,7 @@ return jetpack.turn_off() - jetpack.loc = get_turf(src) + jetpack.forceMove(drop_location()) jetpack = null to_chat(user, "You successfully remove the jetpack from [src].") diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm index f983ca2563..94ca764384 100644 --- a/code/modules/clothing/under/accessories.dm +++ b/code/modules/clothing/under/accessories.dm @@ -15,11 +15,11 @@ if(U.pockets) // storage items conflict return FALSE - pockets.loc = U + pockets.forceMove(U) U.pockets = pockets U.attached_accessory = src - loc = U + forceMove(U) layer = FLOAT_LAYER plane = FLOAT_PLANE if(minimize_when_attached) @@ -39,7 +39,7 @@ /obj/item/clothing/accessory/proc/detach(obj/item/clothing/under/U, user) if(pockets && pockets == U.pockets) - pockets.loc = src + pockets.forceMove(src) U.pockets = null for(var/armor_type in armor) diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm index 89f6316297..bceaf6d7dd 100644 --- a/code/modules/games/cards.dm +++ b/code/modules/games/cards.dm @@ -187,7 +187,7 @@ ASSERT(H) usr.visible_message("\The [usr] plays \the [card.name].") - H.loc = get_step(usr,usr.dir) + H.forceMove(get_step(usr,usr.dir)) src.update_icon() diff --git a/code/modules/holiday/halloween.dm b/code/modules/holiday/halloween.dm index f8716870e1..a27db8dd38 100644 --- a/code/modules/holiday/halloween.dm +++ b/code/modules/holiday/halloween.dm @@ -146,7 +146,7 @@ timer = rand(1,15) /mob/living/simple_animal/shade/howling_ghost/proc/EtherealMove(direction) - loc = get_step(src, direction) + forceMove(get_step(src, direction)) setDir(direction) /mob/living/simple_animal/shade/howling_ghost/proc/roam() @@ -220,7 +220,7 @@ timer = rand(5,15) playsound(M.loc, pick('sound/spookoween/scary_horn.ogg','sound/spookoween/scary_horn2.ogg', 'sound/spookoween/scary_horn3.ogg'), 300, 1) spawn(12) - loc = M.loc + forceMove(M.loc) /mob/living/simple_animal/hostile/retaliate/clown/insane/MoveToTarget() stalk(target) diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm index 54384753d7..6a8a720366 100644 --- a/code/modules/holodeck/items.dm +++ b/code/modules/holodeck/items.dm @@ -113,7 +113,7 @@ if(user.grab_state < GRAB_AGGRESSIVE) to_chat(user, "You need a better grip to do that!") return - L.loc = src.loc + L.forceMove(loc) L.Knockdown(100) visible_message("[user] dunks [L] into \the [src]!") user.stop_pulling() diff --git a/code/modules/hydroponics/beekeeping/beebox.dm b/code/modules/hydroponics/beekeeping/beebox.dm index 482a48edfd..1e3cf41362 100644 --- a/code/modules/hydroponics/beekeeping/beebox.dm +++ b/code/modules/hydroponics/beekeeping/beebox.dm @@ -178,7 +178,7 @@ bees -= B B.beehome = null if(B.loc == src) - B.loc = get_turf(src) + B.forceMove(drop_location()) relocated++ if(relocated) to_chat(user, "This queen has a different reagent to some of the bees who live here, those bees will not return to this apiary!") @@ -201,7 +201,7 @@ if(B.isqueen) continue if(B.loc == src) - B.loc = get_turf(src) + B.forceMove(drop_location()) B.target = user bees = TRUE if(bees) @@ -221,7 +221,7 @@ var/obj/item/honey_frame/HF = pick_n_take(honey_frames) if(HF) if(!user.put_in_active_hand(HF)) - HF.loc = get_turf(src) + HF.forceMove(drop_location()) visible_message("[user] removes a frame from the apiary.") var/amtH = HF.honeycomb_capacity @@ -229,7 +229,7 @@ while(honeycombs.len && amtH) //let's pretend you always grab the frame with the most honeycomb on it var/obj/item/reagent_containers/honeycomb/HC = pick_n_take(honeycombs) if(HC) - HC.loc = get_turf(user) + HC.forceMove(drop_location()) amtH-- fallen++ if(fallen) @@ -241,12 +241,12 @@ to_chat(user, "There is no queen bee to remove!") return var/obj/item/queen_bee/QB = new() - queen_bee.loc = QB + queen_bee.forceMove(QB) bees -= queen_bee QB.queen = queen_bee QB.name = queen_bee.name if(!user.put_in_active_hand(QB)) - QB.loc = get_turf(src) + QB.forceMove(drop_location()) visible_message("[user] removes the queen from the apiary.") queen_bee = null @@ -254,8 +254,13 @@ new /obj/item/stack/sheet/mineral/wood (loc, 20) for(var/mob/living/simple_animal/hostile/poison/bees/B in bees) if(B.loc == src) - B.loc = get_turf(src) + B.forceMove(drop_location()) for(var/obj/item/honey_frame/HF in honey_frames) if(HF.loc == src) +<<<<<<< HEAD HF.loc = get_turf(src) - qdel(src) \ No newline at end of file + qdel(src) +======= + HF.forceMove(drop_location()) + qdel(src) +>>>>>>> 5233ec1... Finishes the forceMove port (#33519) diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index 324a94128d..8939b60138 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -78,7 +78,7 @@ if(default_deconstruction_screwdriver(user, "biogen-empty-o", "biogen-empty", O)) if(beaker) var/obj/item/reagent_containers/glass/B = beaker - B.loc = loc + B.forceMove(drop_location()) beaker = null update_icon() return diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index bd0215138a..e369826c04 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -260,7 +260,7 @@ if(href_list["eject_seed"] && !operation) if (seed) - seed.loc = src.loc + seed.forceMove(drop_location()) seed.verb_pickup() seed = null update_genes() @@ -275,7 +275,7 @@ update_icon() else if(href_list["eject_disk"] && !operation) if (disk) - disk.loc = src.loc + disk.forceMove(drop_location()) disk.verb_pickup() disk = null update_genes() @@ -368,7 +368,7 @@ /obj/machinery/plantgenes/proc/insert_seed(obj/item/seeds/S) if(!istype(S) || seed) return - S.loc = src + S.forceMove(src) seed = S update_genes() update_icon() diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 9eafcec71b..5c1fafc1c4 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -108,7 +108,7 @@ var/needs_update = 0 // Checks if the icon needs updating so we don't redraw empty trays every time if(myseed && (myseed.loc != src)) - myseed.loc = src + myseed.forceMove(src) if(self_sustaining) adjustNutri(1) diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index 0899a21132..b79d0652aa 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -17,7 +17,7 @@ return while(t_amount < t_max) var/obj/item/seeds/t_prod = F.seed.Copy() - t_prod.loc = seedloc + t_prod.forceMove(seedloc) t_amount++ qdel(O) return 1 @@ -29,7 +29,7 @@ return while(t_amount < t_max) var/obj/item/seeds/t_prod = F.seed.Copy() - t_prod.loc = seedloc + t_prod.forceMove(seedloc) t_amount++ qdel(O) return 1 @@ -168,7 +168,7 @@ for (var/obj/T in contents)//Now we find the seed we need to vend var/obj/item/seeds/O = T if (O.plantname == href_list["name"] && O.lifespan == href_list["li"] && O.endurance == href_list["en"] && O.maturation == href_list["ma"] && O.production == href_list["pr"] && O.yield == href_list["yi"] && O.potency == href_list["pot"]) - O.loc = src.loc + O.forceMove(drop_location()) break src.updateUsrDialog() diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 711ac4f33a..9cbd04bf42 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -49,7 +49,7 @@ anchored = TRUE for(var/obj/item/I in loc) if(istype(I, /obj/item/book)) - I.loc = src + I.forceMove(src) update_icon() @@ -123,7 +123,7 @@ if(!user.get_active_held_item()) user.put_in_hands(choice) else - choice.loc = get_turf(src) + choice.forceMove(drop_location()) update_icon() @@ -289,7 +289,7 @@ user.put_in_hands(B) return else - B.loc = src.loc + B.forceMove(drop_location()) qdel(src) return return diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 52077d2367..54a6caffef 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -541,7 +541,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums cache = null if(href_list["eject"]) for(var/obj/item/book/B in contents) - B.loc = src.loc + B.forceMove(drop_location()) src.add_fingerprint(usr) src.updateUsrDialog() return @@ -589,4 +589,4 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums B.icon_state = "book[rand(1,7)]" qdel(P) else - P.loc = loc + P.forceMove(drop_location()) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 7fdecaaeb6..9d6d522c11 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -172,7 +172,7 @@ to_chat(M, "Your vision returns to normal.") wisp.stop_orbit() - wisp.loc = src + wisp.forceMove(src) icon_state = "lantern-blue" SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Returned") @@ -412,7 +412,7 @@ /obj/item/device/shared_storage/attackby(obj/item/W, mob/user, params) if(bag) - bag.loc = user + bag.forceMove(user) bag.attackby(W, user, params) @@ -421,7 +421,7 @@ return if(loc == user && user.back && user.back == src) if(bag) - bag.loc = user + bag.forceMove(user) bag.attack_hand(user) else ..() diff --git a/code/modules/mining/lavaland/ruins/gym.dm b/code/modules/mining/lavaland/ruins/gym.dm index 2eb30dc711..efda0f9c8f 100644 --- a/code/modules/mining/lavaland/ruins/gym.dm +++ b/code/modules/mining/lavaland/ruins/gym.dm @@ -29,7 +29,7 @@ icon_state = "fitnesslifter2" user.setDir(SOUTH) user.Stun(80) - user.loc = src.loc + user.forceMove(src.loc) var/bragmessage = pick("pushing it to the limit","going into overdrive","burning with determination","rising up to the challenge", "getting strong now","getting ripped") user.visible_message("[user] is [bragmessage]!") var/lifts = 0 @@ -67,7 +67,7 @@ icon_state = "fitnessweight-c" user.setDir(SOUTH) user.Stun(80) - user.loc = src.loc + user.forceMove(src.loc) var/mutable_appearance/swole_overlay = mutable_appearance(icon, "fitnessweight-w", WALL_OBJ_LAYER) add_overlay(swole_overlay) var/bragmessage = pick("pushing it to the limit","going into overdrive","burning with determination","rising up to the challenge", "getting strong now","getting ripped") @@ -93,4 +93,4 @@ var/finishmessage = pick("You feel stronger!","You feel like you can take on the world!","You feel robust!","You feel indestructible!") icon_state = "fitnessweight" cut_overlay(swole_overlay) - to_chat(user, "[finishmessage]") \ No newline at end of file + to_chat(user, "[finishmessage]") diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm index 3c7e736105..44f13d0a4f 100644 --- a/code/modules/mining/machine_stacking.dm +++ b/code/modules/mining/machine_stacking.dm @@ -88,7 +88,7 @@ stack_list[inp.type] = s var/obj/item/stack/sheet/storage = stack_list[inp.type] storage.amount += inp.amount //Stack the sheets - inp.loc = null //Let the old sheet garbage collect + qdel(inp) //Let the old sheet garbage collect while(storage.amount > stack_amt) //Get rid of excessive stackage var/obj/item/stack/sheet/out = new inp.type() out.amount = stack_amt diff --git a/code/modules/mob/camera/camera.dm b/code/modules/mob/camera/camera.dm index e058782be1..f4705bdb18 100644 --- a/code/modules/mob/camera/camera.dm +++ b/code/modules/mob/camera/camera.dm @@ -6,6 +6,7 @@ anchored = TRUE status_flags = GODMODE // You can't damage it. mouse_opacity = MOUSE_OPACITY_TRANSPARENT +<<<<<<< HEAD see_in_dark = 7 invisibility = INVISIBILITY_ABSTRACT // No one can see us sight = SEE_SELF @@ -13,3 +14,15 @@ /mob/camera/experience_pressure_difference() return +======= + see_in_dark = 7 + invisibility = INVISIBILITY_ABSTRACT // No one can see us + sight = SEE_SELF + move_on_shuttle = 0 + +/mob/camera/experience_pressure_difference() + return + +/mob/camera/forceMove(atom/destination) + loc = destination +>>>>>>> 5233ec1... Finishes the forceMove port (#33519) diff --git a/code/modules/mob/dead/dead.dm b/code/modules/mob/dead/dead.dm index 689ef552d9..1142d2d6cb 100644 --- a/code/modules/mob/dead/dead.dm +++ b/code/modules/mob/dead/dead.dm @@ -24,6 +24,9 @@ INITIALIZE_IMMEDIATE(/mob/dead) /mob/dead/ConveyorMove() //lol return +/mob/dead/forceMove(atom/destination) + loc = destination + /mob/dead/Stat() ..() diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 458a54aa48..66a6e07180 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -21,9 +21,9 @@ S.Fade(TRUE) if(length(GLOB.newplayer_start)) - loc = pick(GLOB.newplayer_start) + forceMove(pick(GLOB.newplayer_start)) else - loc = locate(1,1,1) + forceMove(locate(1,1,1)) ComponentInitialize() @@ -282,7 +282,7 @@ var/obj/effect/landmark/observer_start/O = locate(/obj/effect/landmark/observer_start) in GLOB.landmarks_list to_chat(src, "Now teleporting.") if (O) - observer.loc = O.loc + observer.forceMove(O.loc) else to_chat(src, "Teleporting failed. Ahelp an admin please") stack_trace("There's no freaking observer landmark available on this map or you're making observers before the map is initialised") diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index d19f3d4bf8..98bd14ac1f 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -109,7 +109,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) else T = locate(round(world.maxx/2), round(world.maxy/2), ZLEVEL_STATION_PRIMARY) //middle of the station - loc = T + forceMove(T) if(!name) //To prevent nameless ghosts name = random_unique_name(gender) @@ -288,10 +288,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/oldloc = loc if(NewLoc) - loc = NewLoc + forceMove(NewLoc) update_parallax_contents() else - loc = get_turf(src) //Get out of closets and such as a ghost + forceMove(get_turf(src)) //Get out of closets and such as a ghost if((direct & NORTH) && y < world.maxy) y++ else if((direct & SOUTH) && y > 1) @@ -371,7 +371,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(!L || !L.len) to_chat(usr, "No area available.") - usr.loc = pick(L) + usr.forceMove(pick(L)) update_parallax_contents() /mob/dead/observer/verb/follow() @@ -445,7 +445,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/turf/T = get_turf(M) //Turf of the destination mob if(T && isturf(T)) //Make sure the turf exists, then move the source to that destination. - A.loc = T + A.forceMove(T) A.update_parallax_contents() else to_chat(A, "This mob is not located in the game world.") diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm index e4d49d7b70..e090592ba3 100644 --- a/code/modules/mob/living/brain/MMI.dm +++ b/code/modules/mob/living/brain/MMI.dm @@ -57,7 +57,7 @@ brainmob = newbrain.brainmob newbrain.brainmob = null - brainmob.loc = src + brainmob.forceMove(src) brainmob.container = src if(!newbrain.damaged_brain) // the brain organ hasn't been beaten to death. brainmob.stat = CONSCIOUS //we manually revive the brain mob @@ -90,7 +90,7 @@ /obj/item/device/mmi/proc/eject_brain(mob/user) brainmob.container = null //Reset brainmob mmi var. - brainmob.loc = brain //Throw mob into brain. + brainmob.forceMove(brain) //Throw mob into brain. brainmob.stat = DEAD brainmob.emp_damage = 0 brainmob.reset_perspective() //so the brainmob follows the brain organ instead of the mmi. And to update our vision @@ -120,7 +120,7 @@ if(ishuman(L)) var/mob/living/carbon/human/H = L var/obj/item/organ/brain/newbrain = H.getorgan(/obj/item/organ/brain) - newbrain.loc = src + newbrain.forceMove(src) brain = newbrain else if(!brain) brain = new(src) diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm index ef704ef136..33a274c762 100644 --- a/code/modules/mob/living/brain/posibrain.dm +++ b/code/modules/mob/living/brain/posibrain.dm @@ -157,7 +157,7 @@ GLOBAL_VAR(posibrain_notify_cooldown) new_name = pick(possible_names) brainmob.name = "[new_name]-[rand(100, 999)]" brainmob.real_name = brainmob.name - brainmob.loc = src + brainmob.forceMove(src) brainmob.container = src if(autoping) ping_ghosts("created", TRUE) diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index eb17ecc40a..cf8a833bd8 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -277,7 +277,7 @@ Doesn't work on other aliens/AI.*/ if(user.stomach_contents.len) for(var/atom/movable/A in user.stomach_contents) user.stomach_contents.Remove(A) - A.loc = user.loc + A.forceMove(user.drop_location()) if(isliving(A)) var/mob/M = A M.reset_perspective() diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index fdca497bc3..fc759ec827 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -106,7 +106,7 @@ for(var/atom/movable/A in stomach_contents) stomach_contents.Remove(A) new_xeno.stomach_contents.Add(A) - A.loc = new_xeno + A.forceMove(new_xeno) ..() //For alien evolution/promotion/queen finder procs. Checks for an active alien of that type diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index e2ae973d43..edb82e7ad4 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -38,7 +38,7 @@ if(prob(src.getBruteLoss() - 50)) for(var/atom/movable/A in stomach_contents) - A.loc = loc + A.forceMove(drop_location()) stomach_contents.Remove(A) src.gib() @@ -332,7 +332,7 @@ if (client) client.screen -= W if (W) - W.loc = loc + W.forceMove(drop_location()) W.dropped(src) if (W) W.layer = initial(W.layer) @@ -345,7 +345,7 @@ if (client) client.screen -= W if (W) - W.loc = loc + W.forceMove(drop_location()) W.dropped(src) if (W) W.layer = initial(W.layer) @@ -372,7 +372,7 @@ else if(I == handcuffed) - handcuffed.loc = loc + handcuffed.forceMove(drop_location()) handcuffed.dropped(src) handcuffed = null if(buckled && buckled.buckle_requires_restraints) @@ -380,7 +380,7 @@ update_handcuffed() return if(I == legcuffed) - legcuffed.loc = loc + legcuffed.forceMove(drop_location()) legcuffed.dropped() legcuffed = null update_inv_legcuffed() @@ -786,7 +786,7 @@ if(prob(50)) organs_amt++ O.Remove(src) - O.loc = get_turf(src) + O.forceMove(drop_location()) if(organs_amt) to_chat(user, "You retrieve some of [src]\'s internal organs!") diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index e8d4baba63..a515ef23b1 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -131,7 +131,7 @@ var/obj/item/bodypart/L = pick(bodyparts) L.embedded_objects |= I I.add_mob_blood(src)//it embedded itself in you, of course it's bloody! - I.loc = src + I.forceMove(src) L.receive_damage(I.w_class*I.embedded_impact_pain_multiplier) visible_message("[I] embeds itself in [src]'s [L.name]!","[I] embeds itself in your [L.name]!") hitpush = FALSE diff --git a/code/modules/mob/living/carbon/human/interactive.dm b/code/modules/mob/living/carbon/human/interactive.dm index 35e83a8e04..d6a2c45f54 100644 --- a/code/modules/mob/living/carbon/human/interactive.dm +++ b/code/modules/mob/living/carbon/human/interactive.dm @@ -219,7 +219,7 @@ if(prob(25)) var/cType = pick(list(SNPC_BRUTE,SNPC_STEALTH,SNPC_MARTYR,SNPC_PSYCHO)) T.makeTraitor(cType) - T.loc = pick(get_area_turfs(T.job2area(T.myjob))) + T.forceMove(pick(get_area_turfs(T.job2area(T.myjob)))) if(choice == "Custom") var/cjob = input("Choose Job") as null|anything in SSjob.occupations if(cjob) @@ -256,7 +256,7 @@ var/doTele = input("Place the SNPC in their department?") as null|anything in list("Yes","No") if(doTele) if(doTele == "Yes") - T.loc = pick(get_area_turfs(T.job2area(T.myjob))) + T.forceMove(pick(get_area_turfs(T.job2area(T.myjob)))) /mob/living/carbon/human/interactive/proc/doSetup() Path_ID = new /obj/item/card/id(src) @@ -506,7 +506,7 @@ var/list/slots = list ("left pocket" = slot_l_store,"right pocket" = slot_r_store,"left hand" = slot_hands,"right hand" = slot_hands) if(hands) slots = list ("left hand" = slot_hands,"right hand" = slot_hands) - G.loc = src + G.forceMove(src) if(G.force && G.force > best_force) best_force = G.force equip_in_one_of_slots(G, slots) @@ -931,7 +931,7 @@ /mob/living/carbon/human/interactive/proc/npcDrop(var/obj/item/A,var/blacklist = 0) if(blacklist) blacklistItems += A - A.loc = get_turf(src) // drop item works inconsistently + A.forceMove(drop_location()) // drop item works inconsistently enforce_hands() update_icons() @@ -956,7 +956,7 @@ retal_target = traitorTarget else var/obj/item/I = traitorTarget - I.loc = get_turf(traitorTarget) // pull it outta them + I.forceMove(get_turf(I)) // pull it outta them else take_to_slot(traitorTarget) if(SNPC_MARTYR) @@ -1315,7 +1315,7 @@ customEmote("[src] [pick("gibbers","drools","slobbers","claps wildly","spits")], grabbing various foodstuffs from [SF] and sticking them in it's mouth!") for(var/obj/item/A in SF.contents) if(prob(smartness/2)) - A.loc = src + A.forceMove(src) if(foundCustom) @@ -1398,7 +1398,7 @@ if(!Adjacent(toGrab)) tryWalk(toGrab) else - toGrab.loc = src + toGrab.forceMove(src) if(finishedList.len > 0) var/obj/structure/table/reinforced/RT @@ -1563,7 +1563,7 @@ var/obj/item/W = main_hand W.attack(TARGET,src) else - G.loc = get_turf(src) // drop item works inconsistently + G.forceMove(drop_location()) // drop item works inconsistently enforce_hands() update_icons() else diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index cca672d3d8..a84683c5ae 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -314,7 +314,7 @@ if(prob(I.embedded_fall_chance)) BP.receive_damage(I.w_class*I.embedded_fall_pain_multiplier) BP.embedded_objects -= I - I.loc = get_turf(src) + I.forceMove(drop_location()) visible_message("[I] falls out of [name]'s [BP.name]!","[I] falls out of your [BP.name]!") if(!has_embedded_objects()) clear_alert("embeddedobject") diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 47d5a0ffd8..86314e33d7 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -117,7 +117,7 @@ job = "AI" eyeobj.ai = src - eyeobj.loc = src.loc + eyeobj.forceMove(src.loc) rename_self("ai") holo_icon = getHologramIcon(icon('icons/mob/ai.dmi',"default")) diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 6ea4d2ef94..adc88c5633 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -135,7 +135,7 @@ switch(remove_from) if("head") if(inventory_head) - inventory_head.loc = src.loc + inventory_head.forceMove(drop_location()) inventory_head = null update_corgi_fluff() regenerate_icons() @@ -144,7 +144,7 @@ return if("back") if(inventory_back) - inventory_back.loc = src.loc + inventory_back.forceMove(drop_location()) inventory_back = null update_corgi_fluff() regenerate_icons() diff --git a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm index 7a2c9e6b39..c0a57e3739 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm @@ -67,7 +67,7 @@ L.dropItemToGround(src) contents -= drone - drone.loc = get_turf(src) + drone.forceMove(drop_location()) drone.reset_perspective() drone.setDir(SOUTH )//Looks better drone.visible_message("[drone] uncurls!") diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 681f36e6d9..e4de22b2a7 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -127,7 +127,7 @@ /mob/living/simple_animal/parrot/death(gibbed) if(held_item) - held_item.loc = src.loc + held_item.forceMove(drop_location()) held_item = null walk(src,0) @@ -702,7 +702,7 @@ continue held_item = I - I.loc = src + I.forceMove(src) visible_message("[src] grabs [held_item]!", "You grab [held_item]!", "You hear the sounds of wings flapping furiously.") return held_item @@ -777,7 +777,7 @@ if(!drop_gently) if(istype(held_item, /obj/item/grenade)) var/obj/item/grenade/G = held_item - G.loc = src.loc + G.forceMove(drop_location()) G.prime() to_chat(src, "You let go of [held_item]!") held_item = null @@ -785,7 +785,7 @@ to_chat(src, "You drop [held_item].") - held_item.loc = src.loc + held_item.forceMove(drop_location()) held_item = null return 1 @@ -801,7 +801,7 @@ for(var/atom/movable/AM in view(src,1)) for(var/perch_path in desired_perches) if(istype(AM, perch_path)) - src.loc = AM.loc + src.forceMove(AM.loc) icon_state = icon_sit return to_chat(src, "There is no perch nearby to sit on!") @@ -838,7 +838,7 @@ /mob/living/simple_animal/parrot/proc/perch_on_human(mob/living/carbon/human/H) if(!H) return - loc = get_turf(H) + forceMove(get_turf(H)) H.buckle_mob(src, force=1) pixel_y = 9 pixel_x = pick(-8,8) //pick left or right shoulder @@ -996,7 +996,7 @@ return var/datum/disease/parrot_possession/P = new P.parrot = src - loc = H + forceMove(H) H.ForceContractDisease(P) parrot_interest = null H.visible_message("[src] dive bombs into [H]'s chest and vanishes!", "[src] dive bombs into your chest, vanishing! This can't be good!") diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 9885d1c4d6..94431a9a7c 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -107,7 +107,7 @@ return mob.control_object.setDir(direct) else - mob.control_object.loc = get_step(mob.control_object,direct) + mob.control_object.forceMove(get_step(mob.control_object,direct)) return #define MOVEMENT_DELAY_BUFFER 0.75 @@ -186,7 +186,7 @@ if(LAZYLEN(mob.user_movement_hooks)) for(var/obj/O in mob.user_movement_hooks) O.intercept_user_move(direct, mob, n, oldloc) - + var/atom/movable/P = mob.pulling if(P && !ismob(P) && P.density) mob.dir = turn(mob.dir, 180) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 534307f727..42a1ce725f 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -58,7 +58,6 @@ O.suiciding = suiciding if(hellbound) O.hellbound = hellbound - O.loc = loc O.a_intent = INTENT_HARM //keep viruses? @@ -113,7 +112,7 @@ var/obj/item/bodypart/chest/torso = O.get_bodypart("chest") if(cavity_object) torso.cavity_item = cavity_object //cavity item is given to the new chest - cavity_object.loc = O + cavity_object.forceMove(O) for(var/missing_zone in missing_bodyparts_zones) var/obj/item/bodypart/BP = O.get_bodypart(missing_zone) @@ -220,8 +219,6 @@ if(hellbound) O.hellbound = hellbound - O.loc = loc - //keep viruses? if (tr_flags & TR_KEEPVIRUS) O.viruses = viruses @@ -276,7 +273,7 @@ var/obj/item/bodypart/chest/torso = get_bodypart("chest") if(cavity_object) torso.cavity_item = cavity_object //cavity item is given to the new chest - cavity_object.loc = O + cavity_object.forceMove(O) for(var/missing_zone in missing_bodyparts_zones) var/obj/item/bodypart/BP = O.get_bodypart(missing_zone) @@ -401,7 +398,6 @@ R.mmi.brainmob.real_name = real_name //the name of the brain inside the cyborg is the robotized human's name. R.mmi.brainmob.name = real_name - R.loc = loc R.job = "Cyborg" R.notify_ai(NEW_BORG) diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm index d9d220b0ef..e8487b3344 100644 --- a/code/modules/paperwork/clipboard.dm +++ b/code/modules/paperwork/clipboard.dm @@ -73,7 +73,7 @@ if(href_list["pen"]) if(haspen) - haspen.loc = usr.loc + haspen.forceMove(usr.loc) usr.put_in_hands(haspen) haspen = null @@ -96,7 +96,7 @@ if(href_list["remove"]) var/obj/item/P = locate(href_list["remove"]) if(istype(P) && P.loc == src) - P.loc = usr.loc + P.forceMove(usr.loc) usr.put_in_hands(P) if(P == toppaper) toppaper = null diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index 3221a2c8db..c81ab37591 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -62,7 +62,7 @@ if(href_list["remove"]) var/obj/item/I = locate(href_list["remove"]) if(istype(I) && I.loc == src) - I.loc = usr.loc + I.forceMove(usr.loc) usr.put_in_hands(I) if(href_list["read"]) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 20038f5745..6f0f56e858 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -247,10 +247,10 @@ /obj/machinery/photocopier/proc/remove_photocopy(obj/item/O, mob/user) if(!issilicon(user)) //surprised this check didn't exist before, putting stuff in AI's hand is bad - O.loc = user.loc + O.forceMove(user.loc) user.put_in_hands(O) else - O.loc = src.loc + O.forceMove(drop_location()) to_chat(user, "You take [O] out of [src].") /obj/machinery/photocopier/attackby(obj/item/O, mob/user, params) @@ -338,16 +338,16 @@ else user.visible_message("[user] puts [target] onto the photocopier!", "You put [target] onto the photocopier.") - target.loc = get_turf(src) + target.forceMove(drop_location()) ass = target if(photocopy) - photocopy.loc = src.loc + photocopy.forceMove(drop_location()) visible_message("[photocopy] is shoved out of the way by [ass]!") photocopy = null else if(copy) - copy.loc = src.loc + copy.forceMove(drop_location()) visible_message("[copy] is shoved out of the way by [ass]!") copy = null updateUsrDialog() diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm index a37344d635..f8b8cae22a 100644 --- a/code/modules/power/antimatter/control.dm +++ b/code/modules/power/antimatter/control.dm @@ -339,7 +339,7 @@ if(href_list["ejectjar"]) if(fueljar) - fueljar.loc = src.loc + fueljar.forceMove(drop_location()) fueljar = null //fueljar.control_unit = null currently it does not care where it is //update_icon() when we have the icon for it diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 7f3b428978..cbe8f335de 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -972,7 +972,7 @@ else to_chat(occupier, "Primary core damaged, unable to return core processes.") if(forced) - occupier.loc = src.loc + occupier.forceMove(drop_location()) occupier.death() occupier.gib() for(var/obj/item/pinpointer/nuke/P in GLOB.pinpointer_list) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 9e4e29ceb5..3edff3e912 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -427,7 +427,7 @@ By design, d1 is the smallest direction and d2 is the highest var/obj/O = P_list[1] // remove the cut cable from its turf and powernet, so that it doesn't get count in propagate_network worklist if(remove) - loc = null + moveToNullspace() powernet.remove_cable(src) //remove the cut cable from its powernet addtimer(CALLBACK(O, .proc/auto_propogate_cut_cable, O), 0) //so we don't rebuild the network X times when singulo/explosion destroys a line of X cables diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 0ede336ef6..36dd615e86 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -132,7 +132,7 @@ var/obj/item/tank/internals/plasma/Z = src.loaded_tank if (!Z) return - Z.loc = get_turf(src) + Z.forceMove(drop_location()) Z.layer = initial(Z.layer) Z.plane = initial(Z.plane) src.loaded_tank = null diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index 74aa140721..cdfbb35b34 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -285,9 +285,8 @@ field_generator power level display var/field_dir = get_dir(T,get_step(G.loc, NSEW)) T = get_step(T, NSEW) if(!locate(/obj/machinery/field/containment) in T) - var/obj/machinery/field/containment/CF = new/obj/machinery/field/containment() + var/obj/machinery/field/containment/CF = new(T) CF.set_master(src,G) - CF.loc = T CF.setDir(field_dir) fields += CF G.fields += CF diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index fb530f128f..435cfe4156 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -419,7 +419,7 @@ new /obj/item/shard( src.loc ) var/obj/item/circuitboard/computer/solar_control/M = new /obj/item/circuitboard/computer/solar_control( A ) for (var/obj/C in src) - C.loc = src.loc + C.forceMove(drop_location()) A.circuit = M A.state = 3 A.icon_state = "3" @@ -430,7 +430,7 @@ var/obj/structure/frame/computer/A = new /obj/structure/frame/computer( src.loc ) var/obj/item/circuitboard/computer/solar_control/M = new /obj/item/circuitboard/computer/solar_control( A ) for (var/obj/C in src) - C.loc = src.loc + C.forceMove(drop_location()) A.circuit = M A.state = 4 A.icon_state = "4" diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm index 5e129acf8f..a46627b7ca 100644 --- a/code/modules/power/tracker.dm +++ b/code/modules/power/tracker.dm @@ -47,7 +47,7 @@ S.glass_type = /obj/item/stack/sheet/glass S.tracker = 1 S.anchored = TRUE - S.loc = src + S.forceMove(src) update_icon() //updates the tracker icon and the facing angle for the control computer @@ -94,4 +94,4 @@ // Tracker Electronic /obj/item/electronics/tracker - name = "tracker electronics" \ No newline at end of file + name = "tracker electronics" diff --git a/code/modules/projectiles/ammunition/caseless.dm b/code/modules/projectiles/ammunition/caseless.dm index e5b905019d..7432f9f8e7 100644 --- a/code/modules/projectiles/ammunition/caseless.dm +++ b/code/modules/projectiles/ammunition/caseless.dm @@ -7,7 +7,7 @@ /obj/item/ammo_casing/caseless/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread) if (..()) //successfully firing - loc = null + moveToNullspace() return 1 else return 0 diff --git a/code/modules/projectiles/boxes_magazines/internal_mag.dm b/code/modules/projectiles/boxes_magazines/internal_mag.dm index 3a8b4e6f2f..f486be732d 100644 --- a/code/modules/projectiles/boxes_magazines/internal_mag.dm +++ b/code/modules/projectiles/boxes_magazines/internal_mag.dm @@ -51,10 +51,10 @@ var/obj/item/ammo_casing/bullet = stored_ammo[i] if(!bullet || !bullet.BB) // found a spent ammo stored_ammo[i] = R - R.loc = src + R.forceMove(src) if(bullet) - bullet.loc = get_turf(src.loc) + bullet.forceMove(drop_location()) return 1 return 0 diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 37e868462e..42e1352b2d 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -77,9 +77,8 @@ ..() var/obj/item/gun/G = locate(/obj/item/gun) in contents if(G) - G.loc = loc - qdel(G.pin) - G.pin = null + G.forceMove(loc) + QDEL_NULL(G.pin) visible_message("[G] can now fit a new pin, but the old one was destroyed in the process.", null, null, 3) qdel(src) diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index bfc9ceac64..e75905b8c1 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -107,13 +107,13 @@ /obj/item/gun/ballistic/attack_self(mob/living/user) var/obj/item/ammo_casing/AC = chambered //Find chambered round if(magazine) - magazine.loc = get_turf(src.loc) + magazine.forceMove(drop_location()) user.put_in_hands(magazine) magazine.update_icon() magazine = null to_chat(user, "You pull the magazine out of \the [src].") else if(chambered) - AC.loc = get_turf(src) + AC.forceMove(drop_location()) AC.SpinAnimation(10, 1) chambered = null to_chat(user, "You unload the round from \the [src]'s chamber.") @@ -216,4 +216,3 @@ desc = "A foreign knock-off suppressor, it feels flimsy, cheap, and brittle. Still fits all weapons." icon = 'icons/obj/guns/projectile.dmi' icon_state = "suppressor" - diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index eb36608e77..f2eb15b381 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -325,7 +325,7 @@ else if(cover_open && magazine) //drop the mag magazine.update_icon() - magazine.loc = get_turf(src.loc) + magazine.forceMove(drop_location()) user.put_in_hands(magazine) magazine = null update_icon() diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 42f4fb8a05..4dafbc3f3c 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -39,7 +39,7 @@ var/obj/item/ammo_casing/CB CB = magazine.get_round(0) if(CB) - CB.loc = get_turf(src.loc) + CB.forceMove(drop_location()) CB.SpinAnimation(10, 1) CB.update_icon() num_unloaded++ @@ -289,7 +289,7 @@ var/obj/item/ammo_casing/CB CB = magazine.get_round(0) chambered = null - CB.loc = get_turf(src.loc) + CB.forceMove(drop_location()) CB.update_icon() num_unloaded++ if (num_unloaded) diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index 650e5ec81f..e6e06cfd68 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -56,7 +56,7 @@ /obj/item/gun/ballistic/shotgun/proc/pump_unload(mob/M) if(chambered)//We have a shell in the chamber - chambered.loc = get_turf(src)//Eject casing + chambered.forceMove(drop_location())//Eject casing chambered.SpinAnimation(5, 1) chambered = null diff --git a/code/modules/projectiles/guns/beam_rifle.dm b/code/modules/projectiles/guns/beam_rifle.dm index e1069a6bce..407943f254 100644 --- a/code/modules/projectiles/guns/beam_rifle.dm +++ b/code/modules/projectiles/guns/beam_rifle.dm @@ -502,11 +502,11 @@ if(!do_pierce) return FALSE if(pierced[target]) //we already pierced them go away - loc = get_turf(target) + forceMove(get_turf(target)) return TRUE if(isclosedturf(target)) if(wall_pierce++ < wall_pierce_amount) - loc = target + forceMove(target) if(prob(wall_devastate)) if(iswallturf(target)) var/turf/closed/wall/W = target @@ -522,7 +522,7 @@ var/obj/O = AM O.take_damage((impact_structure_damage + aoe_structure_damage) * structure_bleed_coeff * get_damage_coeff(AM), BURN, "energy", FALSE) pierced[AM] = TRUE - loc = get_turf(AM) + forceMove(AM.drop_location()) structure_pierce++ return TRUE return FALSE diff --git a/code/modules/projectiles/guns/syringe_gun.dm b/code/modules/projectiles/guns/syringe_gun.dm index b8e3c97e81..ac9f7daedf 100644 --- a/code/modules/projectiles/guns/syringe_gun.dm +++ b/code/modules/projectiles/guns/syringe_gun.dm @@ -42,7 +42,7 @@ if(!S) return 0 - S.loc = user.loc + S.forceMove(user.loc) syringes.Remove(S) to_chat(user, "You unload [S] from \the [src].") @@ -101,4 +101,4 @@ return TRUE else to_chat(user, "[src] cannot hold more syringes!") - return FALSE \ No newline at end of file + return FALSE diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 5a650ff2c3..152cff6c74 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -100,7 +100,7 @@ /obj/item/projectile/meteor/Collide(atom/A) if(A == firer) - loc = A.loc + forceMove(A.loc) return A.ex_act(EXPLODE_HEAVY) playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) @@ -612,4 +612,3 @@ knockdown = 0 nodamage = TRUE return ..() - diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index ed14ae63c1..aa41763cfa 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -29,7 +29,7 @@ if(make_from) setDir(make_from.dir) - make_from.loc = null + make_from.moveToNullspace() stored = make_from pressure_charging = FALSE // newly built disposal bins start with pump off else @@ -471,7 +471,7 @@ if(isobj(AM)) var/obj/O = AM - O.loc = src + O.forceMove(src) else if(ismob(AM)) var/mob/M = AM if(prob(2)) // to prevent mobs being stuck in infinite loops diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 56848c6394..bad8f1e5aa 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -219,8 +219,8 @@ return var/turf/dropturf = get_turf(pick(view(1,src))) if(!dropturf) //Failsafe to prevent the object being lost in the void forever. - dropturf = get_turf(src) - loaded_item.loc = dropturf + dropturf = drop_location() + loaded_item.forceMove(dropturf) if(delete) qdel(loaded_item) loaded_item = null @@ -510,7 +510,7 @@ throwSmoke(loc) if(trackedRuntime) throwSmoke(trackedRuntime.loc) - trackedRuntime.loc = loc + trackedRuntime.forceMove(drop_location()) investigate_log("Experimentor has stolen Runtime!", INVESTIGATE_EXPERIMENTOR) else new /mob/living/simple_animal/pet/cat(loc) diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm index 65636aa528..de1b0022f6 100644 --- a/code/modules/shuttle/navigation_computer.dm +++ b/code/modules/shuttle/navigation_computer.dm @@ -119,7 +119,7 @@ return if(!my_port) - my_port = new /obj/docking_port/stationary() + my_port = new(locate(eyeobj.x - x_offset, eyeobj.y - y_offset, eyeobj.z)) my_port.name = shuttlePortName my_port.id = shuttlePortId my_port.height = shuttle_port.height @@ -128,7 +128,6 @@ my_port.dwidth = shuttle_port.dwidth my_port.hidden = shuttle_port.hidden my_port.dir = the_eye.dir - my_port.loc = locate(eyeobj.x - x_offset, eyeobj.y - y_offset, eyeobj.z) if(current_user.client) current_user.client.images -= the_eye.placed_images diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 4daeb9ea45..c952c84314 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -142,11 +142,11 @@ //when a limb is dropped, the internal organs are removed from the mob and put into the limb /obj/item/organ/proc/transfer_to_limb(obj/item/bodypart/LB, mob/living/carbon/C) Remove(C) - loc = LB + forceMove(LB) /obj/item/organ/brain/transfer_to_limb(obj/item/bodypart/head/LB, mob/living/carbon/human/C) Remove(C) //Changeling brain concerns are now handled in Remove - loc = LB + forceMove(LB) LB.brain = src if(brainmob) LB.brainmob = brainmob @@ -265,7 +265,7 @@ attach_limb(C, special) /obj/item/bodypart/proc/attach_limb(mob/living/carbon/C, special) - loc = null + moveToNullspace() owner = C C.bodyparts += src if(held_index) From 2aef00daf0713b4c0cbff7f663dcff335b832c02 Mon Sep 17 00:00:00 2001 From: Ashe Higgs Date: Thu, 14 Dec 2017 16:48:25 -0500 Subject: [PATCH 03/94] All-In-One grinder results are now defined by type, not by huge lists --- code/game/objects/items.dm | 15 + code/game/objects/items/apc_frame.dm | 3 +- code/game/objects/items/cigs_lighters.dm | 4 + .../items/circuitboards/circuitboard.dm | 1 + code/game/objects/items/clown_items.dm | 1 + code/game/objects/items/crayons.dm | 1 + code/game/objects/items/devices/flashlight.dm | 2 + code/game/objects/items/devices/scanners.dm | 1 + code/game/objects/items/stacks/bscrystal.dm | 3 + code/game/objects/items/stacks/medical.dm | 2 + .../game/objects/items/stacks/sheets/glass.dm | 4 + .../game/objects/items/stacks/sheets/light.dm | 8 + .../objects/items/stacks/sheets/mineral.dm | 6 + .../items/stacks/sheets/sheet_types.dm | 6 + code/game/objects/items/stacks/stack.dm | 11 + code/game/objects/items/trash.dm | 2 + code/modules/food_and_drinks/drinks/drinks.dm | 1 + code/modules/food_and_drinks/food/snacks.dm | 1 + .../food_and_drinks/food/snacks_egg.dm | 1 + .../food_and_drinks/food/snacks_other.dm | 1 + .../hydroponics/beekeeping/honeycomb.dm | 1 + code/modules/hydroponics/grown.dm | 23 ++ code/modules/hydroponics/grown/apple.dm | 1 + code/modules/hydroponics/grown/banana.dm | 1 + code/modules/hydroponics/grown/beans.dm | 1 + code/modules/hydroponics/grown/berries.dm | 5 + code/modules/hydroponics/grown/cereals.dm | 4 + code/modules/hydroponics/grown/citrus.dm | 3 + code/modules/hydroponics/grown/corn.dm | 1 + code/modules/hydroponics/grown/flowers.dm | 1 + code/modules/hydroponics/grown/melon.dm | 1 + code/modules/hydroponics/grown/nettle.dm | 2 + code/modules/hydroponics/grown/potato.dm | 1 + code/modules/hydroponics/grown/pumpkin.dm | 4 +- code/modules/hydroponics/grown/root.dm | 1 + code/modules/hydroponics/grown/tea_coffee.dm | 9 +- code/modules/hydroponics/grown/tomato.dm | 3 + code/modules/hydroponics/growninedible.dm | 4 + .../living/simple_animal/friendly/mouse.dm | 4 + code/modules/paperwork/pen.dm | 6 + code/modules/paperwork/photocopier.dm | 1 + code/modules/paperwork/photography.dm | 1 + code/modules/power/cable.dm | 1 + code/modules/power/cell.dm | 2 + code/modules/power/lighting.dm | 1 + .../chemistry/machinery/reagentgrinder.dm | 272 +++--------------- .../reagents/reagent_containers/pill.dm | 158 ++++++++++ .../research/xenobiology/xenobiology.dm | 5 + 48 files changed, 356 insertions(+), 235 deletions(-) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index f4dd741695..d4fd9c710a 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -117,7 +117,13 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/trigger_guard = TRIGGER_GUARD_NONE +<<<<<<< HEAD var/icon_override = null +======= + //Grinder vars + var/list/grind_results //A reagent list containing the reagents this item produces when ground up in a grinder - this can be an empty list to allow for reagent transferring only + var/list/juice_results //A reagent list containing blah blah... but when JUICED in a grinder! +>>>>>>> d447acd... All-In-One grinder results are now defined by type, not by huge lists (#33181) /obj/item/Initialize() if (!materials) @@ -678,6 +684,15 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) /obj/item/proc/on_mob_death(mob/living/L, gibbed) +/obj/item/proc/grind_requirements(obj/machinery/reagentgrinder/R) //Used to check for extra requirements for grinding an object + return TRUE + + //Called BEFORE the object is ground up - use this to change grind results based on conditions + //Use "return -1" to prevent the grinding from occurring +/obj/item/proc/on_grind() + +/obj/item/proc/on_juice() + /obj/item/proc/set_force_string() switch(force) if(0 to 4) diff --git a/code/game/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm index 4c8d342c16..5048f6ed2d 100644 --- a/code/game/objects/items/apc_frame.dm +++ b/code/game/objects/items/apc_frame.dm @@ -120,4 +120,5 @@ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_SMALL - materials = list(MAT_METAL=50, MAT_GLASS=50) \ No newline at end of file + materials = list(MAT_METAL=50, MAT_GLASS=50) + grind_results = list("iron" = 10, "silicon" = 10) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 491feb91ce..9c7c34510c 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -25,6 +25,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/smoketime = 5 w_class = WEIGHT_CLASS_TINY heat = 1000 + grind_results = list("phosphorus" = 2) /obj/item/match/process() smoketime-- @@ -104,6 +105,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM container_type = INJECTABLE_1 w_class = WEIGHT_CLASS_TINY body_parts_covered = null + grind_results = list() var/lit = FALSE var/starts_lit = FALSE var/icon_on = "cigon" //Note - these are in masks.dmi not in cigarette.dmi @@ -363,6 +365,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_state = "cigbutt" w_class = WEIGHT_CLASS_TINY throwforce = 0 + grind_results = list("carbon" = 2) /obj/item/cigbutt/cigarbutt name = "cigar butt" @@ -484,6 +487,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM heat = 1500 resistance_flags = FIRE_PROOF light_color = LIGHT_COLOR_FIRE + grind_results = list("iron" = 1, "welding_fuel" = 5, "oil" = 5) /obj/item/lighter/update_icon() if(lit) diff --git a/code/game/objects/items/circuitboards/circuitboard.dm b/code/game/objects/items/circuitboards/circuitboard.dm index 82350e37f9..12b54a3751 100644 --- a/code/game/objects/items/circuitboards/circuitboard.dm +++ b/code/game/objects/items/circuitboards/circuitboard.dm @@ -12,6 +12,7 @@ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' materials = list(MAT_GLASS=1000) w_class = WEIGHT_CLASS_SMALL + grind_results = list("silicon" = 20, "sacid" = 0.5) //Retrieving acid this way is extremely inefficient var/build_path = null /obj/item/circuitboard/proc/apply_default_parts(obj/machinery/M) diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm index c96ec4167a..f2a804e9e9 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -21,6 +21,7 @@ throwforce = 0 throw_speed = 3 throw_range = 7 + grind_results = list("lye" = 10) var/cleanspeed = 50 //slower than mop force_string = "robust... against germs" diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 7b2d730daf..56bad47963 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -26,6 +26,7 @@ item_color = "red" w_class = WEIGHT_CLASS_TINY attack_verb = list("attacked", "coloured") + grind_results = list() var/paint_color = "#FF0000" //RGB var/drawtype diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 08c570a786..f656d55afd 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -256,6 +256,7 @@ var/produce_heat = 1500 heat = 1000 light_color = LIGHT_COLOR_FLARE + grind_results = list("sulfur" = 15) /obj/item/device/flashlight/flare/New() fuel = rand(800, 1000) // Sorry for changing this so much but I keep under-estimating how long X number of ticks last in seconds. @@ -404,6 +405,7 @@ color = LIGHT_COLOR_GREEN icon_state = "glowstick" item_state = "glowstick" + grind_results = list("phenol" = 15, "hydrogen" = 10, "oxygen" = 5) //Meth-in-a-stick var/fuel = 0 /obj/item/device/flashlight/glowstick/Initialize() diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 3f17485550..9a60bb0edb 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -335,6 +335,7 @@ GAS ANALYZER throw_speed = 3 throw_range = 7 materials = list(MAT_METAL=30, MAT_GLASS=20) + grind_results = list("mercury" = 5, "iron" = 5, "silicon" = 5) /obj/item/device/analyzer/attack_self(mob/user) diff --git a/code/game/objects/items/stacks/bscrystal.dm b/code/game/objects/items/stacks/bscrystal.dm index 5276050b03..978966706e 100644 --- a/code/game/objects/items/stacks/bscrystal.dm +++ b/code/game/objects/items/stacks/bscrystal.dm @@ -9,6 +9,7 @@ points = 50 var/blink_range = 8 // The teleport range when crushed/thrown at someone. refined_type = /obj/item/stack/sheet/bluespace_crystal + grind_results = list("bluespace" = 2) /obj/item/ore/bluespace_crystal/refined name = "refined bluespace crystal" @@ -48,6 +49,7 @@ blink_range = 4 // Not as good as the organic stuff! points = 0 //nice try refined_type = null + grind_results = list("bluespace" = 1, "silicon" = 2) //Polycrystals, aka stacks /obj/item/stack/sheet/bluespace_crystal @@ -58,6 +60,7 @@ materials = list(MAT_BLUESPACE=MINERAL_MATERIAL_AMOUNT) attack_verb = list("bluespace polybashed", "bluespace polybattered", "bluespace polybludgeoned", "bluespace polythrashed", "bluespace polysmashed") novariants = TRUE + grind_results = list("bluespace" = 2) var/crystal_type = /obj/item/ore/bluespace_crystal/refined /obj/item/stack/sheet/bluespace_crystal/attack_self(mob/user)// to prevent the construction menu from ever happening diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 560182d9c7..7a0f85a8f2 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -111,6 +111,7 @@ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' heal_brute = 40 self_delay = 20 + grind_results = list("styptic_powder" = 1) /obj/item/stack/medical/bruise_pack/suicide_act(mob/user) user.visible_message("[user] is bludgeoning [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -147,3 +148,4 @@ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' heal_burn = 40 self_delay = 20 + grind_results = list("silver_sulfadiazine" = 1) diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 0544598246..8cc6a60efa 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -22,6 +22,7 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \ armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/glass + grind_results = list("silicon" = 1) /obj/item/stack/sheet/glass/cyborg materials = list() @@ -79,6 +80,7 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/plasmaglass + grind_results = list("silicon" = 1, "plasma" = 1) /obj/item/stack/sheet/plasmaglass/fifty amount = 50 @@ -128,6 +130,7 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \ armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 70, acid = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/rglass + grind_results = list("silicon" = 1, "iron" = 1) /obj/item/stack/sheet/rglass/attackby(obj/item/W, mob/user, params) add_fingerprint(user) @@ -168,6 +171,7 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \ armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/plasmarglass + grind_results = list("silicon" = 1, "plasma" = 1, "iron" = 1) /obj/item/stack/sheet/plasmarglass/Initialize(mapload, new_amount, merge = TRUE) recipes = GLOB.prglass_recipes diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index a02d182f1c..e0dcfa3184 100644 --- a/code/game/objects/items/stacks/sheets/light.dm +++ b/code/game/objects/items/stacks/sheets/light.dm @@ -10,10 +10,18 @@ throw_speed = 3 throw_range = 7 flags_1 = CONDUCT_1 +<<<<<<< HEAD max_amount = 60 /obj/item/stack/light_w/attackby(obj/item/O, mob/user, params) +======= + max_amount = 60 + grind_results = list("silicon" = 1, "copper" = 1) + +/obj/item/stack/light_w/attackby(obj/item/O, mob/user, params) + +>>>>>>> d447acd... All-In-One grinder results are now defined by type, not by huge lists (#33181) if(istype(O, /obj/item/wirecutters)) var/obj/item/stack/cable_coil/CC = new (user.loc) CC.amount = 5 diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index e2ae00d06c..e44366daec 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -126,6 +126,7 @@ GLOBAL_LIST_INIT(diamond_recipes, list ( \ sheettype = "uranium" materials = list(MAT_URANIUM=MINERAL_MATERIAL_AMOUNT) novariants = TRUE + grind_results = list("uranium" = 20) GLOBAL_LIST_INIT(uranium_recipes, list ( \ new/datum/stack_recipe("uranium door", /obj/structure/mineral_door/uranium, 10, one_per_turf = 1, on_floor = 1), \ @@ -149,6 +150,7 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \ resistance_flags = FLAMMABLE max_integrity = 100 materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT) + grind_results = list("plasma" = 20) GLOBAL_LIST_INIT(plasma_recipes, list ( \ new/datum/stack_recipe("plasma door", /obj/structure/mineral_door/transparent/plasma, 10, one_per_turf = 1, on_floor = 1), \ @@ -182,6 +184,7 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \ singular_name = "gold bar" sheettype = "gold" materials = list(MAT_GOLD=MINERAL_MATERIAL_AMOUNT) + grind_results = list("gold" = 20) GLOBAL_LIST_INIT(gold_recipes, list ( \ new/datum/stack_recipe("golden door", /obj/structure/mineral_door/gold, 10, one_per_turf = 1, on_floor = 1), \ @@ -207,6 +210,7 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \ singular_name = "silver bar" sheettype = "silver" materials = list(MAT_SILVER=MINERAL_MATERIAL_AMOUNT) + grind_results = list("silver" = 20) GLOBAL_LIST_INIT(silver_recipes, list ( \ new/datum/stack_recipe("silver door", /obj/structure/mineral_door/silver, 10, one_per_turf = 1, on_floor = 1), \ @@ -232,6 +236,7 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \ sheettype = "clown" materials = list(MAT_BANANIUM=MINERAL_MATERIAL_AMOUNT) novariants = TRUE + grind_results = list("banana" = 20) GLOBAL_LIST_INIT(clown_recipes, list ( \ new/datum/stack_recipe("bananium tile", /obj/item/stack/tile/mineral/bananium, 1, 4, 20), \ @@ -302,6 +307,7 @@ GLOBAL_LIST_INIT(plastitanium_recipes, list ( \ singular_name = "snow block" force = 1 throwforce = 2 + grind_results = list("ice" = 20) GLOBAL_LIST_INIT(snow_recipes, list ( \ new/datum/stack_recipe("Snow Wall", /turf/closed/wall/mineral/snow, 5, one_per_turf = 1, on_floor = 1), \ diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index d8019d98a3..36b9cf210a 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -99,6 +99,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ flags_1 = CONDUCT_1 resistance_flags = FIRE_PROOF merge_type = /obj/item/stack/sheet/metal + grind_results = list("iron" = 20) /obj/item/stack/sheet/metal/ratvar_act() new /obj/item/stack/tile/brass(loc, amount) @@ -151,6 +152,7 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \ armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 80) resistance_flags = FIRE_PROOF merge_type = /obj/item/stack/sheet/plasteel + grind_results = list("iron" = 20, "plasma" = 20) /obj/item/stack/sheet/plasteel/Initialize(mapload, new_amount, merge = TRUE) recipes = GLOB.plasteel_recipes @@ -202,6 +204,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ resistance_flags = FLAMMABLE merge_type = /obj/item/stack/sheet/mineral/wood novariants = TRUE + grind_results = list("carbon" = 20) /obj/item/stack/sheet/mineral/wood/Initialize(mapload, new_amount, merge = TRUE) recipes = GLOB.wood_recipes @@ -322,6 +325,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list ( \ sheettype = "runed" merge_type = /obj/item/stack/sheet/runed_metal novariants = TRUE + grind_results = list("iron" = 0.5, "blood" = 1.5) /obj/item/stack/sheet/runed_metal/ratvar_act() new /obj/item/stack/tile/brass(loc, amount) @@ -385,6 +389,7 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \ throw_range = 3 turf_type = /turf/open/floor/clockwork novariants = FALSE + grind_results = list("iron" = 0.5, "teslium" = 1.5) /obj/item/stack/tile/brass/narsie_act() new /obj/item/stack/sheet/runed_metal(loc, amount) @@ -435,6 +440,7 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \ w_class = WEIGHT_CLASS_NORMAL throw_speed = 1 throw_range = 3 + grind_results = list("carbon" = 1) GLOBAL_LIST_INIT(plastic_recipes, list( new /datum/stack_recipe("plastic flaps", /obj/structure/plasticflaps, 5, one_per_turf = TRUE, on_floor = TRUE, time = 40), \ diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 1faad3462b..d50239f79d 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -21,6 +21,17 @@ var/merge_type = null // This path and its children should merge with this stack, defaults to src.type var/full_w_class = WEIGHT_CLASS_NORMAL //The weight class the stack should have at amount > 2/3rds max_amount var/novariants = TRUE //Determines whether the item should update it's sprites based on amount. + //NOTE: When adding grind_results, the amounts should be for an INDIVIDUAL ITEM - these amounts will be multiplied by the stack size in on_grind() + +/obj/item/stack/on_grind() + for(var/i in 1 to grind_results.len) //This should only call if it's ground, so no need to check if grind_results exists + grind_results[grind_results[i]] *= amount //Gets the key at position i, then the reagent amount of that key, then multiplies it by stack size + +/obj/item/stack/grind_requirements() + if(is_cyborg) + to_chat(usr, "[src] is electronically synthesized in your chassis and can't be ground up!") + return + return TRUE /obj/item/stack/Initialize(mapload, new_amount=null , merge = TRUE) . = ..() diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index c9552a3d39..b1313ef84f 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -66,6 +66,7 @@ name = "crushed can" icon_state = "cola" resistance_flags = NONE + grind_results = list("aluminum" = 10) /obj/item/trash/attack(mob/M, mob/living/user) return @@ -75,6 +76,7 @@ icon = 'icons/obj/mining.dmi' icon_state = "slag" desc = "Someone's gotten on the naughty list." + grind_results = list("carbon" = 20) /obj/item/trash/coal/burn() visible_message("[src] fuses into a diamond! Someone wasn't so naughty after all...") diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 7217fe0b28..6fb712ea41 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -393,6 +393,7 @@ container_type = NONE spillable = FALSE isGlass = FALSE + grind_results = list("aluminum" = 10) /obj/item/reagent_containers/food/drinks/soda_cans/attack(mob/M, mob/user) if(M == user && !src.reagents.total_volume && user.a_intent == INTENT_HARM && user.zone_selected == "head") diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index 49f85a882d..7f574e0313 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -6,6 +6,7 @@ lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi' unique_rename = 1 + grind_results = list() //To let them be ground up to transfer their reagents var/bitesize = 2 var/bitecount = 0 var/trash = null diff --git a/code/modules/food_and_drinks/food/snacks_egg.dm b/code/modules/food_and_drinks/food/snacks_egg.dm index bfe181b419..10039f7a8b 100644 --- a/code/modules/food_and_drinks/food/snacks_egg.dm +++ b/code/modules/food_and_drinks/food/snacks_egg.dm @@ -20,6 +20,7 @@ filling_color = "#F0E68C" tastes = list("egg" = 1) foodtype = MEAT + grind_results = list("eggyolk" = 5) /obj/item/reagent_containers/food/snacks/egg/throw_impact(atom/hit_atom) if(!..()) //was it caught by a mob? diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index c32ebfb765..c7681fe807 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -28,6 +28,7 @@ filling_color = "#FF1493" tastes = list("watermelon" = 1) foodtype = FRUIT + juice_results = list("watermelonjuice" = 5) /obj/item/reagent_containers/food/snacks/candy_corn name = "candy corn" diff --git a/code/modules/hydroponics/beekeeping/honeycomb.dm b/code/modules/hydroponics/beekeeping/honeycomb.dm index 737736efc5..8b9d641eac 100644 --- a/code/modules/hydroponics/beekeeping/honeycomb.dm +++ b/code/modules/hydroponics/beekeeping/honeycomb.dm @@ -10,6 +10,7 @@ volume = 10 amount_per_transfer_from_this = 0 list_reagents = list("honey" = 5) + grind_results = list() var/honey_color = "" /obj/item/reagent_containers/honeycomb/New() diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index d003f40d4a..643ac056e4 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -15,6 +15,7 @@ // Saves us from having to define each stupid grown's dried_type as itself. // If you don't want a plant to be driable (watermelons) set this to null in the time definition. resistance_flags = FLAMMABLE + var/dry_grind = FALSE //If TRUE, this object needs to be dry to be ground up /obj/item/reagent_containers/food/snacks/grown/Initialize(mapload, obj/item/seeds/new_seed) . = ..() @@ -137,6 +138,28 @@ return return ..() +/obj/item/reagent_containers/food/snacks/grown/grind_requirements() + if(dry_grind && !dry) + to_chat(usr, "[src] needs to be dry before it can be ground up!") + return + return TRUE + +/obj/item/reagent_containers/food/snacks/grown/on_grind() + var/nutriment = reagents.get_reagent_amount("nutriment") + if(grind_results.len) + for(var/i in 1 to grind_results.len) + grind_results[grind_results[i]] = nutriment + reagents.del_reagent("nutriment") + reagents.del_reagent("vitamin") + +/obj/item/reagent_containers/food/snacks/grown/on_juice() + var/nutriment = reagents.get_reagent_amount("nutriment") + if(juice_results.len) + for(var/i in 1 to juice_results.len) + juice_results[juice_results[i]] = nutriment + reagents.del_reagent("nutriment") + reagents.del_reagent("vitamin") + // For item-containing growns such as eggy or gatfruit /obj/item/reagent_containers/food/snacks/grown/shell/attack_self(mob/user) var/obj/item/T diff --git a/code/modules/hydroponics/grown/apple.dm b/code/modules/hydroponics/grown/apple.dm index 7ec9a730ed..8b35fee872 100644 --- a/code/modules/hydroponics/grown/apple.dm +++ b/code/modules/hydroponics/grown/apple.dm @@ -15,6 +15,7 @@ genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/apple/gold) reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) + juice_results = list("applejuice" = 0) /obj/item/reagent_containers/food/snacks/grown/apple seed = /obj/item/seeds/apple diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm index bf71856323..72517e87bc 100644 --- a/code/modules/hydroponics/grown/banana.dm +++ b/code/modules/hydroponics/grown/banana.dm @@ -13,6 +13,7 @@ genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/banana/mime, /obj/item/seeds/banana/bluespace) reagents_add = list("banana" = 0.1, "potassium" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02) + juice_results = list("banana" = 0) /obj/item/reagent_containers/food/snacks/grown/banana seed = /obj/item/seeds/banana diff --git a/code/modules/hydroponics/grown/beans.dm b/code/modules/hydroponics/grown/beans.dm index 8ca2a5961a..46a7e7979f 100644 --- a/code/modules/hydroponics/grown/beans.dm +++ b/code/modules/hydroponics/grown/beans.dm @@ -26,6 +26,7 @@ filling_color = "#F0E68C" bitesize_mod = 2 foodtype = VEGETABLES + grind_results = list("soymilk" = 0) // Koibean /obj/item/seeds/soya/koi diff --git a/code/modules/hydroponics/grown/berries.dm b/code/modules/hydroponics/grown/berries.dm index 0d8c5d5a9a..541fb1b2a5 100644 --- a/code/modules/hydroponics/grown/berries.dm +++ b/code/modules/hydroponics/grown/berries.dm @@ -26,6 +26,7 @@ filling_color = "#FF00FF" bitesize_mod = 2 foodtype = FRUIT + juice_results = list("berryjuice" = 0) // Poison Berries /obj/item/seeds/berry/poison @@ -46,6 +47,7 @@ icon_state = "poisonberrypile" filling_color = "#C71585" foodtype = FRUIT | TOXIC + juice_results = list("poisonberryjuice" = 0) // Death Berries /obj/item/seeds/berry/death @@ -121,6 +123,7 @@ filling_color = "#FF0000" bitesize_mod = 2 foodtype = FRUIT + grind_results = list("cherryjelly" = 0) // Blue Cherries /obj/item/seeds/cherry/blue @@ -142,6 +145,7 @@ filling_color = "#6495ED" bitesize_mod = 2 foodtype = FRUIT + grind_results = list("bluecherryjelly" = 0) // Grapes /obj/item/seeds/grape @@ -173,6 +177,7 @@ filling_color = "#FF1493" bitesize_mod = 2 foodtype = FRUIT + juice_results = list("grapejuice" = 0) // Green Grapes /obj/item/seeds/grape/green diff --git a/code/modules/hydroponics/grown/cereals.dm b/code/modules/hydroponics/grown/cereals.dm index 7834ed15e8..d9b724d052 100644 --- a/code/modules/hydroponics/grown/cereals.dm +++ b/code/modules/hydroponics/grown/cereals.dm @@ -22,6 +22,7 @@ filling_color = "#F0E68C" bitesize_mod = 2 foodtype = GRAIN + grind_results = list("flour" = 0) // Oat /obj/item/seeds/wheat/oat @@ -42,6 +43,7 @@ filling_color = "#556B2F" bitesize_mod = 2 foodtype = GRAIN + grind_results = list("flour" = 0) // Rice /obj/item/seeds/wheat/rice @@ -63,6 +65,7 @@ filling_color = "#FAFAD2" bitesize_mod = 2 foodtype = GRAIN + grind_results = list("rice" = 0) //Meatwheat - grows into synthetic meat /obj/item/seeds/wheat/meat @@ -83,6 +86,7 @@ bitesize_mod = 2 seed = /obj/item/seeds/wheat/meat foodtype = MEAT | GRAIN + grind_results = list("flour" = 0, "blood" = 0) /obj/item/reagent_containers/food/snacks/grown/meatwheat/attack_self(mob/living/user) user.visible_message("[user] crushes [src] into meat.", "You crush [src] into something that resembles meat.") diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm index 1b0cdc00d2..38f8a40ec3 100644 --- a/code/modules/hydroponics/grown/citrus.dm +++ b/code/modules/hydroponics/grown/citrus.dm @@ -30,6 +30,7 @@ desc = "It's so sour, your face will twist." icon_state = "lime" filling_color = "#00FF00" + juice_results = list("limejuice" = 0) // Orange /obj/item/seeds/orange @@ -56,6 +57,7 @@ desc = "It's a tangy fruit." icon_state = "orange" filling_color = "#FFA500" + juice_results = list("orangejuice" = 0) // Lemon /obj/item/seeds/lemon @@ -81,6 +83,7 @@ desc = "When life gives you lemons, make lemonade." icon_state = "lemon" filling_color = "#FFD700" + juice_results = list("lemonjuice" = 0) // Combustible lemon /obj/item/seeds/firelemon //combustible lemon is too long so firelemon diff --git a/code/modules/hydroponics/grown/corn.dm b/code/modules/hydroponics/grown/corn.dm index 827deaea47..4454c3c52a 100644 --- a/code/modules/hydroponics/grown/corn.dm +++ b/code/modules/hydroponics/grown/corn.dm @@ -25,6 +25,7 @@ trash = /obj/item/grown/corncob bitesize_mod = 2 foodtype = VEGETABLES + juice_results = list("corn_starch" = 0) /obj/item/grown/corncob name = "corn cob" diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm index e0845ffb2a..18eae2f4fd 100644 --- a/code/modules/hydroponics/grown/flowers.dm +++ b/code/modules/hydroponics/grown/flowers.dm @@ -182,6 +182,7 @@ throw_speed = 1 throw_range = 3 attack_verb = list("roasted", "scorched", "burned") + grind_results = list("capsaicin" = 0, "condensedcapsaicin" = 0) /obj/item/grown/novaflower/add_juice() ..() diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm index 5e64d716ec..a64fc4b156 100644 --- a/code/modules/hydroponics/grown/melon.dm +++ b/code/modules/hydroponics/grown/melon.dm @@ -33,6 +33,7 @@ filling_color = "#008000" bitesize_mod = 3 foodtype = FRUIT + juice_results = list("watermelonjuice" = 0) // Holymelon /obj/item/seeds/watermelon/holy diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm index 284f962e45..9ec936c1f2 100644 --- a/code/modules/hydroponics/grown/nettle.dm +++ b/code/modules/hydroponics/grown/nettle.dm @@ -43,6 +43,7 @@ throw_speed = 1 throw_range = 3 attack_verb = list("stung") + grind_results = list("sacid" = 0) /obj/item/grown/nettle/suicide_act(mob/user) user.visible_message("[user] is eating some of [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -91,6 +92,7 @@ icon_state = "deathnettle" force = 30 throwforce = 15 + grind_results = list("facid" = 1, "sacid" = 1) /obj/item/grown/nettle/death/add_juice() ..() diff --git a/code/modules/hydroponics/grown/potato.dm b/code/modules/hydroponics/grown/potato.dm index 0a3cbc060c..e127b166ea 100644 --- a/code/modules/hydroponics/grown/potato.dm +++ b/code/modules/hydroponics/grown/potato.dm @@ -17,6 +17,7 @@ genes = list(/datum/plant_gene/trait/battery) mutatelist = list(/obj/item/seeds/potato/sweet) reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) + juice_results = list("potato" = 0) /obj/item/reagent_containers/food/snacks/grown/potato seed = /obj/item/seeds/potato diff --git a/code/modules/hydroponics/grown/pumpkin.dm b/code/modules/hydroponics/grown/pumpkin.dm index d5257aeee7..7113a8feab 100644 --- a/code/modules/hydroponics/grown/pumpkin.dm +++ b/code/modules/hydroponics/grown/pumpkin.dm @@ -24,6 +24,7 @@ filling_color = "#FFA500" bitesize_mod = 2 foodtype = VEGETABLES + juice_results = list("pumpkinjuice" = 0) /obj/item/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/W as obj, mob/user as mob, params) if(W.is_sharp()) @@ -53,4 +54,5 @@ icon_state = "blumpkin" filling_color = "#87CEFA" bitesize_mod = 2 - foodtype = VEGETABLES \ No newline at end of file + foodtype = VEGETABLES + juice_results = list("blumpkinjuice" = 0) diff --git a/code/modules/hydroponics/grown/root.dm b/code/modules/hydroponics/grown/root.dm index 8666db45a8..fd78fa6ffa 100644 --- a/code/modules/hydroponics/grown/root.dm +++ b/code/modules/hydroponics/grown/root.dm @@ -22,6 +22,7 @@ filling_color = "#FFA500" bitesize_mod = 2 foodtype = VEGETABLES + juice_results = list("carrotjuice" = 0) /obj/item/reagent_containers/food/snacks/grown/carrot/attackby(obj/item/I, mob/user, params) if(I.is_sharp()) diff --git a/code/modules/hydroponics/grown/tea_coffee.dm b/code/modules/hydroponics/grown/tea_coffee.dm index bd3b182c13..fc2ed221c5 100644 --- a/code/modules/hydroponics/grown/tea_coffee.dm +++ b/code/modules/hydroponics/grown/tea_coffee.dm @@ -14,7 +14,6 @@ icon_dead = "tea-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/tea/astra) - reagents_add = list("vitamin" = 0.04, "teapowder" = 0.1) /obj/item/reagent_containers/food/snacks/grown/tea seed = /obj/item/seeds/tea @@ -22,6 +21,8 @@ desc = "These aromatic tips of the tea plant can be dried to make tea." icon_state = "tea_aspera_leaves" filling_color = "#008000" + grind_results = list("teapowder" = 0) + dry_grind = TRUE // Tea Astra /obj/item/seeds/tea/astra @@ -39,6 +40,7 @@ name = "Tea Astra tips" icon_state = "tea_astra_leaves" filling_color = "#4582B4" + grind_results = list("teapowder" = 0, "salglu_solution" = 0) // Coffee @@ -67,6 +69,8 @@ icon_state = "coffee_arabica" filling_color = "#DC143C" bitesize_mod = 2 + dry_grind = TRUE + grind_results = list("coffeepowder" = 0) // Coffee Robusta /obj/item/seeds/coffee/robusta @@ -84,4 +88,5 @@ seed = /obj/item/seeds/coffee/robusta name = "coffee robusta beans" desc = "Increases robustness by 37 percent!" - icon_state = "coffee_robusta" \ No newline at end of file + icon_state = "coffee_robusta" + grind_results = list("coffeepowder" = 0, "morphine" = 0) diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm index 1bc42b45c0..4d066e769e 100644 --- a/code/modules/hydroponics/grown/tomato.dm +++ b/code/modules/hydroponics/grown/tomato.dm @@ -23,6 +23,8 @@ filling_color = "#FF6347" bitesize_mod = 2 foodtype = VEGETABLES + grind_results = list("ketchup" = 0) + juice_results = list("tomatojuice" = 0) // Blood Tomato /obj/item/seeds/tomato/blood @@ -44,6 +46,7 @@ splat_type = /obj/effect/gibspawner/generic filling_color = "#FF0000" foodtype = VEGETABLES | GROSS + grind_results = list("ketchup" = 0, "blood" = 0) // Blue Tomato diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm index a77808f006..3b80fae6c0 100644 --- a/code/modules/hydroponics/growninedible.dm +++ b/code/modules/hydroponics/growninedible.dm @@ -62,3 +62,7 @@ /obj/item/grown/microwave_act(obj/machine/microwave/M) return + +/obj/item/grown/on_grind() + for(var/i in 1 to grind_results.len) + grind_results[grind_results[i]] = round(seed.potency) diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 85ec19bfb9..809681ed6b 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -110,3 +110,7 @@ eatverb = "devours" list_reagents = list("nutriment" = 3, "vitamin" = 2) foodtype = GROSS | MEAT | RAW + grind_results = list("blood" = 20, "liquidgibs" = 5) + +/obj/item/reagent_containers/food/snacks/deadmouse/on_grind() + reagents.clear_reagents() diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 0826a49c7c..1cd6b889c8 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -23,6 +23,7 @@ throw_range = 7 materials = list(MAT_METAL=10) pressure_resistance = 2 + grind_results = list("iron" = 2, "iodine" = 1) var/colour = "black" //what colour the ink is! var/traitor_unlock_degrees = 0 var/degrees = 0 @@ -174,7 +175,12 @@ reagents.trans_to(M, reagents.total_volume) +<<<<<<< HEAD /obj/item/pen/sleepy/New() +======= +/obj/item/pen/sleepy/Initialize() + . = ..() +>>>>>>> d447acd... All-In-One grinder results are now defined by type, not by huge lists (#33181) create_reagents(45) reagents.add_reagent("chloralhydrate2", 20) reagents.add_reagent("mutetoxin", 15) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 20038f5745..65babd7e00 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -391,5 +391,6 @@ /obj/item/device/toner name = "toner cartridge" icon_state = "tonercartridge" + grind_results = list("iodine" = 40, "iron" = 10) var/charges = 5 var/max_charges = 5 diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 48b045f680..6e908c0f6a 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -33,6 +33,7 @@ w_class = WEIGHT_CLASS_TINY resistance_flags = FLAMMABLE max_integrity = 50 + grind_results = list("iodine" = 4) var/icon/img //Big photo image var/scribble //Scribble on the back. var/blueprints = 0 //Does it include the blueprints? diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 9e4e29ceb5..c1a4181666 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -472,6 +472,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai attack_verb = list("whipped", "lashed", "disciplined", "flogged") singular_name = "cable piece" full_w_class = WEIGHT_CLASS_SMALL + grind_results = list("copper" = 2) //2 copper per cable in the coil /obj/item/stack/cable_coil/cyborg is_cyborg = 1 diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 1e1407e852..8258d7ce0d 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -14,6 +14,7 @@ var/charge = 0 // note %age conveted to actual charge in New var/maxcharge = 1000 materials = list(MAT_METAL=700, MAT_GLASS=50) + grind_results = list("lithium" = 15, "iron" = 5, "silicon" = 5) var/rigged = 0 // true if rigged to explode var/chargerate = 100 //how much power is given every tick in a recharger var/self_recharge = 0 //does it self recharge, over time, or not? @@ -107,6 +108,7 @@ to_chat(user, "You inject the solution into the power cell.") if(S.reagents.has_reagent("plasma", 5)) rigged = 1 + grind_results["plasma"] = 5 S.reagents.clear_reagents() diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 3acac6cee5..749dcb463e 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -680,6 +680,7 @@ var/base_state var/switchcount = 0 // number of times switched materials = list(MAT_GLASS=100) + grind_results = list("silicon" = 5, "nitrogen" = 10) //Nitrogen is used as a cheaper alternative to argon in incandescent lighbulbs var/rigged = 0 // true if rigged to explode var/brightness = 2 //how much light it gives off diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index 77fcd50306..223259f6f3 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -2,7 +2,7 @@ #define MILK_TO_BUTTER_COEFF 15 /obj/machinery/reagentgrinder - name = "All-In-One Grinder" + name = "\improper All-In-One Grinder" desc = "From BlenderTech. Will It Blend? Let's test it out!" icon = 'icons/obj/kitchen.dmi' icon_state = "juicer1" @@ -16,97 +16,6 @@ var/operating = FALSE var/obj/item/reagent_containers/beaker = null var/limit = 10 - - var/static/list/blend_items = list( - //Sheets - /obj/item/stack/sheet/mineral/plasma = list("plasma" = 20), - /obj/item/stack/sheet/metal = list("iron" = 20), - /obj/item/stack/sheet/plasteel = list("iron" = 20, "plasma" = 20), - /obj/item/stack/sheet/mineral/wood = list("carbon" = 20), - /obj/item/stack/sheet/glass = list("silicon" = 20), - /obj/item/stack/sheet/rglass = list("silicon" = 20, "iron" = 20), - /obj/item/stack/sheet/mineral/uranium = list("uranium" = 20), - /obj/item/stack/sheet/mineral/bananium = list("banana" = 20), - /obj/item/stack/sheet/mineral/silver = list("silver" = 20), - /obj/item/stack/sheet/mineral/gold = list("gold" = 20), - /obj/item/stack/sheet/bluespace_crystal = list("bluespace" = 20), - /obj/item/stack/cable_coil = list ("copper" = 5), - /obj/item/ore/bluespace_crystal = list("bluespace" = 20), - /obj/item/grown/nettle/basic = list("sacid" = 0), - /obj/item/grown/nettle/death = list("facid" = 0, "sacid" = 0), - /obj/item/grown/novaflower = list("capsaicin" = 0, "condensedcapsaicin" = 0), - //Blender Stuff - /obj/item/reagent_containers/food/snacks/donkpocket/warm = list("omnizine" = 3), - /obj/item/reagent_containers/food/snacks/grown/soybeans = list("soymilk" = 0), - /obj/item/reagent_containers/food/snacks/grown/tomato = list("ketchup" = 0), - /obj/item/reagent_containers/food/snacks/grown/wheat = list("flour" = -5), - /obj/item/reagent_containers/food/snacks/grown/oat = list("flour" = -5), - /obj/item/reagent_containers/food/snacks/grown/rice = list("rice" = -5), - /obj/item/reagent_containers/food/snacks/donut = list("sprinkles" = -2, "sugar" = 1), - /obj/item/reagent_containers/food/snacks/grown/cherries = list("cherryjelly" = 0), - /obj/item/reagent_containers/food/snacks/grown/bluecherries = list("bluecherryjelly" = 0), - /obj/item/reagent_containers/food/snacks/egg = list("eggyolk" = -5), - /obj/item/reagent_containers/food/snacks/deadmouse = list ("blood" = 20, "gibs" = 5), // You monster - //Grinder stuff, but only if dry - /obj/item/reagent_containers/food/snacks/grown/coffee/robusta = list("coffeepowder" = 0, "morphine" = 0), - /obj/item/reagent_containers/food/snacks/grown/coffee = list("coffeepowder" = 0), - /obj/item/reagent_containers/food/snacks/grown/tea/astra = list("teapowder" = 0, "salglu_solution" = 0), - /obj/item/reagent_containers/food/snacks/grown/tea = list("teapowder" = 0), - //Stuff that doesn't quite fit in the other categories - /obj/item/electronics = list ("iron" = 10, "silicon" = 10), - /obj/item/circuitboard = list ("silicon" = 20, "sacid" = 0.5), // Retrieving acid this way is extremely inefficient - /obj/item/match = list ("phosphorus" = 2), - /obj/item/device/toner = list ("iodine" = 40, "iron" = 10), - /obj/item/photo = list ("iodine" = 4), - /obj/item/pen = list ("iodine" = 2, "iron" = 1), - /obj/item/reagent_containers/food/drinks/soda_cans = list ("aluminium" = 10), - /obj/item/trash/can = list ("aluminium" = 10), - /obj/item/device/flashlight/flare = list ("sulfur" = 15), - /obj/item/device/flashlight/glowstick = list ("phenol" = 15, "hydrodgen" = 10, "oxygen" = 5), - /obj/item/stock_parts/cell = list ("lithium" = 15, "iron" = 5, "silicon" = 5), - /obj/item/soap = list ("lye" = 10), - /obj/item/device/analyzer = list ("mercury" = 5, "iron" = 5, "silicon" = 5), - /obj/item/lighter = list ("iron" = 1, "weldingfuel" = 5, "oil" = 5), - /obj/item/light = list ("silicon" = 5, "nitrogen" = 10), //Nitrogen is used as a cheaper alternative to argon in incandescent lighbulbs - /obj/item/cigbutt/ = list ("carbon" = 2), - /obj/item/trash/coal = list ("carbon" = 20), - /obj/item/stack/medical/bruise_pack = list ("styptic_powder" = 5), - /obj/item/stack/medical/ointment = list ("silver_sulfadiazine" = 5), - //All types that you can put into the grinder to transfer the reagents to the beaker. !Put all recipes above this.! - /obj/item/slime_extract = list(), - /obj/item/reagent_containers/pill = list(), - /obj/item/reagent_containers/food = list(), - /obj/item/reagent_containers/honeycomb = list(), - /obj/item/toy/crayon = list(), - /obj/item/clothing/mask/cigarette = list()) - - var/static/list/juice_items = list( - //Juicer Stuff - /obj/item/reagent_containers/food/snacks/grown/corn = list("corn_starch" = 0), - /obj/item/reagent_containers/food/snacks/grown/tomato = list("tomatojuice" = 0), - /obj/item/reagent_containers/food/snacks/grown/carrot = list("carrotjuice" = 0), - /obj/item/reagent_containers/food/snacks/grown/berries = list("berryjuice" = 0), - /obj/item/reagent_containers/food/snacks/grown/banana = list("banana" = 0), - /obj/item/reagent_containers/food/snacks/grown/potato = list("potato" = 0), - /obj/item/reagent_containers/food/snacks/grown/citrus/lemon = list("lemonjuice" = 0), - /obj/item/reagent_containers/food/snacks/grown/citrus/orange = list("orangejuice" = 0), - /obj/item/reagent_containers/food/snacks/grown/citrus/lime = list("limejuice" = 0), - /obj/item/reagent_containers/food/snacks/grown/watermelon = list("watermelonjuice" = 0), - /obj/item/reagent_containers/food/snacks/watermelonslice = list("watermelonjuice" = 0), - /obj/item/reagent_containers/food/snacks/grown/berries/poison = list("poisonberryjuice" = 0), - /obj/item/reagent_containers/food/snacks/grown/pumpkin = list("pumpkinjuice" = 0), - /obj/item/reagent_containers/food/snacks/grown/blumpkin = list("blumpkinjuice" = 0), - /obj/item/reagent_containers/food/snacks/grown/apple = list("applejuice" = 0), - /obj/item/reagent_containers/food/snacks/grown/grapes = list("grapejuice" = 0), - /obj/item/reagent_containers/food/snacks/grown/grapes/green = list("grapejuice" = 0)) - - var/static/list/dried_items = list( - //Grinder stuff, but only if dry, - /obj/item/reagent_containers/food/snacks/grown/coffee/robusta = list("coffeepowder" = 0, "morphine" = 0), - /obj/item/reagent_containers/food/snacks/grown/coffee = list("coffeepowder" = 0), - /obj/item/reagent_containers/food/snacks/grown/tea/astra = list("teapowder" = 0, "salglu_solution" = 0), - /obj/item/reagent_containers/food/snacks/grown/tea = list("teapowder" = 0)) - var/list/holdingitems /obj/machinery/reagentgrinder/Initialize() @@ -158,6 +67,7 @@ if(!user.transferItemToLoc(I, src)) to_chat(user, "[I] is stuck to your hand!") return TRUE + to_chat(user, "You slide [I] into [src].") beaker = I update_icon() updateUsrDialog() @@ -165,15 +75,8 @@ to_chat(user, "There's already a container inside [src].") return TRUE //no afterattack - if(is_type_in_list(I, dried_items)) - if(istype(I, /obj/item/reagent_containers/food/snacks/grown)) - var/obj/item/reagent_containers/food/snacks/grown/G = I - if(!G.dry) - to_chat(user, "You must dry [G] first!") - return TRUE - - if(length(holdingitems) >= limit) - to_chat(user, "The machine cannot hold anymore items.") + if(holdingitems.len >= limit) + to_chat(user, "[src] is filled to capacity!") return TRUE //Fill machine with a bag! @@ -192,14 +95,18 @@ updateUsrDialog() return TRUE - if (!is_type_in_list(I, blend_items) && !is_type_in_list(I, juice_items)) + if(!I.grind_results && !I.juice_results) if(user.a_intent == INTENT_HARM) return ..() else - to_chat(user, "Cannot refine into a reagent!") + to_chat(user, "You cannot grind [I] into reagents!") return TRUE + if(!I.grind_requirements(src)) //Error messages should be in the objects' definitions + return + if(user.transferItemToLoc(I, src)) + to_chat(user, "You add [I] to [src].") holdingitems[I] = TRUE updateUsrDialog() return FALSE @@ -214,7 +121,7 @@ user.set_machine(src) interact(user) -/obj/machinery/reagentgrinder/interact(mob/user) // The microwave Menu +/obj/machinery/reagentgrinder/interact(mob/user) // The microwave Menu //I am reasonably certain that this is not a microwave var/is_chamber_empty = FALSE var/is_beaker_ready = FALSE var/processing_chamber = "" @@ -307,60 +214,10 @@ holdingitems -= O updateUsrDialog() -/obj/machinery/reagentgrinder/proc/get_allowed_by_obj(obj/item/O) - for (var/i in blend_items) - if (istype(O, i)) - return blend_items[i] - -/obj/machinery/reagentgrinder/proc/get_allowed_juice_by_obj(obj/item/reagent_containers/food/snacks/O) - for(var/i in juice_items) - if(istype(O, i)) - return juice_items[i] - -/obj/machinery/reagentgrinder/proc/get_grownweapon_amount(obj/item/grown/O) - if (!istype(O) || !O.seed) - return 5 - else if (O.seed.potency == -1) - return 5 - else - return round(O.seed.potency) - -/obj/machinery/reagentgrinder/proc/get_juice_amount(obj/item/reagent_containers/food/snacks/grown/O) - if (!istype(O) || !O.seed) - return 5 - else if (O.seed.potency == -1) - return 5 - else - return round(5*sqrt(O.seed.potency)) - /obj/machinery/reagentgrinder/proc/remove_object(obj/item/O) holdingitems -= O qdel(O) -/obj/machinery/reagentgrinder/proc/juice() - power_change() - if(!beaker || (beaker && (beaker.reagents.total_volume >= beaker.reagents.maximum_volume))) - return - operate_for(50, juicing = TRUE) - - //Snacks - for(var/obj/item/i in holdingitems) - var/obj/item/I = i - if(istype(I, /obj/item/reagent_containers/food/snacks)) - var/obj/item/reagent_containers/food/snacks/O = I - if(beaker.reagents.total_volume >= beaker.reagents.maximum_volume) - break - var/list/allowed = get_allowed_juice_by_obj(O) - if(isnull(allowed)) - break - for(var/r_id in allowed) - var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume - var/amount = get_juice_amount(O) - beaker.reagents.add_reagent(r_id, min(amount, space)) - if(beaker.reagents.total_volume >= beaker.reagents.maximum_volume) - break - remove_object(O) - /obj/machinery/reagentgrinder/proc/shake_for(duration) var/offset = prob(50) ? -2 : 2 var/old_pixel_x = pixel_x @@ -386,8 +243,26 @@ operating = FALSE updateUsrDialog() -/obj/machinery/reagentgrinder/proc/grind() +/obj/machinery/reagentgrinder/proc/juice() + power_change() + if(!beaker || (beaker && (beaker.reagents.total_volume >= beaker.reagents.maximum_volume))) + return + operate_for(50, juicing = TRUE) + for(var/obj/item/i in holdingitems) + if(beaker.reagents.total_volume >= beaker.reagents.maximum_volume) + break + var/obj/item/I = i + if(I.juice_results) + juice_item(I) +/obj/machinery/reagentgrinder/proc/juice_item(obj/item/I) //Juicing results can be found in respective object definitions + if(I.on_juice(src) == -1) + to_chat(usr, "[src] shorts out as it tries to juice up [I], and transfers it back to storage.") + return + beaker.reagents.add_reagent_list(I.juice_results) + remove_object(I) + +/obj/machinery/reagentgrinder/proc/grind() power_change() if(!beaker || (beaker && beaker.reagents.total_volume >= beaker.reagents.maximum_volume)) return @@ -396,82 +271,17 @@ if(beaker.reagents.total_volume >= beaker.reagents.maximum_volume) break var/obj/item/I = i - //Snacks - if(istype(I, /obj/item/reagent_containers/food/snacks)) - var/obj/item/reagent_containers/food/snacks/O = I - var/list/allowed = get_allowed_by_obj(O) - if(isnull(allowed)) - continue - for(var/r_id in allowed) - var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume - var/amount = allowed[r_id] - if(amount <= 0) - if(amount == 0) - if (O.reagents != null && O.reagents.has_reagent("nutriment")) - beaker.reagents.add_reagent(r_id, min(O.reagents.get_reagent_amount("nutriment"), space)) - O.reagents.remove_reagent("nutriment", min(O.reagents.get_reagent_amount("nutriment"), space)) - else - if (O.reagents != null && O.reagents.has_reagent("nutriment")) - beaker.reagents.add_reagent(r_id, min(round(O.reagents.get_reagent_amount("nutriment")*abs(amount)), space)) - O.reagents.remove_reagent("nutriment", min(O.reagents.get_reagent_amount("nutriment"), space)) - else - O.reagents.trans_id_to(beaker, r_id, min(amount, space)) - if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) - break - if(O.reagents.reagent_list.len == 0) - remove_object(O) - //Sheets - else if(istype(I, /obj/item/stack/sheet)) - var/obj/item/stack/sheet/O = I - var/list/allowed = get_allowed_by_obj(O) - for(var/t in 1 to round(O.amount, 1)) - for(var/r_id in allowed) - var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume - var/amount = allowed[r_id] - beaker.reagents.add_reagent(r_id,min(amount, space)) - if (space < amount) - break - if(t == round(O.amount, 1)) - remove_object(O) - break - //Plants - else if(istype(I, /obj/item/grown)) - var/obj/item/grown/O = I - var/list/allowed = get_allowed_by_obj(O) - for (var/r_id in allowed) - var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume - var/amount = allowed[r_id] - if (amount == 0) - if (O.reagents != null && O.reagents.has_reagent(r_id)) - beaker.reagents.add_reagent(r_id,min(O.reagents.get_reagent_amount(r_id), space)) - else - beaker.reagents.add_reagent(r_id,min(amount, space)) - if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) - break - remove_object(O) - else if(istype(I, /obj/item/slime_extract)) - var/obj/item/slime_extract/O = I - var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume - if (O.reagents != null) - var/amount = O.reagents.total_volume - O.reagents.trans_to(beaker, min(amount, space)) - if (O.Uses > 0) - beaker.reagents.add_reagent("slimejelly",min(20, space)) - remove_object(O) - if(istype(I, /obj/item/reagent_containers)) - var/obj/item/reagent_containers/O = I - var/amount = O.reagents.total_volume - O.reagents.trans_to(beaker, amount) - if(!O.reagents.total_volume) - remove_object(O) - else if(istype(I, /obj/item/toy/crayon)) - var/obj/item/toy/crayon/O = I - for (var/r_id in O.reagent_contents) - var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume - if(!space) - break - beaker.reagents.add_reagent(r_id, min(O.reagent_contents[r_id], space)) - remove_object(O) + if(I.grind_results) + grind_item(i) + +/obj/machinery/reagentgrinder/proc/grind_item(obj/item/I) //Grind results can be found in respective object definitions + if(I.on_grind(src) == -1) //Call on_grind() to change amount as needed, and stop grinding the item if it returns -1 + to_chat(usr, "[src] shorts out as it tries to grind up [I], and transfers it back to storage.") + return + beaker.reagents.add_reagent_list(I.grind_results) + if(I.reagents) + I.reagents.trans_to(beaker, I.reagents.total_volume) + remove_object(I) /obj/machinery/reagentgrinder/proc/mix(mob/user) //For butter and other things that would change upon shaking or mixing diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 324623edbd..b1a126ba62 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /obj/item/reagent_containers/pill name = "pill" desc = "A tablet or capsule." @@ -152,3 +153,160 @@ icon_state = "pill9" color = "#454545" list_reagents = list("shadowmutationtoxin" = 1) +======= +/obj/item/reagent_containers/pill + name = "pill" + desc = "A tablet or capsule." + icon = 'icons/obj/chemical.dmi' + icon_state = "pill" + item_state = "pill" + lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' + possible_transfer_amounts = list() + volume = 50 + grind_results = list() + var/apply_type = INGEST + var/apply_method = "swallow" + var/roundstart = 0 + var/self_delay = 0 //pills are instant, this is because patches inheret their aplication from pills + +/obj/item/reagent_containers/pill/Initialize() + . = ..() + if(!icon_state) + icon_state = "pill[rand(1,20)]" + if(reagents.total_volume && roundstart) + name += " ([reagents.total_volume]u)" + + +/obj/item/reagent_containers/pill/attack_self(mob/user) + return + + +/obj/item/reagent_containers/pill/attack(mob/M, mob/user, def_zone) + if(!canconsume(M, user)) + return 0 + + if(M == user) + M.visible_message("[user] attempts to [apply_method] [src].") + if(self_delay) + if(!do_mob(user, M, self_delay)) + return 0 + to_chat(M, "You [apply_method] [src].") + + else + M.visible_message("[user] attempts to force [M] to [apply_method] [src].", \ + "[user] attempts to force [M] to [apply_method] [src].") + if(!do_mob(user, M)) + return 0 + M.visible_message("[user] forces [M] to [apply_method] [src].", \ + "[user] forces [M] to [apply_method] [src].") + + + add_logs(user, M, "fed", reagentlist(src)) + if(reagents.total_volume) + reagents.reaction(M, apply_type) + reagents.trans_to(M, reagents.total_volume) + qdel(src) + return 1 + + +/obj/item/reagent_containers/pill/afterattack(obj/target, mob/user , proximity) + if(!proximity) + return + if(target.is_open_container() != 0 && target.reagents) + if(!target.reagents.total_volume) + to_chat(user, "[target] is empty! There's nothing to dissolve [src] in.") + return + to_chat(user, "You dissolve [src] in [target].") + for(var/mob/O in viewers(2, user)) //viewers is necessary here because of the small radius + to_chat(O, "[user] slips something into [target]!") + reagents.trans_to(target, reagents.total_volume) + qdel(src) + +/obj/item/reagent_containers/pill/tox + name = "toxins pill" + desc = "Highly toxic." + icon_state = "pill5" + list_reagents = list("toxin" = 50) + roundstart = 1 +/obj/item/reagent_containers/pill/cyanide + name = "cyanide pill" + desc = "Don't swallow this." + icon_state = "pill5" + list_reagents = list("cyanide" = 50) + roundstart = 1 +/obj/item/reagent_containers/pill/adminordrazine + name = "adminordrazine pill" + desc = "It's magic. We don't have to explain it." + icon_state = "pill16" + list_reagents = list("adminordrazine" = 50) + roundstart = 1 +/obj/item/reagent_containers/pill/morphine + name = "morphine pill" + desc = "Commonly used to treat insomnia." + icon_state = "pill8" + list_reagents = list("morphine" = 30) + roundstart = 1 +/obj/item/reagent_containers/pill/stimulant + name = "stimulant pill" + desc = "Often taken by overworked employees, athletes, and the inebriated. You'll snap to attention immediately!" + icon_state = "pill19" + list_reagents = list("ephedrine" = 10, "antihol" = 10, "coffee" = 30) + roundstart = 1 +/obj/item/reagent_containers/pill/salbutamol + name = "salbutamol pill" + desc = "Used to treat oxygen deprivation." + icon_state = "pill16" + list_reagents = list("salbutamol" = 30) + roundstart = 1 +/obj/item/reagent_containers/pill/charcoal + name = "charcoal pill" + desc = "Neutralizes many common toxins." + icon_state = "pill17" + list_reagents = list("charcoal" = 10) + roundstart = 1 +/obj/item/reagent_containers/pill/epinephrine + name = "epinephrine pill" + desc = "Used to stabilize patients." + icon_state = "pill5" + list_reagents = list("epinephrine" = 15) + roundstart = 1 +/obj/item/reagent_containers/pill/mannitol + name = "mannitol pill" + desc = "Used to treat brain damage." + icon_state = "pill17" + list_reagents = list("mannitol" = 50) + roundstart = 1 +/obj/item/reagent_containers/pill/mutadone + name = "mutadone pill" + desc = "Used to treat genetic damage." + icon_state = "pill20" + list_reagents = list("mutadone" = 50) + roundstart = 1 +/obj/item/reagent_containers/pill/salicyclic + name = "salicylic acid pill" + desc = "Used to dull pain." + icon_state = "pill9" + list_reagents = list("sal_acid" = 24) + roundstart = 1 +/obj/item/reagent_containers/pill/oxandrolone + name = "oxandrolone pill" + desc = "Used to stimulate burn healing." + icon_state = "pill11" + list_reagents = list("oxandrolone" = 24) + roundstart = 1 + +/obj/item/reagent_containers/pill/insulin + name = "insulin pill" + desc = "Handles hyperglycaemic coma." + icon_state = "pill18" + list_reagents = list("insulin" = 50) + roundstart = 1 + +/obj/item/reagent_containers/pill/shadowtoxin + name = "black pill" + desc = "I wouldn't eat this if I were you." + icon_state = "pill9" + color = "#454545" + list_reagents = list("shadowmutationtoxin" = 1) +>>>>>>> d447acd... All-In-One grinder results are now defined by type, not by huge lists (#33181) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index cf250f50f1..7d8ff00e91 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -12,6 +12,7 @@ throw_speed = 3 throw_range = 6 container_type = INJECTABLE_1 + grind_results = list() var/Uses = 1 // uses before it goes inert var/qdel_timer = null // deletion timer, for delayed reactions @@ -29,6 +30,10 @@ . = ..() create_reagents(100) +/obj/item/slime_extract/on_grind() + if(Uses) + grind_results["slimejelly"] = 20 + /obj/item/slime_extract/grey name = "grey slime extract" icon_state = "grey slime extract" From 8beeeefa44cc755c53df1d1490e938a03787ea19 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Thu, 14 Dec 2017 17:23:09 -0500 Subject: [PATCH 04/94] Update items.dm --- code/game/objects/items.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index d4fd9c710a..497ad4faf8 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -117,13 +117,11 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/trigger_guard = TRIGGER_GUARD_NONE -<<<<<<< HEAD var/icon_override = null -======= + //Grinder vars var/list/grind_results //A reagent list containing the reagents this item produces when ground up in a grinder - this can be an empty list to allow for reagent transferring only var/list/juice_results //A reagent list containing blah blah... but when JUICED in a grinder! ->>>>>>> d447acd... All-In-One grinder results are now defined by type, not by huge lists (#33181) /obj/item/Initialize() if (!materials) From ba928eae5ea57e024ac0896423c6925aae0955c3 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Thu, 14 Dec 2017 17:23:42 -0500 Subject: [PATCH 05/94] Update light.dm --- .../game/objects/items/stacks/sheets/light.dm | 69 +++++++++---------- 1 file changed, 31 insertions(+), 38 deletions(-) diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index e0dcfa3184..051d8326b8 100644 --- a/code/game/objects/items/stacks/sheets/light.dm +++ b/code/game/objects/items/stacks/sheets/light.dm @@ -1,45 +1,38 @@ -/obj/item/stack/light_w - name = "wired glass tile" - singular_name = "wired glass floor tile" - desc = "A glass tile, which is wired, somehow." - icon = 'icons/obj/tiles.dmi' - icon_state = "glass_wire" - w_class = WEIGHT_CLASS_NORMAL - force = 3 - throwforce = 5 - throw_speed = 3 - throw_range = 7 +/obj/item/stack/light_w + name = "wired glass tile" + singular_name = "wired glass floor tile" + desc = "A glass tile, which is wired, somehow." + icon = 'icons/obj/tiles.dmi' + icon_state = "glass_wire" + w_class = WEIGHT_CLASS_NORMAL + force = 3 + throwforce = 5 + throw_speed = 3 + throw_range = 7 flags_1 = CONDUCT_1 -<<<<<<< HEAD - max_amount = 60 - -/obj/item/stack/light_w/attackby(obj/item/O, mob/user, params) - -======= max_amount = 60 grind_results = list("silicon" = 1, "copper" = 1) /obj/item/stack/light_w/attackby(obj/item/O, mob/user, params) ->>>>>>> d447acd... All-In-One grinder results are now defined by type, not by huge lists (#33181) if(istype(O, /obj/item/wirecutters)) - var/obj/item/stack/cable_coil/CC = new (user.loc) - CC.amount = 5 - CC.add_fingerprint(user) - amount-- - var/obj/item/stack/sheet/glass/G = new (user.loc) - G.add_fingerprint(user) - if(amount <= 0) - qdel(src) - - else if(istype(O, /obj/item/stack/sheet/metal)) - var/obj/item/stack/sheet/metal/M = O - if (M.use(1)) - use(1) - var/obj/item/L = new /obj/item/stack/tile/light(user.loc) - to_chat(user, "You make a light tile.") - L.add_fingerprint(user) - else - to_chat(user, "You need one metal sheet to finish the light tile!") - else - return ..() + var/obj/item/stack/cable_coil/CC = new (user.loc) + CC.amount = 5 + CC.add_fingerprint(user) + amount-- + var/obj/item/stack/sheet/glass/G = new (user.loc) + G.add_fingerprint(user) + if(amount <= 0) + qdel(src) + + else if(istype(O, /obj/item/stack/sheet/metal)) + var/obj/item/stack/sheet/metal/M = O + if (M.use(1)) + use(1) + var/obj/item/L = new /obj/item/stack/tile/light(user.loc) + to_chat(user, "You make a light tile.") + L.add_fingerprint(user) + else + to_chat(user, "You need one metal sheet to finish the light tile!") + else + return ..() From ede6f432bc712e1457d77f724ae57e56e1be40df Mon Sep 17 00:00:00 2001 From: deathride58 Date: Thu, 14 Dec 2017 17:24:19 -0500 Subject: [PATCH 06/94] Update pen.dm --- code/modules/paperwork/pen.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 1cd6b889c8..fd52d8f0ac 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -175,12 +175,8 @@ reagents.trans_to(M, reagents.total_volume) -<<<<<<< HEAD -/obj/item/pen/sleepy/New() -======= /obj/item/pen/sleepy/Initialize() . = ..() ->>>>>>> d447acd... All-In-One grinder results are now defined by type, not by huge lists (#33181) create_reagents(45) reagents.add_reagent("chloralhydrate2", 20) reagents.add_reagent("mutetoxin", 15) From d45b668a390ca0c97cf4df7315cf51a892731414 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Thu, 14 Dec 2017 18:23:10 -0500 Subject: [PATCH 07/94] Adds config inclusion system --- code/__DEFINES/configuration.dm | 2 - .../controllers/configuration/config_entry.dm | 4 +- .../configuration/configuration.dm | 44 +- .../configuration/entries/comms.dm | 14 +- .../configuration/entries/config.dm | 390 ------------------ .../configuration/entries/dbconfig.dm | 16 +- .../configuration/entries/game_options.dm | 176 ++++---- .../configuration/entries/general.dm | 388 +++++++++++++++++ config/config.txt | 6 + tgstation.dme | 2 +- 10 files changed, 527 insertions(+), 515 deletions(-) delete mode 100644 code/controllers/configuration/entries/config.dm create mode 100644 code/controllers/configuration/entries/general.dm diff --git a/code/__DEFINES/configuration.dm b/code/__DEFINES/configuration.dm index 3db0ca24c2..c4ef8e6606 100644 --- a/code/__DEFINES/configuration.dm +++ b/code/__DEFINES/configuration.dm @@ -1,8 +1,6 @@ //config files -#define CONFIG_DEF(X) /datum/config_entry/##X { resident_file = CURRENT_RESIDENT_FILE }; /datum/config_entry/##X #define CONFIG_GET(X) global.config.Get(/datum/config_entry/##X) #define CONFIG_SET(X, Y) global.config.Set(/datum/config_entry/##X, ##Y) -#define CONFIG_TWEAK(X) /datum/config_entry/##X #define CONFIG_MAPS_FILE "maps.txt" diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm index 92dcb9baf0..7e6f481392 100644 --- a/code/controllers/configuration/config_entry.dm +++ b/code/controllers/configuration/config_entry.dm @@ -9,7 +9,7 @@ var/value var/default //read-only, just set value directly - var/resident_file //the file which this belongs to, must be set + var/resident_file //the file which this was loaded from, if any var/modified = FALSE //set to TRUE if the default has been overridden by a config entry var/protection = NONE @@ -18,8 +18,6 @@ var/dupes_allowed = FALSE /datum/config_entry/New() - if(!resident_file) - CRASH("Config entry [type] has no resident_file set") if(type == abstract_type) CRASH("Abstract config entry [type] instatiated!") name = lowertext(type2top(type)) diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index e9c0aa71b8..f411bd65d3 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -20,10 +20,13 @@ GLOBAL_PROTECT(config_dir) /datum/controller/configuration/New() config = src - var/list/config_files = InitEntries() + InitEntries() LoadModes() - for(var/I in config_files) - LoadEntries(I) + if(!LoadEntries("config.txt")) + log_config("No $include directives found in config.txt! Loading legacy game_options/dbconfig/comms files...") + LoadEntries("game_options.txt") + LoadEntries("dbconfig.txt") + LoadEntries("comms.txt") loadmaplist(CONFIG_MAPS_FILE) /datum/controller/configuration/Destroy() @@ -42,8 +45,6 @@ GLOBAL_PROTECT(config_dir) var/list/_entries_by_type = list() entries_by_type = _entries_by_type - . = list() - for(var/I in typesof(/datum/config_entry)) //typesof is faster in this case var/datum/config_entry/E = I if(initial(E.abstract_type) == I) @@ -57,24 +58,30 @@ GLOBAL_PROTECT(config_dir) continue _entries[esname] = E _entries_by_type[I] = E - .[E.resident_file] = TRUE /datum/controller/configuration/proc/RemoveEntry(datum/config_entry/CE) entries -= CE.name entries_by_type -= CE.type -/datum/controller/configuration/proc/LoadEntries(filename) +/datum/controller/configuration/proc/LoadEntries(filename, list/stack = list()) + var/filename_to_test = world.system_type == MS_WINDOWS ? lowertext(filename) : filename + if(filename_to_test in stack) + log_config("Warning: Config recursion detected ([english_list(stack)]), breaking!") + return + stack = stack + filename_to_test + log_config("Loading config file [filename]...") var/list/lines = world.file2list("[GLOB.config_dir][filename]") var/list/_entries = entries for(var/L in lines) if(!L) continue - - if(copytext(L, 1, 2) == "#") + + var/firstchar = copytext(L, 1, 2) + if(firstchar == "#") continue - var/lockthis = copytext(L, 1, 2) == "@" + var/lockthis = firstchar == "@" if(lockthis) L = copytext(L, 2) @@ -91,14 +98,17 @@ GLOBAL_PROTECT(config_dir) if(!entry) continue + if(entry == "$include") + if(!value) + log_config("Warning: Invalid $include directive: [value]") + else + LoadEntries(value, stack) + continue + var/datum/config_entry/E = _entries[entry] if(!E) log_config("Unknown setting in configuration: '[entry]'") continue - - if(filename != E.resident_file) - log_config("Found [entry] in [filename] when it should have been in [E.resident_file]! Ignoring.") - continue if(lockthis) E.protection |= CONFIG_ENTRY_LOCKED @@ -107,10 +117,14 @@ GLOBAL_PROTECT(config_dir) if(!validated) log_config("Failed to validate setting \"[value]\" for [entry]") else if(E.modified && !E.dupes_allowed) - log_config("Duplicate setting for [entry] ([value]) detected! Using latest.") + log_config("Duplicate setting for [entry] ([value], [E.resident_file]) detected! Using latest.") + + E.resident_file = filename if(validated) E.modified = TRUE + + . = TRUE /datum/controller/configuration/can_vv_get(var_name) return (var_name != "entries_by_type" || !hiding_entries_by_type) && ..() diff --git a/code/controllers/configuration/entries/comms.dm b/code/controllers/configuration/entries/comms.dm index bf099f6cb6..70197b6fd4 100644 --- a/code/controllers/configuration/entries/comms.dm +++ b/code/controllers/configuration/entries/comms.dm @@ -1,22 +1,24 @@ -#define CURRENT_RESIDENT_FILE "comms.txt" - -CONFIG_DEF(string/comms_key) +/datum/config_entry/string/comms_key protection = CONFIG_ENTRY_HIDDEN /datum/config_entry/string/comms_key/ValidateAndSet(str_val) return str_val != "default_pwd" && length(str_val) > 6 && ..() +<<<<<<< HEAD CONFIG_DEF(string/cross_server_address) +======= +/datum/config_entry/keyed_string_list/cross_server +>>>>>>> 8c537ea... Adds config inclusion system (#33307) protection = CONFIG_ENTRY_LOCKED /datum/config_entry/string/cross_server_address/ValidateAndSet(str_val) return str_val != "byond:\\address:port" && ..() -CONFIG_DEF(string/cross_comms_name) +/datum/config_entry/string/cross_comms_name GLOBAL_VAR_INIT(medals_enabled, TRUE) //will be auto set to false if the game fails contacting the medal hub to prevent unneeded calls. -CONFIG_DEF(string/medal_hub_address) +/datum/config_entry/string/medal_hub_address -CONFIG_DEF(string/medal_hub_password) +/datum/config_entry/string/medal_hub_password protection = CONFIG_ENTRY_HIDDEN \ No newline at end of file diff --git a/code/controllers/configuration/entries/config.dm b/code/controllers/configuration/entries/config.dm deleted file mode 100644 index 37081c15dd..0000000000 --- a/code/controllers/configuration/entries/config.dm +++ /dev/null @@ -1,390 +0,0 @@ -#define CURRENT_RESIDENT_FILE "config.txt" - -CONFIG_DEF(flag/autoadmin) // if autoadmin is enabled - protection = CONFIG_ENTRY_LOCKED - -CONFIG_DEF(string/autoadmin_rank) // the rank for autoadmins - value = "Game Master" - protection = CONFIG_ENTRY_LOCKED - -CONFIG_DEF(string/servername) // server name (the name of the game window) - -CONFIG_DEF(string/serversqlname) // short form server name used for the DB - -CONFIG_DEF(string/stationname) // station name (the name of the station in-game) - -CONFIG_DEF(number/lobby_countdown) // In between round countdown. - value = 120 - min_val = 0 - -CONFIG_DEF(number/round_end_countdown) // Post round murder death kill countdown - value = 25 - min_val = 0 - -CONFIG_DEF(flag/hub) // if the game appears on the hub or not - -CONFIG_DEF(flag/log_ooc) // log OOC channel - -CONFIG_DEF(flag/log_access) // log login/logout - -CONFIG_DEF(flag/log_say) // log client say - -CONFIG_DEF(flag/log_admin) // log admin actions - protection = CONFIG_ENTRY_LOCKED - -CONFIG_DEF(flag/log_prayer) // log prayers - -CONFIG_DEF(flag/log_law) // log lawchanges - -CONFIG_DEF(flag/log_game) // log game events - -CONFIG_DEF(flag/log_vote) // log voting - -CONFIG_DEF(flag/log_whisper) // log client whisper - -CONFIG_DEF(flag/log_attack) // log attack messages - -CONFIG_DEF(flag/log_emote) // log emotes - -CONFIG_DEF(flag/log_adminchat) // log admin chat messages - protection = CONFIG_ENTRY_LOCKED - -CONFIG_DEF(flag/log_pda) // log pda messages - -CONFIG_DEF(flag/log_twitter) // log certain expliotable parrots and other such fun things in a JSON file of twitter valid phrases. - -CONFIG_DEF(flag/log_world_topic) // log all world.Topic() calls - -CONFIG_DEF(flag/log_manifest) // log crew manifest to seperate file - -CONFIG_DEF(flag/allow_admin_ooccolor) // Allows admins with relevant permissions to have their own ooc colour - -CONFIG_DEF(flag/allow_vote_restart) // allow votes to restart - -CONFIG_DEF(flag/allow_vote_mode) // allow votes to change mode - -CONFIG_DEF(number/vote_delay) // minimum time between voting sessions (deciseconds, 10 minute default) - value = 6000 - min_val = 0 - -CONFIG_DEF(number/vote_period) // length of voting period (deciseconds, default 1 minute) - value = 600 - min_val = 0 - -CONFIG_DEF(flag/default_no_vote) // vote does not default to nochange/norestart - -CONFIG_DEF(flag/no_dead_vote) // dead people can't vote - -CONFIG_DEF(flag/allow_metadata) // Metadata is supported. - -CONFIG_DEF(flag/popup_admin_pm) // adminPMs to non-admins show in a pop-up 'reply' window when set - -CONFIG_DEF(number/fps) - value = 20 - min_val = 1 - max_val = 100 //byond will start crapping out at 50, so this is just ridic - var/sync_validate = FALSE - -/datum/config_entry/number/fps/ValidateAndSet(str_val) - . = ..() - if(.) - sync_validate = TRUE - var/datum/config_entry/number/ticklag/TL = config.entries_by_type[/datum/config_entry/number/ticklag] - if(!TL.sync_validate) - TL.ValidateAndSet(10 / value) - sync_validate = FALSE - -CONFIG_DEF(number/ticklag) - integer = FALSE - var/sync_validate = FALSE - -/datum/config_entry/number/ticklag/New() //ticklag weirdly just mirrors fps - var/datum/config_entry/CE = /datum/config_entry/number/fps - value = 10 / initial(CE.value) - ..() - -/datum/config_entry/number/ticklag/ValidateAndSet(str_val) - . = text2num(str_val) > 0 && ..() - if(.) - sync_validate = TRUE - var/datum/config_entry/number/fps/FPS = config.entries_by_type[/datum/config_entry/number/fps] - if(!FPS.sync_validate) - FPS.ValidateAndSet(10 / value) - sync_validate = FALSE - -CONFIG_DEF(flag/allow_holidays) - -CONFIG_DEF(number/tick_limit_mc_init) //SSinitialization throttling - value = TICK_LIMIT_MC_INIT_DEFAULT - min_val = 0 //oranges warned us - integer = FALSE - -CONFIG_DEF(flag/admin_legacy_system) //Defines whether the server uses the legacy admin system with admins.txt or the SQL system - protection = CONFIG_ENTRY_LOCKED - -CONFIG_DEF(string/hostedby) - -CONFIG_DEF(flag/norespawn) - -CONFIG_DEF(flag/guest_jobban) - -CONFIG_DEF(flag/usewhitelist) - -CONFIG_DEF(flag/ban_legacy_system) //Defines whether the server uses the legacy banning system with the files in /data or the SQL system. - protection = CONFIG_ENTRY_LOCKED - -CONFIG_DEF(flag/use_age_restriction_for_jobs) //Do jobs use account age restrictions? --requires database - -CONFIG_DEF(flag/use_account_age_for_jobs) //Uses the time they made the account for the job restriction stuff. New player joining alerts should be unaffected. - -CONFIG_DEF(flag/use_exp_tracking) - -CONFIG_DEF(flag/use_exp_restrictions_heads) - -CONFIG_DEF(number/use_exp_restrictions_heads_hours) - value = 0 - min_val = 0 - -CONFIG_DEF(flag/use_exp_restrictions_heads_department) - -CONFIG_DEF(flag/use_exp_restrictions_other) - -CONFIG_DEF(flag/use_exp_restrictions_admin_bypass) - -CONFIG_DEF(string/server) - -CONFIG_DEF(string/banappeals) - -CONFIG_DEF(string/wikiurl) - value = "http://www.tgstation13.org/wiki" - -CONFIG_DEF(string/forumurl) - value = "http://tgstation13.org/phpBB/index.php" - -CONFIG_DEF(string/rulesurl) - value = "http://www.tgstation13.org/wiki/Rules" - -CONFIG_DEF(string/githuburl) - value = "https://www.github.com/tgstation/-tg-station" - -CONFIG_DEF(number/githubrepoid) - value = null - min_val = 0 - -CONFIG_DEF(flag/guest_ban) - -CONFIG_DEF(number/id_console_jobslot_delay) - value = 30 - min_val = 0 - -CONFIG_DEF(number/inactivity_period) //time in ds until a player is considered inactive) - value = 3000 - min_val = 0 - -/datum/config_entry/number/inactivity_period/ValidateAndSet(str_val) - . = ..() - if(.) - value *= 10 //documented as seconds in config.txt - -CONFIG_DEF(number/afk_period) //time in ds until a player is considered inactive) - value = 3000 - min_val = 0 - -/datum/config_entry/number/afk_period/ValidateAndSet(str_val) - . = ..() - if(.) - value *= 10 //documented as seconds in config.txt - -CONFIG_DEF(flag/kick_inactive) //force disconnect for inactive players - -CONFIG_DEF(flag/load_jobs_from_txt) - -CONFIG_DEF(flag/forbid_singulo_possession) - -CONFIG_DEF(flag/automute_on) //enables automuting/spam prevention - -CONFIG_DEF(string/panic_server_name) - -/datum/config_entry/string/panic_server_name/ValidateAndSet(str_val) - return str_val != "\[Put the name here\]" && ..() - -CONFIG_DEF(string/panic_server_address) //Reconnect a player this linked server if this server isn't accepting new players - -/datum/config_entry/string/panic_server_address/ValidateAndSet(str_val) - return str_val != "byond://address:port" && ..() - -CONFIG_DEF(string/invoke_youtubedl) - protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN - -CONFIG_DEF(flag/show_irc_name) - -CONFIG_DEF(flag/see_own_notes) //Can players see their own admin notes (read-only)? - -CONFIG_DEF(number/note_fresh_days) - value = null - min_val = 0 - integer = FALSE - -CONFIG_DEF(number/note_stale_days) - value = null - min_val = 0 - integer = FALSE - -CONFIG_DEF(flag/maprotation) - -CONFIG_DEF(number/maprotatechancedelta) - value = 0.75 - min_val = 0 - max_val = 1 - integer = FALSE - -CONFIG_DEF(number/soft_popcap) - value = null - min_val = 0 - -CONFIG_DEF(number/hard_popcap) - value = null - min_val = 0 - -CONFIG_DEF(number/extreme_popcap) - value = null - min_val = 0 - -CONFIG_DEF(string/soft_popcap_message) - value = "Be warned that the server is currently serving a high number of users, consider using alternative game servers." - -CONFIG_DEF(string/hard_popcap_message) - value = "The server is currently serving a high number of users, You cannot currently join. You may wait for the number of living crew to decline, observe, or find alternative servers." - -CONFIG_DEF(string/extreme_popcap_message) - value = "The server is currently serving a high number of users, find alternative servers." - -CONFIG_DEF(flag/panic_bunker) // prevents people the server hasn't seen before from connecting - -CONFIG_DEF(number/notify_new_player_age) // how long do we notify admins of a new player - min_val = -1 - -CONFIG_DEF(number/notify_new_player_account_age) // how long do we notify admins of a new byond account - min_val = 0 - -CONFIG_DEF(flag/irc_first_connection_alert) // do we notify the irc channel when somebody is connecting for the first time? - -CONFIG_DEF(flag/check_randomizer) - -CONFIG_DEF(string/ipintel_email) - -/datum/config_entry/string/ipintel_email/ValidateAndSet(str_val) - return str_val != "ch@nge.me" && ..() - -CONFIG_DEF(number/ipintel_rating_bad) - value = 1 - integer = FALSE - min_val = 0 - max_val = 1 - -CONFIG_DEF(number/ipintel_save_good) - value = 12 - min_val = 0 - -CONFIG_DEF(number/ipintel_save_bad) - value = 1 - min_val = 0 - -CONFIG_DEF(string/ipintel_domain) - value = "check.getipintel.net" - -CONFIG_DEF(flag/aggressive_changelog) - -CONFIG_DEF(flag/autoconvert_notes) //if all connecting player's notes should attempt to be converted to the database - protection = CONFIG_ENTRY_LOCKED - -CONFIG_DEF(flag/allow_webclient) - -CONFIG_DEF(flag/webclient_only_byond_members) - -CONFIG_DEF(flag/announce_admin_logout) - -CONFIG_DEF(flag/announce_admin_login) - -CONFIG_DEF(flag/allow_map_voting) - -CONFIG_DEF(flag/generate_minimaps) - -CONFIG_DEF(number/client_warn_version) - value = null - min_val = 500 - max_val = DM_VERSION - 1 - -CONFIG_DEF(string/client_warn_message) - value = "Your version of byond may have issues or be blocked from accessing this server in the future." - -CONFIG_DEF(flag/client_warn_popup) - -CONFIG_DEF(number/client_error_version) - value = null - min_val = 500 - max_val = DM_VERSION - 1 - -CONFIG_DEF(string/client_error_message) - value = "Your version of byond is too old, may have issues, and is blocked from accessing this server." - -CONFIG_DEF(number/minute_topic_limit) - value = null - min_val = 0 - -CONFIG_DEF(number/second_topic_limit) - value = null - min_val = 0 - -CONFIG_DEF(number/error_cooldown) // The "cooldown" time for each occurrence of a unique error) - value = 600 - min_val = 0 - -CONFIG_DEF(number/error_limit) // How many occurrences before the next will silence them - value = 50 - -CONFIG_DEF(number/error_silence_time) // How long a unique error will be silenced for - value = 6000 - -CONFIG_DEF(number/error_msg_delay) // How long to wait between messaging admins about occurrences of a unique error - value = 50 - -CONFIG_DEF(flag/irc_announce_new_game) - -CONFIG_DEF(flag/debug_admin_hrefs) - -CONFIG_DEF(number/mc_tick_rate/base_mc_tick_rate) - integer = FALSE - value = 1 - -CONFIG_DEF(number/mc_tick_rate/high_pop_mc_tick_rate) - integer = FALSE - value = 1.1 - -CONFIG_DEF(number/mc_tick_rate/high_pop_mc_mode_amount) - value = 65 - -CONFIG_DEF(number/mc_tick_rate/disable_high_pop_mc_mode_amount) - value = 60 - -CONFIG_TWEAK(number/mc_tick_rate) - abstract_type = /datum/config_entry/number/mc_tick_rate - -CONFIG_TWEAK(number/mc_tick_rate/ValidateAndSet(str_val)) - . = ..() - if (.) - Master.UpdateTickRate() - -CONFIG_DEF(flag/resume_after_initializations) - -CONFIG_TWEAK(flag/resume_after_initializations/ValidateAndSet(str_val)) - . = ..() - if(. && Master.current_runlevel) - world.sleep_offline = !value - -CONFIG_DEF(number/rounds_until_hard_restart) - value = -1 - min_val = 0 - -CONFIG_DEF(string/default_view) - value = "15x15" diff --git a/code/controllers/configuration/entries/dbconfig.dm b/code/controllers/configuration/entries/dbconfig.dm index c46880686a..1ac4d85419 100644 --- a/code/controllers/configuration/entries/dbconfig.dm +++ b/code/controllers/configuration/entries/dbconfig.dm @@ -1,28 +1,26 @@ -#define CURRENT_RESIDENT_FILE "dbconfig.txt" - -CONFIG_DEF(flag/sql_enabled) // for sql switching +/datum/config_entry/flag/sql_enabled // for sql switching protection = CONFIG_ENTRY_LOCKED -CONFIG_DEF(string/address) +/datum/config_entry/string/address value = "localhost" protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN -CONFIG_DEF(number/port) +/datum/config_entry/number/port value = 3306 min_val = 0 max_val = 65535 protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN -CONFIG_DEF(string/feedback_database) +/datum/config_entry/string/feedback_database value = "test" protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN -CONFIG_DEF(string/feedback_login) +/datum/config_entry/string/feedback_login value = "root" protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN -CONFIG_DEF(string/feedback_password) +/datum/config_entry/string/feedback_password protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN -CONFIG_DEF(string/feedback_tableprefix) +/datum/config_entry/string/feedback_tableprefix protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index b04d7845f5..4fa6133883 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -1,247 +1,245 @@ -#define CURRENT_RESIDENT_FILE "game_options.txt" +/datum/config_entry/number_list/repeated_mode_adjust -CONFIG_DEF(number_list/repeated_mode_adjust) - -CONFIG_DEF(keyed_number_list/probability) +/datum/config_entry/keyed_number_list/probability /datum/config_entry/keyed_number_list/probability/ValidateKeyName(key_name) return key_name in config.modes -CONFIG_DEF(keyed_number_list/max_pop) +/datum/config_entry/keyed_number_list/max_pop /datum/config_entry/keyed_number_list/max_pop/ValidateKeyName(key_name) return key_name in config.modes -CONFIG_DEF(keyed_number_list/min_pop) +/datum/config_entry/keyed_number_list/min_pop /datum/config_entry/keyed_number_list/min_pop/ValidateKeyName(key_name) return key_name in config.modes -CONFIG_DEF(keyed_flag_list/continuous) // which roundtypes continue if all antagonists die +/datum/config_entry/keyed_flag_list/continuous // which roundtypes continue if all antagonists die /datum/config_entry/keyed_flag_list/continuous/ValidateKeyName(key_name) return key_name in config.modes -CONFIG_DEF(keyed_flag_list/midround_antag) // which roundtypes use the midround antagonist system +/datum/config_entry/keyed_flag_list/midround_antag // which roundtypes use the midround antagonist system /datum/config_entry/keyed_flag_list/midround_antag/ValidateKeyName(key_name) return key_name in config.modes -CONFIG_DEF(keyed_string_list/policy) +/datum/config_entry/keyed_string_list/policy -CONFIG_DEF(number/damage_multiplier) +/datum/config_entry/number/damage_multiplier value = 1 integer = FALSE -CONFIG_DEF(number/minimal_access_threshold) //If the number of players is larger than this threshold, minimal access will be turned on. +/datum/config_entry/number/minimal_access_threshold //If the number of players is larger than this threshold, minimal access will be turned on. min_val = 0 -CONFIG_DEF(flag/jobs_have_minimal_access) //determines whether jobs use minimal access or expanded access. +/datum/config_entry/flag/jobs_have_minimal_access //determines whether jobs use minimal access or expanded access. -CONFIG_DEF(flag/assistants_have_maint_access) +/datum/config_entry/flag/assistants_have_maint_access -CONFIG_DEF(flag/security_has_maint_access) +/datum/config_entry/flag/security_has_maint_access -CONFIG_DEF(flag/everyone_has_maint_access) +/datum/config_entry/flag/everyone_has_maint_access -CONFIG_DEF(flag/sec_start_brig) //makes sec start in brig instead of dept sec posts +/datum/config_entry/flag/sec_start_brig //makes sec start in brig instead of dept sec posts -CONFIG_DEF(flag/force_random_names) +/datum/config_entry/flag/force_random_names -CONFIG_DEF(flag/humans_need_surnames) +/datum/config_entry/flag/humans_need_surnames -CONFIG_DEF(flag/allow_ai) // allow ai job +/datum/config_entry/flag/allow_ai // allow ai job -CONFIG_DEF(flag/disable_secborg) // disallow secborg module to be chosen. +/datum/config_entry/flag/disable_secborg // disallow secborg module to be chosen. -CONFIG_DEF(flag/disable_peaceborg) +/datum/config_entry/flag/disable_peaceborg -CONFIG_DEF(number/traitor_scaling_coeff) //how much does the amount of players get divided by to determine traitors +/datum/config_entry/number/traitor_scaling_coeff //how much does the amount of players get divided by to determine traitors value = 6 min_val = 1 -CONFIG_DEF(number/brother_scaling_coeff) //how many players per brother team +/datum/config_entry/number/brother_scaling_coeff //how many players per brother team value = 25 min_val = 1 -CONFIG_DEF(number/changeling_scaling_coeff) //how much does the amount of players get divided by to determine changelings +/datum/config_entry/number/changeling_scaling_coeff //how much does the amount of players get divided by to determine changelings value = 6 min_val = 1 -CONFIG_DEF(number/security_scaling_coeff) //how much does the amount of players get divided by to determine open security officer positions +/datum/config_entry/number/security_scaling_coeff //how much does the amount of players get divided by to determine open security officer positions value = 8 min_val = 1 -CONFIG_DEF(number/abductor_scaling_coeff) //how many players per abductor team +/datum/config_entry/number/abductor_scaling_coeff //how many players per abductor team value = 15 min_val = 1 -CONFIG_DEF(number/traitor_objectives_amount) +/datum/config_entry/number/traitor_objectives_amount value = 2 min_val = 0 -CONFIG_DEF(number/brother_objectives_amount) +/datum/config_entry/number/brother_objectives_amount value = 2 min_val = 0 -CONFIG_DEF(flag/reactionary_explosions) //If we use reactionary explosions, explosions that react to walls and doors +/datum/config_entry/flag/reactionary_explosions //If we use reactionary explosions, explosions that react to walls and doors -CONFIG_DEF(flag/protect_roles_from_antagonist) //If security and such can be traitor/cult/other +/datum/config_entry/flag/protect_roles_from_antagonist //If security and such can be traitor/cult/other -CONFIG_DEF(flag/protect_assistant_from_antagonist) //If assistants can be traitor/cult/other +/datum/config_entry/flag/protect_assistant_from_antagonist //If assistants can be traitor/cult/other -CONFIG_DEF(flag/enforce_human_authority) //If non-human species are barred from joining as a head of staff +/datum/config_entry/flag/enforce_human_authority //If non-human species are barred from joining as a head of staff -CONFIG_DEF(flag/allow_latejoin_antagonists) // If late-joining players can be traitor/changeling +/datum/config_entry/flag/allow_latejoin_antagonists // If late-joining players can be traitor/changeling -CONFIG_DEF(number/midround_antag_time_check) // How late (in minutes) you want the midround antag system to stay on, setting this to 0 will disable the system +/datum/config_entry/number/midround_antag_time_check // How late (in minutes you want the midround antag system to stay on, setting this to 0 will disable the system) value = 60 min_val = 0 -CONFIG_DEF(number/midround_antag_life_check) // A ratio of how many people need to be alive in order for the round not to immediately end in midround antagonist +/datum/config_entry/number/midround_antag_life_check // A ratio of how many people need to be alive in order for the round not to immediately end in midround antagonist value = 0.7 integer = FALSE min_val = 0 max_val = 1 -CONFIG_DEF(number/shuttle_refuel_delay) +/datum/config_entry/number/shuttle_refuel_delay value = 12000 min_val = 0 -CONFIG_DEF(flag/show_game_type_odds) //if set this allows players to see the odds of each roundtype on the get revision screen +/datum/config_entry/flag/show_game_type_odds //if set this allows players to see the odds of each roundtype on the get revision screen -CONFIG_DEF(keyed_flag_list/roundstart_races) //races you can play as from the get go. +/datum/config_entry/keyed_flag_list/roundstart_races //races you can play as from the get go. -CONFIG_DEF(flag/join_with_mutant_humans) //players can pick mutant bodyparts for humans before joining the game +/datum/config_entry/flag/join_with_mutant_humans //players can pick mutant bodyparts for humans before joining the game -CONFIG_DEF(flag/no_summon_guns) //No +/datum/config_entry/flag/no_summon_guns //No -CONFIG_DEF(flag/no_summon_magic) //Fun +/datum/config_entry/flag/no_summon_magic //Fun -CONFIG_DEF(flag/no_summon_events) //Allowed +/datum/config_entry/flag/no_summon_events //Allowed -CONFIG_DEF(flag/no_intercept_report) //Whether or not to send a communications intercept report roundstart. This may be overriden by gamemodes. +/datum/config_entry/flag/no_intercept_report //Whether or not to send a communications intercept report roundstart. This may be overriden by gamemodes. -CONFIG_DEF(number/arrivals_shuttle_dock_window) //Time from when a player late joins on the arrivals shuttle to when the shuttle docks on the station +/datum/config_entry/number/arrivals_shuttle_dock_window //Time from when a player late joins on the arrivals shuttle to when the shuttle docks on the station value = 55 min_val = 30 -CONFIG_DEF(flag/arrivals_shuttle_require_undocked) //Require the arrivals shuttle to be undocked before latejoiners can join +/datum/config_entry/flag/arrivals_shuttle_require_undocked //Require the arrivals shuttle to be undocked before latejoiners can join -CONFIG_DEF(flag/arrivals_shuttle_require_safe_latejoin) //Require the arrivals shuttle to be operational in order for latejoiners to join +/datum/config_entry/flag/arrivals_shuttle_require_safe_latejoin //Require the arrivals shuttle to be operational in order for latejoiners to join -CONFIG_DEF(string/alert_green) +/datum/config_entry/string/alert_green value = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced." -CONFIG_DEF(string/alert_blue_upto) +/datum/config_entry/string/alert_blue_upto value = "The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible, random searches are permitted." -CONFIG_DEF(string/alert_blue_downto) +/datum/config_entry/string/alert_blue_downto value = "The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed." -CONFIG_DEF(string/alert_red_upto) +/datum/config_entry/string/alert_red_upto value = "There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised." -CONFIG_DEF(string/alert_red_downto) +/datum/config_entry/string/alert_red_downto value = "The station's destruction has been averted. There is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised." -CONFIG_DEF(string/alert_delta) +/datum/config_entry/string/alert_delta value = "Destruction of the station is imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill." -CONFIG_DEF(flag/revival_pod_plants) +/datum/config_entry/flag/revival_pod_plants -CONFIG_DEF(flag/revival_cloning) +/datum/config_entry/flag/revival_cloning -CONFIG_DEF(number/revival_brain_life) +/datum/config_entry/number/revival_brain_life value = -1 min_val = -1 -CONFIG_DEF(flag/rename_cyborg) +/datum/config_entry/flag/rename_cyborg -CONFIG_DEF(flag/ooc_during_round) +/datum/config_entry/flag/ooc_during_round -CONFIG_DEF(flag/emojis) +/datum/config_entry/flag/emojis -CONFIG_DEF(number/run_delay) //Used for modifying movement speed for mobs. +/datum/config_entry/number/run_delay //Used for modifying movement speed for mobs. var/static/value_cache = 0 -CONFIG_TWEAK(number/run_delay/ValidateAndSet()) +/datum/config_entry/number/run_delay/ValidateAndSet() . = ..() if(.) value_cache = value -CONFIG_DEF(number/walk_delay) +/datum/config_entry/number/walk_delay var/static/value_cache = 0 -CONFIG_TWEAK(number/walk_delay/ValidateAndSet()) +/datum/config_entry/number/walk_delay/ValidateAndSet() . = ..() if(.) value_cache = value -CONFIG_DEF(number/human_delay) //Mob specific modifiers. NOTE: These will affect different mob types in different ways -CONFIG_DEF(number/robot_delay) -CONFIG_DEF(number/monkey_delay) -CONFIG_DEF(number/alien_delay) -CONFIG_DEF(number/slime_delay) -CONFIG_DEF(number/animal_delay) +/datum/config_entry/number/human_delay //Mob specific modifiers. NOTE: These will affect different mob types in different ways +/datum/config_entry/number/robot_delay +/datum/config_entry/number/monkey_delay +/datum/config_entry/number/alien_delay +/datum/config_entry/number/slime_delay +/datum/config_entry/number/animal_delay -CONFIG_DEF(number/gateway_delay) //How long the gateway takes before it activates. Default is half an hour. +/datum/config_entry/number/gateway_delay //How long the gateway takes before it activates. Default is half an hour. value = 18000 min_val = 0 -CONFIG_DEF(flag/ghost_interaction) +/datum/config_entry/flag/ghost_interaction -CONFIG_DEF(flag/silent_ai) -CONFIG_DEF(flag/silent_borg) +/datum/config_entry/flag/silent_ai +/datum/config_entry/flag/silent_borg -CONFIG_DEF(flag/sandbox_autoclose) // close the sandbox panel after spawning an item, potentially reducing griff +/datum/config_entry/flag/sandbox_autoclose // close the sandbox panel after spawning an item, potentially reducing griff -CONFIG_DEF(number/default_laws) //Controls what laws the AI spawns with. +/datum/config_entry/number/default_laws //Controls what laws the AI spawns with. value = 0 min_val = 0 max_val = 3 -CONFIG_DEF(number/silicon_max_law_amount) +/datum/config_entry/number/silicon_max_law_amount value = 12 min_val = 0 -CONFIG_DEF(keyed_flag_list/random_laws) +/datum/config_entry/keyed_flag_list/random_laws -CONFIG_DEF(keyed_number_list/law_weight) +/datum/config_entry/keyed_number_list/law_weight splitter = "," -CONFIG_DEF(number/assistant_cap) +/datum/config_entry/number/assistant_cap value = -1 min_val = -1 -CONFIG_DEF(flag/starlight) -CONFIG_DEF(flag/grey_assistants) +/datum/config_entry/flag/starlight +/datum/config_entry/flag/grey_assistants -CONFIG_DEF(number/lavaland_budget) +/datum/config_entry/number/lavaland_budget value = 60 min_val = 0 -CONFIG_DEF(number/space_budget) +/datum/config_entry/number/space_budget value = 16 min_val = 0 -CONFIG_DEF(flag/allow_random_events) // Enables random events mid-round when set +/datum/config_entry/flag/allow_random_events // Enables random events mid-round when set -CONFIG_DEF(number/events_min_time_mul) // Multipliers for random events minimal starting time and minimal players amounts +/datum/config_entry/number/events_min_time_mul // Multipliers for random events minimal starting time and minimal players amounts value = 1 min_val = 0 integer = FALSE -CONFIG_DEF(number/events_min_players_mul) +/datum/config_entry/number/events_min_players_mul value = 1 min_val = 0 integer = FALSE -CONFIG_DEF(number/mice_roundstart) +/datum/config_entry/number/mice_roundstart value = 10 min_val = 0 -CONFIG_DEF(number/bombcap) +/datum/config_entry/number/bombcap value = 14 min_val = 4 @@ -258,9 +256,9 @@ CONFIG_DEF(flag/allow_extended_miscreants) GLOB.MAX_EX_FLASH_RANGE = value GLOB.MAX_EX_FLAME_RANGE = value -CONFIG_DEF(number/emergency_shuttle_autocall_threshold) +/datum/config_entry/number/emergency_shuttle_autocall_threshold min_val = 0 max_val = 1 integer = FALSE -CONFIG_DEF(flag/ic_printing) +/datum/config_entry/flag/ic_printing diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm new file mode 100644 index 0000000000..637e65c46f --- /dev/null +++ b/code/controllers/configuration/entries/general.dm @@ -0,0 +1,388 @@ +/datum/config_entry/flag/autoadmin // if autoadmin is enabled + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/string/autoadmin_rank // the rank for autoadmins + value = "Game Master" + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/string/servername // server name (the name of the game window) + +/datum/config_entry/string/serversqlname // short form server name used for the DB + +/datum/config_entry/string/stationname // station name (the name of the station in-game) + +/datum/config_entry/number/lobby_countdown // In between round countdown. + value = 120 + min_val = 0 + +/datum/config_entry/number/round_end_countdown // Post round murder death kill countdown + value = 25 + min_val = 0 + +/datum/config_entry/flag/hub // if the game appears on the hub or not + +/datum/config_entry/flag/log_ooc // log OOC channel + +/datum/config_entry/flag/log_access // log login/logout + +/datum/config_entry/flag/log_say // log client say + +/datum/config_entry/flag/log_admin // log admin actions + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/flag/log_prayer // log prayers + +/datum/config_entry/flag/log_law // log lawchanges + +/datum/config_entry/flag/log_game // log game events + +/datum/config_entry/flag/log_vote // log voting + +/datum/config_entry/flag/log_whisper // log client whisper + +/datum/config_entry/flag/log_attack // log attack messages + +/datum/config_entry/flag/log_emote // log emotes + +/datum/config_entry/flag/log_adminchat // log admin chat messages + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/flag/log_pda // log pda messages + +/datum/config_entry/flag/log_twitter // log certain expliotable parrots and other such fun things in a JSON file of twitter valid phrases. + +/datum/config_entry/flag/log_world_topic // log all world.Topic() calls + +/datum/config_entry/flag/log_manifest // log crew manifest to seperate file + +/datum/config_entry/flag/allow_admin_ooccolor // Allows admins with relevant permissions to have their own ooc colour + +/datum/config_entry/flag/allow_vote_restart // allow votes to restart + +/datum/config_entry/flag/allow_vote_mode // allow votes to change mode + +/datum/config_entry/number/vote_delay // minimum time between voting sessions (deciseconds, 10 minute default) + value = 6000 + min_val = 0 + +/datum/config_entry/number/vote_period // length of voting period (deciseconds, default 1 minute) + value = 600 + min_val = 0 + +/datum/config_entry/flag/default_no_vote // vote does not default to nochange/norestart + +/datum/config_entry/flag/no_dead_vote // dead people can't vote + +/datum/config_entry/flag/allow_metadata // Metadata is supported. + +/datum/config_entry/flag/popup_admin_pm // adminPMs to non-admins show in a pop-up 'reply' window when set + +/datum/config_entry/number/fps + value = 20 + min_val = 1 + max_val = 100 //byond will start crapping out at 50, so this is just ridic + var/sync_validate = FALSE + +/datum/config_entry/number/fps/ValidateAndSet(str_val) + . = ..() + if(.) + sync_validate = TRUE + var/datum/config_entry/number/ticklag/TL = config.entries_by_type[/datum/config_entry/number/ticklag] + if(!TL.sync_validate) + TL.ValidateAndSet(10 / value) + sync_validate = FALSE + +/datum/config_entry/number/ticklag + integer = FALSE + var/sync_validate = FALSE + +/datum/config_entry/number/ticklag/New() //ticklag weirdly just mirrors fps + var/datum/config_entry/CE = /datum/config_entry/number/fps + value = 10 / initial(CE.value) + ..() + +/datum/config_entry/number/ticklag/ValidateAndSet(str_val) + . = text2num(str_val) > 0 && ..() + if(.) + sync_validate = TRUE + var/datum/config_entry/number/fps/FPS = config.entries_by_type[/datum/config_entry/number/fps] + if(!FPS.sync_validate) + FPS.ValidateAndSet(10 / value) + sync_validate = FALSE + +/datum/config_entry/flag/allow_holidays + +/datum/config_entry/number/tick_limit_mc_init //SSinitialization throttling + value = TICK_LIMIT_MC_INIT_DEFAULT + min_val = 0 //oranges warned us + integer = FALSE + +/datum/config_entry/flag/admin_legacy_system //Defines whether the server uses the legacy admin system with admins.txt or the SQL system + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/string/hostedby + +/datum/config_entry/flag/norespawn + +/datum/config_entry/flag/guest_jobban + +/datum/config_entry/flag/usewhitelist + +/datum/config_entry/flag/ban_legacy_system //Defines whether the server uses the legacy banning system with the files in /data or the SQL system. + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/flag/use_age_restriction_for_jobs //Do jobs use account age restrictions? --requires database + +/datum/config_entry/flag/use_account_age_for_jobs //Uses the time they made the account for the job restriction stuff. New player joining alerts should be unaffected. + +/datum/config_entry/flag/use_exp_tracking + +/datum/config_entry/flag/use_exp_restrictions_heads + +/datum/config_entry/number/use_exp_restrictions_heads_hours + value = 0 + min_val = 0 + +/datum/config_entry/flag/use_exp_restrictions_heads_department + +/datum/config_entry/flag/use_exp_restrictions_other + +/datum/config_entry/flag/use_exp_restrictions_admin_bypass + +/datum/config_entry/string/server + +/datum/config_entry/string/banappeals + +/datum/config_entry/string/wikiurl + value = "http://www.tgstation13.org/wiki" + +/datum/config_entry/string/forumurl + value = "http://tgstation13.org/phpBB/index.php" + +/datum/config_entry/string/rulesurl + value = "http://www.tgstation13.org/wiki/Rules" + +/datum/config_entry/string/githuburl + value = "https://www.github.com/tgstation/-tg-station" + +/datum/config_entry/number/githubrepoid + value = null + min_val = 0 + +/datum/config_entry/flag/guest_ban + +/datum/config_entry/number/id_console_jobslot_delay + value = 30 + min_val = 0 + +/datum/config_entry/number/inactivity_period //time in ds until a player is considered inactive + value = 3000 + min_val = 0 + +/datum/config_entry/number/inactivity_period/ValidateAndSet(str_val) + . = ..() + if(.) + value *= 10 //documented as seconds in config.txt + +/datum/config_entry/number/afk_period //time in ds until a player is considered inactive + value = 3000 + min_val = 0 + +/datum/config_entry/number/afk_period/ValidateAndSet(str_val) + . = ..() + if(.) + value *= 10 //documented as seconds in config.txt + +/datum/config_entry/flag/kick_inactive //force disconnect for inactive players + +/datum/config_entry/flag/load_jobs_from_txt + +/datum/config_entry/flag/forbid_singulo_possession + +/datum/config_entry/flag/automute_on //enables automuting/spam prevention + +/datum/config_entry/string/panic_server_name + +/datum/config_entry/string/panic_server_name/ValidateAndSet(str_val) + return str_val != "\[Put the name here\]" && ..() + +/datum/config_entry/string/panic_server_address //Reconnect a player this linked server if this server isn't accepting new players + +/datum/config_entry/string/panic_server_address/ValidateAndSet(str_val) + return str_val != "byond://address:port" && ..() + +/datum/config_entry/string/invoke_youtubedl + protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN + +/datum/config_entry/flag/show_irc_name + +/datum/config_entry/flag/see_own_notes //Can players see their own admin notes + +/datum/config_entry/number/note_fresh_days + value = null + min_val = 0 + integer = FALSE + +/datum/config_entry/number/note_stale_days + value = null + min_val = 0 + integer = FALSE + +/datum/config_entry/flag/maprotation + +/datum/config_entry/number/maprotatechancedelta + value = 0.75 + min_val = 0 + max_val = 1 + integer = FALSE + +/datum/config_entry/number/soft_popcap + value = null + min_val = 0 + +/datum/config_entry/number/hard_popcap + value = null + min_val = 0 + +/datum/config_entry/number/extreme_popcap + value = null + min_val = 0 + +/datum/config_entry/string/soft_popcap_message + value = "Be warned that the server is currently serving a high number of users, consider using alternative game servers." + +/datum/config_entry/string/hard_popcap_message + value = "The server is currently serving a high number of users, You cannot currently join. You may wait for the number of living crew to decline, observe, or find alternative servers." + +/datum/config_entry/string/extreme_popcap_message + value = "The server is currently serving a high number of users, find alternative servers." + +/datum/config_entry/flag/panic_bunker // prevents people the server hasn't seen before from connecting + +/datum/config_entry/number/notify_new_player_age // how long do we notify admins of a new player + min_val = -1 + +/datum/config_entry/number/notify_new_player_account_age // how long do we notify admins of a new byond account + min_val = 0 + +/datum/config_entry/flag/irc_first_connection_alert // do we notify the irc channel when somebody is connecting for the first time? + +/datum/config_entry/flag/check_randomizer + +/datum/config_entry/string/ipintel_email + +/datum/config_entry/string/ipintel_email/ValidateAndSet(str_val) + return str_val != "ch@nge.me" && ..() + +/datum/config_entry/number/ipintel_rating_bad + value = 1 + integer = FALSE + min_val = 0 + max_val = 1 + +/datum/config_entry/number/ipintel_save_good + value = 12 + min_val = 0 + +/datum/config_entry/number/ipintel_save_bad + value = 1 + min_val = 0 + +/datum/config_entry/string/ipintel_domain + value = "check.getipintel.net" + +/datum/config_entry/flag/aggressive_changelog + +/datum/config_entry/flag/autoconvert_notes //if all connecting player's notes should attempt to be converted to the database + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/flag/allow_webclient + +/datum/config_entry/flag/webclient_only_byond_members + +/datum/config_entry/flag/announce_admin_logout + +/datum/config_entry/flag/announce_admin_login + +/datum/config_entry/flag/allow_map_voting + +/datum/config_entry/flag/generate_minimaps + +/datum/config_entry/number/client_warn_version + value = null + min_val = 500 + max_val = DM_VERSION - 1 + +/datum/config_entry/string/client_warn_message + value = "Your version of byond may have issues or be blocked from accessing this server in the future." + +/datum/config_entry/flag/client_warn_popup + +/datum/config_entry/number/client_error_version + value = null + min_val = 500 + max_val = DM_VERSION - 1 + +/datum/config_entry/string/client_error_message + value = "Your version of byond is too old, may have issues, and is blocked from accessing this server." + +/datum/config_entry/number/minute_topic_limit + value = null + min_val = 0 + +/datum/config_entry/number/second_topic_limit + value = null + min_val = 0 + +/datum/config_entry/number/error_cooldown // The "cooldown" time for each occurrence of a unique error + value = 600 + min_val = 0 + +/datum/config_entry/number/error_limit // How many occurrences before the next will silence them + value = 50 + +/datum/config_entry/number/error_silence_time // How long a unique error will be silenced for + value = 6000 + +/datum/config_entry/number/error_msg_delay // How long to wait between messaging admins about occurrences of a unique error + value = 50 + +/datum/config_entry/flag/irc_announce_new_game + +/datum/config_entry/flag/debug_admin_hrefs + +/datum/config_entry/number/mc_tick_rate/base_mc_tick_rate + integer = FALSE + value = 1 + +/datum/config_entry/number/mc_tick_rate/high_pop_mc_tick_rate + integer = FALSE + value = 1.1 + +/datum/config_entry/number/mc_tick_rate/high_pop_mc_mode_amount + value = 65 + +/datum/config_entry/number/mc_tick_rate/disable_high_pop_mc_mode_amount + value = 60 + +/datum/config_entry/number/mc_tick_rate + abstract_type = /datum/config_entry/number/mc_tick_rate + +/datum/config_entry/number/mc_tick_rate/ValidateAndSet(str_val) + . = ..() + if (.) + Master.UpdateTickRate() + +/datum/config_entry/flag/resume_after_initializations + +/datum/config_entry/flag/resume_after_initializations/ValidateAndSet(str_val) + . = ..() + if(. && Master.current_runlevel) + world.sleep_offline = !value + +/datum/config_entry/number/rounds_until_hard_restart + value = -1 + min_val = 0 + +/datum/config_entry/string/default_view + value = "15x15" diff --git a/config/config.txt b/config/config.txt index fb648a5fa9..e43b38b568 100644 --- a/config/config.txt +++ b/config/config.txt @@ -1,3 +1,9 @@ +# You can use the "$include" directive to split your configs however you want + +$include game_options.txt +$include dbconfig.txt +$include comms.txt + # You can use the @ character at the beginning of a config option to lock it from being edited in-game # Example usage: # @SERVERNAME tgstation diff --git a/tgstation.dme b/tgstation.dme index 11399a1b14..cfe9e0d0c5 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -224,9 +224,9 @@ #include "code\controllers\configuration\config_entry.dm" #include "code\controllers\configuration\configuration.dm" #include "code\controllers\configuration\entries\comms.dm" -#include "code\controllers\configuration\entries\config.dm" #include "code\controllers\configuration\entries\dbconfig.dm" #include "code\controllers\configuration\entries\game_options.dm" +#include "code\controllers\configuration\entries\general.dm" #include "code\controllers\subsystem\acid.dm" #include "code\controllers\subsystem\air.dm" #include "code\controllers\subsystem\assets.dm" From c2153eb27907faa16216dce3c30bfe4f1de0f32c Mon Sep 17 00:00:00 2001 From: EtheoBoxxman Date: Thu, 14 Dec 2017 19:38:14 -0600 Subject: [PATCH 08/94] Update ash_walker_den.dm --- code/modules/ruins/objects_and_mobs/ash_walker_den.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/ruins/objects_and_mobs/ash_walker_den.dm b/code/modules/ruins/objects_and_mobs/ash_walker_den.dm index 7f301bf8b9..f98162266a 100644 --- a/code/modules/ruins/objects_and_mobs/ash_walker_den.dm +++ b/code/modules/ruins/objects_and_mobs/ash_walker_den.dm @@ -9,7 +9,7 @@ faction = list("ashwalker") health = 200 maxHealth = 200 - loot = list(/obj/effect/collapse) + loot = null var/meat_counter = 6 /mob/living/simple_animal/hostile/spawner/lavaland/ash_walker/death() From a3ee534eb81b2dbe3e43d593de576774c5c0362c Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Thu, 14 Dec 2017 23:34:13 -0500 Subject: [PATCH 09/94] Merge pull request #33512 from AnturK/exiledmob Fixes gateway ignoring exile implants in simple mobs --- code/modules/awaymissions/gateway.dm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm index 15c5deb4cb..90b2e3a02e 100644 --- a/code/modules/awaymissions/gateway.dm +++ b/code/modules/awaymissions/gateway.dm @@ -199,9 +199,9 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation) active = 1 update_icon() -/obj/machinery/gateway/centeraway/proc/check_exile_implant(mob/living/carbon/C) - for(var/obj/item/implant/exile/E in C.implants)//Checking that there is an exile implant - to_chat(C, "\black The station gate has detected your exile implant and is blocking your entry.") +/obj/machinery/gateway/centeraway/proc/check_exile_implant(mob/living/L) + for(var/obj/item/implant/exile/E in L.implants)//Checking that there is an exile implant + to_chat(L, "\black The station gate has detected your exile implant and is blocking your entry.") return TRUE return FALSE @@ -212,17 +212,17 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation) return if(!stationgate || QDELETED(stationgate)) return - if(istype(AM, /mob/living/carbon)) + if(isliving(AM)) if(check_exile_implant(AM)) return else - for(var/mob/living/carbon/C in AM.contents) - if(check_exile_implant(C)) + for(var/mob/living/L in AM.contents) + if(check_exile_implant(L)) say("Rejecting [AM]: Exile implant detected in contained lifeform.") return if(AM.has_buckled_mobs()) - for(var/mob/living/carbon/C in AM.buckled_mobs) - if(check_exile_implant(C)) + for(var/mob/living/L in AM.buckled_mobs) + if(check_exile_implant(L)) say("Rejecting [AM]: Exile implant detected in close proximity lifeform.") return AM.forceMove(get_step(stationgate.loc, SOUTH)) From f91c310ac554aea352fe2f709fd9d5171ed436bb Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Thu, 14 Dec 2017 23:35:40 -0500 Subject: [PATCH 11/94] Merge pull request #33524 from ShizCalev/mining_hammer_back Fixes missing mining hammer back sprite --- icons/mob/back.dmi | Bin 86834 -> 87130 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index 14c0ddc470e730c6891f28f329f78462b3e08c30..89f0d9c3fe1047ad33c03bf100245f32478e634a 100644 GIT binary patch delta 24453 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 JDy};`{~szDW?BFM From 05db439c1e0ff7c9f983c24d779ec9c35845d7fa Mon Sep 17 00:00:00 2001 From: oranges Date: Fri, 15 Dec 2017 18:11:46 +1300 Subject: [PATCH 13/94] SSinput tweaks to address server side lag --- code/controllers/subsystem/input.dm | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 code/controllers/subsystem/input.dm diff --git a/code/controllers/subsystem/input.dm b/code/controllers/subsystem/input.dm new file mode 100644 index 0000000000..5dbb642f2e --- /dev/null +++ b/code/controllers/subsystem/input.dm @@ -0,0 +1,12 @@ +SUBSYSTEM_DEF(input) + name = "Input" + wait = 1 //SS_TICKER means this runs every tick + flags = SS_TICKER | SS_NO_INIT + priority = 1000 + runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY + +/datum/controller/subsystem/input/fire() + var/list/clients = GLOB.clients // Let's sing the list cache song + for(var/i in 1 to clients.len) + var/client/C = clients[i] + C.keyLoop() From e77c1a8a074fa829e117bd0e3653c19f99dd3df5 Mon Sep 17 00:00:00 2001 From: Michiyamenotehifunana <31995558+Michiyamenotehifunana@users.noreply.github.com> Date: Fri, 15 Dec 2017 16:57:22 +0800 Subject: [PATCH 14/94] Consolidates NEB code into a modular package --- code/citadel/cit_weapons.dm | 240 ------------- .../objects/items/melee/eutactic_blades.dm} | 335 ++++++++++++------ .../code/modules/crafting/recipes.dm | 5 + .../item/hypereutactic.dmi | Bin .../icons/eutactic/item/noneutactic.dmi | Bin .../mob/hypereutactic_left.dmi | Bin .../mob/hypereutactic_right.dmi | Bin .../icons/eutactic/mob/noneutactic_left.dmi | Bin .../icons/eutactic/mob/noneutactic_right.dmi | Bin tgstation.dme | 4 +- 10 files changed, 238 insertions(+), 346 deletions(-) delete mode 100644 code/citadel/cit_weapons.dm rename modular_citadel/{hypereutactic_blade.dm => code/game/objects/items/melee/eutactic_blades.dm} (52%) create mode 100644 modular_citadel/code/modules/crafting/recipes.dm rename modular_citadel/icons/{hypereutactic => eutactic}/item/hypereutactic.dmi (100%) rename icons/obj/cit_weapons.dmi => modular_citadel/icons/eutactic/item/noneutactic.dmi (100%) rename modular_citadel/icons/{hypereutactic => eutactic}/mob/hypereutactic_left.dmi (100%) rename modular_citadel/icons/{hypereutactic => eutactic}/mob/hypereutactic_right.dmi (100%) rename icons/mob/citadel/melee_lefthand.dmi => modular_citadel/icons/eutactic/mob/noneutactic_left.dmi (100%) rename icons/mob/citadel/melee_righthand.dmi => modular_citadel/icons/eutactic/mob/noneutactic_right.dmi (100%) diff --git a/code/citadel/cit_weapons.dm b/code/citadel/cit_weapons.dm deleted file mode 100644 index dbf0448240..0000000000 --- a/code/citadel/cit_weapons.dm +++ /dev/null @@ -1,240 +0,0 @@ -/obj/item/toy/sword/cx - name = "\improper DX Non-Euplastic LightSword" - desc = "A deluxe toy replica of an energy sword. Realistic visuals and sounds! Ages 8 and up." - icon = 'icons/obj/cit_weapons.dmi' - icon_state = "cxsword_hilt" - item_state = "cxsword" - lefthand_file = 'icons/mob/citadel/melee_lefthand.dmi' - righthand_file = 'icons/mob/citadel/melee_righthand.dmi' - active = FALSE - w_class = WEIGHT_CLASS_SMALL - attack_verb = list("poked", "jabbed", "hit") - light_color = "#37FFF7" - var/light_brightness = 3 - actions_types = list() - -/obj/item/toy/sword/cx/attack_self(mob/user) - active = !( active ) - - if (active) - to_chat(user, "You activate the holographic blade with a press of a button.") - playsound(user, 'sound/weapons/nebon.ogg', 50, 1) - w_class = WEIGHT_CLASS_BULKY - attack_verb = list("slashed", "stabbed", "ravaged") - set_light(light_brightness) - update_icon() - - else - to_chat(user, "You deactivate the holographic blade with a press of a button.") - playsound(user, 'sound/weapons/neboff.ogg', 50, 1) - w_class = WEIGHT_CLASS_SMALL - attack_verb = list("poked", "jabbed", "hit") - set_light(0) - update_icon() - - for(var/X in actions) - var/datum/action/A = X - A.UpdateButtonIcon() - - add_fingerprint(user) - -/obj/item/toy/sword/cx/update_icon() - var/mutable_appearance/blade_overlay = mutable_appearance('icons/obj/cit_weapons.dmi', "cxsword_blade") - var/mutable_appearance/gem_overlay = mutable_appearance('icons/obj/cit_weapons.dmi', "cxsword_gem") - - if(light_color) - blade_overlay.color = light_color - gem_overlay.color = light_color - - cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other - - add_overlay(gem_overlay) - - if(active) - add_overlay(blade_overlay) - - if(ismob(loc)) - var/mob/M = loc - M.update_inv_hands() - -/obj/item/toy/sword/cx/AltClick(mob/living/user) - if(user.incapacitated() || !istype(user)) - to_chat(user, "You can't do that right now!") - return - if(!in_range(src, user)) - return - if(user.incapacitated() || !istype(user) || !in_range(src, user)) - return - - if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes") - var/energy_color_input = input(usr,"Choose Energy Color") as color|null - if(energy_color_input) - light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1) - update_icon() - update_light() - -/obj/item/toy/sword/cx/worn_overlays(isinhands, icon_file) - . = ..() - if(active) - if(isinhands) - var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "cxsword_blade") - blade_inhand.color = light_color - . += blade_inhand - -/obj/item/toy/sword/cx/attackby(obj/item/W, mob/living/user, params) - if(istype(W, /obj/item/toy/sword/cx)) - if((W.flags_1 & NODROP_1) || (flags_1 & NODROP_1)) - to_chat(user, "\the [flags_1 & NODROP_1 ? src : W] is stuck to your hand, you can't attach it to \the [flags_1 & NODROP_1 ? W : src]!") - return - else - to_chat(user, "You combine the two plastic swords, making a single supermassive toy! You're fake-cool.") - new /obj/item/twohanded/hypereutactic/toy(user.loc) - qdel(W) - qdel(src) - else - return ..() - -/obj/item/toy/sword/cx/examine(mob/user) - ..() - to_chat(user, "Alt-click to recolor it.") - -/*///autolathe memes/// I really need to stop doing this and find a proper way of adding in my toys - -/datum/design/toyneb - name = "Non-Euplastic Blade" - id = "toyneb" - build_type = AUTOLATHE - materials = list(MAT_METAL = 10000, MAT_GLASS = 1000) - build_path = /obj/item/toy/sword/cx - category = list("hacked", "Misc") -*/ // There, I stopped doing it - -/datum/crafting_recipe/toyneb - name = "Non-Euplastic Blade" - reqs = list(/obj/item/light/bulb = 1, /obj/item/stack/cable_coil = 1, /obj/item/toy/sword = 1) - result = /obj/item/toy/sword/cx - category = CAT_MISC - -/*///////////////////////////////////////////////////////////////////////// -///////////// The TRUE Energy Sword /////////////////////////// -*////////////////////////////////////////////////////////////////////////// - -/obj/item/melee/transforming/energy/sword/cx - name = "non-eutactic blade" - desc = "The CX Armories Type-69 Non-Eutactic Blade utilizes a hardlight blade that is dynamically 'forged' on demand to create a deadly sharp edge that is unbreakable." - icon_state = "cxsword_hilt" - icon = 'icons/obj/cit_weapons.dmi' - item_state = "cxsword" - lefthand_file = 'icons/mob/citadel/melee_lefthand.dmi' - righthand_file = 'icons/mob/citadel/melee_righthand.dmi' - force = 3 - throwforce = 5 - hitsound = "swing_hit" //it starts deactivated - hitsound_on = 'sound/weapons/nebhit.ogg' - attack_verb_off = list("tapped", "poked") - throw_speed = 3 - throw_range = 5 - sharpness = IS_SHARP - embed_chance = 40 - embedded_impact_pain_multiplier = 10 - armour_penetration = 0 - block_chance = 60 - light_color = "#37FFF7" - actions_types = list() - -/obj/item/melee/transforming/energy/sword/cx/transform_weapon(mob/living/user, supress_message_text) - active = !active //I'd use a ..() here but it'd inherit from the regular esword's proc instead, so SPAGHETTI CODE - if(active) //also I need to rip out the iconstate changing bits - force = force_on - throwforce = throwforce_on - hitsound = hitsound_on - throw_speed = 4 - if(attack_verb_on.len) - attack_verb = attack_verb_on - w_class = w_class_on - START_PROCESSING(SSobj, src) - set_light(brightness_on) - update_icon() - else - force = initial(force) - throwforce = initial(throwforce) - hitsound = initial(hitsound) - throw_speed = initial(throw_speed) - if(attack_verb_off.len) - attack_verb = attack_verb_off - w_class = initial(w_class) - STOP_PROCESSING(SSobj, src) - set_light(0) - update_icon() - transform_messages(user, supress_message_text) - add_fingerprint(user) - return TRUE - -/obj/item/melee/transforming/energy/sword/cx/transform_messages(mob/living/user, supress_message_text) - playsound(user, active ? 'sound/weapons/nebon.ogg' : 'sound/weapons/neboff.ogg', 65, 1) - if(!supress_message_text) - to_chat(user, "[src] [active ? "is now active":"can now be concealed"].") - -/obj/item/melee/transforming/energy/sword/cx/update_icon() - var/mutable_appearance/blade_overlay = mutable_appearance('icons/obj/cit_weapons.dmi', "cxsword_blade") - var/mutable_appearance/gem_overlay = mutable_appearance('icons/obj/cit_weapons.dmi', "cxsword_gem") - - if(light_color) - blade_overlay.color = light_color - gem_overlay.color = light_color - - cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other - - add_overlay(gem_overlay) - - if(active) - add_overlay(blade_overlay) - - if(ismob(loc)) - var/mob/M = loc - M.update_inv_hands() - -/obj/item/melee/transforming/energy/sword/cx/AltClick(mob/living/user) - if(user.incapacitated() || !istype(user)) - to_chat(user, "You can't do that right now!") - return - if(!in_range(src, user)) - return - if(user.incapacitated() || !istype(user) || !in_range(src, user)) - return - - if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes") - var/energy_color_input = input(usr,"Choose Energy Color") as color|null - if(energy_color_input) - light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1) - update_icon() - update_light() - -/obj/item/melee/transforming/energy/sword/cx/examine(mob/user) - ..() - to_chat(user, "Alt-click to recolor it.") - -/obj/item/melee/transforming/energy/sword/cx/worn_overlays(isinhands, icon_file) - . = ..() - if(active) - if(isinhands) - var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "cxsword_blade") - blade_inhand.color = light_color - . += blade_inhand - -/obj/item/melee/transforming/energy/sword/cx/traitor - name = "\improper Dragon's Tooth Sword" - desc = "The Dragon's Tooth sword is a blackmarket modification of the CX Armouries Type-69 NEB, \ - which utilizes a hardlight blade that is dynamically 'forged' on demand to create a deadly sharp edge that is unbreakable. \ - It appears to have a wooden grip and a shaved down guard." - icon_state = "cxsword_hilt_traitor" - armour_penetration = 35 - embed_chance = 75 - block_chance = 50 - hitsound_on = 'sound/weapons/blade1.ogg' - light_color = "#37F0FF" - -/obj/item/melee/transforming/energy/sword/cx/traitor/transform_messages(mob/living/user, supress_message_text) - playsound(user, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 35, 1) - if(!supress_message_text) - to_chat(user, "[src] [active ? "is now active":"can now be concealed"].") \ No newline at end of file diff --git a/modular_citadel/hypereutactic_blade.dm b/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm similarity index 52% rename from modular_citadel/hypereutactic_blade.dm rename to modular_citadel/code/game/objects/items/melee/eutactic_blades.dm index f0cfa55109..d324c95511 100644 --- a/modular_citadel/hypereutactic_blade.dm +++ b/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm @@ -1,10 +1,211 @@ -/* fuckhuge esword thingy */ +/*///////////////////////////////////////////////////////////////////////// +///////////// The TRUE Energy Sword /////////////////////////// +*////////////////////////////////////////////////////////////////////////// + +/obj/item/melee/transforming/energy/sword/cx + name = "non-eutactic blade" + desc = "The Non-Eutactic Blade utilizes a hardlight blade that is dynamically 'forged' on demand to create a deadly sharp edge that is unbreakable." + icon_state = "cxsword_hilt" + icon = 'modular_citadel/icons/eutactic/item/noneutactic.dmi' + item_state = "cxsword" + lefthand_file = 'modular_citadel/icons/eutactic/mob/noneutactic_left.dmi' + righthand_file = 'modular_citadel/icons/eutactic/mob/noneutactic_right.dmi' + force = 3 + throwforce = 5 + hitsound = "swing_hit" //it starts deactivated + hitsound_on = 'sound/weapons/nebhit.ogg' + attack_verb_off = list("tapped", "poked") + throw_speed = 3 + throw_range = 5 + sharpness = IS_SHARP + embed_chance = 40 + embedded_impact_pain_multiplier = 10 + armour_penetration = 0 + block_chance = 60 + light_color = "#37FFF7" + actions_types = list() + +/obj/item/melee/transforming/energy/sword/cx/transform_weapon(mob/living/user, supress_message_text) + active = !active //I'd use a ..() here but it'd inherit from the regular esword's proc instead, so SPAGHETTI CODE + if(active) //also I'd need to rip out the iconstate changing bits + force = force_on + throwforce = throwforce_on + hitsound = hitsound_on + throw_speed = 4 + if(attack_verb_on.len) + attack_verb = attack_verb_on + w_class = w_class_on + START_PROCESSING(SSobj, src) + set_light(brightness_on) + update_icon() + else + force = initial(force) + throwforce = initial(throwforce) + hitsound = initial(hitsound) + throw_speed = initial(throw_speed) + if(attack_verb_off.len) + attack_verb = attack_verb_off + w_class = initial(w_class) + STOP_PROCESSING(SSobj, src) + set_light(0) + update_icon() + transform_messages(user, supress_message_text) + add_fingerprint(user) + return TRUE + +/obj/item/melee/transforming/energy/sword/cx/transform_messages(mob/living/user, supress_message_text) + playsound(user, active ? 'sound/weapons/nebon.ogg' : 'sound/weapons/neboff.ogg', 65, 1) + if(!supress_message_text) + to_chat(user, "[src] [active ? "is now active":"can now be concealed"].") + +/obj/item/melee/transforming/energy/sword/cx/update_icon() + var/mutable_appearance/blade_overlay = mutable_appearance('modular_citadel/icons/eutactic/item/noneutactic.dmi', "cxsword_blade") + var/mutable_appearance/gem_overlay = mutable_appearance('modular_citadel/icons/eutactic/item/noneutactic.dmi', "cxsword_gem") + + if(light_color) + blade_overlay.color = light_color + gem_overlay.color = light_color + + cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other + + add_overlay(gem_overlay) + + if(active) + add_overlay(blade_overlay) + if(ismob(loc)) + var/mob/M = loc + M.update_inv_hands() + +/obj/item/melee/transforming/energy/sword/cx/AltClick(mob/living/user) + if(!in_range(src, user)) //Basic checks to prevent abuse + return + if(user.incapacitated() || !istype(user)) + to_chat(user, "You can't do that right now!") + return + + if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes") + var/energy_color_input = input(usr,"Choose Energy Color") as color|null + if(energy_color_input) + light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1) + update_icon() + update_light() + +/obj/item/melee/transforming/energy/sword/cx/examine(mob/user) + ..() + to_chat(user, "Alt-click to recolor it.") + +/obj/item/melee/transforming/energy/sword/cx/worn_overlays(isinhands, icon_file) + . = ..() + if(active) + if(isinhands) + var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "cxsword_blade") + blade_inhand.color = light_color + . += blade_inhand + +//OBLIGATORY TOY MEMES ///////////////////////////////////// + +/obj/item/toy/sword/cx + name = "\improper DX Non-Euplastic LightSword" + desc = "A deluxe toy replica of an energy sword. Realistic visuals and sounds! Ages 8 and up." + icon = 'modular_citadel/icons/eutactic/item/noneutactic.dmi' + icon_state = "cxsword_hilt" + item_state = "cxsword" + lefthand_file = 'modular_citadel/icons/eutactic/mob/noneutactic_left.dmi' + righthand_file = 'modular_citadel/icons/eutactic/mob/noneutactic_right.dmi' + active = FALSE + w_class = WEIGHT_CLASS_SMALL + attack_verb = list("poked", "jabbed", "hit") + light_color = "#37FFF7" + var/light_brightness = 3 + actions_types = list() + +/obj/item/toy/sword/cx/attack_self(mob/user) + active = !( active ) + + if (active) + to_chat(user, "You activate the holographic blade with a press of a button.") + playsound(user, 'sound/weapons/nebon.ogg', 50, 1) + w_class = WEIGHT_CLASS_BULKY + attack_verb = list("slashed", "stabbed", "ravaged") + set_light(light_brightness) + update_icon() + + else + to_chat(user, "You deactivate the holographic blade with a press of a button.") + playsound(user, 'sound/weapons/neboff.ogg', 50, 1) + w_class = WEIGHT_CLASS_SMALL + attack_verb = list("poked", "jabbed", "hit") + set_light(0) + update_icon() + + add_fingerprint(user) + +/obj/item/toy/sword/cx/update_icon() + var/mutable_appearance/blade_overlay = mutable_appearance('modular_citadel/icons/eutactic/item/noneutactic.dmi', "cxsword_blade") + var/mutable_appearance/gem_overlay = mutable_appearance('modular_citadel/icons/eutactic/item/noneutactic.dmi', "cxsword_gem") + + if(light_color) + blade_overlay.color = light_color + gem_overlay.color = light_color + + cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other + + add_overlay(gem_overlay) + + if(active) + add_overlay(blade_overlay) + if(ismob(loc)) + var/mob/M = loc + M.update_inv_hands() + +/obj/item/toy/sword/cx/AltClick(mob/living/user) + if(!in_range(src, user)) //Basic checks to prevent abuse + return + if(user.incapacitated() || !istype(user)) + to_chat(user, "You can't do that right now!") + return + + if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes") + var/energy_color_input = input(usr,"Choose Energy Color") as color|null + if(energy_color_input) + light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1) + update_icon() + update_light() + +/obj/item/toy/sword/cx/worn_overlays(isinhands, icon_file) + . = ..() + if(active) + if(isinhands) + var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "cxsword_blade") + blade_inhand.color = light_color + . += blade_inhand + +/obj/item/toy/sword/cx/attackby(obj/item/W, mob/living/user, params) + if(istype(W, /obj/item/toy/sword/cx)) + if((W.flags_1 & NODROP_1) || (flags_1 & NODROP_1)) + to_chat(user, "\the [flags_1 & NODROP_1 ? src : W] is stuck to your hand, you can't attach it to \the [flags_1 & NODROP_1 ? W : src]!") + return + else + to_chat(user, "You combine the two plastic swords, making a single supermassive toy! You're fake-cool.") + new /obj/item/twohanded/hypereutactic/toy(user.loc) + qdel(W) + qdel(src) + else + return ..() + +/obj/item/toy/sword/cx/examine(mob/user) + ..() + to_chat(user, "Alt-click to recolor it.") + +///////////////////////////////////////////////////// +// HYPEREUTACTIC Blades ///////////////////////// +///////////////////////////////////////////////////// /obj/item/twohanded/hypereutactic - icon = 'modular_citadel/icons/hypereutactic/item/hypereutactic.dmi' + icon = 'modular_citadel/icons/eutactic/item/hypereutactic.dmi' icon_state = "hypereutactic" - lefthand_file = 'modular_citadel/icons/hypereutactic/mob/hypereutactic_left.dmi' - righthand_file = 'modular_citadel/icons/hypereutactic/mob/hypereutactic_right.dmi' + lefthand_file = 'modular_citadel/icons/eutactic/mob/hypereutactic_left.dmi' + righthand_file = 'modular_citadel/icons/eutactic/mob/hypereutactic_right.dmi' item_state = "hypereutactic" inhand_x_dimension = 64 inhand_y_dimension = 64 @@ -55,8 +256,8 @@ slowdown = initial(slowdown) /obj/item/twohanded/hypereutactic/update_icon() - var/mutable_appearance/blade_overlay = mutable_appearance('modular_citadel/icons/hypereutactic/item/hypereutactic.dmi', "hypereutactic_blade") - var/mutable_appearance/gem_overlay = mutable_appearance('modular_citadel/icons/hypereutactic/item/hypereutactic.dmi', "hypereutactic_gem") + var/mutable_appearance/blade_overlay = mutable_appearance('modular_citadel/icons/eutactic/item/hypereutactic.dmi', "hypereutactic_blade") + var/mutable_appearance/gem_overlay = mutable_appearance('modular_citadel/icons/eutactic/item/hypereutactic.dmi', "hypereutactic_gem") if(light_color) blade_overlay.color = light_color @@ -68,7 +269,6 @@ if(wielded) add_overlay(blade_overlay) - if(ismob(loc)) var/mob/M = loc M.update_inv_hands() @@ -76,13 +276,11 @@ clean_blood()//blood overlays get weird otherwise, because the sprite changes. (retained from original desword because I have no idea what this is) /obj/item/twohanded/hypereutactic/AltClick(mob/living/user) + if(!in_range(src, user)) //Basic checks to prevent abuse + return if(user.incapacitated() || !istype(user)) to_chat(user, "You can't do that right now!") return - if(!in_range(src, user)) - return - if(user.incapacitated() || !istype(user) || !in_range(src, user)) - return if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes") var/energy_color_input = input(usr,"Choose Energy Color") as color|null @@ -108,7 +306,7 @@ -////////// stuff beneath this is all taken from the desword //////////// +////////// stuff beneath this is all taken from the desword //////////// wow very professional such OOP wow @@ -137,12 +335,12 @@ /obj/item/twohanded/hypereutactic/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(wielded) return ..() - return 0 + return FALSE /obj/item/twohanded/hypereutactic/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) //In case thats just so happens that it is still activated on the groud, prevents hulk from picking it up if(wielded) to_chat(user, "You can't pick up such dangerous item with your meaty hands without losing fingers, better not to!") - return 1 + return TRUE /obj/item/twohanded/hypereutactic/process() if(wielded) @@ -152,7 +350,7 @@ /obj/item/twohanded/hypereutactic/IsReflect() if(wielded) - return 1 + return TRUE /obj/item/twohanded/hypereutactic/ignition_effect(atom/A, mob/user) // same as /obj/item/melee/transforming/energy, mostly @@ -167,7 +365,6 @@ playsound(loc, hitsound, get_clamped_volume(), 1, -1) add_fingerprint(user) - ////////////////// TOY VERSION ///////////////////////////// /obj/item/twohanded/hypereutactic/toy @@ -182,95 +379,25 @@ attack_verb = list("attacked", "struck", "hit") /obj/item/twohanded/hypereutactic/toy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - return 0 + return FALSE /obj/item/twohanded/hypereutactic/toy/IsReflect()//Stops it from reflecting energy projectiles - return 0 + return FALSE -/* old code that don't work no more -/obj/item/toy/sword/cx/hyper - name = "\improper DX Hyper-Euplastic LightSword" - desc = "A supermassive toy envisioned to cleave the very fabric of space and time itself in twain. Realistic visuals and sounds! Ages 8 and up." - icon = 'modular_citadel/icons/hypereutactic/item/hypereutactic.dmi' - icon_state = "hypereutactic" - lefthand_file = 'modular_citadel/icons/hypereutactic/mob/hypereutactic_left.dmi' - righthand_file = 'modular_citadel/icons/hypereutactic/mob/hypereutactic_right.dmi' - item_state = "hypereutactic" - inhand_x_dimension = 64 - inhand_y_dimension = 64 - active = FALSE - w_class = WEIGHT_CLASS_SMALL - attack_verb = list("poked", "devastated", "jabbed") - light_color = "#37FFF7" - light_brightness = 3 - actions_types = list() +//////// Tatortot NEB /////////////// (same stats as regular esword) +/obj/item/melee/transforming/energy/sword/cx/traitor + name = "\improper Dragon's Tooth Sword" + desc = "The Dragon's Tooth sword is a blackmarket modification of a Non-Eutactic Blade, \ + which utilizes a hardlight blade that is dynamically 'forged' on demand to create a deadly sharp edge that is unbreakable. \ + It appears to have a wooden grip and a shaved down guard." + icon_state = "cxsword_hilt_traitor" + armour_penetration = 35 + embed_chance = 75 + block_chance = 50 + hitsound_on = 'sound/weapons/blade1.ogg' + light_color = "#37F0FF" -/obj/item/toy/sword/cx/hyper/attack_self(mob/user) - active = !( active ) - - if (active) - to_chat(user, "You activate the holographic blade with a press of a button.") - playsound(user, 'sound/weapons/nebon.ogg', 50, 1) - w_class = WEIGHT_CLASS_BULKY - attack_verb = list("slashed", "stabbed", "ravaged") - set_light(light_brightness) - update_icon() - - else - to_chat(user, "You deactivate the holographic blade with a press of a button.") - playsound(user, 'sound/weapons/neboff.ogg', 50, 1) - w_class = WEIGHT_CLASS_SMALL - attack_verb = list("poked", "jabbed", "hit") - set_light(0) - update_icon() - - add_fingerprint(user) - -/obj/item/toy/sword/cx/hyper/update_icon() - var/mutable_appearance/blade_overlay = mutable_appearance('modular_citadel/icons/hypereutactic/item/hypereutactic.dmi', "hypereutactic_blade") - var/mutable_appearance/gem_overlay = mutable_appearance('modular_citadel/icons/hypereutactic/item/hypereutactic.dmi', "hypereutactic_gem") - - if(light_color) - blade_overlay.color = light_color - gem_overlay.color = light_color - - cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other - - add_overlay(gem_overlay) - - if(active) - add_overlay(blade_overlay) - - if(ismob(loc)) - var/mob/M = loc - M.update_inv_hands() - -/obj/item/toy/sword/cx/hyper/AltClick(mob/living/user) - if(user.incapacitated() || !istype(user)) - to_chat(user, "You can't do that right now!") - return - if(!in_range(src, user)) - return - if(user.incapacitated() || !istype(user) || !in_range(src, user)) - return - - if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes") - var/energy_color_input = input(usr,"Choose Energy Color") as color|null - if(energy_color_input) - light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1) - update_icon() - update_light() - -/obj/item/toy/sword/cx/hyper/worn_overlays(isinhands, icon_file) - if(isinhands) - var/mutable_appearance/gem_inhand = mutable_appearance(icon_file, "hypereutactic_gem") - gem_inhand.color = light_color - . += gem_inhand - if(active) - var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "hypereutactic_blade") - blade_inhand.color = light_color - . += blade_inhand - -/obj/item/toy/sword/cx/hyper/attackby(obj/item/W, mob/living/user, params) - return -*/ \ No newline at end of file +/obj/item/melee/transforming/energy/sword/cx/traitor/transform_messages(mob/living/user, supress_message_text) + playsound(user, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 35, 1) + if(!supress_message_text) + to_chat(user, "[src] [active ? "is now active":"can now be concealed"].") \ No newline at end of file diff --git a/modular_citadel/code/modules/crafting/recipes.dm b/modular_citadel/code/modules/crafting/recipes.dm new file mode 100644 index 0000000000..6ed749e7c6 --- /dev/null +++ b/modular_citadel/code/modules/crafting/recipes.dm @@ -0,0 +1,5 @@ +/datum/crafting_recipe/toyneb + name = "Non-Euplastic Blade" + reqs = list(/obj/item/light/tube = 1, /obj/item/stack/cable_coil = 1, /obj/item/stack/sheet/plastic = 4) + result = /obj/item/toy/sword/cx + category = CAT_MISC \ No newline at end of file diff --git a/modular_citadel/icons/hypereutactic/item/hypereutactic.dmi b/modular_citadel/icons/eutactic/item/hypereutactic.dmi similarity index 100% rename from modular_citadel/icons/hypereutactic/item/hypereutactic.dmi rename to modular_citadel/icons/eutactic/item/hypereutactic.dmi diff --git a/icons/obj/cit_weapons.dmi b/modular_citadel/icons/eutactic/item/noneutactic.dmi similarity index 100% rename from icons/obj/cit_weapons.dmi rename to modular_citadel/icons/eutactic/item/noneutactic.dmi diff --git a/modular_citadel/icons/hypereutactic/mob/hypereutactic_left.dmi b/modular_citadel/icons/eutactic/mob/hypereutactic_left.dmi similarity index 100% rename from modular_citadel/icons/hypereutactic/mob/hypereutactic_left.dmi rename to modular_citadel/icons/eutactic/mob/hypereutactic_left.dmi diff --git a/modular_citadel/icons/hypereutactic/mob/hypereutactic_right.dmi b/modular_citadel/icons/eutactic/mob/hypereutactic_right.dmi similarity index 100% rename from modular_citadel/icons/hypereutactic/mob/hypereutactic_right.dmi rename to modular_citadel/icons/eutactic/mob/hypereutactic_right.dmi diff --git a/icons/mob/citadel/melee_lefthand.dmi b/modular_citadel/icons/eutactic/mob/noneutactic_left.dmi similarity index 100% rename from icons/mob/citadel/melee_lefthand.dmi rename to modular_citadel/icons/eutactic/mob/noneutactic_left.dmi diff --git a/icons/mob/citadel/melee_righthand.dmi b/modular_citadel/icons/eutactic/mob/noneutactic_right.dmi similarity index 100% rename from icons/mob/citadel/melee_righthand.dmi rename to modular_citadel/icons/eutactic/mob/noneutactic_right.dmi diff --git a/tgstation.dme b/tgstation.dme index 11399a1b14..384b574883 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -190,7 +190,6 @@ #include "code\citadel\cit_spawners.dm" #include "code\citadel\cit_uniforms.dm" #include "code\citadel\cit_vendors.dm" -#include "code\citadel\cit_weapons.dm" #include "code\citadel\dogborgstuff.dm" #include "code\citadel\plasmacases.dm" #include "code\citadel\crew_objectives\cit_crewobjectives_cargo.dm" @@ -2449,7 +2448,8 @@ #include "modular_citadel\cit_screenshake.dm" #include "modular_citadel\citadel_ghostrole_spawners.dm" #include "modular_citadel\cydonian_armor.dm" -#include "modular_citadel\hypereutactic_blade.dm" #include "modular_citadel\polychromic_clothes.dm" #include "modular_citadel\code\datums\uplink_items_cit.dm" +#include "modular_citadel\code\game\objects\items\melee\eutactic_blades.dm" +#include "modular_citadel\code\modules\crafting\recipes.dm" // END_INCLUDE From f7a943575da9b91382b99ca4fd702254207b71f4 Mon Sep 17 00:00:00 2001 From: Trevor Serpas Date: Fri, 15 Dec 2017 03:26:10 -0600 Subject: [PATCH 15/94] Removed drone light in favor of night vision --- code/modules/mob/living/simple_animal/friendly/drone/_drone.dm | 2 +- .../living/simple_animal/friendly/drone/extra_drone_types.dm | 1 - code/modules/mob/living/simple_animal/friendly/drone/verbs.dm | 3 +++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm index e4de4387be..ea159a5749 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -48,6 +48,7 @@ faction = list("neutral","silicon","turret") dextrous = TRUE dextrous_hud_type = /datum/hud/dextrous/drone + lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE var/staticChoice = "static" var/list/staticChoices = list("static", "blank", "letter", "animal") var/picked = FALSE //Have we picked our visual appearence (+ colour if applicable) @@ -57,7 +58,6 @@ "1. You may not involve yourself in the matters of another being, even if such matters conflict with Law Two or Law Three, unless the other being is another Drone.\n"+\ "2. You may not harm any being, regardless of intent or circumstance.\n"+\ "3. Your goals are to build, maintain, repair, improve, and provide power to the best of your abilities, You must never actively work against these goals." - var/light_on = 0 var/heavy_emp_damage = 25 //Amount of damage sustained if hit by a heavy EMP pulse var/alarms = list("Atmosphere" = list(), "Fire" = list(), "Power" = list()) var/obj/item/internal_storage //Drones can store one item, of any size/type in their body diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm index 3aa1153133..fa899aec0f 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm @@ -148,7 +148,6 @@ qdel(access_card) //we don't have free access access_card = null verbs -= /mob/living/simple_animal/drone/verb/check_laws - verbs -= /mob/living/simple_animal/drone/verb/toggle_light verbs -= /mob/living/simple_animal/drone/verb/drone_ping /mob/living/simple_animal/drone/cogscarab/Login() diff --git a/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm index 49faea14b3..a8cf57bb08 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm @@ -12,6 +12,7 @@ to_chat(src, "Drone Laws") to_chat(src, laws) +<<<<<<< HEAD /mob/living/simple_animal/drone/verb/toggle_light() set category = "Drone" set name = "Toggle drone light" @@ -28,6 +29,8 @@ to_chat(src, "Your light is now [light_on ? "on" : "off"].") +======= +>>>>>>> c2c5e90... Removed drone light in favor of night vision (#33529) /mob/living/simple_animal/drone/verb/drone_ping() set category = "Drone" set name = "Drone ping" From 2152bc7121b7882ba137c6d62aa7b23777063d4a Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Fri, 15 Dec 2017 01:27:20 -0800 Subject: [PATCH 16/94] Adds some permission checks to admin/topic (#33527) --- code/modules/admin/admin_investigate.dm | 2 + code/modules/admin/topic.dm | 113 +++++++++++++++++++++++- 2 files changed, 114 insertions(+), 1 deletion(-) diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm index 6e327db6b5..f259e9b1e9 100644 --- a/code/modules/admin/admin_investigate.dm +++ b/code/modules/admin/admin_investigate.dm @@ -11,6 +11,8 @@ return switch(subject) if("notes, memos, watchlist") + if(!check_rights(R_ADMIN)) + return browse_messages() else var/F = file("[GLOB.log_directory]/[subject].html") diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index de8dff1518..da8077cfdd 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -58,6 +58,8 @@ toggle_exempt_status(C) else if(href_list["makeAntag"]) + if(!check_rights(R_ADMIN)) + return if (!SSticker.mode) to_chat(usr, "Not until the round starts!") return @@ -201,7 +203,8 @@ return else if(href_list["dbbanaddtype"]) - + if(!check_rights(R_BAN)) + return var/bantype = text2num(href_list["dbbanaddtype"]) var/banckey = href_list["dbbanaddckey"] var/banip = href_list["dbbanaddip"] @@ -599,6 +602,8 @@ return else if(href_list["jobban2"]) + if(!check_rights(R_BAN)) + return var/mob/M = locate(href_list["jobban2"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob.") @@ -1029,6 +1034,8 @@ return 0 //we didn't do anything! else if(href_list["boot2"]) + if(!check_rights(R_ADMIN)) + return var/mob/M = locate(href_list["boot2"]) if (ismob(M)) if(!check_if_greater_rights_than(M.client)) @@ -1041,72 +1048,110 @@ qdel(M.client) else if(href_list["addmessage"]) + if(!check_rights(R_ADMIN)) + return var/target_ckey = href_list["addmessage"] create_message("message", target_ckey, secret = 0) else if(href_list["addnote"]) + if(!check_rights(R_ADMIN)) + return var/target_ckey = href_list["addnote"] create_message("note", target_ckey) else if(href_list["addwatch"]) + if(!check_rights(R_ADMIN)) + return var/target_ckey = href_list["addwatch"] create_message("watchlist entry", target_ckey, secret = 1) else if(href_list["addmemo"]) + if(!check_rights(R_ADMIN)) + return create_message("memo", secret = 0, browse = 1) else if(href_list["addmessageempty"]) + if(!check_rights(R_ADMIN)) + return create_message("message", secret = 0) else if(href_list["addnoteempty"]) + if(!check_rights(R_ADMIN)) + return create_message("note") else if(href_list["addwatchempty"]) + if(!check_rights(R_ADMIN)) + return create_message("watchlist entry", secret = 1) else if(href_list["deletemessage"]) + if(!check_rights(R_ADMIN)) + return var/message_id = href_list["deletemessage"] delete_message(message_id) else if(href_list["deletemessageempty"]) + if(!check_rights(R_ADMIN)) + return var/message_id = href_list["deletemessageempty"] delete_message(message_id, browse = 1) else if(href_list["editmessage"]) + if(!check_rights(R_ADMIN)) + return var/message_id = href_list["editmessage"] edit_message(message_id) else if(href_list["editmessageempty"]) + if(!check_rights(R_ADMIN)) + return var/message_id = href_list["editmessageempty"] edit_message(message_id, browse = 1) else if(href_list["secretmessage"]) + if(!check_rights(R_ADMIN)) + return var/message_id = href_list["secretmessage"] toggle_message_secrecy(message_id) else if(href_list["searchmessages"]) + if(!check_rights(R_ADMIN)) + return var/target = href_list["searchmessages"] browse_messages(index = target) else if(href_list["nonalpha"]) + if(!check_rights(R_ADMIN)) + return var/target = href_list["nonalpha"] target = text2num(target) browse_messages(index = target) else if(href_list["showmessages"]) + if(!check_rights(R_ADMIN)) + return var/target = href_list["showmessages"] browse_messages(index = target) else if(href_list["showmemo"]) + if(!check_rights(R_ADMIN)) + return browse_messages("memo") else if(href_list["showwatch"]) + if(!check_rights(R_ADMIN)) + return browse_messages("watchlist entry") else if(href_list["showwatchfilter"]) + if(!check_rights(R_ADMIN)) + return browse_messages("watchlist entry", filter = 1) else if(href_list["showmessageckey"]) + if(!check_rights(R_ADMIN)) + return var/target = href_list["showmessageckey"] var/agegate = TRUE if (href_list["showall"]) @@ -1118,6 +1163,8 @@ browse_messages(target_ckey = target, linkless = 1) else if(href_list["messageedits"]) + if(!check_rights(R_ADMIN)) + return var/message_id = sanitizeSQL("[href_list["messageedits"]]") var/datum/DBQuery/query_get_message_edits = SSdbcore.NewQuery("SELECT edits FROM [format_table_name("messages")] WHERE id = '[message_id]'") if(!query_get_message_edits.warn_execute()) @@ -1568,9 +1615,13 @@ C.jumptocoord(x,y,z) else if(href_list["adminchecklaws"]) + if(!check_rights(R_ADMIN)) + return output_ai_laws() else if(href_list["admincheckdevilinfo"]) + if(!check_rights(R_ADMIN)) + return var/mob/M = locate(href_list["admincheckdevilinfo"]) output_devil_info(M) @@ -1979,20 +2030,28 @@ Secrets_topic(href_list["secrets"],href_list) else if(href_list["ac_view_wanted"]) //Admin newscaster Topic() stuff be here + if(!check_rights(R_ADMIN)) + return src.admincaster_screen = 18 //The ac_ prefix before the hrefs stands for AdminCaster. src.access_news_network() else if(href_list["ac_set_channel_name"]) + if(!check_rights(R_ADMIN)) + return src.admincaster_feed_channel.channel_name = stripped_input(usr, "Provide a Feed Channel Name.", "Network Channel Handler", "") while (findtext(src.admincaster_feed_channel.channel_name," ") == 1) src.admincaster_feed_channel.channel_name = copytext(src.admincaster_feed_channel.channel_name,2,lentext(src.admincaster_feed_channel.channel_name)+1) src.access_news_network() else if(href_list["ac_set_channel_lock"]) + if(!check_rights(R_ADMIN)) + return src.admincaster_feed_channel.locked = !src.admincaster_feed_channel.locked src.access_news_network() else if(href_list["ac_submit_new_channel"]) + if(!check_rights(R_ADMIN)) + return 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) @@ -2010,6 +2069,8 @@ src.access_news_network() else if(href_list["ac_set_channel_receiving"]) + if(!check_rights(R_ADMIN)) + return var/list/available_channels = list() for(var/datum/newscaster/feed_channel/F in GLOB.news_network.network_channels) available_channels += F.channel_name @@ -2017,12 +2078,16 @@ src.access_news_network() else if(href_list["ac_set_new_message"]) + if(!check_rights(R_ADMIN)) + return src.admincaster_feed_message.body = adminscrub(input(usr, "Write your Feed story.", "Network Channel Handler", "")) while (findtext(src.admincaster_feed_message.returnBody(-1)," ") == 1) src.admincaster_feed_message.body = copytext(src.admincaster_feed_message.returnBody(-1),2,lentext(src.admincaster_feed_message.returnBody(-1))+1) src.access_news_network() else if(href_list["ac_submit_new_message"]) + if(!check_rights(R_ADMIN)) + return if(src.admincaster_feed_message.returnBody(-1) =="" || src.admincaster_feed_message.returnBody(-1) =="\[REDACTED\]" || src.admincaster_feed_channel.channel_name == "" ) src.admincaster_screen = 6 else @@ -2037,22 +2102,32 @@ src.access_news_network() else if(href_list["ac_create_channel"]) + if(!check_rights(R_ADMIN)) + return src.admincaster_screen=2 src.access_news_network() else if(href_list["ac_create_feed_story"]) + if(!check_rights(R_ADMIN)) + return src.admincaster_screen=3 src.access_news_network() else if(href_list["ac_menu_censor_story"]) + if(!check_rights(R_ADMIN)) + return src.admincaster_screen=10 src.access_news_network() else if(href_list["ac_menu_censor_channel"]) + if(!check_rights(R_ADMIN)) + return src.admincaster_screen=11 src.access_news_network() else if(href_list["ac_menu_wanted"]) + if(!check_rights(R_ADMIN)) + return var/already_wanted = 0 if(GLOB.news_network.wanted_issue.active) already_wanted = 1 @@ -2064,18 +2139,24 @@ src.access_news_network() else if(href_list["ac_set_wanted_name"]) + if(!check_rights(R_ADMIN)) + return src.admincaster_wanted_message.criminal = adminscrub(input(usr, "Provide the name of the Wanted person.", "Network Security Handler", "")) while(findtext(src.admincaster_wanted_message.criminal," ") == 1) src.admincaster_wanted_message.criminal = copytext(admincaster_wanted_message.criminal,2,lentext(admincaster_wanted_message.criminal)+1) src.access_news_network() else if(href_list["ac_set_wanted_desc"]) + if(!check_rights(R_ADMIN)) + return src.admincaster_wanted_message.body = adminscrub(input(usr, "Provide the a description of the Wanted person and any other details you deem important.", "Network Security Handler", "")) while (findtext(src.admincaster_wanted_message.body," ") == 1) src.admincaster_wanted_message.body = copytext(src.admincaster_wanted_message.body,2,lentext(src.admincaster_wanted_message.body)+1) src.access_news_network() else if(href_list["ac_submit_wanted"]) + if(!check_rights(R_ADMIN)) + return var/input_param = text2num(href_list["ac_submit_wanted"]) if(src.admincaster_wanted_message.criminal == "" || src.admincaster_wanted_message.body == "") src.admincaster_screen = 16 @@ -2092,6 +2173,8 @@ src.access_news_network() else if(href_list["ac_cancel_wanted"]) + if(!check_rights(R_ADMIN)) + return var/choice = alert("Please confirm Wanted Issue removal.","Network Security Handler","Confirm","Cancel") if(choice=="Confirm") GLOB.news_network.deleteWanted() @@ -2099,36 +2182,50 @@ src.access_news_network() else if(href_list["ac_censor_channel_author"]) + if(!check_rights(R_ADMIN)) + return var/datum/newscaster/feed_channel/FC = locate(href_list["ac_censor_channel_author"]) FC.toggleCensorAuthor() src.access_news_network() else if(href_list["ac_censor_channel_story_author"]) + if(!check_rights(R_ADMIN)) + return var/datum/newscaster/feed_message/MSG = locate(href_list["ac_censor_channel_story_author"]) MSG.toggleCensorAuthor() src.access_news_network() else if(href_list["ac_censor_channel_story_body"]) + if(!check_rights(R_ADMIN)) + return var/datum/newscaster/feed_message/MSG = locate(href_list["ac_censor_channel_story_body"]) MSG.toggleCensorBody() src.access_news_network() else if(href_list["ac_pick_d_notice"]) + if(!check_rights(R_ADMIN)) + return var/datum/newscaster/feed_channel/FC = locate(href_list["ac_pick_d_notice"]) src.admincaster_feed_channel = FC src.admincaster_screen=13 src.access_news_network() else if(href_list["ac_toggle_d_notice"]) + if(!check_rights(R_ADMIN)) + return var/datum/newscaster/feed_channel/FC = locate(href_list["ac_toggle_d_notice"]) FC.toggleCensorDclass() src.access_news_network() else if(href_list["ac_view"]) + if(!check_rights(R_ADMIN)) + return src.admincaster_screen=1 src.access_news_network() else if(href_list["ac_setScreen"]) //Brings us to the main menu and resets all fields~ + if(!check_rights(R_ADMIN)) + return src.admincaster_screen = text2num(href_list["ac_setScreen"]) if (src.admincaster_screen == 0) if(src.admincaster_feed_channel) @@ -2140,25 +2237,35 @@ src.access_news_network() else if(href_list["ac_show_channel"]) + if(!check_rights(R_ADMIN)) + return var/datum/newscaster/feed_channel/FC = locate(href_list["ac_show_channel"]) src.admincaster_feed_channel = FC src.admincaster_screen = 9 src.access_news_network() else if(href_list["ac_pick_censor_channel"]) + if(!check_rights(R_ADMIN)) + return var/datum/newscaster/feed_channel/FC = locate(href_list["ac_pick_censor_channel"]) src.admincaster_feed_channel = FC src.admincaster_screen = 12 src.access_news_network() else if(href_list["ac_refresh"]) + if(!check_rights(R_ADMIN)) + return src.access_news_network() else if(href_list["ac_set_signature"]) + if(!check_rights(R_ADMIN)) + return src.admin_signature = adminscrub(input(usr, "Provide your desired signature.", "Network Identity Handler", "")) src.access_news_network() else if(href_list["ac_del_comment"]) + if(!check_rights(R_ADMIN)) + return var/datum/newscaster/feed_comment/FC = locate(href_list["ac_del_comment"]) var/datum/newscaster/feed_message/FM = locate(href_list["ac_del_comment_msg"]) FM.comments -= FC @@ -2166,6 +2273,8 @@ src.access_news_network() else if(href_list["ac_lock_comment"]) + if(!check_rights(R_ADMIN)) + return var/datum/newscaster/feed_message/FM = locate(href_list["ac_lock_comment"]) FM.locked ^= 1 src.access_news_network() @@ -2262,6 +2371,8 @@ error_viewer.show_to(owner, null, href_list["viewruntime_linear"]) else if(href_list["showrelatedacc"]) + if(!check_rights(R_ADMIN)) + return var/client/C = locate(href_list["client"]) in GLOB.clients var/thing_to_check if(href_list["showrelatedacc"] == "cid") From 533c716e56a23748f6d0f9a8aebe68db6b59ec90 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Fri, 15 Dec 2017 15:07:07 -0500 Subject: [PATCH 18/94] Further emphasises the importance of round ID in issue template (#33538) * Further emphasises the importance of round ID in issue template * Update statbus url. Add server note --- .github/ISSUE_TEMPLATE.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 699ab8ffa2..10f60767bb 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,3 +1,9 @@ -[Directions]: # (INCLUDE THE ROUND ID from the Status panel or retrieve it from https://atlantaned.space/newSS13tools/round.php ! If you believe the issue to be caused by a test merge [OOC tab -> Show Server Revision], report it in the pull request's comment section instead. Explain your issue in detail, including the steps to reproduce it.) +[Directions]: # (If you discovered this issue from playing tgstation hosted servers + + +INCLUDE THE ROUND ID + + +from the Status panel or retrieve it from https://atlantaned.space/statbus/round.php ! If you believe the issue to be caused by a test merge [OOC tab -> Show Server Revision], report it in the pull request's comment section instead. Explain your issue in detail, including the steps to reproduce it.) [For Admins]: # (Oddities induced by var-edits and other admin tools are not necessarily bugs. Verify that your issues occur under regular circumstances before reporting them.) From 9adb77c5e3067b5ea839902a93d4832c79eaf1f5 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Fri, 15 Dec 2017 15:53:12 -0500 Subject: [PATCH 20/94] Merge pull request #33530 from AutomaticFrenzy/patch/autocall Fix shuttle autocalls when the round is already over --- code/controllers/subsystem/shuttle.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index c80bc17047..35208d4137 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -307,6 +307,9 @@ SUBSYSTEM_DEF(shuttle) return 1 /datum/controller/subsystem/shuttle/proc/autoEvac() + if (!SSticker.IsRoundInProgress()) + return + var/callShuttle = 1 for(var/thing in GLOB.shuttle_caller_list) From b1ca28ef3c49f7ad04f73b25c9c317f1b375111a Mon Sep 17 00:00:00 2001 From: oranges Date: Sat, 16 Dec 2017 11:59:47 +1300 Subject: [PATCH 22/94] Merge pull request #33513 from tgstation/Cyberboss-patch-2 ahelp chat command is silent on success --- code/modules/admin/chat_commands.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/admin/chat_commands.dm b/code/modules/admin/chat_commands.dm index 9a54d094e5..744455bb9a 100644 --- a/code/modules/admin/chat_commands.dm +++ b/code/modules/admin/chat_commands.dm @@ -47,7 +47,9 @@ target = AH.initiator_ckey else return "Ticket #[id] not found!" - return IrcPm(target, all_params.Join(" "), sender) + var/res = IrcPm(target, all_params.Join(" "), sender) + if(res != "Message Successful") + return res /datum/server_tools_command/namecheck name = "namecheck" From 1cd746ba67198459ba3d35a28add3c8e13790bd5 Mon Sep 17 00:00:00 2001 From: KomradeSpectre Date: Fri, 15 Dec 2017 18:12:43 -0500 Subject: [PATCH 24/94] Adds two new Integrated Circuit components: hsv2hex converter and rgb2hex converter. (#33433) * Added two new components, HSV to Hex RGB and RGB to Hex RGB, along with icons. * Added valid input ranges to the extended_desc of the new converter components. --- .../subtypes/converters.dm | 52 ++++++++++++++++++ .../obj/assemblies/electronic_components.dmi | Bin 21381 -> 21775 bytes 2 files changed, 52 insertions(+) diff --git a/code/modules/integrated_electronics/subtypes/converters.dm b/code/modules/integrated_electronics/subtypes/converters.dm index 272dbef071..e2046fd456 100644 --- a/code/modules/integrated_electronics/subtypes/converters.dm +++ b/code/modules/integrated_electronics/subtypes/converters.dm @@ -320,3 +320,55 @@ push_data() activate_pin(2) + +/obj/item/integrated_circuit/converter/hsv2hex + name = "hsv to hexadecimal" + desc = "This circuit can convert a HSV (Hue, Saturation, and Value) color to a Hexadecimal RGB color." + extended_desc = "The first pin controls tint (0-359), the second pin controls how intense the tint is (0-255), and the third controls how bright the tint is (0 for black, 127 for normal, 255 for white)." + icon_state = "hsv-hex" + inputs = list( + "hue" = IC_PINTYPE_NUMBER, + "saturation" = IC_PINTYPE_NUMBER, + "value" = IC_PINTYPE_NUMBER + ) + outputs = list("hexadecimal rgb" = IC_PINTYPE_COLOR) + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + +/obj/item/integrated_circuit/converter/hsv2hex/do_work() + var/result = null + pull_data() + var/hue = get_pin_data(IC_INPUT, 1) + var/saturation = get_pin_data(IC_INPUT, 2) + var/value = get_pin_data(IC_INPUT, 3) + if(isnum(hue)&&isnum(saturation)&&isnum(value)) + result = HSVtoRGB(hsv(AngleToHue(hue),saturation,value)) + + set_pin_data(IC_OUTPUT, 1, result) + push_data() + activate_pin(2) + +/obj/item/integrated_circuit/converter/rgb2hex + name = "rgb to hexadecimal" + desc = "This circuit can convert a RGB (Red, Green, Blue) color to a Hexadecimal RGB color." + extended_desc = "The first pin controls red amount, the second pin controls green amount, and the third controls blue amount. All go from 0-255." + icon_state = "rgb-hex" + inputs = list( + "red" = IC_PINTYPE_NUMBER, + "green" = IC_PINTYPE_NUMBER, + "blue" = IC_PINTYPE_NUMBER + ) + outputs = list("hexadecimal rgb" = IC_PINTYPE_COLOR) + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + +/obj/item/integrated_circuit/converter/rgb2hex/do_work() + var/result = null + pull_data() + var/red = get_pin_data(IC_INPUT, 1) + var/green = get_pin_data(IC_INPUT, 2) + var/blue = get_pin_data(IC_INPUT, 3) + if(isnum(red)&&isnum(green)&&isnum(blue)) + result = rgb(red,green,blue) + + set_pin_data(IC_OUTPUT, 1, result) + push_data() + activate_pin(2) diff --git a/icons/obj/assemblies/electronic_components.dmi b/icons/obj/assemblies/electronic_components.dmi index cc0367b682fad3367eca4d817488780b78d48409..1852079e7392745c0a3911bf1ea557f74b052e0d 100644 GIT binary patch literal 21775 zcmb5WcRZE<|37}&BXtOIC?gq#$d+-CG9n{HWt5OjvU3j6(6aY9_KL{NJS1fwdvm1h zy$;7&ze~Md@6YdhyM4aj@8|o6Zk+3RJ+JFLACKo_-0$~i;fA-gPBL;a0swGQM_bbv z04SP|f9Pq!PhS`oL$MxTExFRMgiWV#E7B}t$#a6-Z*vOpC zUT9M1dBSaK9@6LRRCOhrhP@!pgz-snOUJp9`K6C}><8_AUH8u`O4DEd@Puxb6Q>_O zeW{jCu%<2nPxPgcFy=p#EugaC(h2NLEkQH+R%am=tQJWfwN0v*MDqAV?n;#_(~MEm zV9R$6*Z4+H(4<94uR2|16cGEoslp|AZe@&LIMUsE%TOjYzj#ipO#0odA&+iExmESM z0`rez0<_Xu*_Y~@!?DebyP1ZOREM`l)^9iUPN5x6sWiw=E_@;$rq*&yw8vcY!6WvH zEUP|ZV=BJ5uuEgVK|S!RYe&j$Z(n#jWqpDP`kaYj_DQCFE%(7Q;73`l2;pu{hl~(x zn=_vV`&*Lhgn*QYkNm4DT4OQJ{S0&Q74^?13Z`ba;^J@5&p!>H|E=S*o}m3?bb|9q z6n^RTMMkyUStXI1XUgl_b}{-98a_3N9x)Qi3aOJgIedL-ZsW!~xVhVe=xFZ1U9$->`SrL}V@E;JlK2Dgx0~KseLXu5 z25$ug>FDv-)Vb$3_2TV2FQR!2^%=%B;&phf;~o|KI?s{U*M&7o)Iia{@qX5hZwscw zdGz^SJ%y~Y(5Ti#Se$-zb4TaYxsbPW&xuqhvUG(lW+icGOB$DD-h8nkL;Q{9 zZoS)OBk#HTS$(Y?5$o^f@Dznr*!`*kwA_AX-nixbl?|acM}rGJrxc=T+{FTLVzJqD zBbgVQ&Zm53-qF6kdm(~F*>%-n?XzMxr;_;9Ar_4b{`H7C+k>p@g&8hvo6yj6A{lcu z%@_GNK2@8X&YEsczzzy51NRdv-o(5nodL$iAfIp}K;o59ix#bv`~D zoewUy6_y-bC4ua1!czQaq(0Ly2|Tj#R=&y=IGNfq!V;vjs(n_R-lEk{{I#^4P=-tV z(%to@9HA?e-{YI*N?V*r}v4egZUpZE4xEC zVW=Y&^lj5Od5(Nx%o^q2H#;r^{9(-Jsc6+S==qbvC?c6Pw1pl37s8mMbvOYA{;)@< z|CdYQ?7-W$taKCgrF_&dLGyBX4UAZ_d1o$_9`*R{@DC*!K{tNz5899dk4m?59%Gf}L zD^a>3U_fku?!G(r3!=uj@Iql8>OHZEqRd=u1%K4lSHq=V@=3Cq(&Q3*EJrK_Cv-Oa zc2N`Df#-z={|+yI5$xhp!s>xW9%>5%G;$hCN4V`C!_{PX97JuLPvTBxiuc4~1auW=0yuNi$1kEvm(G!zl}buRf~DdBkr6D9cDY2ibf z?MaTSC$lc2=ux$6j-NvLx{!Gor|0XT!!=@^)7|iV`Sm9<8abGfX#M)R{U?fzj`6Lj zHPVOS%7DjJ!pI9T#MqNc7v7B5KwrDN>Z8MTtrjT)V0>_o!moW&{5R0t>W(5Vv zl8xPlSBYfiD4x|hOyE}*mfdYZE)pxE~=I= z!k5}Kp{`I)48~_r8^Im6V)~gbWiib3ET?{$IEabGtX7Gj+V}g4i3rb57Du)M*@3QK zn%^q5LgaRYX^2mVW&n?|cfHoo{L`g61qw44sS`rQBC}bV zVe8K?Ujc1;{tGdZz-bNojtfl3SEU%J`1r#j_5NQjMQXFXy*?uxT`2=j5vjely4Xme z}|9<{9IK&bvQyqny$#OL1s4|ekU(jI&-~Mf$X;8zpnfJ!a39AO&-kQTVRRmYP z-Q6Vs8$Z9XgGSxl=R41(HW`tpZEbC3)jt^*eyiK|W?qwbFnb9!qWx&!EnjeJK9{R^ zKB#BTO&C$kWN6PyPuwA%UtV8t+uHKb&!DntbfDFUK80oKTi>meQX32`Gq1)T7#lE5 zA}?kR-PRzP^8{~OE0~K3h*}h^F@3QlR6KvyQK9Hasg{6u(BTOhlo*xZmOjKaIzXPs z>0Z~aotPIw1tigY7^XRJ{?b1sXD!n=;t8V10l_TZ| zJzpgp6^)w4S8SmmdvK51qRYyj6D@lZ!^WzF?b+u}_d4K#tiL&Ry^)JoO;z68YlE-2 zL{^ceQuZt=&L3vGd%(M;0J#1LwT5rNWOyD1i1x%qtSLl^bh$WkOH=+~e@XF<{ zp<7eW)1;NyUbJW11Ok-r-gWJz^h7&iL&v3?b#t4-uiS)Ym~u?4z$!3`uKB||KaCIa zENKH3`=oE5VX>;mj32T7;Jrk(SM*HNM6;aA!w@l`)av&t@4n0F3rH1@8Y+JG+pqNLl)}oWGG#>T2P|-gtVu_IBVn<1ABA z4Az%N{s_N4gHiHiG`DCM=#dh+2GqSf=x({=xbEwAYtR{atAfdDp4q=_xrQgY0CJ74 z`Gz{5{@MvwTFu4PN)PPyq)kPb0hiY=C88VpeD$k>Y}LTogI%SR8-tf`OH=dJpa&V% zgs}6zZXAsUYa)j7nh})VBQPMC!PYXzg4QAJm)Xn8gX^QS0yg98L&G&JVBYAnVDUFq zb-VESd@8&q3Sl*`)3v!*D@!9>B_Ok-bS1(1_lKn$_Yplt*6gKr2c1BS6gTw z4Na6gZ^rnh&7OL#Jj{Q;gOi5g?z`_K=>vH;d{u&kJ}L!mb=j_+^L=a{#@+J5Jmgw* zm%IA`*=}E@)ODkZoLhV95z|gIxXc&2venkf*Pe!tlcZ7~bn!c@Tv$FSOMk&Sv4Wy6}*zm3z!M2((iOC*qEQ!i|L??Bt^Q+F=-s?1v= zp*BT}6rEqbXja_s)9_Io*r7WW{6N5+|0nCydp$@t>7Zb{WpIGk41UQ(+?a~Y62I&z4t+#V=F{apEXnh=o4$%&Ni!Qe{BJ@@17a= zwdD(|l=~ZPb&9#?z~IYY!ubClcK;35VSM>T0k>Q~C{?zLyj`0&7(gF~b)GSa%9EUN zn+16nvy=1aA{QixP$w%u5d%-oVMSbjb z>`wl=18_n7T46rhVSSvg;I`7312}MP{H3)W_iv>V^E2aM0fE%d$eHKlXTgX3XOXhrZ=F6BfEiBPf4=4L=Q_eih(8D`bX zX#Vt1-`#dAQn93*oV{tDZSHBqAQiJqnZ`r|1<{{hpi$GyxU|@=IWtQ zvrQza??$hWcE{SW4vkD%4GZU5_El~0(%%E^^9BpDM)AR{`6ep8=e|x8)E(&%hMF>D z*|#X;!lA~Rhiz|?M|BcfdzP=?wc8fGHqpf!pFwKZ&)8kOPPCKyXTsxfz1hcR*Y0O| zDUQ-Xp_5s1Ci9}_B}6`qX?+&*ygMqYXIA*3#TO6$GnenbPOu8-NdBPP%GBqzH%=XV z`2Zb#)?a9H^WK>Vshpn)RXoX#M5>u_WWfSV;#K>CmV89Pe;$my77NoI*F1meuwzH*08x5m71>YTgraik@kqAYI{th~_vPp>E|yQoBe?{UA{6PK0;qd(tZwc4_m z@BM9YQSd@n;(o-g#mnR8KOSb191<~fc;Re4KEjwN*;}vR$*66+m&Ak$x{xkK{}ESp z`A`oyGV>JJe3qhOJaZ~NXRQjkx}bcrc|FMJQQM|0(>clH=D`{CBRqwD@Oqd7uvfIV z&i-k&bEBxb#TR(Nnf-g3;0Aqs7q0X-<#L=Xtdr*Uu8ZThW!5%!D_yraTGxWh&WG3X z5E`0t%1G;erW+Pc0kP}8T~eB64Vwruo&pdM5IF4hZ4#J54y!iX^S)-KK?6(0d+P$v zG~Z!8cjdc81fu4*CQmuW3$|kuKC2LVDcBSlhk67%-OsmTn3RcogXWC^Rr>+!6IB|b zi^UGX*vlgLr=q97FqmMyY3%Up?P71me5Fgs_6?`sEQz+X?{$6WApo;V7~F>~rasNR z_M0eGRU^B{V~hz>S`j=nz_YDT-pah}0ZE{-H7D9&RaeYn zr=B1GnEbmV26!h_YtOkOQO;C85>!#yBzSU@Ry~<3@U~0g1OzHGsFMY&wjio&*TJ|V zty%2*QO|Hsa?Qnb8^69^bLL68&`5#;I`{bMaRz&FHhTGwQEP7`Kf=emro}Ea^7tuT z7%)y`Z@|QvKjQ!DZgrvxnt+TnyVftG?*pZGe0?=*1!s#hL|v2+5f0G8is2a?wZ^D* z@6y&p6$BvrN3X;9FNk#mIyWo+G=0DA6fF)|2Rh3jk(Dy5zAv56c?|sD!YIl*Itq*2AOVV|!`lLUE|T17Lu`u; zVCCB-3CLY>qi{AEWYg=s#KIp|31JF`HoIupVYTS_r6qxCMHejC&H5@Zno!pECaH_V z-#OhtSw1pIp+i0VJmxVyNKq$vh(Vbd? zmo9_tF7bk@3+4U;7ZmaET_iCb1d1vjRLcr5;QVQz^s-HIcqwhoyZxMru z8SpNdy~G-&`s57f5ALe7I#++iwlSI6XBcaloa?&Z{~iK^>_-*NJNzPm`<`3-hs0Zpi)K|406*rCGPf;0qyA-53m@~e3F7<)(G8a?g z3m)40q2BD?6-BQK!~VR^Td=iQx{|lva~${IEtlmqYuOsdxGf=J);Ql8?*W zPUd$RHQk<%otqX3F5?eGu6^Iv((>huD6kVb^Y#ertww8J;-^htefnAyZYqo38^k!l zmCU4FsH&&&vd3Q^$mt`D1xJWkeAsxQGUD7%%5*0Rnjuyqih-$iUPY>@01SD0uLY7= zOW=^8JCmBMe#H$s`yj%l4_h0{)Hg!cH$DBH+wDtB0P%N>!JJ)#*bq61m(028Hhrl_ zA`q9-26OgcjPTFV=s2sPbbTc{ug3> zK4FVYTpe%T{V)|)>u@kr06Y19vc0Vg1s#@oAsi?Fea3n*nWE0_SuhJ*PxDecu)h0V zH$y<@9;SKw*AEI{K5&D=FlfDBCq14#U2-q?h{6`lG= z^VWqX#jmCt4~rlVf35pI=y(;c71OqdSdd1xpzsG?pSQ8~Ik<#pj}=MNC?xmenJB5| z_r7k;vv)|Vo8j%02@=+y-o1anZ1g;1(gq?;FU49cxFMnsY>e}r4SM6bVBI#c9JI8y zMhz4nHDX%pt4DR1zauf#B@0zdx!#&^e&@r^H+AklwhCxj zL&jPFPgVuQP`og}xF=GbpytY(@fcMBDT_i0_EN=qUup&SC#w>RRgSc-1sAR0=$OwK zmh=GA?;diN;`7xh6;d!Dsi+vP#p6#ML;eZN*p1Qx|7J)Xg4Sdf+>V+jp}K0lPrj+(Efv{ z;Qt#a6huiw{Py~_a?>C3Pa4oW!v2Goo_<}9ZLB+Z)0S0MtXGX>9)L>%(d}!i5)KpK zI9E;AX~uWP zU(3Xko*z&p9*IIy1`RCX^BjbxE~ZH8g^HS~90WE#<*DA-OzIXPU=o)me0WBrzve%y_*=pRX2gz zd{Hc9J|2Vwqe=18GvtTA^jAkLB6{bnUH0(sVxhhuqTRb}W`{GM=?AEL)aGTFlzpBIBQkTN<4am`Yl5Setx5FliY(L=+D`KVV%==3YQHAd9Q`;mZ2fG zff?Z`LcP!WKz?4Hq(kpnmx)T9FV@(dw->rd$z`7V+#&2c<{L($t`bY7-m-YGzq{RpZVLA$>3%@5OiTFwvgO4mt~&I> z9+^xXsZ!YVOgejX2qxHUOw}p`V#R#cCvx*y!WsxTTYtjQDC&FFsMXsF2Xvl~&6!6y z$hoT*p5Z921oc@Q;92&`99Mw=9*UGw%Rbrx3q=qxi6@Y=QVSvQ;4-E)>saYv=|hG+ zI=g@Xt{)M+TE4#WA9!IOuD?Aac$Ez1h&WsJSfgr^`|ZtJKjZFLwIoS9c#v?5zZy4# z+_QRbkQBWZW}|OjZW%OyyS(idu(sI+r%S6ucQf+s0x2ZLaODEgIbfv7szD`*8@Kc_MKao0`nD1y-b= z8y^sE|9A&f2JAbXz4}z7A2|CIXYD`FUToFK<$zAtmjRTB-cO;>Ey0BQ&+l0I(||vA zSx^s77|^iODLOz{APLtyi!en|*%ane?{N;s>C(*8-1xC{9E^?=cq7B_X%kJ~fz94h;r#7gWNHieC4EY1WBGp(j~7?Bjr_xP zmd<{pWVvdST>8r!Xa>K`_S{>EhaJ&^oV>gdX%xx$=EDoYmrZLNRE2KezHJWne)c`d zFZ_2G1d}Ofw$Vw_KXwo+w~=4H&?>@1Fj?6b20<&gHR5@LS9j29N*oTosV!5rUaTjZ z9}o;+L>aSEtM~GlXBF@p7xC-j%p6vJ4<5pmyve9bShBUb#(T;tj^?)?OBgCrOKhmXWBlo=51R7U4@@!F*W4R90UPH`L=&5S@}q;hRoOPTmPhlj|uXfEH=P zEg~a8XJ)h}6&79uZAL$8>6<1)2AwZ__~V^louZ|BQ@jggj(9Z+NkfVv_JLm!un!yv znU^XN%53!>|F+P5ey%jZPS@S%o>@bwzaMivTpN3Ixt0VUQq`|>gt>X^pCp2Bruz%; zJ|io`>T6 z9oQbVal1E!9DiAM*5Lc`WDeBfi`aPy^rc^*>-lX4V&29G8@ySj@;a1g*wSd&AGtR` z5H?8vc2lA;_6^KQg)>Y|Kch36NU2kQ{@(Wr3L#-KIO z3HD}iQyZnUi5pe?vZZU&)xy1X$6Yx*+DV3DA_X<5nTK&z^0Q0VIiRSUd%T^v>l2{w zp$__eo>TIyRlu@fCcFY7xh|xDl5)A5uu;fsfqjJ|zYsLx&5+BuXfOTPUwz!0I{j}- zAF?-em@Tn*TmdWo2)FyT?3;s0!w|94zwJjJ!fUA17D*UlUH??lQ{IeorI`z0yyxhr zUYy5NIVZTeKffso;Kh$^<#_U|wliD7G8$wAmU0dskS+HAJaZz>MrhW*GZcKGTZq_- ze*AapWFZ;wiuuPCUzI$Lw*>!{PdCh6;$-`0iG$y1-WAS@YU~WGnBj4B1AqJpRQY zgmgf5(=P@6!-Qb<Tr_vcXi-O*ZCy!FAsRLTQR0=>@595O;bNS=N?n{S#xBocvO z@J$VOU7931$*a4)AN_B&ZoV29OZndSJMW-A4K7V_7PX@A!P@(5gbFtCAwpY(pMU-4 zb22Kg7g#S41fz+X)f%~nWKvEsh;kmiOjvV(wf3edm7tIC`0WtLGayCI)#)B8=K5ff zDu_WXcuh3f@3Ly#MIKL(7uF)VT<-;OdP&G}Q)grC&|Wf-Do`0Er5KaTe38NS1f7Jaw4Sb8PB zVpjf2${joJmtEN7N5wl*%8rAMwfNeQrM0wTLpUtbCv%<>WQv%hsl~^sb?N!TzPSMeQlrHG^8qbq=;zN@g7DIUjwCRW z3!0|GR$UNzVc>_BH*OcyuJ8WvyW*jd^%dZZ{+D4|?2bAd8%vC2Ec>oE!p6g7G&(rei4joNJrzy)S0{5`Xi#9qRhgqZYhM`4VuALbMN|CoZI!a zJC}_vE0u!?w~jP`J9h{~R!@g46wp0N;CDsgP@^?mrNb;cbZ$N zQf_RbMat#a7sW1k@cVCqBoawk4XUY+D(zlBC8MRnSI?A1F!TAPKtBM|Ed|)dO1kUe zR*SNssM)4&dt>H>yxAz}W_!-(;-fDw(&kqp|-FGhU4i?Ii^oP$YSDx+Vqhh zfV_dyR-zwG2Dk`s&40q%Z&#lE1-Fz z%Gt<@?~}wzHxXQakb)l}XBZde7}M4O7X~(&nx#5;yKLLuu#ZR`V7VsA1PLUB?-`(* zTt=bb!CKJWA8`v=ETr8Ws6y{sFZ+Ul>*P|+$$`DD9ooz^t&k$YR^qNf_CiDJ%#0Ni z1j4P(XP0Ux*=SFbD&(dgd7ijHp5Y<%P9bO=Hej}Ckh?1^h+74dSjZ$bG@kJJS&vl8 zYKtb6`YQoqYZokZK4tomoH}JUKtXnm%(IS{r(aK{aH0aC0EPmC!mDRux6@`ef#AsI zMbnq;<`3dpm^46ipS{MKHHRK`kM{AWKxvS%y>BI7+RoJHI{v~TIC$)o-?&9ECO~@< zBL>oH=aqI{7n%CP9k9|5-u1H9l85d1&v)8P(tDugOyEl-PeJjC2g(0nmofw2;rqIO-ZrZ|*$JX@_XS#9+a=CbYM0IqqD z_?C*(dYMe#`Wcq0ab@(VX2698!#|V;H>x0hL<&w*bIAcG6d`?Q5BZL!r(04`|U~x$I)-JOvt!)?Ri3+v~(q90WS+dpaVq4%m=`M&KzSK)t zbp;(fRmlPU;?L{bDf=g9Im1|6c$a19D@yKtm%M|e=-i~Lye-1U2JI<{)6HFoXjWD8 z?2>p==^!23QUbYEjR3*juLK{E1$sTmw-!_~viJNksr}CLC>m+CQ2P$R?jfXMyLKOh;pOnV zSE*v(clVe1Af(@Q3e1T}h)^xxe;Ouph3Oed(*g!Y>PQv(R`|xrjx+NXcD6EnH8B3D z2dt0Z3hd^UY4R-iEMkQ(ToqSgjOAQ}N3A_@^L0aLWVHfgbH$j8*fSzIijp--;642h zSVjKm3jV=$|Mw!H|AT($_);YO>pFfZ;xf+vqKpQ8cr%D%@oq-?3ZFXqg-@b5t)Wf5 zfX)Wt*3VMS;7;#qxF`l<@dl{JrB}1K^xat{-E>{@148FyHfL@jo{-F;AeZzc75U>O z{0Ky8$3c}&k5~Co`x0a$f*qLTrvcH|qh*8BcFde09b_?nh1f!jqRapx?&H9QbloaOh?ZyAPnSn$VbP^Tq1dh%k zSr~PJ)v^!o3juoY$w+t<-1J<(tZQ0U{L2;5k?dm<6JE7l4s*=+y|-qk_ua;3aUzqw6^A)YF)z?MaN; zGrH*No0cc4}wao0Gt<=T4sL;Hq^sZ#x#tv5xT? z)Ia(qOj79c9bBTyhMj|@sOfZhf=$FSL}f2>X!cri=qsK8ZI)WtF+!G`9=%^@T*yg` zk{eh7hx;RPm^^kDdh~BosOs;tbdBO8Su4@PB)vH+kmhTx+zO~N%r4%qeMJn&y zIt+(>cUT}B05=vI-7%_YCgt}`?aT7Kdp~w}ACBeNjWzgJG}-<*wH)$FhF8gFOVou=Py%zFpC}eJe5*&w; zK^RL?{ZYk@(ftqkjDMh`|0^qeS`-lSZ@u=%2ac9GmLt67U;nKXb?OCA9J@Y@xThs( zMyr6ZO11v+>ex>~+h(7>NM)jB(l~UR(q<|Hgc6xt)4m8${4-6&YD65xDJG_GIDeNV z^cTdB5^Qah>C;TdijU5&&e*8D+*54XJAJ4@i`-WWpb z-#cm=kWfBiKT(-77uE&eAd7E0(2jM&c|rz|cCZ7)k?mKevbg_T-TM&+wK)rmP+LZq zBk?ez_=W>5=MS`i;ZeofBFO;p7JpBP>NkrB(E{s5&WCl8sIlacUcjGP7ZFdKB7=9q zLWnRc+V=n45l?h2BctCOwSwB9XM()-z-NO0(Q?Al@oayt{ir)<3>HyZ!t>LoLjSWm z9~t((6)K=UK>lk5f%~Z2R*ZV!avra#=j-7=Rd3~`&r-+g#~joDOWgY3NFx8cyDpdk zV4ELcOp|#We2zCa$=o;8927nNI=AEYTKk_@Fba>O=tXiYj&A=mj#Qx834q0;#C|LQ z{DDX89-!^VcM7i}BkPmX^l0V9t8Sx2GIl(Xq7fe$%?Nu2*> zQyB3IDA<&Do8qho#Me;*zq$+%)yJ#s?g^7_R`@R)-kZWqK>7Y-Gz+Y78M(&ie=!2X z8hKkv?LStpSaT2kZ|qd#!^;Q0QcVkJ;XN(z)gn|PMmDH&V3Q;{1CdSpAVb-<7^S$N;&uQiz04y)}N#OFI%!Mh2QpspX2@4 z-*rK+hUYi1CH~_8znDKV#4>}hvFSs*znZ!K7d_m+!i@h$MHd;L1HzXU*qFmVf;a$t z0a*QCY~=e(vdBn zx|{$J2A&q~TWp1G=bZe8x>xH0<8!lg=;vLA2d}&?N(j&eg8z!*D!n^gT)?NHYKcJE zAKrDq>&)BhLDmT9E~taydqx?F$Ac2s4?kCZ7g%z4V%KY8uywuVFf-Pr=4LhH`PU1W z^Wz|818#TgITF%m*E-YC5QKBCL-!7!-`Oh6`YSe-J#5ELMokY*^pec=GXk+|EhHj7 z=F&|+^5}sL?81@VAE!GpMIMft$ZMM7R(xlbx8i7*Zcm%%USe+pbQjmu)NmZv*}gra z$3ARv162?eQW!AB)Yk(6mXeb6TCFRZER*l1txnelrG`!4ve^F73CPcUz5@Dng{J^< z@8+I^ADK5znh_YQ_bqi(jZQ^a(weQ`kq*^&cQ4(aAi3Dvg*ybxq2`|m@WX7Vr=$;% z>N+K=2eFZ`csd)CLvZOn3jP`=G~u{+AHZQnAhh;1$$c1&?sAVGw3sPax)w}&72L!j zyZdA}4j9;r55$NDE7dvy@Uw(2g zX?o!7R!PSv&06UY7915K4yqmt^51;Hr6uJziuGo2j&91ik2X)zh$^IDpgcU)Jf4mU zuoRe~|FsOr^jqt6#ZYUvtD)AU9VXR)virP!XF&~%A2ef4z~iW59qmCY)ag$1T$Pjk zePemyEtogKZ_Wy(s(^XZcsEbx2Ae1_^TVk1M>*EI;<$)YQe{4;Dgf9_HvgeTzqu*~L zPT)7kUK2=65(rwth)rZuQVU<4ZJbG(n(S5l?R(x2TG4%qr{2eJT}IXWx5sV zTOW;m16=Jqoq0Zlt`d|9>GSW~y>M}d6F9o}Uk*(9P&P5ghm2% z>t2YB_Hd7G-n%5xK4t8fZRdIo<`Y%(%ah!vxmoVYGY*cUZLvf@lV{-(l*BV<;qb$im`JgRHajG+J39nV(B=|QU zK0317*?GMa$nP~>69Y4(9a~v%*b{!cw$qM{xx~sdNO@R+`m(J!3ORi_CP6C}!y3NY zltu`lwE0-GJAf1`?-G~<&kj)BeS^CB<@1&Dt_z*WxOu%6-U5ap(P@rj?e?vy&fDOo z1*sJqCnrWwr$3y>JWeY1I@()4k{9MHK5v5XZR6it|IUhP<;UYE*6x(*m+M*a0BV>G znD*r6k0@6y0Jv%3`?H5X~9X8E1}2)I>3jp-^%KE6x5YhRA;fA(z3a?Jb3t97*^B;uSPgscEicG-O-@ca6NNrtk}<@_ktaBDL^6Dlz=cbj*MIXLwrgT0 zeCI!^w`~$Nj-tER_Q&oUc2UDZP?|z502tD~-!C~v zy^Qzwm3FtwjmP2K2UA`V@a5cux%9w|{%zF+DaM6gi@0YZ8G2bnkQu-ick&kWeD~d$ z3J0ySbTi?yzBoPZ2yrBSmf|-~Kn&#$Oi4)^9#{z?OM_ZTKlBo1okwiQBqA8^fYpVX zJ0u;OUbI)!b3(e`Va%mhDpal1hKgo|yJ-KwTRr!@7KWPKWKn|*UtkbDCQfn&g8(N* z8Rco4N5y|*+Wf(x01OcQb>fI(F*iuARuSBs7KEur-n> znh#kgcoY5q3ifOua9O{@o=(_Bl&ESKvJ&GBS0&|KWMk|EHQ4V!g?Zh(h3cK+iFX4@ zo`UHVj98_#CP+q8*2kuizogMx2HQ9(W9gnl-c6OL=>a{nU@6HCZ#9)ebC3ImA!9yW7G+z+AZaF55WW<673e2+|n{mD+|%0d!bWMkc4U z^=flAa%Nnc-SLZxg^BgPv6fk%J2)8}^1;R>ZW9CvTgfx82J;Q%Po0-Tj%a?n0UGWyB7&w025QW`O?|s6L1rKdE7Iq)i>FmX zy_re5Cy$wD`1t^1Qk}gd_X&>6 z@2u1ka7rmkjf7Va-cKnJcd8c&pQP#KcC^%=Vvut9Vdr6vQiZS=@^hjRO_r=rE5}Q% zK2ippwtEt=qCJjzP11$!Y%YXoZG1gQKjZ<$Tz&CQg@Kbjyi2;04-`Ea)wH<0@=z8; zoix9hV$v6=jR~P#rKTIb9;owVp&NQu!2XV3SN-0>P;oxAy{H^acp5 zfDli))dKCi5A9zj6>gGDHt0m~ci-*p-c9uMSQS+|HjY-L|I2Nvt!^x#iKC5|cDF$u zk8{_F4umxIEj@;Vq64(WqW%rB+sp>ZByGPmx=U~5wnUTj1dZ4Zn&nY|+;rsXv?kuWuJIYdMoYaq*d%&U}xjt)<%McssqlPWe8HdXsxuGnP zgX4}g>J_z(Ny*c82|CqC>Q_*Z-KnI=qRXrdMgC=WbnKX!K*nca?SFh=sFeEJ-SpI} z#$Fv|My{5Fmg+B<2cCg)miRWF!!>pEGh|34^XJ!19FF%9YeI&L(_gM%L&y=ae2Yv^ znVyBUXD&)_yK@T-@G1e|;g=t2G+WP<~O}=rx~l&8XF<)@G##DIL7^3{U@b zN*njV1B8v7+}s~=yC4gadEl4>3qnDE->5ngsu81U?$^;*^q3890#%mIDxhnq{kU{R zKhqNwm1kTvo^ECZ&wV(8P)M~kSVP51;{E5^q7Y ziv!4s`#F5ankLv}1a)WY<1{&W5fLT#(X7PySiMPgW9u_rwmnu04G2qm34^CDM3&H% zWV9P$-pe-&PF?Up6$mbO((VoLl$4bfoJJ7$M{U8p@^u>Is44UQDq4QJHPb&sEAQ$# z?aGH*>sQw>J|QPCJfzvBO{9Pi7nyd(7^o(hZ?XO~uxBe+d#{HOBD!U(3`ZAbpU}UJ zYcC>D2ml>>RL%RN))2s$Qqrav!2&IaV~BT&^I=^>=oqeCqyPc}13?8hQ}biv%Myvp zWcdmS{8Qr)Nqxj`!0*u{3(!1}d(-px>nlXCfYD4lN8F>kL7ZlP)mOvqH^(D_!C=qA zUtI$-5IgA+c~KNa_PGnv5)RULa*aRd{W2q!tQnl&YO^He9Irdv#s-i~nJOCeW_OD@ z8z!iJ+>p7@^2glIciOKRmzFfj*Zj7v#TZ;vv|^v@po&xt;zAOB3w!tEUQ=*fN?0RL zvmdeOX>Wf-)z9@Emog&VlODF)Lo>n~ADgTbYkuAU7wjlRb&2jMWA9|!6ZXG7?va@q zl)C6GlW40C8^O=WH`Y&_=VhvXMgGl==M(7zMDf7c!9Gl(Kf3 z5pHB4tNWx6y|q>5yhRn;M^D&)@AVLCXWVg{IH<&SpBVOEjF^uCX-U@ncSfIazPlo5sbmLTmE5`ouA_UcykQYY z`CWosW3j6$B-jZQUH?y-GzO9iXgtCyEdCd^V<_KJk06KpD&vVsrxL zy=*Jwm%%m-Fx-@N$&*gQZ(n`*5xb=tbOYMnfJ955x`H^BTDQbT6kmXRZ5eEq>V6cg zvxWdQMv>oENkfB4HFxOGV zPhO%p&nN%ZTv=4Z&l8*h-x9%ktdlvI!CZ@ELJ;Z0=@qf4@v`@C<9#Oi#7Pe{2CqG>U)h9c5>D&ij4 z)2idFZj7!tz~!7H+$SPDDpv7@N3LBK6$J2@_9}ROy7pl9MC}3RdMdBNYhlt6_7(E5 zSzWpRAUjFxuABVGrrrj90%>G7B{3*?!D}EfTVZ$7{rgf~T)R6;v9FR?6E5}BZwx%t z7ie#VRv|yTeIy_sg1vJTg^-6RKjCOP_;vvHEibE0-d?R=B6*SJn+_U1{lO(bUP1l; zDif|WVlNs{>50kE*R&c-A}wr#+I(F_!=q@DAQNyn@E$|6Wyu6!hy(AB!@sUX!ozh0 zci(zE5CmX_A6Yejwma{Q)=8y|%Cqj55jVCdzIluI({d!x8sCiE zxRT$KyFmZ_esO{{-K>RAf8?Sac&|*zps3bTc9+ou8&oZD{j7ieUl-$*O ztsOl@PR@nyk?@;$))v{{oa%POvGxG#K`<#P0L;(AVeQv_Fm~pMOZpk$(d7w_3Y~$E z7t2ivf5?;b{Phu1pZ+Ob!hN}@k4u-V|4ZqjeZpAm%nM5nlboA5e{Q`S8AROPl*7Ec z9CZv*&^w+6g}F_SuZ~&r7EemxBL8Yec;rJF=X7H#3Cb+#%o@o|RVF8c;Wb<-^jnI6 zD<6T~c!)&{aQj^z_3dQAb)3IEJvh-rkpDY?1UOlnU1E2xYv3aa-3+X~6!+%iZuO+w zAZq))d(M;a$_s?d6t&4J=~(#Dy%vMyS3c7mL(xTAjVXr5a-Znl-u{^?o82Hn6oN4Kils@skcmHNIf2<_4~s*l`BzOfokSKD16Hq>9&wp1jKj%GfZY)-Rie=~Lf>WOU%E zTURPjFHSh*anpR&Bo42+XSz;^Gt=@=+j=Wt4-x3_JByFZmyYLi5KIjec-7zKgt=KU z5V!1mLd}gN(-lecpTid(!SWQbL(%()vdu-T5PH%rRCc=HqRbUkNyn~SbFz;!5J0 zSsV`pX@Y=&2uKqI9s-F}Awq~CMWrc-phyiGQF;|gXb(jJpY$FOA4rjI5J7@Ik^X`p zhMv&731BFp&0%J~%&b{!zUHnZ_nx!vK70T7|F@TJr5#>)cfqV6vCOK?R`Hpu`SV#S zKYjEl>54D3WfFHg9vBZ@SCOh|la_+@*sAj}3s8+}yq1f%M>)pp7bc6r?T5;~=(eMm zbzy9rPZ(0~O-TelPX*G;U=8{x!JFb0?$ONA!nEky+V=j)_#t)xymd<7i5@*-%M_v% zqzZR{Ew`^Ve&fWJuzPvt;gZZS{_FmUue8x|%mZ99c+Dqi2m3VNjb;1YNfDxH&(zn? z2f;Eof^(udiYp(@_O6p$I{4B#8L<7f*7wUbUFA>Wr9-~;i%bZbAR{ezX9d5mf3u{% zDu!KlA1`2jV&yO5>rDWdeP?awI})#h#`m65Fa5;4;JVqs+HE~(exO|6lPm#kk2BQr z-JDF59)T^k{LSAH$GMgOved}P3wKD7%HWC$OvOWp>f(Yc9FXwV-+vg^QMA{EsZv1g zt|9)*4b!%^lRDM@QdX1XJ1g}AcbI|~ER^LfKr3)Q%+kAk8;AyQyY#Q(-c;OU>XVSE z1Z|%obo!qq>(jt7>YwYSec#x*lwh4fKN;h9vPF$%GANxvI8@zCP8)J+9Pdz(whv(G zw0bZ5vI+~i(Q0GI#l4pOiPX(@iRqYrtBSJCzrgW0Dj!1Bn;(jHu^~F?q^UYOte?8O z@3IHh_3M}f%n8YM!9TdIiwuf$geK0BUMUG_!ZI+5!9f#@af+C?4N_1zhQ)bxvbCb$ z{xj@s<6^JvP0i}k*#^9 z_^iHYB`yYg(KHCexQZq9PnK}x?KQ*OzT2*&W2p!sdTd2@%QztE2h*(c zjS4>7^sspCQv9ER{M6Vg9{4QR1ZFZVH8UVMcuF0)f3A6}6*d_w?qv`hT<>$ht34V4 z!>&Hx>VAP+Uf>J-O`{gyT7GY3PZf(lb4iw{2PsC$;>>H)orz{ys9qB66|yFCZ?>+1 z@AZ&^j-Foba8oqBZ!MjUddv^opLqUx%%gS=jfDDSu8Pqt+t9pSv|8S-N_LmK>|4X0 zl><4Cv6CsKl_1U!I^PafGWfm@0W@{<)qJecuP@!}ASGM<`Qxo3#h-6&gfOwSIu%zE z&1C7`k_u@F)B;u_a!2ed(0^9mF|WHMR%IIWTfDSlG`S*-cgv)0DWxiQhOb2TgH>|E z$Bkjn8~k93!}|2P%v3=9MVVOj_7VuzrmK`ktWc>ik3b+;AlnZ| z?%&bQM*2X6e0^;};1eZ=vR16?oN>ofkPee-SLS7XLqRQcjlskPJ$mE#ca63}5powV9%?GLN5>Lyy4X`9!2whFq8Dx> ztz+-!@QH5yMdmfnP5R_!P``PlL!bBWN;dGp?|Xh#J6U`>B!7i71TNbSP;gVWiU#KW z3%t}UVY{h?;>fwm2C)!_pc2#4^Jiy-qFh|VBWz!7uzcYG=mhXbr%u6VQi$?lUm9{kb)rXo>Rj+XE}KUf0?HV{Z#qfblKw>sS1jruL|`$xb#h;$v(wcVO2 zs`;rPr<9j|@p^6#M&@To?iXHV^iH;bI`v4nN)-6k3&H~P*yr}AMaZ3H%EVe%I!gpy zx_1$q$a+RCE>O$}2;$~;O2TBsuW`VJGPRpm6KwYXr~w4!z%Ud#=V_f0Y3WYCKA;_7 z-q=kRnMRnoc<4ju%%vy3+cRDCsX$7kl;? zx;KQ>S@X!F`B2=?v#kgvbtFm@J`??=<^A^pA}C&~JYSGunW*H^J2INtAAD77Bdnk_ zTh>-Giy*t2?@ohiP?E2jw%$ET&y#u$S=QGuNj)vUk!EX%|D@alii30&G`iDo_qVObT&X)oHeTA2inkT zp!rK}%S(Zt`ZaA|c0?Gz(1dn0UVT2ZvVTLcPss=fLlH?1HCZw%(N@dmc^f=c*4OX3 zVs9lE>p|m3gh2b+^ZRF}nnB5p_6^K~46Y=dTgF<8$)Yn_WL4Vyu}zwmn9pffgJ+ow zq2Xx+;?Qd6R-YK>RO~GR7(Mf<6J=UErORytV8M6pHhy_M@%qJbAx9eW%?qmcBvGm_ zi+cGpP%v^nrcaXYmu;&D*xeP{K<;tZzPWYL`<5Kl9QKtEaiMzYj2rZ_o_#F?+izRc zdHT3bO-taCP3r^JCa`%Q>`tWIpg36}sgmH>g%VW3h?>UJ}hrtxZg)5!xh9;a*rUYV<@}h@C*)j3(h%m>f__2By(QewXNhJHjWABnj$`=Pc zubws3iUWtdebC?|OIjKBuHitY0sW|MyL?B)8!xP3n+p}`xHe!#+?lIy=2nK*Np#=^ z=QX*n3AyZ=c|=(6CQ#$(M)K7bF`MEsegg$%huG^>+lyNynA48msaz}E!&>yNKrSl! zPLFrcJ#P83o*XZfcV^q0KhRGKcx3?4hgZ>gxWA(tF?>@msa4} zQW&aI!>SJXcs7WwRJdk=a@FvrNVB~^)F;H-@xU_$DsVU~fg_@B$E>+Ci-iXjnedYjV3huI9>bJy0$N01yp+DXk!OslNSQA0;u zt~#{Ne-NQKtZqQoZ~Y^_*Zdy7>eyb-ed{M^vc5ErD~dnDFAI(oio zYtr;c{1jgE{L@{+L(LhC(I}6MQe1rBuY1Qe=hEAqPu5@g-rDpaSL%b8(Rs9C;LtJ) zso_0=%p6A>NWrt{aW6r2ZLE)Pt3j{(Zoz#(_=V&4A2)5!W-F%m6VY}*_G0ABs;u)P zJe{(^umgDoh1GW17tVfwj1_T;@8~e2?$W^>Q2bY0Gage}0)m2!H^|m{B$6a5>1hUU zbdu)-#DlN{pT7iKr`Vdauqd^FhTSFV5X5fWvy} z%Q&e1hEoM&?`Q473je?Rn2JK&ai^}L!Cp9QakQ|TY5aSJ~IqO^GoR2*GWX5mk{v%bP$uKZx%&`gT+!96`sOD+TG^JkWci+i<9q^EpX4s-= z8Kz$M>Qn^@G8UCLrAOp}KS1UO#x?6x-40qqNIa~wb#dcQzN=N0Gr7!;lGY(y0&(Qf zBwrYPB`rZqY<~K8V4fv6KUV3El(q<>jVBn|NnBQO^EN?}pmJ)!4kyPpi-FvEs>@s8 z2nu;4`NLu!1IqTy_v44fH76$c|N0e@4y3}1ujDCMUo!-QP9bKOEQ~5HI!FBjl*vp^Txc;b{^P11|d_EuRe!o9XxXvTB^R!oJ0RT9!p|0{607zQS z{!vqcM{e=ex&r{&dtbe$9xB%EmTva1JnUVZ0pN9dV#;^tMH#xc13#azN*W5-#Z|BI zC96`s=d>|X%H|uj;dyxF!GqzNxqH8yQ#grtG_fo;nhIRjx zNJZVR`;k>ee5_Rb=_OeMb3vbq>{gEL>kf)?d932hcZ@bJ8QnJwNcaXbw2-=*yV9(b z>Bg@AG;q+NOb3!`8pP84Q2E_{(_Y4_oUEhiQm|UmgX2W1|b(yy1=0V!U27NdB z2hN^iW7u6>Mnz5EE0AeB@Y2e?k6cuH8O2it{uy;y16O@tJ5=|XV)yU3i&e!66l|f0Yx)f@ z4YvhsT_=PLw!$UnQDYOwKJQo}Jzst-h4Oh_j%V;nB@MeB6*4e8J&-o*nCP_S)s+Y`aU35)+?%TGsQqWBTHbPn;>1FV5uK?YAaN zckjM z=fjTz0yH$aYwBGJn)^3xx~~s#>S)nSC?{z^%oD8&7q7A85B8vRQXS&niEUN3N+%T`D zb|7Nj@f4OOlLj^UmM~C#@G*bl{PN8me#+y5z9f!Uyys@09vw{ZsnHkTd*ZKpJA`{F z_T7pGC(rB2w*%vrt|>RYo_Q4V1gjsQa6dYCRNp^V@_CN5rSr;0yd%S2=VB?X)=N5v zVzzJ)eK$tQb}!1Y<=Ih}t4bfwU5eOL&8zeWI!e`fnKu#f0v``AxswWug@_3x{YY`Q zma0#VdaVP=IbbMR*&CGf$aurfty9D)Rh=vs{DQeGmPg@2=x!mDRUJTBvzfI~Z z66mBjSbX`Ty)h@Z{f(R{XZC&{xRte+fq{)a!GEs1dsiSQr=qB0<8UR~H_Lzaq)$_I zSc*ZJn%ihG+KL4M{uN6?#>E{RquC0mQ*-miivt&xsekg)A%Yo{C20Q3DHU2oh_X`j z7p|k>tlQAo_gmZAa18!I0@Ff+tzJNm){~seZ(x|=H37HSCj7cK66s9&RFL^-hfRNX zUB{GXyOm;RZgXAd7(5Vt7&Z5n8M!AC(jkK4EbX^LxMON$H}Y*yMRNqUC6o3e=ZEcsAcbDh0BsU z2S5SlhIijwyy^ywMUxlxhUZ!d^(5swf@^-*hl8OJ*#=KojY+zfB_6zg2t?5B{kX0_ zS1TFnuK>YBGmJu5j(U#$xQES;)jV({stMdZgxOg$prxye+Skvo#5O)QHulG~Gpu2Z zU=-)v&}Kr_KM+r?=oRYj6K{s{h1HBHB_W-e?9RqIDb;Rp_nX;zqziPt>Jm_Yt97b!0^cY znCt2UtR+C_jUZC;^rs!=r6Ka&6^}=u+t~1)-Q#Bo=1abIqXeYjGW9Lm-&fX`U9Y|P zm8-~(KHHu!VSxTi{S42`s?W&~hQorBgPubF8HV*so`d(`)i^o&7()KBG*8JhMyUqq znvymrqc8*`xj>&pQcp+W&GVIRumCE$mb~e5U&T7>h$&8PsFY&kZI?sfs8ZKA@pYEP zllqI{Tu|=3Tc6p1K01p9QVYj!c*w8ej~fDyNL;NEN_bZ#qzRNem{%hYO9GlEw>{r4 zjs+UfVypi57W+RK^M9O*(P5^gm=%c2yF#g`tS*Q`9nK|A_cxjiMU!=(nfx(b zV0z*2-ze0T*t4uI-HZytuk?0{XP>YQAZ~JWp0907(8wz@nl4$2P9W)aB>iaKY|h)% z)Wpih_L`RFC_fNm3t>sYhw&OV9jZlwh_c^a3lX3YvEpM-PcO;T#n$pB3M^ z#0-*}ckrmJ4{~Yo{3IUr@XM=1(s(y~#myk|rjsqDaud;W*A2g1rNDA$4G1%JS-zkJ zIvh}SU$1K^vBwMuEY754^#L>Gwg}hc@9#s-=@>!&#I8H@AP|`7{-EoP;M_T;5z&`?_+Nc|l)0hwax9r{M3bfnGp6U1(k7R>&xhO74Q9 z@&3GFN5%U+>;(j>nf1NsiH|Brplu-NImfUO_LT!X?^8$yZj9flyr&x`M_WzB)zVd~ ziJTDmUGI3EJekb2(wcGM8#bc^s*4Mh zP%P_KQ&HuW1+d4RO_G{b_T3?E9TqV;!vd$;7DT4IH){fZ!72T?JZu7UNI%}8{?QfO z;mH`JxJA;n7rmK})F~xzA}5Urmj_Omg{Um!fxD4Pf{LH5B^4{_d?DF%twlJkxbfZT z^ha@`_nO?oFvvP|UkXzwbdQVG7Wsb4ilul}} z>aJcv*Da2Cv?%Ysr~eq6kv4oZSr9K0WOzq~({a?8-t~8AAelujR}3#Ie*0YmH($RDw^*T@&ASwZ*6>u@@FZy^YjQwJ> z7$Ls;^?KkIc0;OSL8g0tMXCv9UnB9O?#4!9?go@?u|oQwfu9|GBNpg`QRUKiH=%!i z(e4lon|mRJ%Bm}Hohobc*TBs9quj2yb=c+c;*UpFO$b~+>ToD8BGJfaz#+|V8?I4G z#un6Qbzb@A&jUdnERiAOMKzMncF?Ws8NI77+4(oIBSc$oDc{T6-Y`z-m7xJIma;V` zi$7ab5e?`XOv{&jrD(j>YsO8bjyib1k|0X+cNc9uTkwn4L%^2t)*s#K;qw#AVN<)Z zK)1p-?k_NRX1kpf+>?jBp7SOw8f9s|JdtS&9@LC_RM{_!ExPE$hYkU26O$YxQ9JI2 zs~YG4s+R0nX~-c>z5QWlyCcLx1LK2`h$c)^Hdt}*-8u)l;;L(n7d7K8Z4ebb+~AXmdKj&Lh`qnx`ZiqS~=>x7K=Ggt48kBC#}@B~k|0b81c(B#b$FZtBO z@+sSr$NyYK5|j7#h2hXii+)Qc{YG zi_c@4yCk~y{BAS|!VPYw&1~&XR7U%1x%b;NN+qeH4g{9zGf29dS<)Qgqdi1 z7hi8PNz9#KO!VqhPG{sQlA*#8(b2|<>#x63>zPHfycaYiF!eu>d3oQ;+qXadmCO~^Q-7!Z8RPAL@52m$Niswi+`U<>} zSdgI0KUtJ2+if$J_o{PjQ4(~ZXM2#)J-1G;EPRURa<{UQJPm)EBx3Z2?_tvXr)0B= z{I*}>WJgy6ZqsBB<11y61TL*n6EKMi9NorM7Kg=lO^VGOfr@q%g!k$tc3%zDk%Feu(0M(pOxh8b_^Fa0l zUWU;LesbSvI%Xk)Y=D0djJVzdh4r&ki+0F20Tf^WeHLBodYHyOZkCjX>w7ci1r!mP zuQl~Wgmoiz8REj#kzMZdsXtvt;r+I3kJzkTc}hIXZGqwqzcr~@cTUrYh=`|upYX`t zT44Poh`MadR~)awu|INnG0wUd(}@;oyPhlJoOg?iPKx%o(ZZx*^*2)f$U{-kFA)ECTvcgV#PKpYxfNPyhj+|${UW`XIf5rq~T zNEj340I*hkw9VtM5`l6(lGxZfN@of5>&b%1a5}i;-qEnO z<@V&a(M@)jMqRt*^kcfgSqkf{M?B4Giq__aI@NPgy%k+<(!&^+4&jes%@-pyk&av6 z>4D~xrd^r=KuaaMv3RUgpos3g@xsNGwV_-9;ZR!Fk$T}_8z6{%c~F7(vPx1-GDcy* z1TZ4&fx>6uuU0>I-)`mN;{~)y#Z#A3pLZcat9*9S_X~4bx{;mS{^gd|*Y*d{yg5yQ zD8jhSF_wFWV5bOEO;IIwCkiJjf8;u*m98lBalCkfu?2W<1a7TBhYa7`%*er42)7nv zti`-58BToXw`0_c#D!0N4PV5DP$PYA{I)THDgSz#W1qSu!SIX0Q*Xq*(=D+1$upC8 z$5C5GD5hWU%4rhvC~IO1eY1wfRH59wg1vx7(R!xtarkW?qer9o;5;@INt|A#t8KZB z5{8DGzxN;4XY=1wk^hl+{-**{_sBf5;1qG-_8s}6 zqNyM=&`qAwFi53DYT3U#tO0A)9`M{vXA%d^VP?&rLX6zORTt zTE-CtdSY)GT0K&Ej>@2C8#nXW@LnI~Z*byhLzLS*-Ft4-1e?K+hUa==7da>u+5E?e z#kxTj!j&~h6yY^L_GEW#vnfA|P=(d-7$<)gy1&2w)N3+P*bvj-I-S1QevKhV#Ch)A z<0KnfFm-RWR2)pb<-lC|YXS*JHrw>2jwh$VFxHrJA#XAVRzKmhjK2>|ar;RJ^y|TZ@Y9>G#(9$4ezR; z`eKZ~XT75ncjUkPEhn0XVSA=wj8+bYS&E~D^;e9qPdvkSa!$n(VE6pu->k>^!#l>6PlE_)dQQ*irvDv!uuw zUbfOTCV=93?iX{O$ztTiGFDV=`Vpt!*3AGs=9m_cLodY}9LD1VFzed!$fBz@Y+(L8 zNl1&|nH!?~^TqpFAEb~*&j6rHyW})od(-1GYdd@ORoA<@3GH+SHrbEW^f`o0Y~-p) zpSl)$T>&oiQ7W$PQhfZU)_z(G=unb)khYh;=<{E8WBb(3*RvgRxt#9r9OT^w#ud`Z z736o%tu?H>?BU)oo?^bs9dXb9xNfo7fA!B=nZpusF4TUH~B&Bt3lh#zSOVIk6!v+QpA~eF((W50Vej&R5iONrJ8E)OKB~$H|%ip zDfTB4upoDGQhaiNF1!zi0Wz>7zPl`h zyeBdg9g(i<>Sq)%23tCY=0||LT!M~gt>o3!$<*CDP-9o>?s8ZB&{vKQ9!ECXkTZ5`>V6ZXEhz%MUbaL*!PC4g}>TqBp*Mkf}ai{ zJ14aXA(s&B=zF$^d)~xdEeH-V(F5OivmkuF!n~M7!g6G>GC*TwSyuW;-wE%qX z=5f5XLU{6ig$~gcj(O53Eydd>=7&yehuXekh&B)K6iSAqIK3SS73wSZoQ{SPWXy0s zUkhqqB_Qz|1|DK{GNTgY`w$;A9}bR`-^AA3lYYK4fwvehqwH{6dNH^gVV~L>-_35h zTjmayR1yj;)bDI8Jgg9?x%2PKcr=XXTJ{$^Nq|qXyW~1P+d~?e3B;z4+@E1BPYHK| zf*#`$)5~xdJN0+){&@?Lo~(arg|CK$Ww#06@tKEZjg)Cf5B8*h*VZydDnwf-)(F=C zhth)w)1-(M^kqMg*powlyjLOJtHUHMR@@{U&BJIkf96>C_g&>R89dmxo>MB>yctp9 z_(anp&mNqseY1Plu-prC*TcgD07h{`kOldvO&RJx12dk6BMxkY6Tn06DCQM0{rmU) zr!XVJ2?6C2>z*J$JBi3o=|h0~dhC!PBLMMIcVzM9+oMIQA}pYa1rJ2xKFiSSjDDtL zmv)ZWR(T!UFK%tmnqXo%#XW@$-H3u6F7JhpEbQ!4kt05TzAkq(crOJ*PbA@>mk$O% z&*NmaNbpadtgWqe<-rG3S)Omq`bjq6G|=qUaoz#=G*;NrE=jfo?c5O>U3E`zx%UI^Os7 z(fx#MFZLkUR{#;gLgaU!Fmq@M)rJ1%r~qagGUCR}7XZ-aOjv{;Y_%m#MME#KWvg$I zNHiOG5T)eQ#CrN_6doye(DHh7UIyLN(LKU8|WOUUzkv*2wLb8nd zA|$K9r>PlJ?eJWoXw5MI$x@MOVSN(tOB-JKOZT*)Z&TW_oRcF2Ic4HPP}j-^!O#>% zg>G$?R&6F`{Qe$2{mWBJy#Hc5Uo|~HH!t;1R9c~`evN-M|5HuU_hx2#l0+zB5!zw) zHsl@aSu~RH`b4N~HF2(T zK*9KU=5x7R7IKi&$1@y-eqmK{wk(!Nx#2Ree20b}N7Ibu=(n4^Q;ptM=*3M!c;d8jMur*OR{>>pdQ-$H+U^QxaFKrG- zIcDZ}qd!wVZ9MQp)-v?%~SPn$x5>a|t z(`k<^*xG`apH7ngT|0YDOj1%(28NTleB)X0VrO)2Lxb$-oS4@oT?K>tG<=)H+xS^2 zGoR&4>37^ISF_*>vqZv4=Z51FST%H>4Xq#xc4f@en`3fnDg;w7mqrQn5LeP%_*cqW z4d%jo71yJq$JGKk#~*hbibatD%`kEL0BRZ62P4uuy%c6Q!Cf~8R#&YQE#nFKPt~~i zIn}O#B?{~hGed_4QdZjO^q~VLa$nj8%E0Vzg~huqbuo$9==3k8*jrvC=m7hTYk&|bY?j@&7>Dx}`co6DHf?3+)9$_9a8 z+LqZl!L|-;d+D|AWjDN74FZy4T9ZH4OhmpN1AvFgqV3>V!mN9ep1*i;&5hD-hm7e7 za94jO6P==|t!?=;jxR;h_QGY6rwk61OPzDGv(9KJ`lt4vy46gkjjYVf4gn}ygS&^m z#S^{Smli5%+ix-3=<}6wo{Mm{NDgDA?Pt{i_8tv(`vwDx$txvCnCvYgk`_fY*CCB0 z{l?Pr{wybOfTCH>G8I6@fgr+6>w6MWw0SRz{;nzK?IZ4N5EIRfdhCgLZ>q{Xa?Ndb zxoBGT+X3OL$wTxuZh;=&0&hGZJAJuc_K~g?!xToVAc4=semvJ14XKf6QGNfCs+~8m zvQ?{s=2ztU`g(m?d_G$e5!~A{MBJe(YRhP$2P!Wg8AL_@r+%|Eeg*mGop8C=_A?XL z_Df%}K{(=@Kf(Y;Nb!@hFK)kc|BrUZ*VT_$9v0Cvz|$!;hwe&Q383?NO)Gs@IH*M> zEnh{eEdz$EdNX|6CSf&ZZ~vIQ&ZDoqQY9n zZAslNBsD!C6P(haT($k*PqY`ng6M^iVj2=OdbMcI_RTV66dY3kzsQ6zNg^5|F^LJw zVtv;amVU;+CSvEJ!IJ3RI+^>aSnWJ%BYGw67fwJs^T$K6ri3u4qx>3`xmNawmMi5g zwb{g#I=|hC=f@<3#qW0aTKZ770bPZ^zmyj&n2tbH*S*0lbb_zuU@;+al-;xUKRFiA z)r;g;^gHy9>pE(1qAKf^+)+?8yn2Ik+eKiEe6MW*+@h_jmQH{0tkmnXOAH;YZ#bTJ(3 z-m5cnNS3+iPrbWdz}hsCrO8IhyJLpRuG68=2XywTQr~_4I>V{7`8e8^<0Rrc;nH%- z=e!^(adhHQh#5~feNHqwra}`b_@)yr_!oS-gDUC8AHWkT*GC+8+&K4T=d_FH`*(~^ zP;pQHLdSc+=p&`0$( zQ+lNAPVK#$GcL_&n?C}rvNw~VpZR431Rn9BH;?=lR*9>q!q6Q1XW7cX>Ds+7cZ3wK zl3>{UpLjaIpzHS~c&-+=H5X*I-l10rn{%2B_RPXCqfE=SYl(Oy;TG&Lke+vkDxxR$ z!!YuxZ;lWdMI4mTpn5J3CHM5H;m59Jx6--mi4XSbFH&egDnik=6Oa?4*eifJ9DkMB zn&Fl4D_hktjY@iv*~7gAC7!*ME%TJ+6jmqg6)u!@{)hx8S81 z_q+Wl^A^NVZ`19S;<{_|w| z0~)8B&u{ne-;}Cb$2%9yX_9u9$we(1a(41W%jJwiE_PU14ifOqUi(H?$s_v$vzw1&HGD!NVWSvnjCY4DXU}b zH|PeVj6R>;qrE+4D+jfcGv7%^Njc=<$8U%H9Ay9raKw!ie4<*Y)Fkx{p1666kMxcEN;m@NrRs~iyZ`uS=B-Yawn z##mFD?QLy>P1O$$XFug%=gBNotPGXUv8a#OUO79Ul`Y#E|Ln3Tz@PuauLLXch;%Kz zNj0nx`-kz)RPzQbz1nGD`;q#q6q5TE{{AL&1Wnykt<@DF9;@7LMC22|CSOmi(uP4)sGBU{f2&a?coXh%6 zD^Y89rNltN>7)q<{BIr)z%eON)R*gxF{NPpwgICTzcJ&OaI#=B$3&3M7B3rOgX0v4 zsh$a3DWtMW=C((okz=6|V;hA$!C)wYsUU*A{hd&BaR9gQRP%o-j&(@+ogEdRT*7 z>B=t~Vc+yB2|lVwCAoc1o~ww?Ov_ONo57aNWG!xlWOwelnolDkV%Bq2ij2@{_w*^w_r0m6D&#Vqka{Z&co$({b(SHs)WEb+YxRteuth?p4N{m}&O z=iuxiU+LhKYQnRuDRu0_bv%b|F!Fb2$C6<15X=Qc1zB{sAt1y|TOW4Gtn4E5x>pIc zYj%zA#$uvU zoyns-I%g8~yg4?6b)0NcTao^kV(XplTh&CgxjaO14`7y7A}inJ*ZGhO$xtxTib0(C zGVFLc&@xF~DWAQq{!6T9Gt_{SqUiGZ6ESE=(cuL@Kfjw25--RDgI$xpAEjP;6<2#p z>D^Hp(a&#B)_s62y>2zaQ^D@*L)@K@&Qnl3CMzAcPB;A?$5JXLYX<5AXhZ@@YM7%} z`~*3TI2rkdOAs%nDF(wV!(ruueHIu$1r*zm|USuqPSJ)3!M#vP;yUr z?I!rDy#{NUw~Dhyjr^4#O`V=gpgveR0gvZvG1&bitz@!H@GO~S`~nySi2 zd?Kx4;(+mYZ`NA{=6X)VZd+IBK+5wi%KcDDXX$bxpPJ2=m*C+zZjHM zbaPoU+trzL1S)H+x!LZ^DZ2A!8=A-80aShn>abatXN3w(nct!=coV?zXc}g|DgVRg z^>ds}0GSNsLhxSb-Se%En@Kl&69W(jSYUezjBEGZ9qLRbywDs#b*7&D7y(Xz0l-x+iL%Y~9dNceil%c7`jrw(;xy<+s@W z52Zr?Ey#N&FydzLyk~`pKRkSF2S%MYAfcUQ7w;`_0h5dU0LmNGsV|FWL$?X)Y!+Zn zWIfBA1jDQsm{%Ec=tt()Xs}B2RX?dya*gwLDS#@#^XOi=z^`|Y@!W&rK@8V%?cV*v z^kM}G3?9ov(PE$;xDICOm_?PpN*YxIFHIyIUI-LM6=6Wn){Osf4Xj0-Kjpp22CrIA zUUpGQmB=o}@>nCh=K{PF%G7KurVx72Wb>T^+nIrFvDvcA`W*3!U%!OqJW~PxpZ;nx zBBx=ac+|N`&jElHjlw}}bTHo63iRM^U)&>YH3tWllN)eGC+^sXd%L?1G7odu81P>) ztHC$GrTQ7b9L2SEHbPa5zNg+;)%kbNu9lWO6|faZRI+4#p#WCk*n3nU8Tj+c%b_(F zk>s8cNJ`-AUtNli(jOm#IYC$hTMXefKDM6>*UHkI4F&OtU;ShtE{R!ZS)QtdH8rEZ zb|%yZIbW2ck0PAnKVkuwhV9#*Wud?scF_$Y5d7A8x{@M9u;>wflC^#;HbrmchkcLQ zHA0%faX-v4snX#J;+XjTN{|7FnsRQ?LJ|qsPn3{fSEu1b{JSpvb1+te^=-)*h_tOm zSHPVd)5f!8fT|e+BE`p*Ra}oM(9Ye$|#AL?%p43O1`j(WE%~TOd#o6K_%}j1It}+7*7?JWl}cps$&O`E4X;1t6}!O*F4wK(T1|?O`J@va+&YUFH<* z3ALbwo+;zX>Hpu8yZ<94%=;LKID8ull1*pZSL_#L-I)QD&?pS$Yc%kk0}q`Y59NDI zS^G*U!9^|f%oM=2ZM!H$ruSDpLvAshU0zj7?i5tZL-Nnb_2>;y7juD*P6h32wKh-- zH||KzA~<5}h-!pLb&^*Dnewsc6ruQ!__^-WgW)VE=n1h4$#@-bo^8D2MzW^;mDs~( z4#QM#uM)C+p^}Q2Hmnc%19%dCn)qbbmNLZ#8m+iKP?3d&;u)X+Uq7<85Af(cKBUEQOu|Sq=iBS-5gmNbqKzj(RD5Bkexum9r02SC` z0WHgI*<^`S@+Go+mN*PHQ{sC55Lg8#n~Qh|JyMjmh`d90;XK3h_7{jT9-cPNKIsGiB` zz&T9)Uq_#ZCy@c!Bxm&vta&@CA@y}e_sO+TZA0xCuk3Bhj;`QVQmD+jsLPtm&b{@*8lmEIZ`aV z9t(hPMp8s6f-_!~g@rH8se41Xz){w;fJ=N73XV1!$KDI9)9fIQ$C1St!E%bR8T52`x^&b9R}0IoOO%cz!X z3U)E$j&5_~D-!XWmkf2mZAhp({f7Z$LbBIB(~A_T8D4JF05V=WU6!+#vnLzcH4vSm z4>KM!Its0aWZx~?08uR<+e9??%((B#v4bSyx{EUu@E9n>s2IETgA#z5}R z8Nd>u87wkx`h)COt6nBZEytOS8KKl(l5()JhJCrZfScmQTL0ZK52uOo&V(M2&jO(w z!5~h_*A!W_-CW{B`PZKZMLQxnCbUXQwxWNN*V_(oZcWvQl~$0Sz#ZsON;&4JGjD-x z!JBiGIB#tFG*MY57x_N^Q1Bse{azv+9pb|=3Wa)MW%VO<%-GMe4Y{pcl#^5&Z6jVXM89yuY4zMvllXrMt8HHRYo5n5o={9qI z=t~15e-5+_OMHrD1?Im~L4NnCr6WOksXk_;*J5~T%Au(mnr39Q#g^UYQa2s;lb)62 zq*vZnM^AXbRCOt88DPEC3{K|Dq1U%prID5jz38?xpe@~}3U$(mv$>P8e7+5bJ}fz& z0c9HK!&T#~_HVc|gL2spKRE8%ngH{Pi+HvfB6!o%tfWwqZC1dj?+-R|a5ev--f-6@yiNTc*&T6>pnNRE12?3q9nNO9SQXqo>~|(rv-H@m2Y>useZk z?q)}LZjKt=5W%9h+v+_xH!uN-V@g$YIw(dN&}M99$e5OENR=QF?>Y=7QiioTpqvdg zW)PE^cO{SWc`-m=?{H?|DEWK}&KYUCTn=?Kt8~;2if*F2gaPWXxMs zt+skLC?;EmqeDMeTSSZF3QJy@eAj{674k}-Lz^YHg{jxM%1A3>vNTVPSX)mP3Gx%}M#;(QI?-Sq8f4cK&0@$)-&cB^~9qoS?ujtfaZ>{&JtVG1QuTA$A zUY;Il>vQkL0Pf|R>?S(KBN1w#j zfpYud{PFw2qY@)EB|KO0^1t7~ zvQ*~HIR=71apU^Rf9lhpPU4gX(kch$z~bHV$x!!=DTtKAh0RsLK|xrQavrn|_A5PI zMipreLfv3h{|)`=I_`^PGw#TCR68{}Qg(TV#r`0)p0!%z>St%>vlvyU6&#%R0SsIA z4?NETymDBEI*GW}XVJ3=Lj9HLGfe_0)7KD=l{nLw@s|8Q=GOm>c%Q^)A%sPFZaIzN zmmGNC#TX`mM_r<%+`N>aIE|(Yg!Zjj0vRrnf$WtEh_FbR#usi$gdf;i-&xo07yxCg zDxixCmSxB9FABvct0f>AB}V1(C5xcGg!kGxmN4(zn8i+gez9mlIFD7aAI7*7Dv>^j5X!gB@~MY z;J;!6ZUy?@@(xq3o(nhj`44(&=@6}wMrwtv>|Y-)aF|OEE`O&OaB>i|HWeu_+pdJg zPEH$^MOK1i0u<+VpjwmW(QV!wlz<3yCcN!1l6gMEdsgGV!2r_#&IO2qCj0?DlVtFv zB}LJskyiS4iT+^&Lsfu5HPZRR)#WqH)p5N1d#cM=sVN3zvKSvSfM5k?mT(b-!4j0F zsNUd?M;&&aUI28SnPkLnP$;sAux%fZ4UIN9B0(Nu|NeFwY0%tEk7&yDK0Up~rmb@c zVXM983z`0p`PF3-1P5`i#VU?aZ~a7nrue9L-Wzjd@BfD>Yw*?$G^|hvzKlLvA3h~7 z9sO2U)_vGxMqtKl+93YMk&{d_P~rsu|MV_IS@*%e;#jRq&=rRe6*K555;Ura zjfee}LeT8H>~nSQ0^sZxij-YZ(vXkF+3fp;br3etk)n z8aGhTV;=3^e}@W!UsKy(gb-^nWEyxbD8cjZP?Er!{u$R%&0FZS4V^ zfCX=deDFbMKuhP&8P68VNS5+SDh|O~roPa#870k92?mjMq`BLyM&BTd-#%%X6%c*_ zbzf|;Z<*B=sMpNFLqWRei&@&Gte^cEvXZR zcP)ZK<7^pWg`vT@D_}3pUI)8NvG2C8itRZCP?tKIt6+|_J;VyRT$Ld$2ggt&!MgzA z-*I5{ZOpL@VbZqlnrr%D-|g7R}Cjd1m`Jy{^2u1=q|)T4CAm zXr%{eYFHyC5m-4_Y-nhx1Ex2MQ~t`D^cKk=P7A5j)khBq8x+4f|EB+BdgY-I^}E*Y zD2~A`n3 zC6jU1pNGEwLnU}aRLQuMZ|4*8CvKHM4+DmFKRjs!o@eu7eg3jvX;UL>m4C zNETJFV2i=ctlZ?=cPo0p{1oLU$CX19ML5DT*^}~>1a9fZSKytG0@fe;`l*FpBJW#4 z*}U{hHszmyDdSq{ViaE68 zsz0umW`i-mkCM#d-B&6Fzd^}4TP|J|k(^!CNk>8zV;#+JA8EHCs}UD^w|>RW7PYXe z^$P6x>gV>Tg2*nCGjuG zdTPS5r@V+qmd~cRoI`A9c0=?_Zvpp1KP7EWyAQOV6Kh07`!DfG93`1wUd{9q1=NMx zzLYi70^!B*vU$TM;;jMVHT%(GqujFxQ$@^M(%&yx5(9z$UiPTYZTc*dM=wy18d3JT zR@1~WY23hSb+#9IVUz-ZsIYn3@9QcqFMneOjz1o=oNEqfoe^u?BhCNEw5HFq2JU{a z&D7XB>6WJKm<}wMUL^<1j`bwsq*={KdJI89FrY2gM0|z8&XDx5u zmP7&`(-?^Ky9U>+`&j-IP73s{-Bn5r%>NSCdo8MhM`4hAL)K6d<1SV?Fv&~EA=)sib*!>dY3Dn~DX=1hfyUZan zK_|c8V^#PD4YvuX`CBpA{`<`62@B@)ew0FO^uScL6B*E(1x0Rr!^@YA<>2~#t}xcq z{4PGSj`c+5Kw4)C_J546z)#=OXApie6_TrN9^Pu(zXhF;yr37=QEwAn3bKE!V3$)B z+xFq7JC!_EJ)JM?-sPH?A}>G*xAwAx21=Ks0>Oc-eb$_7+9KV=*AM4XiB~`Ol%t?- zsdkDc1FBt!j>Sl0F|tbw(lB?~YNsiKV@Ee|z6J(VPLZeWV$X(c7>=I2ZDE@~Sne?u zCT0={$WK|}ZyH=DnQD~3XcATua-;(X z#m3A-M-s`L+#wMT#L6s9;y0GLjxjTT_UHMFdHkm`64Sgv(ROeU#|OQ->FyWQYYG|3 zHJPkFw~YWrPz8hS>kh)yxXd{>*=9K}(WjFT_Cle>zD@=>ep&AwI!yd`-05c%&A9A@t)=epJ4iFoP%QDWt=VQ!oK>uVZSeRGQylb3=d{)r9E_@z%E@?6xd->Sow!V%K&GI>?G57srA@QzCH79AvD51plf_Q zCD?Nb;3xw6ciSq>wdB6^T|I9yNtMQ&SWZ=1S4pRD|7R0$O$seW5&%Ace-4 z`zjzTI}T461BhQ}VVC@+{qE*>l8UIwgMy|u3unqSvXI9kn+AJnXWOahxQF0Nz@hcO zcit(ZhBx^%QC|gC`!l{2?wXbEsyG2_ySr+?a=HE8Ei6bLf8WS91X;A&(;0lQ+vk zKag-1{=TKL1-E23$gSGeod&nt7yHT~4`-}aY!m;egp^E4uGt=X!w^|C=RP3+af5OK z#w3}YGLb0X@*686dIi0$l?|gwBzfs>u782-u7w`PMw~$(?U0(El6#}_&#sU8r^rLo ztGGcDxvz^5&X&=E>6gdffflf1$jFf0du6`nP7q=AFil3Xr54m-KLB@=`;<#7D^U6J zL^7j`uVEv?u_W13{secpZ zckaB?&X=(wF*6v$Luc{3*o-Wa`mhZBm1AH%dG#zPR3J|;;e}a&y+rnA`gss|Y9=PK zpM@u8bJ6>g#11Jf*V{qeW@DE{LzBxqn<;UUua<_!%8&AUUS=YXOI+Fwy}}8+RF8ii z38&_VU~)WvmOvZ&e0S3zm|jlz$?lE4w~qjTKI80n0iIsGCJd{jFQ47ro^8U;C*3eE zEfGpCsZ&{L4|74{QG~qIxiyyy@M&z8G1Q`R_%Do{`p5q^RNME16?XVRl|$g8f2B!# zAB;(o1KBlVJ>emhwgUto(89z_EQFKsM%N^S;h6T*#aZHXMGM%dK%~{Q`!;|`ndh0x zGRT=>s2ScDNu@hI%hTAc;}2K*{G7pN{@zW(ht(Go13$0vUXL3m_Hx<5%hYc5yVDWB z{1NXF6F%)i6@(0GWgoL*sY2simjj2l1j7sU)EP3kg;w~g+q-Q2#$Gt-JK*>Sma)?LTTTak9n8asU9pWi9CxGhC}29bRF z-#{dfL3J&Im#I#yD5f3lbA_CnH!-Ynv}9{@<5yNh7RYht*$e(v>LD8xp4ONb-O~;& z0$Z+pf77)_3u~-tuXvwvm8loLJ*7b$JKws!zUU52D(>|vad?u?-xpZo+2I zzhU_G8|*sXfq3X6LHcgg!`}7!_ls=fJzzXH&8V4ndr#PQfy>6`-vjwiGU>qTm$riV z^}YC&kNPJR-wHRL@7lQF-%jR^`DN51+ZJ{iHs|WUO|JT9)Xsfv>>uL~B%7ZlEJYWu z6(AWagy)K}fmSGrO8UY2H2?8;H!+Uw@l#6lvL+@`AFd#MtkMLzW!-_mtE2+K~5a5%@eX zUX=0isG!XSR0G(~(DPP`fgHOvxLp#yce5*C16~&TYyb1Z1z7{q#R!M#^Dv}|s4=~C zZ}zIdDc_$mJq+xP`9+xI8kzLZJ~U>ljN(S#IKrF-)Z94rVIXQkOd_ zN}0?kVanDhgTdIBS@?Z*|GLlf`|mtw`=00foO8aP_x-%@YbIRLLdE{rhmKevnk2PTtY9jeBbH)F}Kt%WbsR>B^p*c>2UJ?W$<$=ZyFSdcz)`1cqGR6F8eUn zc&1NDjVOHulmQSHP|9AdCLb=&ICFy7PTn@aQv@@?w?*w%W$$7SKMPoy`B^#JqO4uZ^ox`Vy>k0EK&OTJK@p z^yxzBvP=vHXSa`Um0mXTkU_*yG}ukQ7(E>cF$ZmI=y3}FYUG#3x+&(lq33Y}P3XW+ zi=CZLzgOgcQ$g;dx?#SQ_Ideh^ny}qav%jM=$^s1ub7%AtsDZJOwRYN;;|;G@Gt{^ z^L5ewO}b)j6s}!p=w%(tU!?m}r>6~C*1~jU7IlR^ZhncA)%9qBlv&J>LNEquo}1kE z((JS5)bV#=JS>Ncd$v&WKm}WI02XR8 z?%RR~V;vp3=$>oq9#tj(RbOgM9;-Z@PkL8^nZ(d#8Alc2o^jNDPs&sY$F&KvaN!P2 zetSCa{Vk?45`z+3OFN2m#g51(cC#O2=rO-RUB$XUluM){dTmx`o;A15g!PAj$GC(} zTIWTK2jK6Gs3|eR;7W7WqYX7K$Cxqt0lrsciZ`S@j%}d+?dZ=LPU*{dN_dxC`mQl? zycN02OT9&L%Y*~mFLmr z-aZ@??SkXm7NjMFhH5<-S$XxVPT))9W{2>Rifra|!lW;B#5iCq<88B_A>+j3xc5*< zr+vhYmswWZ<$Jo^RGQi>&H2fKwadVTl=%UF?dNO#{y=gcA9<0Af$BGsxJ8`eR)IQZ z1jgW;J9dfzx>nhJb<%s5SRG)X0+tncMMoX;`lV0ZP5aDC_cv_YWzaJq@xuL`TAX|i z8^hgs&jKdE=`(wJU{L3lmxptR$Cj0=9IL#Y$p;%Ie&F7&?H%VQQFlhn4RqQ*eSW3E z7nlH~SLv8?RNpaaBW9uawMpR54Q8`uB3Hd@g~R7J$=6)XjE%2nsV7RE{^8AO>+MyF z#yAL7{53nM?8@7EaopCpVrno{D17sX`b+>wB7-~{9X8k4WrzjJ+^P%d$8|K45S@p9 z5(#h3_)x6k!Nbu`nA(3wr7i%mL$+8bAfKCo^jg4~A8RH?DQv`zo6SBCSC|#_k8SBt z&#B~VI?JB%uo^s)rChykbp;VL(3hjEcY~EQ%C|J*U0+j$oDY!ynL23s)993k*VoBM zX>5Si<9)9F=~QW^Q!SPrTwf-I_=Php&%-TkTUpGT)70}cByNk`pvnENS~=>O5EI?Vl(s^FXcQPSii)TYcL zd($y;fFMI1bO!~<@6itqii$xeKNjl0sWW(O5`OF9+h?q#KAgX!qp^?~wy6tJc0N*H zP7t-Oq?{Wb5O2BJrM+FBJF1@k+Fh&}i(2{u~R}fU8WI z2sH>JgpXm2MugoV*@chpq^{1+WRtVZ1eTz7NO(Y&?o}V9X}R(v6wXH{zSr_TbA~88 zT|_<8gJwQGDTyscY^eCHU$+s31g!Vy(O6ST|Cn4lMv&A;p?pS|*z62c6&wNSG70kl z_{T*M+bSy@Cm>P>Mzk_-?jO*&C)5#GDcW&wuO#@K`lP-`N8~}X&J7*akd~ahi*Y)sI}8U( zC{#ZFO`*-RHTYTwZbY7Cno*%TK?4gRvmy}ql=p~nMUxqwV#~@{H)oldj{`<5Zom!y@9wO&VXN3_E1F*vp>KH?*SA3sy`m0#pOtM1u#TyH=)42*en9yHa>ym90ly zO`dU9&U7~ls-;D&z*dN)0A1*_e#U((Dbik)F=JYo*{H!$4$2snO?MWz(cxQ&LAYcL z2N@)eJ(hCwZ{5eIb`Y{v#WugO(Cumh0WWQerc2(SYG7=ll@9D(kV;l31US!4XSmQV zw7PJ@^64AqhGypVcD2z7LD%_zRqb9Os5#Dwl0?giG%o5$zy#-xCW1c@xK^r54y8ZF z5T3s^B-3*%C%?oSonC3hFg%Fm7LzW8X%;rikPGApV;S$Tf1;{)Hzorx%J z4ehjZX+bBi<))zq$v3e7veeq$+f;>#Bx?L3yiLaTi^8UPT0oV?afNn-*SJdGh!ptD zI$r_Eax~<&_2UjSqlVWlck+dMwRG>{iMqL6CC^#%g|tT@ARJJ^E+@zYO}Q2QqakdvG+t3EY_0)B(XXa+SjLD zosn;#b=-$gEgwvs< zMp7c((<5I|>`g#j&c+psPnEG(-PVH!Q_^vOOL!F}?EAIbG>XK`LrQ3x0~pE!Pz{1Y zLeSn^c8s}S%-j8amd@g7wS4Kl^KLt!s!*xm?DK^W9q$rjgHAq(jQ+q*(!cNJu=5w( z!LHEl@!cH_t$heT*b*$HyGFwP-0JKQus?V|IlEVGj{!OLS@c)C7NAZ&P;_Gc-Gp|g zrqkRaq{Cik?sM9$P#^3XlN*&4$we&O)5ccGd7LERi9aP4t+K*J8ccl;Vu50M=0=0V zq`HU+?6M!H<=>(?euXN6;M4p2@T<(tM0stOKY6e5=AcFDE%)&0EEwb1W6-LI3D>_b z{SPM{PCiM9*lif+fEI}}L2|4dHfxGN-N_I14|r1o18$M?A_;zGwNw2f&EE=s-RkQE zb=XOt52;<>FQ9LD79ML*CHOL8TfB5d zWj}8Z54BB1%sttRYzdQq#eTNu9y_b*?FoLo=bSzXAzxL>qGnaV=$FIrC?m$(Z6KY1 zlCth|PZU`;J=_YHq*&hbem#5(Q!eRr(-IghHE1897Wp_eyBe^TN#BtKz)%syvDmAp tQN&LGCjKvxe~J13Cfof7FTUN}o~-q{yTDCk2*hhb&c|Ks$#y~M{{yu|V|oAp From ce22210b47487177c0ca55c7722bfb91109e45cf Mon Sep 17 00:00:00 2001 From: AnturK Date: Sat, 16 Dec 2017 11:07:52 +0100 Subject: [PATCH 26/94] Fixes mecha drifting. (#33542) * Fixes mecha drifting. --- code/game/mecha/mecha.dm | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index e50da70c5d..799344fe54 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -24,7 +24,7 @@ infra_luminosity = 15 //byond implementation is bugged. force = 5 flags_1 = HEAR_1 - var/can_move = 1 + var/can_move = 0 //time of next allowed movement var/mob/living/carbon/occupant = null var/step_in = 10 //make a step in step_in/10 sec. var/dir_in = 2//What direction will the mech face when entered/powered on? Defaults to South. @@ -502,7 +502,7 @@ return domove(direction) /obj/mecha/proc/domove(direction) - if(!can_move) + if(can_move >= world.time) return 0 if(!Process_Spacemove(direction)) return 0 @@ -520,21 +520,19 @@ return 0 var/move_result = 0 + var/oldloc = loc if(internal_damage & MECHA_INT_CONTROL_LOST) move_result = mechsteprand() else if(dir != direction && !strafe) move_result = mechturn(direction) else move_result = mechstep(direction) - if(move_result) + if(move_result || loc != oldloc)// halfway done diagonal move still returns false use_power(step_energy_drain) - can_move = 0 - spawn(step_in) - can_move = 1 + can_move = world.time + step_in return 1 return 0 - /obj/mecha/proc/mechturn(direction) setDir(direction) if(turnsound) From 6a09d5c981abf923013aa6533ba82e14697bc2bb Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sun, 17 Dec 2017 00:52:00 -0500 Subject: [PATCH 28/94] Merge pull request #33578 from lzimann/job Changes manage job slots to use a browser datum, also lets it be used before roundstart --- code/modules/admin/admin.dm | 46 +++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 22365c4584..0b0957e072 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -720,41 +720,43 @@ /datum/admins/proc/manage_free_slots() if(!check_rights()) return - var/dat = "Manage Free Slots" + var/datum/browser/browser = new(usr, "jobmanagement", "Manage Free Slots", 520) + var/list/dat = list() var/count = 0 - if(!SSticker.HasRoundStarted()) - alert(usr, "You cannot manage jobs before the round starts!") + if(!SSjob.initialized) + alert(usr, "You cannot manage jobs before the job subsystem is initialized!") return - for(var/datum/job/job in SSjob.occupations) + dat += "" + + for(var/j in SSjob.occupations) + var/datum/job/job = j count++ var/J_title = html_encode(job.title) var/J_opPos = html_encode(job.total_positions - (job.total_positions - job.current_positions)) var/J_totPos = html_encode(job.total_positions) - if(job.total_positions < 0) - dat += "[J_title]: [J_opPos] (unlimited)" - else - dat += "[J_title]: [J_opPos]/[J_totPos]" + dat += "" continue - if(job.total_positions >= 0) - dat += " Add | " - if(job.total_positions > job.current_positions) - dat += "Remove | " - else - dat += "Remove | " - dat += "Unlimit" else - dat += " Limit" - dat += "
" + dat += "" + dat += "" + else + dat += "Limit" - dat += "" - var/winheight = 100 + (count * 20) - winheight = min(winheight, 690) - usr << browse(dat, "window=players;size=375x[winheight]") + browser.height = min(100 + count * 20, 650) + browser.set_content(dat.Join()) + browser.open() /datum/admins/proc/create_or_modify_area() set category = "Debug" From e038319ba2c7e534bb34ac2456831e677157f712 Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Sat, 16 Dec 2017 23:17:39 -0500 Subject: [PATCH 30/94] Quick access hotkeys for backpack and belt --- code/modules/keybindings/bindings_human.dm | 69 ++++++++++++++++++++++ interface/interface.dm | 2 + 2 files changed, 71 insertions(+) create mode 100644 code/modules/keybindings/bindings_human.dm diff --git a/code/modules/keybindings/bindings_human.dm b/code/modules/keybindings/bindings_human.dm new file mode 100644 index 0000000000..85aeba5f10 --- /dev/null +++ b/code/modules/keybindings/bindings_human.dm @@ -0,0 +1,69 @@ +/mob/living/carbon/human/key_down(_key, client/user) + if(client.keys_held["Shift"]) + switch(_key) + if("E") // Put held thing in belt or take out most recent thing from belt + var/obj/item/thing = get_active_held_item() + var/obj/item/storage/equipped_belt = get_item_by_slot(slot_belt) + if(!equipped_belt) // We also let you equip a belt like this + if(!thing) + to_chat(user, "You have no belt to take something out of.") + return + equip_to_slot_if_possible(thing, slot_belt) + return + if(!istype(equipped_belt)) // not a storage item + if(!thing) + to_chat(user, "You have no belt to take something out of.") + else + to_chat(user, "You can't fit anything in.") + return + if(thing) // put thing in belt + if(equipped_belt.can_be_inserted(thing)) + equipped_belt.handle_item_insertion(thing) + else + to_chat(user, "You can't fit anything in.") + return + if(!equipped_belt.contents.len) // nothing to take out + to_chat(user, "There's nothing in your belt to take out.") + return + var/obj/item/stored = equipped_belt.contents[equipped_belt.contents.len] + if(!stored || stored.on_found(src)) + return + stored.attack_hand(src) // take out thing from belt + return + + if("B") // Put held thing in backpack or take out most recent thing from backpack + var/obj/item/thing = get_active_held_item() + var/obj/item/storage/equipped_backpack = get_item_by_slot(slot_back) + if(!equipped_backpack) // We also let you equip a backpack like this + if(!thing) + to_chat(user, "You have no backpack to take something out of.") + return + equip_to_slot_if_possible(thing, slot_back) + return + if(!istype(equipped_backpack)) // not a storage item + if(!thing) + to_chat(user, "You have no backpack to take something out of.") + else + to_chat(user, "You can't fit anything in.") + return + if(thing) // put thing in backpack + if(equipped_backpack.can_be_inserted(thing)) + equipped_backpack.handle_item_insertion(thing) + else + to_chat(user, "You can't fit anything in.") + return + if(!equipped_backpack.contents.len) // nothing to take out + to_chat(user, "There's nothing in your backpack to take out.") + return + var/obj/item/stored = equipped_backpack.contents[equipped_backpack.contents.len] + if(!stored || stored.on_found(src)) + return + stored.attack_hand(src) // take out thing from backpack + return + + switch(_key) + if("E") + quick_equip() + return + + return ..() \ No newline at end of file diff --git a/interface/interface.dm b/interface/interface.dm index 9c5984cdd9..9b87479a33 100644 --- a/interface/interface.dm +++ b/interface/interface.dm @@ -119,6 +119,8 @@ Hotkey-Mode: (hotkey-mode must be on) \th = stop pulling \tx = swap-hand \tz = activate held object (or y) +\tShift+e = Put held item into belt or take out most recent item added to belt. +\tShift+b = Put held item into backpack or take out most recent item added to backpack. \tf = cycle-intents-left \tg = cycle-intents-right \t1 = help-intent From 67ad41729127954b7053c3a9753978cce37dd60f Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sat, 16 Dec 2017 15:53:10 -0500 Subject: [PATCH 31/94] Pings maintainers to review PRs in areas they are familiar with (#33572) * Pings maintainers to review PRs in areas they are familiar with * Add ShizCalev to _maps * air.dm * Forgot this * Fix ShizCalev * Added more --- .github/CODEOWNERS | 66 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000000..2df370e6ea --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,66 @@ +# This list auto requests reviews from the specified org members +# when a PR that modifies the file in question is opened +# This list is alphabetized by User -> Filename KEEP IT THAT WAY + +# ChangelingRain + +/code/__DEFINES/clockcult.dm @ChangelingRain +/code/datums/antagonists/datum_clockcult.dm @ChangelingRain +/code/game/gamemodes/blob/* @ChangelingRain +/code/game/gamemodes/clock_cult/* @ChangelingRain +/code/game/gamemodes/miniantags/revenant* @ChangelingRain +/code/game/objects/effects/temporary_visuals/* @ChangelingRain +/code/modules/reagents/chemistry/reagents/blob_reagents.dm @ChangelingRain + +# Cyberboss + +/code/__DATASTRUCTURES/globals.dm @Cyberboss +/code/__DEFINES/components.dm @Cyberboss +/code/__DEFINES/server_tools.config.dm @Cyberboss +/code/__DEFINES/server_tools.dm @Cyberboss +/code/controllers/subsystem/atoms.dm @Cyberboss +/code/controllers/subsystem/mapping.dm @Cyberboss +/code/controllers/globals.dm @Cyberboss +/code/datums/helper_datums/getrev.dm @Cyberboss +/code/datums/components/* @Cyberboss +/code/datums/map_config.dm @Cyberboss +/code/datums/forced_movement.dm @Cyberboss +/code/datums/holocall.dm @Cyberboss +/code/modules/admin/verbs/adminhelp.dm @Cyberboss +/code/modules/admin/verbs/adminpm.dm @Cyberboss +/code/modules/server_tools/* @Cyberboss +/code/modules/mapping/* @Cyberboss + +# duncathan + +/code/__DEFINES/atmospherics.dm @duncathan +/code/controllers/subsystem/air.dm @duncathan +/code/modules/atmospherics/* @duncathan + +# Jordie0608 + +/SQL/* @Jordie0608 +/code/controllers/subsystem/dbcore.dm @Jordie0608 +/tools/SQLAlertEmail/* @Jordie0608 + +# MrStonedOne + +/code/__DEFINES/MC.dm @MrStonedOne +/code/__DEFINES/tick.dm @MrStonedOne +/code/controllers/admin.dm @MrStonedOne +/code/controllers/master.dm @MrStonedOne +/code/controllers/failsafe.dm @MrStonedOne +/code/controllers/subsystem.dm @MrStonedOne +/code/controllers/subsystem/air.dm @MrStonedOne +/code/controllers/subsystem/timer.dm @MrStonedOne + +# ninjanomnom + +/code/controllers/subsystem/shuttle.dm @ninjanomnom +/code/modules/shuttle/* @ninjanomnom + +# ShizCalev + +/_maps/* @ShizCalev +/icons/* @ShizCalev +/sound/* @ShizCalev From 8a0aa3233595051bee91e0380bfd89b38841eaa2 Mon Sep 17 00:00:00 2001 From: Armhulen Date: Sat, 16 Dec 2017 12:19:27 -0800 Subject: [PATCH 33/94] Mi-go --- _maps/RandomRuins/SpaceRuins/bigderelict1.dmm | 8 +- _maps/RandomZLevels/Academy.dmm | 2 +- _maps/RandomZLevels/research.dmm | 2 +- _maps/RandomZLevels/wildwest.dmm | 10 +- _maps/map_files/generic/CentCom.dmm | 2 +- .../awaymissions/mission_code/Academy.dm | 2 +- .../simple_animal/hostile/netherworld.dm | 103 ++++++++++++++++++ code/modules/spells/spell_types/conjure.dm | 12 ++ code/modules/spells/spell_types/wizard.dm | 2 +- icons/mob/animal.dmi | Bin 192019 -> 197914 bytes icons/mob/nest.dmi | Bin 13209 -> 12839 bytes tgstation.dme | 2 +- 12 files changed, 130 insertions(+), 15 deletions(-) create mode 100644 code/modules/mob/living/simple_animal/hostile/netherworld.dm diff --git a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm index 04e9d6ba68..1da57dc70a 100644 --- a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm +++ b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm @@ -990,7 +990,7 @@ desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor" }, -/mob/living/simple_animal/hostile/creature{ +/mob/living/simple_animal/hostile/netherworld{ desc = "Awh its so sm-OH GOD WHAT THE FUCK."; health = 25; maxHealth = 25; @@ -1010,7 +1010,7 @@ icon_state = "trails_1"; dir = 10 }, -/mob/living/simple_animal/hostile/creature{ +/mob/living/simple_animal/hostile/netherworld{ desc = "Awh its so sm-OH GOD WHAT THE FUCK."; health = 25; maxHealth = 25; @@ -1378,7 +1378,7 @@ desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor" }, -/mob/living/simple_animal/hostile/creature{ +/mob/living/simple_animal/hostile/netherworld{ name = "Miss Tiggles" }, /turf/open/floor/plasteel, @@ -1888,7 +1888,7 @@ desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; name = "gelatinous floor" }, -/mob/living/simple_animal/hostile/creature{ +/mob/living/simple_animal/hostile/netherworld{ desc = "Awh its so sm-OH GOD WHAT THE FUCK."; health = 25; maxHealth = 25; diff --git a/_maps/RandomZLevels/Academy.dmm b/_maps/RandomZLevels/Academy.dmm index 4e943346f2..535cb1377c 100644 --- a/_maps/RandomZLevels/Academy.dmm +++ b/_maps/RandomZLevels/Academy.dmm @@ -3738,7 +3738,7 @@ /turf/open/floor/vault, /area/awaymission/academy/academyengine) "ml" = ( -/mob/living/simple_animal/hostile/creature, +/mob/living/simple_animal/hostile/netherworld, /turf/open/floor/vault, /area/awaymission/academy/academyengine) "mm" = ( diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm index 39ffb0c913..5693bd14ff 100644 --- a/_maps/RandomZLevels/research.dmm +++ b/_maps/RandomZLevels/research.dmm @@ -4347,7 +4347,7 @@ /turf/open/floor/mineral/plasma, /area/space/nearstation) "nc" = ( -/mob/living/simple_animal/hostile/creature, +/mob/living/simple_animal/hostile/netherworld, /turf/open/floor/mineral/plasma, /area/space/nearstation) "nd" = ( diff --git a/_maps/RandomZLevels/wildwest.dmm b/_maps/RandomZLevels/wildwest.dmm index 426e68e015..e24d9dcb85 100644 --- a/_maps/RandomZLevels/wildwest.dmm +++ b/_maps/RandomZLevels/wildwest.dmm @@ -726,7 +726,7 @@ /turf/open/floor/wood, /area/awaymission/wildwest/gov) "cG" = ( -/mob/living/simple_animal/hostile/creature, +/mob/living/simple_animal/hostile/netherworld, /turf/open/floor/plasteel/stage_bleft, /area/awaymission/wildwest/gov) "cH" = ( @@ -761,7 +761,7 @@ /turf/open/floor/wood, /area/awaymission/wildwest/gov) "cN" = ( -/mob/living/simple_animal/hostile/creature, +/mob/living/simple_animal/hostile/netherworld, /turf/open/floor/wood, /area/awaymission/wildwest/gov) "cO" = ( @@ -771,7 +771,7 @@ /turf/open/floor/wood, /area/awaymission/wildwest/gov) "cP" = ( -/mob/living/simple_animal/hostile/creature, +/mob/living/simple_animal/hostile/netherworld, /turf/open/floor/carpet, /area/awaymission/wildwest/gov) "cQ" = ( @@ -1024,7 +1024,7 @@ /area/awaymission/wildwest/gov) "dB" = ( /obj/structure/toilet, -/mob/living/simple_animal/hostile/creature, +/mob/living/simple_animal/hostile/netherworld, /turf/open/floor/plasteel/white, /area/awaymission/wildwest/gov) "dC" = ( @@ -1941,7 +1941,7 @@ /turf/open/floor/wood, /area/awaymission/wildwest/mines) "gn" = ( -/mob/living/simple_animal/hostile/creature, +/mob/living/simple_animal/hostile/netherworld, /turf/open/floor/grass, /area/awaymission/wildwest/gov) "go" = ( diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 82243073f3..27198fe072 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -9835,7 +9835,7 @@ /area/wizard_station) "zQ" = ( /obj/effect/decal/cleanable/blood/splatter, -/mob/living/simple_animal/hostile/creature{ +/mob/living/simple_animal/hostile/netherworld{ name = "Experiment 35b" }, /turf/open/floor/grass, diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index 5af834955f..bf256fecbd 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -207,7 +207,7 @@ //Swarm of creatures for(var/direction in GLOB.alldirs) var/turf/T = get_turf(src) - new /mob/living/simple_animal/hostile/creature(get_step(T,direction)) + new /mob/living/simple_animal/hostile/netherworld(get_step(T,direction)) if(4) //Destroy Equipment for (var/obj/item/I in user) diff --git a/code/modules/mob/living/simple_animal/hostile/netherworld.dm b/code/modules/mob/living/simple_animal/hostile/netherworld.dm new file mode 100644 index 0000000000..67a565f945 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/netherworld.dm @@ -0,0 +1,103 @@ +/mob/living/simple_animal/hostile/netherworld + name = "creature" + desc = "A sanity-destroying otherthing from the netherworld." + icon_state = "otherthing" + icon_living = "otherthing" + icon_dead = "otherthing-dead" + health = 80 + maxHealth = 80 + obj_damage = 100 + melee_damage_lower = 25 + melee_damage_upper = 50 + attacktext = "slashes" + attack_sound = 'sound/weapons/bladeslice.ogg' + faction = list("creature") + speak_emote = list("screams") + gold_core_spawnable = HOSTILE_SPAWN + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 + faction = list("nether") + +/mob/living/simple_animal/hostile/netherworld/migo + name = "mi-go" + desc = "A pinkish, fungoid crustacean-like creature with numerous pairs of clawed appendages and a head covered with waving antennae." + speak_emote = list("screams", "clicks", "chitters", "barks", "moans", "growls", "meows", "reverberates", "roars", "squeaks", "rattles", "exclaims", "yells", "remarks", "mumbles", "jabbers", "stutters", "seethes") + icon_state = "mi-go" + icon_living = "mi-go" + icon_dead = "mi-go-dead" + attacktext = "lacerates" + speed = -0.5 + var/static/list/migo_sounds + deathmessage = "wails as its form turns into a pulpy mush." + death_sound = 'sound/voice/hiss6.ogg' + +/mob/living/simple_animal/hostile/netherworld/migo/Initialize() + . = ..() + migo_sounds = list('sound/items/bubblewrap.ogg', 'sound/items/change_jaws.ogg', 'sound/items/crowbar.ogg', 'sound/items/drink.ogg', 'sound/items/deconstruct.ogg', 'sound/items/carhorn.ogg', 'sound/items/change_drill.ogg', 'sound/items/dodgeball.ogg', 'sound/items/eatfood.ogg', 'sound/items/megaphone.ogg', 'sound/items/screwdriver.ogg', 'sound/items/weeoo1.ogg', 'sound/items/wirecutter.ogg', 'sound/items/welder.ogg', 'sound/items/zip.ogg', 'sound/items/rped.ogg', 'sound/items/ratchet.ogg', 'sound/items/polaroid1.ogg', 'sound/items/pshoom.ogg', 'sound/items/airhorn.ogg', 'sound/items/geiger/high1.ogg', 'sound/items/geiger/high2.ogg', 'sound/voice/bcreep.ogg', 'sound/voice/biamthelaw.ogg', 'sound/voice/ed209_20sec.ogg', 'sound/voice/hiss3.ogg', 'sound/voice/hiss6.ogg', 'sound/voice/mpatchedup.ogg', 'sound/voice/mfeelbetter.ogg', 'sound/voice/human/manlaugh1.ogg', 'sound/voice/human/womanlaugh.ogg', 'sound/weapons/sear.ogg', 'sound/ambience/antag/clockcultalr.ogg', 'sound/ambience/antag/ling_aler.ogg', 'sound/ambience/antag/tatoralert.ogg', 'sound/ambience/antag/monkey.ogg', 'sound/mecha/nominal.ogg', 'sound/mecha/weapdestr.ogg', 'sound/mecha/critdestr.ogg', 'sound/mecha/imag_enh.ogg', 'sound/effects/adminhelp.ogg', 'sound/effects/alert.ogg', 'sound/effects/attackblob.ogg', 'sound/effects/bamf.ogg', 'sound/effects/blobattack.ogg', 'sound/effects/break_stone.ogg', 'sound/effects/bubbles.ogg', 'sound/effects/bubbles2.ogg', 'sound/effects/clang.ogg', 'sound/effects/clockcult_gateway_disrupted.ogg', 'sound/effects/clownstep2.ogg', 'sound/effects/curse1.ogg', 'sound/effects/dimensional_rend.ogg', 'sound/effects/doorcreaky.ogg', 'sound/effects/empulse.ogg', 'sound/effects/explosion_distant.ogg', 'sound/effects/explosionfar.ogg', 'sound/effects/explosion1.ogg', 'sound/effects/grillehit.ogg', 'sound/effects/genetics.ogg', 'sound/effects/heart_beat.ogg', 'sound/effects/hyperspace_begin.ogg', 'sound/effects/hyperspace_end.ogg', 'sound/effects/his_grace_awaken.ogg', 'sound/effects/pai_boot.ogg', 'sound/effects/phasein.ogg', 'sound/effects/picaxe1.ogg', 'sound/effects/ratvar_reveal.ogg', 'sound/effects/sparks1.ogg', 'sound/effects/smoke.ogg', 'sound/effects/splat.ogg', 'sound/effects/snap.ogg', 'sound/effects/tendril_destroyed.ogg', 'sound/effects/supermatter.ogg', 'sound/misc/desceration-01.ogg', 'sound/misc/desceration-02.ogg', 'sound/misc/desceration-03.ogg', 'sound/misc/bloblarm.ogg', 'sound/misc/airraid.ogg', 'sound/misc/bang.ogg', 'sound/misc/disco.ogg', 'sound/misc/highlander.ogg', 'sound/misc/interference.ogg', 'sound/misc/notice1.ogg', 'sound/misc/notice2.ogg', 'sound/misc/sadtrombone.ogg', 'sound/misc/slip.ogg', 'sound/misc/splort.ogg', 'sound/weapons/armbomb.ogg', 'sound/weapons/beam_sniper.ogg', 'sound/weapons/chainsawhit.ogg', 'sound/weapons/emitter.ogg', 'sound/weapons/emitter2.ogg', 'sound/weapons/blade1.ogg', 'sound/weapons/bladeslice.ogg', 'sound/weapons/blastcannon.ogg', 'sound/weapons/blaster.ogg', 'sound/weapons/bulletflyby3.ogg', 'sound/weapons/circsawhit.ogg', 'sound/weapons/cqchit2.ogg', 'sound/weapons/drill.ogg', 'sound/weapons/genhit1.ogg', 'sound/weapons/gunshot_silenced.ogg', 'sound/weapons/gunshot2.ogg', 'sound/weapons/handcuffs.ogg', 'sound/weapons/homerun.ogg', 'sound/weapons/kenetic_accel.ogg', 'sound/machines/clockcult/steam_whoosh.ogg', 'sound/machines/fryer/deep_fryer_emerge.ogg', 'sound/machines/airlock.ogg', 'sound/machines/airlock_alien_prying.ogg', 'sound/machines/airlockclose.ogg', 'sound/machines/airlockforced.ogg', 'sound/machines/airlockopen.ogg', 'sound/machines/alarm.ogg', 'sound/machines/blender.ogg', 'sound/machines/boltsdown.ogg', 'sound/machines/boltsup.ogg', 'sound/machines/buzz-sigh.ogg', 'sound/machines/buzz-two.ogg', 'sound/machines/chime.ogg', 'sound/machines/cryo_warning.ogg', 'sound/machines/defib_charge.ogg', 'sound/machines/defib_failed.ogg', 'sound/machines/defib_ready.ogg', 'sound/machines/defib_zap.ogg', 'sound/machines/deniedbeep.ogg', 'sound/machines/ding.ogg', 'sound/machines/disposalflush.ogg', 'sound/machines/door_close.ogg', 'sound/machines/door_open.ogg', 'sound/machines/engine_alert1.ogg', 'sound/machines/engine_alert2.ogg', 'sound/machines/hiss.ogg', 'sound/machines/honkbot_evil_laugh.ogg', 'sound/machines/juicer.ogg', 'sound/machines/ping.ogg', 'sound/machines/signal.ogg', 'sound/machines/synth_no.ogg', 'sound/machines/synth_yes.ogg', 'sound/machines/terminal_alert.ogg', 'sound/machines/triple_beep.ogg', 'sound/machines/twobeep.ogg', 'sound/machines/ventcrawl.ogg', 'sound/machines/warning-buzzer.ogg', 'sound/ai/outbreak5.ogg', 'sound/ai/outbreak7.ogg', 'sound/ai/poweroff.ogg', 'sound/ai/radiation.ogg', 'sound/ai/shuttlecalled.ogg', 'sound/ai/shuttledock.ogg', 'sound/ai/shuttlerecalled.ogg', 'sound/ai/aimalf.ogg') //hahahaha fuck you code divers + +/mob/living/simple_animal/hostile/netherworld/migo/say(message) + ..() + if(stat) + return + var/chosen_sound = pick(migo_sounds) + playsound(src, chosen_sound, 100, TRUE) + +/mob/living/simple_animal/hostile/netherworld/migo/Life() + ..() + if(stat) + return + if(prob(10)) + var/chosen_sound = pick(migo_sounds) + playsound(src, chosen_sound, 100, TRUE) + +/mob/living/simple_animal/hostile/netherworld/blankbody + name = "blank body" + desc = "This looks human enough, but its flesh has an ashy texture, and it's face is featureless save an eerie smile." + icon_state = "blank-body" + icon_living = "blank-body" + icon_dead = "blank-dead" + gold_core_spawnable = NO_SPAWN + health = 100 + maxHealth = 100 + melee_damage_lower = 5 + melee_damage_upper = 10 + attacktext = "punches" + deathmessage = "falls apart into a fine dust." + +/mob/living/simple_animal/hostile/spawner/nether + name = "netherworld link" + desc = "A direct link to another dimension full of creatures not very happy to see you. Entering the link would be a very bad idea." + icon_state = "nether" + icon_living = "nether" + health = 50 + maxHealth = 50 + spawn_time = 50 //5 seconds + max_mobs = 15 + icon = 'icons/mob/nest.dmi' + spawn_text = "crawls through" + mob_type = /mob/living/simple_animal/hostile/netherworld/migo + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + faction = list("nether") + deathmessage = "shatters into oblivion." + del_on_death = TRUE + +/mob/living/simple_animal/hostile/spawner/nether/attack_hand(mob/user) + user.visible_message("[user] is violently pulled into the link!", \ + "Touching the portal, you are quickly pulled through into a world of unimaginable horror!") + contents.Add(user) + +/mob/living/simple_animal/hostile/spawner/nether/Life() + ..() + var/list/C = src.get_contents() + for(var/mob/living/M in C) + if(M) + playsound(src, 'sound/magic/demon_consume.ogg', 50, 1) + M.adjustBruteLoss(60) + new /obj/effect/gibspawner/human(get_turf(M)) + if(M.stat == DEAD) + var/mob/living/simple_animal/hostile/netherworld/blankbody/blank + blank = new(loc) + blank.name = "[M]" + blank.desc = "It's [M], but their flesh has an ashy texture, and their face is featureless save an eerie smile." + src.visible_message("[M] reemerges from the link!") + qdel(M) diff --git a/code/modules/spells/spell_types/conjure.dm b/code/modules/spells/spell_types/conjure.dm index 87c1b8de44..306c3fcef6 100644 --- a/code/modules/spells/spell_types/conjure.dm +++ b/code/modules/spells/spell_types/conjure.dm @@ -56,6 +56,18 @@ range = 3 newVars = list("emagged" = 2, "remote_disabled" = 1,"shoot_sound" = 'sound/weapons/laser.ogg',"projectile" = /obj/item/projectile/beam/laser, "declare_arrests" = 0,"name" = "Wizard's Justicebot") +/obj/effect/proc_holder/spell/aoe_turf/conjure/linkWorlds + name = "Link Worlds" + desc = "A whole new dimension for you to play with! They won't be happy about it, though." + invocation = "WTF" + clothes_req = FALSE + charge_max = 600 + cooldown_min = 200 + summon_type = list(/mob/living/simple_animal/hostile/spawner/nether) + summon_amt = 1 + range = 1 + cast_sound = 'sound/weapons/marauder.ogg' + /obj/effect/proc_holder/spell/targeted/conjure_item name = "Summon weapon" desc = "A generic spell that should not exist. This summons an instance of a specific type of item, or if one already exists, un-summons it. Summons into hand if possible." diff --git a/code/modules/spells/spell_types/wizard.dm b/code/modules/spells/spell_types/wizard.dm index 9b120c2e7f..ab4be6bafc 100644 --- a/code/modules/spells/spell_types/wizard.dm +++ b/code/modules/spells/spell_types/wizard.dm @@ -209,7 +209,7 @@ summon_amt = 10 range = 3 - summon_type = list(/mob/living/simple_animal/hostile/creature) + summon_type = list(/mob/living/simple_animal/hostile/netherworld) cast_sound = 'sound/magic/summonitems_generic.ogg' /obj/effect/proc_holder/spell/targeted/trigger/blind diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index b860bd8426060bef34188c2b7a4d1118ce21ee7a..8504b18a4a5f94f9722e535daca7c7f7889f9ba7 100644 GIT binary patch literal 197914 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

Us+|b@&*bUX0_OZrt8_nuwXuNUFVL{k zeb8ArnrikJWb-dwV<*Osx$!wM@=ZPKb-<#yGf+_hB6_lLNh-{hS1~yhuFlxN@+BHj zqpp4VpP~c&i(}iW9n^1HN_o-N7m0u0y|%`Bv-AO`iwHJQ1Z$B+WWGFO!=&e39H!0p zZE_sAy7e`Z`DV+FLg;jsED`X}TkCA?^~!{p8mhFA3pq&&CYDW~!7L?7FE3Jm#o)&B zIDE~sAjkqDQIweS&?`R96eVC!w`h?IuQ79h#5Mq)3IX>ak&a=u11oWX zSzzs=0RPGvap#$zg$RKz#b9dVm)=I&X(I`vtZUWf1eC^bjWjcC7(M{Y_&W%qA_AUT zAgBF&P@xtWQ|3bSSd)YZf0~acU1=?%TkR5prn4&0L+Igz_}O_d0^whSIb8sFE^_v! zjxVau%Gyj6q}fVv^a`*No}Iw#L<&)W^0Z;xY{LS+c|K21=^UqL~>(eHTFM z`f>Y5#6Qw|u&Qr}_ws>x2v^vae+n5r-!;-E@7^cun6#DwU~D`E{QpP#dfD&+3BAav z5uW4yql4r;60}12>-xhXs(0sVMG3o{$b9s(e9Go3I zeL}_kQxfE8RrefaCP7R2K)HX2@q*G zX{>8WolgREX~`9i9R?C0C_l0~z`Pfx**nG`-nMcueiO`cyFA!>dY3nw z+9+}&0O~_m*NO)-EyfYh1PyIENLTQ>o(i`qH=gPM!icVosX6sZh91Yl3-4Pus2c_u zs(#y3+kA&$T`2?@!vdcISP?RnX6X9u=si*L2&z*CP z57yN16?WbM?s*b?nkX7Yy^#Lb4t5Tb34?jEwg|as4GEvh&Su(#?sPEfKCqYJYs-|D zl?68h;U$*kh0DarN)X0Z(p!K-6&M%2;VBvGqZW*Z!^r(l{$lqQRwu(xnY$UTr~U!E zBD;dE`f*xw?C_)Oc}0CAgjfqJHq%zrg-nwm0?%ZVJ7h*q<(e>hN$W`k`Md z9Pr0ZeU@M!schK-F;v!q`V@EA7#J9$=l{^z-QzQo?3$ON(Xj}&a1@=R#m9HO(Fu9e z_%6G0TZy##gB-9EPBQ_TjLZ`i98YOq=b8~oU|D4fJREJ1BB6-G#&lg}?*Jd#{6l)X zh|FlLYw7s4n5}R9)?cIK?&~Re=sH2#*$@w~+M3+=Vd9t|#mk83Cq}u=4+ulQPb)66 zlfgrf0m9UW_dyF^%eO$Szai;;^^{B(j<+BIyd^^@T-PxjD_+%BZV`N}TtaE0d(742 zxV3t+es16Atrh6m7w!4Ad7ZB;fP4Kk;aWKy@kM;Z&?0nFG zP(@?_qn^R@-BIHh(e8|CKi*u<+H_vy4Gwm|@(J=Zy7=PWF;N|)&ZT)1_4fFbC4irJ zi;(q;<&byYiRa58!K;6lGYA4<#xL6m+#y+_`DKB1=iLm3rTdaX zWUPJ3sl-h$dR~Jc`KJft)pcjofR;4e{MaOXD@G8dmf(C$*LQrIeREb%%%uX+0og${ z){h4zV#vGDEBPu5(XwXu8#~fYuHz=jOZNvag+vV^Y1;p_JDb0A)J6GwEZ378ZQm1Y zSdDLdiw>hp`se9X*SbQNq|3{k6T~*EGY2^=f9lYIKRrb?Tzg=ESG|HMe;(+cZFn8X z;_@#uR?^HK{f)`EKZR=1Cn1@qoz?$(fO?jZ*TAJ^lX0}AU2A({LpnSMTB7n(>e_>6)cw77U?}$W zZr|p(=lH6D9rXY>#WB6LMWm6ci)rq@1o2P0dk{N<4l2xcCdrjvIEXrSQAXPr8b&Bi z5|6|_v_zaT`it#L@9JyHiASV-=90N~j-OW<4b34dGg1IEopzcPVWD0@4??+C+-SCb zP4;m1nX`(x>S;afowFzUXWpG3+-C$-BODr~wby0%6ddQeFSK2+>G~pgl6lVWH9?GG zV8w*Sgj}3##&>t_6L>JIp`;A9mvwNAhK$OIq2JTDrUR9-B6?Pq{wj%T3&tBLwoQNA zenp}Vm9mr7g@5#??tIUM%2{Lrg>W~GWaifI zNx##>-S}>`9Om+O$WIeJ`!G2|&bAc0t$o(O}X=)|v13vvcyA5c<~AwNl?bc9eAu1p39mcKwdbp=->5 zyzYP_KpDJuP1#VJS&SXwQ;;(HUPHyIH^Dem-z&vIYA<@6x&1?R7pP5SJKvmZ!i1HT z(%vsye&##U!@@f^Os=Q;hLSBLVRDFsDBczhK~lUtYxZD75VyGS7+n;>^<=tKy>ig< zE_kQsKdmRGI)^NS)eE$_-mqii2_W&+7S zs?h_yQlCx%h-CI_THyBP;c<5CQbzl4UTeXt_bh;_)b-o|zN5D(Wu`~uNj<>(#{!^7 zPn!e-SW=D$YuCf~yvLzH0%5-ILlD20Ia&+UYyJFDEd7J@M`_tw0bbC?3o9m%ViB$a zhA26n>O>NU6WT#f5!Fw7`AZ&wxCFCL5tH)>En)>gi1NE`hUCJtsO3g_uuoE~qkjrC zO4n%!D%mYV;w17GG&z4W9mNLA9w`meo#CckiG~Hu!;B6k=*Takuj+K1FUOulIxBi{ z29-9l73%Ra4W!)TgRie7UzdA__r-_|z|z81l?1M|uE@>e$`i!FFup=C49hzng#55&x3X%>(%x#-sBVjJjPcR2WC4C;`IG{E;EdTt$q8AJ+sh%O zns;lOw*2vEI?I)R5%uDzx#Wx1r1x}+)>_LsT#{YYHgB!EO)9hhTAWo?iKFO zMg|`4jK6UGnfqmoJ%GIwJ$Hr+rwJ^1#7uxw zI=?>Q5*|ln);_N&=Ko1-8g3Z%Iih?3X}qQw1^Awr!ay@{y?X49bMoVp^+VM@W&R@S zn!P89tA%@O-@VF2B4TUS9C@$i!x;J$%E8#s4Nhq-zVjH$OR-f%oszz8HC@NRhC9l& zog4=^d0or;4MM|u9cs%8Oi4W40}3*HSJlsU4F7r&@6`v1?hiG1mrfYYe@cU=EAAB_ zC;@(=^nV03ZBJ=#+@gEVgw+oq;M1~o|1HVhDancw1o}O?w@l-%h4!I>2ZPRAe%Ehu zb7TMV_%trwWP6k*WlczGW9dbTjZ-hrVOLQk^%la*jQ0rB=FFh`0K}=X{3~r_nN1kg0b7Ep2e6p zFt%8SUFfucwTL?397L;R4$)i8@Q#!KQ&?n>+QLg(gutSZhwuBG5(?7Gj5>8EJ3L5n zl;vp<>4}Jwbx{pm7-l5J)LI7JwlU-B_alC3$6!6fa6ey`~Oy5?$usCKnA+bRYjdmE}>6LkO9}6?^Qm~mc`E%zscODA3|{0)ePDub+#u}1uN=`tGE`0z;kiPUz16Ro z1$B|L9#LysPedyg!AVsm^^l^wT-$f;Cu>VEwwc3aAqlP}t)1%|$aU^F2kIblc-_?I zY#;%uJae39mXO3biu%F{=(jbPHGovH>|QOUOefk$^m*L0xg9^|!Pvw;dEvAOJB_eG z{0`|#dDRKn*n@{}sqicj>eoE`iQ{z*?nw}(1G>Hz2D;DAiO1ubvD$E;s9LX&aYPV?-*mluqV#rhoK+!ClzHvvYz}g==YL!Fy1iE>FdhXC_ zPQAxmpB8vP4Vw*sLxw5ZXI_&MV2P6+9^Jw{;kRV57l&9SJ=yuanub@LZq3=nYxq=R zKMMS)Ti$0-&3q+?`6ZLGF}|XLx)^z!UB^`BS>X|Es(DvnIiA?h#NV;CCKAFrJ!`#ImO(1l<`$a z_z&KVIbS&{)S{40REzzuM>y@dGd8b+`a-_N&Q5dND2bj{9EQTe4r0EozdIMdq3)Ra z!%K0CK{sI7TTr}uW_%9rf3wip@%Kt{2|DKY-u^d}YXqc^a;-AdfGhll>vnMu4^=Ou z6xaW!>D~vJ%)ynIW1uyxt_C9aKyB28;1Ok29{A}1bieU{dW&PyzBvo;IRUi>Y~sDS zJmhHk)PnHljm~2 z$ALn^K}xSO*Qf^E%WU8`?QVw>w868usr*@*m$6hBY`4V96N#@oy;vBe#ozx zFB&e}GZjbOlbv-X9I4)EmOYCAl1@96Zp#jm<81}taj%racv!8A%{ zm?dy2?ffF%Y=Sam6-_dEu@lU^-i7Y?mD%*;ieb_SDHp5F1?3$=+ck#0E~UI%&kd>p zHK^f&)hKLnRqK&+k$R~vQ0|T)Yg3o+4(n@G1%a>aD=ZitXb;S9v~PEgP_LCgB+#Q8_=3 zcmh3gDWqjcnm?>gjI_C3^#v-eko(tyC3M#swPtW&Jq!JRS%CY-)9N82>+^|^upW(X zoqXP+z;8i3`$dW~R~|UIb)Ay;@}s4#Z_ilI0<7#C(*gvTQ)HBES)<~bb6RRnIflPU z_5n&Bx5IXC<(QV4S?sh2$AryX^38IyXb76|=7ejutTIVKrDuzW|a zvZJ~e;R|x!h`YA9c++fkpq|44Se5-;?CQJ0T>!Py}Y>!@2NpdLo8Y=xVM$yJQWj;uO*STtvF@i%>h zmY9loB>iB@UhiIJ5NWZKN?)XIZ-6XuS_uuFj>8l!qJV}2E8hcso`qn2O(>LlIul-% zgH3svj9|+?;ZjURKIIh9d{QNS+=yA;*k53qpM{Re$jYAof-8eOdO3RuamTn$=9byj zTq(-dlaE(7cPG&*R?!sc*RRPbfg%=AbgR8_lItnj>A(*d^qE;czk0{m8ozk0CYDA3&(wW z^(R`vm?fegxrkmcGPufBc0Gv$|IQ+Z^L9$}$TXQ!1&N+Z0XLu}8_y%In~}7Sgti-f zngrw9XQKS{a(-lx64XY&URCdV8}9Q0!WIy9*A^`2szfn*emvGjq}vu)_!?dk+Zva| ze&ET`9oVf2+~~*e7JI*y&Hkk+D&GE4f1ZrC-EQSemJrnF0Rt~p8DOq@r18KF&?{Cy z!Qmr&R4uguDS11|EroJ7c-(u=0j=j==?fJlwGbJjy^_}q1A|Li0eAb<1@W3$gBZ42 z&}8`AOleQg%`}zRGn4th0+vQLG2l9JNfvege%NZ`lW-@F0P3f~ySG2qadxZEoWGI$ zY{no%sk+$&|Ai2l1}$6%Vgufd_fu`nhrup>hU>D@L1-C5!KgES`)`B;ockQk$=CaC zj+w~#|BwV~ygG6}#rRK^mR)xxSmIHKU;T@S^gC6+E_+HhbJorczgSh#=u%N`@t~$Y zq8RM{q3>6@`Es##?=8NTbLs4X(nu`xdh%djoqqd!+9NEONf)`W z`|^XqACWlZuJx7)cSMK;qj9F}T+CAfSU4QV16%fY#rE$!P{r(zts>Yk;78g!A%f9# z*-X?QU_umqzPy;fC((vNQYe^=N4!JwJC=VtFk-Hhfes?E$2YR9@YZ$ZN9L8$?Apbz z)xu9*y!k3R3NJTLT3`Kg7?SC%G+-8ONd-aDe^&?0968kfLofM#C+W=j;LhB&y|SQ+6v=7fmpBS=q zy()l_vvX(gHReou)-9;!5d0x#>z#A1=+#okWL-_+6PNa<<5fbJGt;SJW4qOWc%J1k zv26~OH`m#75hz0Cz;TH0HlTUL-_ijWArWQH?&gz>beBtgjGAv1kW2bs z8Lw~E)jD5Y$d4T!-n7^-4XeRT!Uk!)hj1Qh_q+u2+3NnIcpIs4pWRA)zxIua%+c=h z+Khi6e)LgFC+_eR5O-5Sm2Zaee;Oah_j`lnDR$}kfe$a|J7Rx2Vomiumj}X;2iEvE z;@f>}9;zCCG_<>c6DOa+djzk81dZQQh38W&`S=1kx$~!?d?A`z)p&rDR0D;{BmAw| z8O?t>@p4nG^vvw?IT(H*ri#cE|IQ_x_yR26B zfAUiBGu2o~Lj!Wk`e;PtSVsM;AX!zrF7u;|&%O*p%Z~p)CE#GB1UU76ApwzNy|nci zxOfBgqwbB4W5}Nl&pX>r=kr5?WUtaq?*~5;;jGwOg26SJN9=h4a{G}cEPmo!zNpGj z5yItZz5>!kiq5I|$5%om3)dCEM)_E;_`FCstiDXH`FbtrPh@1*Nyfm~uvS55W}0p# z)}}BYfK&p0-Qbg*?~6NVZR>$>I#_yF>OVQp0TMWsN=NvY(}5+#;{uyC;KGwg=RM6- zdwj+B3E1f!NS}m`524_{U-X}MLOGE*kX8Tl#s4E=gpvmO_aE8+J|vy|g)!)VAAf#p z+%gB92FU3D$iL!qBm0CX|C|J;NokDnO8JNj7oX~X1v<3Gk=1#jp^YPL+3CzGpBR<2j}+9xLp;vvlB zT|ReT1zcBhZA()j-hq5*MM@Kd361LIH)>NMXwZ-=Ii_QH+lPA@qujH>-zRp|Jn@nF zvl<5Xe6fkcvo~KSoFvWNuUzn~xVc$8>t2INw5RdNDI^+uI*0SZT37lQDppprg9jBs zR>Y#EEy;IjXO?6j!^Ez|rFgIl>ftqLi;(C(8t&JgCT5E)0c_Ju;GuHXxExPy@}M>; z{7sydHF9HPLzSf~6puV)>jX0ZC^N%5CqbkuGtC;n#rf<(J^3LDxaC@afkCGK)CN09Fr(h;{G2KQs@r-QGL_O>3_N_`UQShEjJZITO!yN*5 zW@-Vw(Z?4P5dxefdj^SPO~vnC!#=MMh#xS|L0=TQ7m2(Mz%E~+$8KvJ_V=M| zW6#DUPY4-i2stM5;Wehb{25DqNNrmdYe^z&Nv+nMFveo9eRUM|wJ+GTD;x{^@uHRM z{%3rAoTa>?;>Bl5JJKpi((mu%N6<)a_pQ{^|HRKM?nS8(0Awi!VsPg$( zeWJ{tjufOI&n+O@z3%@A zK6N@W>#cKMl(Dd&2Nr&SqKJM^_v6QpqwJ3n2dOE)o&&X=>RHlIO~H!gYE;vX`_jQD zjzQ1t=WbIU@8A4mxe4n_jm}W4*A3Ry8fl7^L{I+feVcrD ze_tiTvSXmtGDankIkJl1#@`dgp!g;rAi!?riQy|gr{zK^RKx>zxf}qd9X81sv|%VJ z4u?RY1O%(;)}=ZxS=l16uq&gG9BJtorMtUt%Tdxn>QNxDbR@T}zvwnG1{@9jJQeLx zP97~6q4mgJ-JuGXg7}c&WHf|O+;+BnJEBG8H65MzYc8CiTH9G4BTzA=U;f12+3J16 zTiQd3m)XF(Jn%J1usYJ*pM*~g>VOb`hv>dVH>Nb0xC;?!W_cHoxnv%Q3D zEJe*5nDvMVNX1x{5s9{($#MQ`zjUeVsk}AVTbYSZUZ=r5-k=@D|6yB|aAp zX*;l!{4u;pIdy};Snv>W7dhyG7o1a25W=GMtJ356Bh(rY0(t3%*aNLp=KcGH!&_{OI((y_6ViYzG=!iUUflzG?w@mztg=#t zk{hgT!^0nd!^4Fm`}aWiaV1sKj`c5}ignaSwTcr=09A8#yy4}1 z+pPBdK{<(%m*-U`J(XyOKk6^$9}~->y{>Hwr?$f!86|o|lvYux)k)PEEJ9uSL;5z& z)9N}Jy-S^q#zttO^-kq3Jn#aD*n3?^j#662w))4CdRC!|OQn#oQ1cI?=(s_HKdsz+ zPLn$5l_OOv@_RpSp55n~hsp0}ZU6;~lK(bVXKEDk5U8Ml4!pjxfvU~%OTJ0B|LS<4 zPYSA@Kl*8b8NZr{7H@e)d>dj!kPsh_AH?Wh(Q&(HhuTtd=_xRZ1oh>E)slN4(Dz85 z!^ZTWzfuRS`F#+g*I-tn$4cvGd!`}zF(0}%Z=kPS{D*+DRMeLxTYnww5b6*T70$TPH)(4+wF_(o=Kp8` zQwSV5J$8TRim}W3VfzJ8uKBSOrW~amAN8c=x#;>_V!VI83Zm2(9^bd;RgV`h^n4i> zL)l5MJeU*!Zz_i7RikMJo?ryjqQ##j-Z}3iUyqYH5sSB#K93(DDqI@M?(trTN0%uI zvz-Le)PmT9{=G)Mt<&>Z7t$Mon~1CWNf`|l>~5G)rah{4^Q!9|e_70l^jiX8=@o?G z5}DR2S(^mzToxi9fZMNXfXa3pu>tcy_fPW(t(zrQH65?Qp1GBm1OmY!5#X9crsReW zBVY@eFiw9Q>Gt`yj_`v1>J6_j&(HBher?b6&Dw-nqD0rkqYWt(9XIO$d-UvG>W$C_ zLWke6>wymeC+>Yk)%OgrqSM`tqz6)maHaLjN9o}T4pS3Z&%aR^zl*O{&>rv20^p6RdWzf-N6J+vq$rR@PW!xh0XmC`cOW?gi|gk#pxXabiYXWyF){8$?=1W zv^0|q*a6F^j&CUsCBI{j8~R#SBBf)^*}*d$3q6|TeoGJW6d z166{msV>;=3JHF8Y(Dl(LAZdng`YL4Jy%#rpcry{!#9=N6!~wGgfXb*@M#OKRCC)}I(o@nInTeoc{j)OyTKo;wm6O#=R%G0 z&M!g892amf-P+!HM8lv+^1v}~%Rc2XPKOsM_UO>hgcn!Q&Zgj)OXzFse_N~TZ zV)>MAbZU7x#u&0bRU_1vfo}zMF@Lwf1%65(g;W=+lqcrB~qHHp`+50+2$WL;};7mb!NorY7GO_t&kpy?xksW}aRhRVa zXIm1$O!<)NVPsF|eh!?YG(eMoNMo(2Zw;w9f*+P8hlh%$gD7~I2j{b)*vc9$9HCRH zftAK;`sO>lEa8Lf#E-USZ)Q``1@zDyl@pEB_4j|wqYY3yaL+ZGZ}=|C;?8xa2wkb1 zo}Ru5@U;B>_v0~3CGbIh3Px+^{vS-Cyf-MM!1MRHcW7Ox*hN4qR+yLo?0@fCOjKZt z5RhNBEr}B+T~>W3dYwy zjMIf?H;J`ZsrvnhHdD#we+^6#ySrsT&{y=1PEGnID@ddd#)^u))RpbkxdiGEuXqGEwl;a zGsK^PCvQu)*0Z7Vb>hSCkH-@Hv!%<5WA#XS58_g1gRfTVbzBGH2xH(*;YyrJ>zQG| z$(a*?ldk)9+tV_$L+aIw_1v!C#gE}Axh6uw4bzDm!#LdA16=c-x=2dR;x8*oO{HAW z6i^4f?mjQF$GMxJpBpl-_>1LulwoD;KE%*4&wc(=o9q-iBU!Skly56Lr2H%l!{LLkCix zk1%E#!t7pi0xl2M`8F+$ggdSRqTp=Zc-!&Ua7-Hbrelxitmjw1jxOw8L$ zx+sKcYpSxD^^Pe$VQ~_8$d_yjo^rQBxI;-NKp%pDjt+QRI9pgG;`8!ZI4}@tm}$ao z!;FW3F+Eyd_17R$I%jh*p{NOg7|+ziM{sO$Rm6|z6wF)_ekv01=(^QGE!P1VuD2ma zun4;KIYaJf5HT6qz+9ENezOM$aN5o_Glci%XkJ=VGk%E2o1h$D{b;_rk7>!~{AYSP zh6FIg*zefe6r9!ExokG#xy>|dn@6F!*@7h(#! zA!=%py6ho~mRt(Xabz8eWyvo;jLFLzNNy)nn_}K$#qRLe+=u4uoC*$m(823YnTe_V zvrd&>RT9tU?=F3|#nI-Oc1jYn&a$=$&Fy-$dCX~{mv8#Mw}k)aCn38*){7^18BCSU zR<7)g)>rA$KGJgX3*i9$r^s-Yv$Es$-mp46xKtSs?3ptMNeTw%b<0=0{PBzjKCekr z311MZ>6u6D31)#s0#kA_3|I~(vVHw%g8h1)RrAg|7F@M|x~i3lTs3f>uv5BSMW=S& z5&mWAZk61>?W80929)W&nr_j^d??X4!2KP72opOiP=R1JJmE-DsOkMKQA~F$r$z*TFwRXd<3UzFg=0 zZ&*A%nulI@H4bV+AD`z&d>I7dCKyNYiwnfk z$e0y{R>4I7IWcmp@;?{!iAsR~M27D@*$yEQo|JfeeqPXxBO06Zt>N@^hXI6mXHYS0 z%&fCZP~T8l@&l#1goy;r8(0-{6MpQ=cKgk`2o8ffZp%T!<}L$6L(DmRoZ`%LU^+Ey z#rr=0Jmddx_m)v{EnT~4HxOKdI{^X&2ol^~l3)?sA-KEKSbzi%NpRN$5AGh^-Q8*2 zp}Wsw@Atjmxxeo{f6f>%Xja!+WmBG-^{kq~;>2TdG4iI{1@fk$%psaSHwwfE;XMXb0)fs}R;#Hn$?d$rz-ynk0aXF_ z?Q-`%_)r2m+RMYF5BtZ4lUgnJVsm(USyjc6u>0!;gPBRLMvIZb*IacaJ5DbG0Q!** z*i#(-&gm+QffwD=pYAn{nG&yUwLHL;8uTd;XD~T@#oGE1 z4xlj8t9b@!13}$J>ssjPB;<6!=)V#br--H6w_iEI-s=A}P8z+=YBg~5}s~)?^fwwnNG!gJ# zV?jIPZ-&$>TYD@~?3Y#AC84#4hEMMWu>^x(2x-b*(c(xdPg8~*r2p}2hdfI}NX}jY zFWrh~C>U0qq?D*1^8aQ* z3ri5w*09F%TVLhyWJSyati`lH>VPTr?!L?h95zn`jm9gJS0OqNy|U;a`QWkiXkD0? z108Q>!rKMkxIkzlA@gC70)68gCALHZoQU5vue9#k~(D)4MHby^uT5n0;x{b1xtLGnzh8;yku$ynGAT8XfK;g?x z!$Rz)zYGry>=8u9S}y^vK_Jhuno%?zYh6f~D&vd%Ho5i22CXYxuF--Vd3XGkzvPyJ zoj4qyMRD0q+Cu=^`~|D^#Tod-?bhug!u5!slf0a+1WqIcz- zfa?N;a0<<&OmQu6=z0HjdwA*r$HuTqA}sDC9|r71)6?%gF}U@l;W3FqL6wLq_m|S{ zMy1d8AIWNLj5{lH^(1Pcx?m6?)gl+zFbEHxEvLhTTVel~3&2F{^>sf`{_GDj9izD7aTFJRK#w~&>dWyT{)?(*Cv!JK0Y|3)iPyyXSs9j_AkPNI!%OJ57ion zZC(~Xbq3w}AJ4n&pf>+7$^;Dz!c zQSvzhvY>tCH_c*{>rKln{ja}!W3`l*2zi>WJQFHPNKXE$KA3|(*M<0`#z2(JIPh$K)%>58%S{CJXw zY5}c`aQ_NH@M^1~@5>k9?RV@3Lb}ItHV-ja;8$<_%PMGlFNJCF0vDDJenc*#28*F^ z75w?e?Cc^&id69Tuv+0eux%jM%UA1kR*Bf!{wm5Z*Bzf1W9sZA4)9b!iTDmomxE5r zl{$&dHDx_C9oBGhn|szCU_)QenYyR)k+$>~VC0K^JLm;?IjUpWc^qeEYcJqCH^et` zZL=6%@?mrFSc}A?DXDQ{!c(_DVpUG`8|?%R9)xw?@BW*><4`#8R7I+*kg10#L0@kK`#n~&KlSv2c z#qvNV?-L_f(O1rCKx75=JDpH|K*7DugH z#E7F$Jf-I3n5ghu)p_^cHDB3m42Y~#+G1HC_qd5W551N$dyW&hlvzqruNu27!|)9V zUJ!lMnD1Ci4T%+gQq#4+yCq$Amsapj-M|PBEc(MQ5x|}yB=fSd>SJDRIHSP#^o@11 zQYd}+q5(l?(L;5YUk{!LhLZdS!gpCpLIN8U1eOyLKv<-q+~E6EESG zamMctUVn|Qp|!EG+yor3thM!TzoCdCH*p|yEnKW}&X!aK+MO=ubBLrcELs;lX4z%S zUztBb0j!NTf5cWzPJRsQLfelOZ5uu=DHqv6LHUF2{PO+ra`VD-lr4u(i8;U>mb~dn79>C-F zM-MC8G2*PK48(FgRkTE3DF;S*g*-_>686mhX~g%AQ;{ca4Gx*lpcDXr5PCROGEMbg=*j}TiaFU@guwG z_{CGaHZPnv01JpdGU5HJL&ERB_u9Z^Ck@UIe%(+ue-A%U@^oX_n(}=?BqTn(ByG{%1oDGBwW5-=+3y*)_OZG9D{F2NfflbS{7C=zkbawFOFPekgpnWx8SX9 zjbS6$gbu02zkkoAsqxg5|HEjZLvW`_g~oSox^|zvSu{q*SbaUE*H##TyN4NkWKm=? z(kzyPgVQvV?nQypQ#R$T2`nGpV2~2*nz~MY-&vUWb^wFD=(R~Eld;#a;U#;~DTIqz>^TAT`Pe1PN%doN0>u6Vd{`{$zU@F;PyGVNzpe_3$GtwSIlSg8`xGM{ zj?u?|+?3UlzTx#QN?O@Kh?lDTMnmhqX-qrY3JB^?sFaITSt<__SCIz$k7>}ZAs zdm%eRqrCI;JdT0aU)EV|OP=?VzZ7cBQ(@(HKh%2j<_(#Mdoi-A%`4ciCu0vl=HdKY z;Hc45_mOWxA~hq>g&E{k2BzA}kJR$U#%qf>jqYZW1?c7MMtR*vb%sB?dmeC+a?6Wt zIerrjwFEW5n%TXR(NAax`n``h*+iajv07+Y+{kHHySX{ki?Dni{++A-Y&csXiXVdx z^uaZa&Jz8{4{ZQKywldkXqVBZ(q~I&#XRwr%RR6NHl!P=3=+Ged;ewiU8m^xJDv11 zI@MU?YAsE-(D__lO6qnjEG%}n{)oPwu7*@q48TB4ksKclxwJU?d_zb>k*TX8ty+b> zqe34}3=a?3C+C*FZ|XVW(Q+%&b_M$t3Hn#1U&bx%oh!)wy4ldX1BFo{a9f-sRx!1z zw#`u&AudG&uZ%X-F>C2JrEh?M0s#j-ptE}_9`}P0)#af_+)F}9kZ-T+D}R)gA(Q|O zKM6rsDEV{^7sRFG*; zy%mU@9kp$Jqom}jIK3LB#!HUMY$%d2GvRBkG|SiClK)p-`0(m0XT65P@U+m#{38-l zG~P;eQxPL9_J|L9+imr_S<>qytTa=-i6O79px{}POLoOC2qMeA}A$rGi< z$GfZ!nR2*bfmEC2pXIFKyqlMxaHO?&5zncD@Jf($y|X*@%WoLoydpw;UPKdBN96xr zse5R)i}{6CZbB#&unP%6URCO4+vLOh zlV0rzN!KfO#{hjIPj3==^TdOs#h8gF#24W>PgcLjLp5R7^4%Zk6~AT_rFMwf6!Tpi zQU-A|hCCKgI#O^y#Z`jNqK~MrBU|)dxj!*=EEkh~KPfAnSt5=!vM(tVF=w*Wt*!X~y%OlI^SAs6wjsVndK;SAoN&5X03^Eq3Q)^Y(o9GGk3oUby$O_M_wB zIQ%i_){Uhv^my+O?dy{~PGi`(qjPi}WAC&KB|R+#11;PZbv2Df zzLQceZnvR{Oy{q}1!{J+T9n}TwR1+m>E7JoO_bNYqxzYj; zSf46)#he%8j&3%eTa-#~Y+}b^XP$r5zx7<|_IiSbR#%BN@p?D%%Hye2LHqT3PrT(s z{Oa!13YV|$dCy9RPh~*McG-UJ9F}S}kKOL!-8l-xVqug(uh%Srto)R9Yqi8M0}h;kb(*eE6uv%p@cLPDq1ChgywAC#v7In zHKLcHDWz0S4jo>{X&8-6ER^!L_|!xEGa7;sw3?I^-jv@aysnDG9EXw6>V_`R1Q}b^ zT0P(`L=pS1?%uO_Q>MLaYY>K57;6l(>slYkgINi2Zgfz*vf&Gi0n0iPO0UrXiY)!9 z#-6O1cGo?9vupNQga}-zkn}t^=fAqJT$6?_G1* zD8Ojs1t=l2gt&EmMB6xpPZArWRGXi-EoPnNCdC@aM{iNNpwpfczxOV1+?{<^x+`9{ z#aW9q{Dq3~(fDVTeyFD9bmlvYo(}@HX8^cB)zR{)-$vEecmCZCD-qNeJuv=6mK*^4 zR?5>YI1K!=gp!O*On)Hz{%ch5?So6TN4A#4KUB<6EYy852S#BA3~397+=MX(8;4;u zUI7^f8T_dX;-5dVuCJN-XMbLnU@z=K>brxOpTw{!X5|+5(y0(h_u~0yfaM6V-0qXJ0Jl!; z@Rhc{HadieZukpEYU>UT{M%pHr#2>(&EoF@w^OmH>G-syPxBGH`Y$**m;?l7#21*m zS04>X^37Q0T1OB+GQdC$J*RMH7)(AgUju^>gX_D_gOE7FQCZxZ#}R!%v!ejr?P|f z{c}FQX>`@2Zibn(UTwS`N6t$mSYaVc%(+NTT^$*)I3(2v7Mcd~sz-sFm^OFC1OVMm z`5VCv>x++36l^@p|YsmXLe0@H$H|QlraZIDl021 zP%=yhF>^R`2ecpzYWSye@3c11>i2bo{P+u)p+5i4t6u~8bH_{0R&|b97$VLVm$VPH*d~Yw_ih5T7zUJxv`2bqmzF85q{X;1oE$Xd^ZVQIx zRqcp>xfn{@72SzEy0p&5LG$l3tE&v!E00U~$`mxLbP2JxUTG*iTZ>J-f7WDSY#iWMP48D73Y2{idIkJf$zQ=UN(2Ed*A4d zXeEPcX2{^oA@qiL3)hC=D^JVVbJz~4=bF%W_pfYry+^OW)*(eH5Oech#Z zORT^>Fa`HSqO+&aFSpd;VzL!y2DZ%Dzwj6vwi$*%hQ2ug{ z&3Y_b8}Es*fCn0*3?$TrCj!n&YGE8T#9v=WQW0)C$~doDZfdMN)aGZfm0=UBB~(<8 z9y-kV@A>{3$!M`;@==)Y-#ap1&`~V-WS|!7$2(E)`wG>t((nNBuiQAa!p`oGQY}Sl z_m5kO*^dVL>G`+@);yN?5e~?|0=3-@+_aN}*;A^SM-ey^WxMmN9wba&WGMgcx-4I?(V-6*32eixbL`1j0wn4Rw*w7vx zm4zhZ&qGlUz2Q*LKZpSrm7KkGh?}*71xwcchvZS^IJH1?^9}N%VR=* zcfS0jUv+I>WDv+za)EW{>hTfYZ~ zP4b?*y4~}+QoFjM7AkBQTC{IGI2#xE;zSFK14>V24ecRTxD9=hn+5XR740XqXFGm@vxg|81f&V5Zx1{<>l#ml+`< z3f>eu(}{u>jOU*a5WiiuFh1>JM~(~;pF5l{rjh-nrS`3%r4a$RaD%I>;%JiG%A2$T zM4Ho4e$w0~PyKblI2lBo5!+M&+!m63l3!A2eGbep6q1K(E~G~|YzCr2 ziDjXOGJ5AjF>Y#U#}!%n6T$+WolYF+nqrQ@Uz!>8T*V>#1{4`~W5 z?)G-~=;7xMIy}kw969IVNkxfP9)JQg!iLxAMsHS++gNtL?pue&;=0W$xR{OpR~@H- zGOaMcdKMehPzVYX(OFPVu6(bgyXF&yJD8?aTRI>h&D;azv%`C-S<3pTm$pNIIZT<1 z18g#MX4Gxe9Q>VGsUOLn#*ub`PC16UdNl&Kue z{c<8rck6$~5zy7)jK)7hj|w=P_>;e+?-rb}X1uzaIWR-LhbSE`aNnBRaOnxDam~>XDRx4(mmeSFlG)h8;m2 zaQAKH&f*p{?%PRR#~pg>58sr0HgA12cz|uL$r9WBdR62#c@;wyzs=QIt&(j1LAjm{T}?LJOYY0vc<-)1%?xy}mfZkR zjuh?5+IIH{_TZ?j`jwXw@Hp+7We~?6T7hx*;Z7e-fq{eHRA&N5H(SBW>eQCNJgwX| z|J!e|1%xK2?vRrC{LEj)UM?<62*PlEUGM4mtp}RNRc%PAJtU&HQfLLl2oC)_;zBXt zmfNsFMbSEPqmN0)oE3{!4(wpt+jf|k$@=-ZIy}=N76=6PcYF=C`xtM^tC0$x7mif2 zTK&*&NeA|Ouxyd`e4f3Ud{F)VJ@OE}^*l6r=W2z9=luFfEoA%HN886g z&>m6NQl*n3rOXdLA6qsh7{20!{FJfNDuhBhLvaQr!k3jYQUeQaP-9)h z&;*e`PHVc~{S23eh3|#E!nt}1Qk|ThS{u!hsdHRIvOd_Cev0>9&Vr==a^T`lq8?f^ ztO`X5Y>FRA;whNm9&EuKM5;gz<3X*dtT@*1&KqG+ON8v)MsV-J|7IR+pqr8PKM0+R z*y(y)U9okny7qFxg38?MB@BU|`s^ZDGhXC(I(g8UfHG~^Q zC3WlMQifxgwb0nZhBt?ONXH};epm~J9bFi1>*~7 zUv)fmj;=B3{isN_SM`gq3Mhb;rRL$C`c zqPBg+px${VY4cN4+$Fwv8ZU;$xA=+z&9ah={9M}`-sfhWO;W*ca<8p2h%MDxE_QGz zKJqz?X1blD;^@>CXmajeW?W(ivf16ce9qw<&6s;CGX2gb%wfK@fJhX9j=o-5`5LNi{(&330>bT;ji6l)rhznwm_-FbOW^fb~@O!Vyjxpj2 zPH>4&$y>~Yk+W?O$5yuT=%jiJN4?2t{vYRIfzS9ddwYs)YF4 zlxCJhr-F6%P|@=^`1#f|^!3V}!K4j0_!hk`UGz6&^oLEy|pLnF*4tfy|+7#*B1y?1Y9i!6L5rBM_GJaG&?^_OmM=2ezo5 z31v>WnZ`@Q0c6R)x zPOz(|d+n3{(zu$0N7DYs-yU9^gd)*!1uaA;n@9CN9>~OEDkBb^=r%H|Nc31nN|yXgv?&3=ZSqi_;njL_#NrL#rM-n`;cuv)_gJ_I zk+viv8|n$N+8lV;3h~2Y0*YTs;B6kFo#Syp{3v%_5>^N;;VsVJ7bFeU{*jNB)^` z)cOQD=+6MMCZTTAK7XvV)(7ss0*9uzF4ZEA(jkIcc9O;8(V=AYStWw%7QGH6mDP_r z=78-lvsgX}wVAhOh`nSu^}6Fx^9JT^*rZP%LCNo$>Lo9l!DA84ui7&EB?ek{Rgc_n zA+hO};p1eSK;cY9|99B=r1qQ#(YxJxH#Ifios_kSCwY&(y#hO{y}xp}et@>X7Q`Tp z4v3|fh@+70 zeJ3uGFY#fT7;4eR?X$hu6mfPPm=us&NN!eYJA0IjPI($EAT>oCd@Jk!R?-j|PeFt8-W{vf*KE11e75Vw6 zYZ)R8VB`db61eLwxz$a7hii5;O15yT5Wo?;|2D_s@v#ffAjz3W%5`FDhu|OwLX;|x zlKz2B>UW2mcUTt}y&~81I5wy2cpAvNo~YY-5-%@qk=Lt5BpUC zrI<)-D=j$z-m1_>g_oI|8aEeYn^WSSZt*|@fMG{?i#>;!a9Rd5WLBn)k;)$%nfCxS zv?h7$w?8C7xDJ47SJEyTf^HQwMRR>*kY&-Ih2Tr0SKx4Kph^Dw`I))Y|6JykeEb?H zvmp8Z!$n4xW%4^8by0tbW98~fw_mF0&lu-3!SrAT+6x#l=*+osuZ*UtpZ|00)RWAm zOAPJc+kH4PXCh9&d*|7RCwH05OM=0DN zjn7NA0Bv4!dhgd=k+Xqj7|tMXHwp$0%KLD5+_* z%ss#jJX;zo>U3tf^xJ||uL-Yjh{cemYunCVw|bwjy3MvJQQhZL{Cd&n*|csY*LB@B zBk?Ze-M#PiX?V4i1)ApV{fud@Kf*O^<{DBlZTGuH5)KC^{=q?C9`X4w1wqK$V3rWB zq;^()$>G|LrYiPD@GLs{*mqsm4_{a))2vmqe_QaOy8}6{r?_Zc-S}zU!Y#D2gq6pB z5(!bH>J(}}bLLo>4}1GnE{MFp zYp2X4j!=K+h%C94*MDWw)bcbch4K_|l#~{rLWiUlE-<#; z$u99xU9;|VV=wico}@RbU;o&B<3Y0(IvZ*HwJOOF_`Gm1(FECxK zjodbyz4!+Cy@po)&+p&qm=%5_v$0jU?!EtD!otS>A%R^xC_9^8kP7!h_2-t}6#$%^ zZw~<}aByBr@FIWDK*qM$b^Lo?_GkIL)95QWv&HOg-8QjonXK)GcF}Sy!IY~Jq$B3} z!~5JEYgki1Ko8WnJs9qO@aHV*U>pzfO;%)0BmUrA-xb_aTy;=kEbu?LySo zubAxm4U=4UARu+46d=r0xM4E~VYt*CHf7Bu7biWj*!UpP+Z^Vp+-yc@eNwl;Wywqo z>Lya}zE<%%tVuvUrwkmfaRW=ahj~mb%R^|#iaA4>ldJ+RnsLk%+bo0bTbm&WGuc2r zHMIbM$<4`w|HWi60Su&{8#fpk9_Akm=$-%a<%{QLoI;bgA&R=X`prov-q_^iCq?Wh zPo6yH6f_@6j{^F}Nx1IbxaKGbDBG%g<7o#Lr|if3tpvl+&NWFXslfc_Hk#_{#v6a5 z1YLL4)RL4y7do?T3)kAh9>wMhVyl$Q_Xzfj^gM5<^iF2+vaG(-jY z-mHZYL`dxxj;<1?BvL(#t-(8x zFVrAKbOdPS0Wb{X(F0~C>l<4>wM>i*?-VcR;(6F>EX?+kU>(Jz4fS_NrC} z#=p1n&)$pW55?bq{`5|o1D@G*z3eml$1K9!e{(jduUYpRBo_g$uz~;MYc=RqL+A`+ z2r&S26bu-fGQftkc&b*=_pCY!3Sa1i1l=qGnw(i*uiZGD&jZ*k@rM(c45!c{JWprJ zSD%112;$Jat#6^oB*etVfO#TFLy_vD6Q?}!W$y0o1~R9$#Xgf!d-o1pyMU80K>YE@ zSpPr1{V>pXV#=}(Ttr^k_T?a;p`ld405AN|*0SYDY!irp&YH@k&o2el87>M8zK*Vy4t>90;LH<}@_5KGl ztz+X-=n`7kg=j}I3iw1X?CF<((TC#2$?)h((W6(@;e#|bRIDNsgH(K7a4VT&+P*jp zXIaDD)g8VLc5FFYU2hQxY@k^BD;kxfh5v(6JWn5Qu4M8#@;kph+R!g`aCeCHjaR#R zh&9@~LJjB1`ll_jB=r_O`+c|%1W_}2u}4z10{=xhPg$B!S(FabCH_H0&z3N*{%t+J zw5`mnn52g3H4WK6@(awABG-Sb#W$gB@WaFZ_nr_GOq~CG?BXB&e{M(q|8`L(bqf41 z5POP#ecWXDBLgCQ`Qh{3)mRMCe=r*3Z-UR)fR>!rXB+*T*9bcf!6Y*bAGia}o0cmY zb~z%Vsq^<&68TG-q2P(L7~ZcR+;pgA6d!TbomscfS7jUD=9Z-Su}nZcL-0*d|EUJ+ zI7cA{2_zp)h0$h;;ticO)*|pn4BxBId3uqT^Sd7{S|zs(?tBeOJ#(I%o~HPnk)9si z|1QUOf8@Qo%(*~NtWQ8OFP+(EGi%^*0l?o>nf>_jLrbUbBOgQPpN>~G!v#ory0W%$(!Q-omEcR^QzmbT z%-;svXeS)~1uAKnhanVu2I$Hwcz0`_S-V)3bd*mjif5v!4LX-Ye(v59K)LN!J{|^e z->NR`jL}wG@s{~J@bFNje8s2E*5B8t;P@L(z)%jXB>>+cn=6nFU}-S($TP&5>q{Apa%r4wiwweI)t{s9mc;5-P&(hJqF%L%x5amsISQ93}4OZH7_ zH`21zhW@u^0EQ(ZB68(g`2!|7sAL8Vs3M~y30oqseMrxZQU>NHFdpmz$Mo{p^YwxKC2=MU%3BtifoPjgutx^@Ud~7uy)Pq3 zOd*`kBhx?In^Yw}3=swrjDC!!`0TvbKx*s{+AudJyra&CgkI;Ox9@wHq0eVPFymVN zcheSWM3~4D5V(?QH4d!(7T%=@@)wskuDyl=D4gH^GJivvL}tX)F?K|84t(wr{PX9} z?95C_5kguHN&$P|Xd2YNk>tSu*jV(tUIMMU;e=*pXCq-?U;xk#pWl9wtft05f|(f& zxbi3tGBU`3aswd#=!XTM=x^S>WpJieJ54vqt1ACUJR=BBzjA9_BI7m*nLekFT-h2( zU`Q7E$0m6LM($(%uC``9hqZY)eF$0G#jnKH6A956wx+Tt9qumDu@MO8D%D`>Uk6Ub z*_C}rn+9}#>33I!C4BrU^##h)BuwRil}fw1l8rbeaP^|4dj}%@7g@|Z8={HKq4XUn ztg{P(M9+E|z{Ef8Ybj~{Z;WNDF7E)?$ zT}(Hk8|vP<{`KJmWQ55KZanL+@m_bf59x`?)0M#8U?hxaJZ;^fYOL;6;A zgH!R;gW;popNU=>QnXkQ9ZP!r;m*S4f# zmzR-gfqYC8khBbM`h_4s#UpP}?U9|ixA80%R72j~o$YWeOsOu=Z1HoMP~xvN8(;;@ zxEozmB-}$3ywBjA-Vng*0)l00M|t-XO{VqSQkGvBP7{A5r3N5ISBB$05gFcXb62JH zb7Y}9lH(T|k;3S@OIP%@!;ztJ-1`!`aD&0oYp-nq8`c2Rc~b@p6z2j@^H!`}5P#4x zrcpa{*~<=@&knMpkb2PcL5emA`GiPfqQF|Nj$~#!P11n*I07_(r3u}*YbpM9^C`6e zUEr%3M0gCIW^s8iN+Q1TmB`Lwxq05_?qgYE|3k9?k|Uya2QFc?h%V@~Xd2{56%QKm zH!zksXOKCcfMN852!QYzRa$)#4I$PlznBkk8^wg!lX7<{-T*+7>}Y9BQ5)7Y^XY9= z9gcC3=WA4v$6O6`bFFMn6Q`~g5epaIaJXSpftHt|aQikpkm1SHpiDvQ)$gpaJ?%%> z7!>@(@!nK~q|NU0?EF-WHK}aGmLavEeR50Lmc~BhY`|CMvQ^kokJ5RYhpBQEz5<^` zy>DGoQpvQ{OnYW{Et4HgR)kC!;!69EKuNM;8h*esf>=O?#vLY3KWjg6g2D7h(J z#`t)Av51!oJ=H{urW8i$OK5qpsPYGFOLs=g%~6`!?`Ka;AOF+NuW>-WdoW&i%vHI9 zF!&f=+<`d-Ua#N+)e_`0k8UwGU|2szkq#FlAnim-H^y(l?Q#ZNcaeE!N$dq$_|lw2 zO_Fkh;3H=g+8``HsPre=@b!tpMY&}>*j?ht0oNv09)o_QZb?~;+%hR>#O;N=|FyTB zwq}=cDE}(tKB1MAVSVonZGgFC@#t~iy@XYdVHuuJa04wBk^(vgg`tJ89N5~EQ*r^u z%sz3P3qour+=l9*aA3Cq%7n`7TiZ$Y0A!cWqjG-lCWGKn_tZJKK`8=1~Y-aJOg zos_L#e6s{EnI?srFrMMdHvgPOjZ6%eOaWKe(IXi)_=hQc3tu1E9DQ(=una(drcY1m z7jPV;Dc_Mxm zn_;B=HaWygp39JI4w(|?PSVFABPoC8?aGJ)?K4I}L6m6xr~Dc#v;%{`+F*N@*JiIA z(UmM38V2TGU|VD_Kf}fonUcvAU+@!7&~OL$VA{`R-{9n06CdcQk>5j zX{P1glv=n2I)yBFFT*}m$JazotprkqO>xf>7cDGX`$->0PcZ{;)1!X23&>tWD-?l% zvrJ}?*eSlYTCzMGQpxbzBD1Z2JS=<}9(oK4PlvUY&TG^(PuXCwk|$&1+hY_71Si*FT5?rK7Go5ebSx@UR&Lmgvi}ja1a2-= zk&~15u&MT7w49n663sG$DSt~^@tblWB=q&-!ZlUMC0`c?3JYp=FQ>|O0GEiE*l@;#B1CjV6n`;=cuk~%sRppCEKcOhU&Z*SpJgXaCbvKY4UUAL}4hm+NI zPoQ(Z-+2w7X%mEn8*kSnSzDK0ABZW_2F&b4^x)C@Y7sBwwiVh*`d$ZBRaN0a=^f(Z z7`P`zk#)n zSj1adTaLf=%K+K(#&(~>+dnvXr>k28TOD5H|3EC!zqhwnSW@yCZiJ7~rCkaP7=wTS zDM0W_tn&YM<)^A6@ml%qTN!(M4pcmv$jQk`Tnhz;_CY%yzH%Zcr}b9B98C}FCYNmUZ1`IP1qEXiNyZ zY-0nFyMku>@bU~T(CT8ni=fMPVrnoMsyAQEZi-7HZkTvb8{$K`WHw6fYo6u z#tz_?mBV&lzykt#xHO{Sz$ld=LxCB=VQUfavxpC}Q|pPQ#sbYJ)deD>Ss(QN-CS)C z4keae2jxiMH!RtA;spfk&7}Xtux@H}61R-!ypyhEXDMiF>^r%kwr6nbHoNa%v z*kNTf4{zGNEjOSxHa71J3_7ULZ~w~$ScWHm>HVzcrBK-?-3(6fn7 zm^%{}6;6g^N#xuPecM_|$hh`zpVF>@4%s|KDOd-VzeLi&0$a2N(~$=|K=7Q;aa9tV zMih8M@el-3O5w+`7)~8)fJa4|j^Dlh&GG;UR`Fi4-zb4oI2nkHCTtN7yaAQG_B1BS z9>R9HWh@6s<6}>NaQ)hh?~|tq0QheUL~ag+kP~R~9zp;GhCs{#wad@TvqF_k#L@mx z6*IQbYVd(yoL)Ys6>@~QT0lh66+d$vbG%B!H{qnhMFaTn&A5{C*j}f3DL;Rraua^f ztf|qU%r>3m14-%<@Ny|n2zs8-fzC%jn94o;VXP(~(a(XVDV^n5e=eb%n9=WYVIexlFxxBn@)|Sb<7?5R;pH_Vz z#Tx{a(KuM}LkI-fOJGqw>kiJ^wsopi!o6qz7}&Xas{M!}mM~%Mp=h+y;o5-xjZFvtk9#`#uP0LcnA7^dD0|DW zwxT6mI4LeAxH}X|@dCx20u`(jmlS9V#VJ}K1ef9!q)>tucP|p0Qrs!-?oNQ@+nn>A z`#ksO{k6l+BG2A4Yi7M`=ABtRE)o|_ng3g*R32E8hmXy^-b;g4S65qT$SM6VgB&4s zr?<~3L-+Q?=cz0ALu>>84_46$o7tP#uYM2}JF|y7oI z_5V5VJr~zO^FB|%TLJhTH#Ld-0N@E$SSAt~`;~~q_u-;f`pwJjcb;$TUiZ`|4VIgm zUAN+Sq2`8^II7gr0}a_dHRd)xyS322rWm2f_>X|p75+T+?Egn!I%zxLjW%FHM@~pf z-i{uGzK(KgLf(p;N-4eAq_t2jnz#rv+S5|k3Il-M2)_k{m~H*zvNfV0Y{I~9Fj0f< zJ}61%jCpsy-s~EA+{D3*8(#cnU`|PywHSz&uzh943KDe9o8h*qFB{;5_g;g#)kp z%#lTQ!tSbqCyVXE*sU|;Y~1k4yQ=f#inO8!qQUdPeHXOgcZ;{QOenNa;VnTq(JmmL zILEGa7U?m(3Rz6#y!%O?fN+S2n0p$=qy`1e{W=*qPOvJ%kwN2t@~eJn3s>3&0W)%r z(j3c*NuNG0^c}@GUd1Q~1bIudd|crz_HNDG5s$0vl}kapYLtTB+6Pll@ejR;`I;tG z@ZqM>CT|9iR&0u>MWej?95D(>$1Abpf(x*zv4uChqFK+NU4IRKH#{i?vvaEK z`rhwL%l)W#g-jOZOUYa3zQ6*la$hI|&-klzsLVd|xBCU&rPt^qP)m1;zQxWy<=2I4)0z>k8q8yr-#`)`o1l zVt+3{8}!>QSGZ1y`syNQx#k(crZnLn#^i8^uNc~4!`0b!b@=;gOq7)t?;sK-1+wXE z_H~F-;G@_nx;e&QXM#UoRC+gm#7!j}X(S|dH{?B|kJPSZpDhfYG>%5sxvujv)s#zH zH(Ndf->fx2c+txM5oCA>t?PGFZa_R)(EQ}ZZ!B*In0-JCGwX;$`3Y&+ooy#FY{y$D zGH^BvDferYbl(XFwb~tb+2%ZIsqSkLI_>XmKX(gePOGOi@q`ai2TAUwAHd=h#jkuH zR7_*0JSyOTFdNNXrKoP?2c3jDaqH{+wzP<<*8tKjy`6Yb=T_H!!v+g}^KTQ8Z%b94 z73pg1BnEHE*HMW0ZSw5@g|Ku-GeoODk8U5k?ppRPrI)!L@htZ|F!#M`#o=F9?>M?P z=N;?Yb(29?Zh`zo?2ur~*JI*i%6fWzUb~vRQ)qEhObyjDm-5Z;UjkD;6z4T~-HYkN z{?<{Xome9P;fbM1F@GJ#`QXFg#-*VepUDU9>)x>fVZ*C6vOC$1eAjP$e8ya?mI*a} zs+2o^Ka}gB0Kif&hO}&77F%!SdyoZ_MnKY2kmo z+x7C{uZ{13@H3g`PkmoAyB5dv+uYjNza` zf{cbDY^2s8WBKq?cJ_nJ>Sv1H2jHoj`J=MshY{`tE1$0|(IN|2pwsJd9OsERKPBvw{?w z#+Jn*lg)KmC`kQ=ovNEly+9|^3oMx+mcz~8B-S&6H{GVXF^cG_{>OOw+a_}WXu*ni zfRhAp%#m1tIuQSqhu>mZ)-)I0u3dzs&<72X;#?*!u*3}3HkVLg-glG%j$#k>^@|t` z78^b+ym=PQc@#odpu2r_<-4;3gmpn606|j)jpnPY`jEC4RO}xovB;im^mPNw+Fi6YNMDeA*+%S+T8&^L#((}|$)lm#JgI|bgqZGg?!grplv70s ziUZ8Y!NI@m0#Ap}dTy=Bbm5vq0x*vjT>GiTE!RIRh#Wc&ki=XaSozC6!6k!7npA{w z(qwgXkdCg-H;WEf!jIvcKb)R$RC_)$cC21p73X$2Pq7`F9M5VlVV11F70P!e@0u0H zb)VdE&buKMFs<`<$@)^Z9ot)e8O9s6 zdgYVLE+B^+Q^m=7u^$4YTRS?tSp@{BLCz=Z8l0S6D*?+N>O7A0TTn)x;1y5s6qWPn z)mxHjpP;sk<4D!F3v{_>&SR-(d@O+C92q}!M97NW>F^QK1{?HtVav=ooV~Fy4c|iU z3#t|=-yp9IsNcUkoY5E>EghFHn-Fh>kMm!@wsUnn7e@82%}LLFVesxcKA*LJ=neC{ zB6vBGFozAOjeeX$XmQv*t*t>rYhwSWEG3Aw8@1MqP!lELJuP;`@W`VLoAl4bNSwTz zO<&2MHQ>~`XkT(5#{yhliLkt{ZU=PTw&$VjE+uwiMP2zzJ~Gt6e7H(4SC;{oh6k`p zTDtUG3{YcHJ=qy2Zt+ou>yOnJedKRr6Rk#OzJH#)v@*@|U%srwOIHaVhpt+z4#nRo zp={PdLiZD{&-tF>Nk4;)DKL+_#YDtbg*l7 zZf*uTIy&HJ6{U|KAAkA!RoJQZHavo$NPu(?i76?W6eH5{9h63Avwz+!*Mi&`RO*y2 zR*MyR#X;2Q1Qk4k9UgjV8cPP&+|5@6zAZLT?RYQ|jjg}aYdDO)r{jy2mgx%UDYe*X zj0)NE52bqA;45P<3kNQY);lx(YpXh*UY!*UH`xB?>~*=DCjZdT=Ib){zE~>M(m##<4b=P_XYtr3v69HLg$kOvv4SY{}>zmdfZOf zb}o>vp$<+)K zw#rNQ#$zI*J7E`t9dV7sr#q97PaMZ_;u4VB`*ruPWA>ECa~^ecb!EaeAH5nOkB=jb z3=PFim2kN?gPe}}x{#`(t4m>NWi{-a1%^T;KU=3(27a~}NW~MfQNgXKtc)8L$Ey6* z*EViv;8Kr%{HX9z{5Q(5O72nxJw0L;ImQqQt~ZB^GeSb*cvn|fo0Fw1ul1hV+w%#S z*M+;ONyV^8GUYW+prhqNS#Tq132C;kpIQhK9^5Tse`O*5xnUXW_R;!okxFKb2Kzc& zpR>^}a`G!fDBH2r;#Q`RWRMKkD&TOVJ_)^GSk8$Rqb!=3wDP#VwmQy}j&nB=5D?3k zI6X5mwS83`cxn&hcwAzj)Qrn9qTB))nt4y1`Bn~3_ZN4Q5(7nMf})AU^32=z;aE}C zD)=9tPQ^9YnF(=w)UtdY)w@AjbKlz~#E-_8n#_-#Kklm%L&Y0L&(sIm@0PuXH4Kj9 zA3`ofzrF`kpzhboc&?)D#+kD_&V}`$Hcw^?l%LzP+*I2_n1!A}Z9W4VbuUNk<=@m9 zNI=&;9NceWuY(ht$tqiWrn^ggjywMlOz-fN!<=_f50ou8pG$uc4!6@h?zaB$-nu>X ze97UXU|bT&0w~8~dKss{Oh^-j&Wpf0+Qf>@EH5W(@YrkPM)(De&F3r3Ecq@p!)PTx za{le@b>Yp08U6$4oIq@+MD}2&RxtEFLuj!{ZD#Xt$-EmHUr#VS14Fr0H;M1>JzW{G z10K-@`>w5%-1vlq(AH0Mm#EDLvvm_uCbfavq z1D0d^#*Fw%55niy_PMxl0P@_)KE>bi1fq{On-Ks04xPg%<7ah}@~M`a3E@Zc3NHhY z?rY1Kjx>5fjR1S4d;PrArwyNbC+*_x;n0T^eue8W3|;En30(nFHY|*5^+PGFqVyiE zlsd29nw@ZSl!9;(!qM0!^(hGn3^u__tp!mKIBv!eKVlyvvZ|JQ<8U38#qx)=s)SVe z5If!xlWrYAfxD7^+-&UY^x$vJ>YE}|on`2evq16d1)gF>=EsMQ#yB8W_!Kqeu2~eJ zX&1$d$4h)Y<$X6v!??rthka2Rv$5|0{7;O4y;P-5j|@W&C7dB$aetk$I6fD=+hL7| znz+~bxgl!!KCNN{(;y&T9Q%7TqNq5wHQa-g0w|&@*-^X5!2A@cniOP4-|KPsl|JO6 zrefWBlEeRzD*Q==8*zY*+GAWD|GT<@M%0My?)0v(pk-akCc(%cnu|-G^iQaI89?(- z6!}7M3*?7cR#q+?EFAtB19oi*gq5diomc=duurssL}TQlv^8RH?MEeO_z4Kof6^N%!#|7#mwmuQ0n^n%%jyoD+K6GRolg z{zw+&NOZmuxcqa3ewBkF$2o)MmC%}W?$KI}PdUV=92>_gw+fg0#Yf`k43V@ejm+bQ z4cl=<(+|f#U2j&c)$V1TBtA2$H~2)_4&D_rF2K6#xz&EC;W=AYgy2zD?7a1?*+;k8 z{a!nxxX2H|osU(cT=vh!zYrTgK}B4TeUr9s3HPBebIh9z^&q%Cqd*Q#&z|@q9)-58 zVUZ<&Q(B$V@j-Z-)s~dfwtWbDQ^i3RGi&i&Yt!gL;hxu?ncbHhuqjDM_h*58Z$fJY^iR{X;t=W;qN)kWaaBxGpvs_&16$2bS3x9 zmD5xdZM#H=Dh7UvKy?JUH*AE#L!Y4>B{+{wfH?utmnUzML&y09v5%v{46H657({Jp z8^*MemafngfSZEn`#-~DsTYFa^UZ|*qlf1H@b*M?CC1}0ht|ZI{WD`ZhW4m0XFX|f z+gC*H^%GDe3F{oGEEKWFi(4rqjj>7JS`(y%x%{m7SZaByAr#`#MI`dN3H-_Vz_~N; zU-#R&$OidC9|VKN^I!d@j7QAr06JL3n)=<)G}&*!I2pUIoKYwEiWAG`+P>-hF4&dn zIrrJGi89~w(TEqr!dIr65cMIsF^8Z@E8)(wZ36?lNz|Q}0Hp=a={D9bV5!T0HMMR> zzGX(7NB}z5ajCio>G#41y7f)f_lFcX30k#s#HP>B`M+?daXD^UiUPbF!5#7RBUK_t(;aX8G;^To z3!+kg=l--HU2f6sQZ3wiRa0Y3ppoVJRAE+PS$4(98*@(gmtDgfzBri9Q$2dx#(qC24G zOI7d|<;Bz&&3Zp`YI(%fB*!t5TRe>?`a$Q@6k0ip2&6aB(VFJdBAS<^0n4Vw`Eq*O z!U|0zDv%-4**qr&4&%d#FFc{d0WX*iUi)-|^?Xu41JQ_PuM+*@!s1T2lU*$LI``s9 zHNn&`l4u*o1)XMn>wc#$X**fG5zN_ZLR5CHm8yx;3y%!lripu|a|f?iyW@w<=RLrC zgyZ>tVgt@^E|6!`AcbW4g}57n@_WM+UxCRp@_mW4R2+!ag-T;@d>Stn&3xh4#hMCdl#O6R5Z()l&%&LU|E;e1vkq$g}mJU*`-3@w)(;9#dJZ3`8eM z`8`7aUMZE(aUn063lsL;B)xH-hund`OgqE3Jj#_VjZBq5zlZaoEM7d>I{9z4w|pH?>1z? zt0sBqbHV|Z=Fm`EDwx{60zw5G%V|yF8dJROn69j~^?rd9@rGMzW#Vh{QNCVr6s0Uh zCM!)7rAvN!o+LwkhGFJK&RRk4#To$j`klj<-XBLRb?(H|lf2LI6RkorU-kWt56$I$ z>yY){FH#j&I0Ky!-&wD0j;mI7z@(ReKMGvw!(e(3j^n_1Giw;_|58{tW7GS(-+tR zV&Inw|m1<1Dbtr?H7GvkX(eE~S4Iw7{{5EwS_x(R7(c1Dz{|QIAaL~&D?9>^{8a!$qW?N-;6%Lg_N;VEuqrXqad?J} zW+D?`zN*>SMBG*T7aMNgx_tuyDdwy^oc64oNGYP{<*ki9oQ^k2HQkUYg$^~GU{yu? z23n4zq>a0oQ1Prk01M}jVr%htiKz<~q4U3(P+ku@(>#?2v*CKy^wYG`-)hHL=6sAq zr;cLr1SO^fTplla2l=jH*kYE+yk3rn9ZF=% zTgf%YR!;@zR^42rlXJu=QmCkZv8%=l!X7qGC0y^*l5iT0eJQE&Mr8)QEey=*0LzW$$VFdeKFn<;MU)Z`Kaie*pSa zko6i_ctW~;VYQbU|J+z^4h@V zTEtl7y&i#W9J|u0^KBeb3dO!Ov3@+zBBrDqKoW9tE^0Z6ttcs8w>pItS{2oEK(HPB zuu(VgiSywcoEGxL4Gbu;8^m+6!H^)&)*;a$YiW)eRVr0#sN^YnYQaylu?+L~JmSC5 zynNIQ+d|f&Wr2DfGSCo!XWyRoD43cumWZ2$U2oqvb*c-vKHybas#7v8XbMg+;kR*c zc&cG`|FvG{cV2@<)HbMq*G|ZCb+3+JoZ;;3Z0cfMcr4oKye@WDudlG-r^*e-4BSS`wBj>D%P?T(KNCmSrLJ9q$g~| zSc@<%=1)vbPe6#K$Iw+|{zO6A4AXX4@zbw)wO|L=@q@-cycp&7OPmb_~!&_HYaUnbj6xr-c1eRnStZtARNs* z@Uyr}R`(aHBpV$eXA$gT&J{K=naBQVDo^_Lj*f~$EiA_)Q7_;C~7wQB18l8S;AKloft zV*5lk-j)V>1rN{iqB(iliy*Zm$y95j$z_;1(BOFQKYB77Nd)%tW_+^q%Z_CAp06OR z({)eN*4rs6Md%)82Lg}%T*_N!abkVxdz%;@9jUnB*8|Mxa3H$DiWd<?>Ay+kb}8Ag+Y{j=JbUEl2_5#S;-&=kUMlRi2DanA557mXBnIwV&%MD=4=7kS0tI zH9P_&s3ZLE$H~rme4eo7X-d){?uow{2n6=*+x>KDW!yS(O(s(Pf8fEreSs-M@~i zAxnuLrG__a)cpT_%8+#L|L`>}<$dqBlgp925rA<>ut{tdW8?3!ib)p+HJC0MIXwBm*qX61_g=es) z!9F1Gt@-~~x|v^Ol3o6A=`E6i2W_8C4wR^}&lQjURq>0{mig#Un9tUtD}BT4;g z!1DzChl*P6zh>z8LAc=I#6+8>Slu(GqSeZq@oiW)wa33V0VR`6XW*9b!5HjeW|jy! zfcc6YCE`yPo=TQ>7J(YhauU)!B%nP7w zZhJIX{Wc!Vka*3poY7p3(zkL)kJVnBtNj`Kfb;O5Cm}rbCjN&cE5!#oSefgJ$IG8E z$hP3*C&J3H*DrtSzfors*nu#JF`gyvICr?yW)bbH7^|`WVQ-KX_U}~XsN zyQjoSwz&59kCwtnk1Pz8;8S@^bx*Bp5e?a+~dIZTI4wtd8=V4tAFL8vie_=K*j5W^9yk0cf40|jOLj60rOA2tys)4ENaj-+T1527ElWjZ z){B&%E%MBM{}GIp+x&ERHdz9=3&yG>o}_td-5+w^L-rW&t!;0#O6n1fF&r}}j|D1i zo6KXzhaI#pU`__(hQtZ7uIIO?Otdz_cZ9TwtMlxCPYk3)))siopr6n zZ*xiLUl%s778ff<#;r6+mA%H_};P5R1bN`N?}N zFzAL_0hl?b(r~%g5d!&0(_E^w7u>|73BWvhm&65{1-kb-35?l1Eoq)gh_uL()bktJ zxdOCjtYhk$fm>T!lSCbveB*o}^KPLns9+QP1&wUtT39V3Xlf<};md`k>9C@QVxMVA6KF+YeP9$Hrsq z)hXlyHLlQ1!qx1hvHX)HsbWy~0JOuu2s~Ba9-{Vf1e7O1T3^;w2Z*FWVC>D&Wd_J! zzgjlBb0sYEN}qRL#*N-Hhl?%~Nl4~3}1&3EO+}g<X5Bh7&P@L0y4nk#_CR9uM(+_QJJ-uH$xKK|#L}R| zJT`n_p$nPom$K-LQ0{)>Ta_T0JIg>hD1CX7+(wp|E8a7C_MoH< zBGW_$dsVh$%c1c~oU@1_L-XpWdpq$!&VDPA`Mz*cfNnCwWgNS^naZ>>Wm{&;k@&oP zoE=z+r%h?xvq1B~7&Cs8$3s;7UuXwefuDo}GyczH7I^6uZwxH?fh70sNm|YAKUsMC z2{SdkOM%N2i@d~-b<^rw|7+`Yu2(2;H*uxCzS&C=Rf`NHS;0VX=r=oSRdRfobbP6+ zp_Bz}bJOe6CJz&&Xz7k~R2re-ski8p1(jDyGRAsTh39aGaKH0XnT27@)sCT{L;Bol zG9aXZg<5kQ&_Dc$b4)3O5gYXS_JuRIMNRA{gP)@8G|!HXyow#@U9Q^DKZwN4+ld6n z#NK$c;(r4cpF3|}uN?%3t+O_JPb9Hb9A6ylT<>k4?H80TpxLkfS=`2%6{4nhuD-Fr z?Jr5eO`&qQSQmr-388$a{KhonjWL`_}mJM<@z3-W#XsbkFem?Yp z|MrE?XxEjw{odvwdMBNH`dc?8&j#@~(8)!y zLCF61!pUJI9J*I+@YTuk4T+HbjC!&2e$?QxLE-X222a)yuP~UWiTtp)Uiat(kBfsp z3ldXDa(4l-iiqJD!F0t=u)K(u$R;h`lKfFwzUFAK_sO7nIe^;JlHc-A%A79R8{~t* zXQ0{Po1_vVec?u-YN{fvFVKQM2h4!*Fc@TLN;tbXSTT@>lvG>PUpV5KD0x4(%~upb zJ$!l$5zSwP_=WK6>*mxj8kzMgfA;m)VSX3a`KXPhdT~BEg;n4$F8Tm^DpE>f#kiD~ zk7V`yC%0A-mDcaA6Px;W1AWqByX8DQJ=Plsl0_P>{RXd7FTiE}eVY0Cf97gpYegCN zUj2yC($ILCeBafBbJ|Mr{9gj$8{|0s$3D8Yk1NmptPKg&!mOfmoGKjL*i_Y$hW2XP zk6g0l*0<9s+2SNbQjyC-;!LG0eRB~A(v5}I9j$pk;}v5^WR5iESQ?e^x7<@b)fjbd z*?%a`e`YavD1L10Iu`DhPsRTN17(u`aN+B6^i1iw_al^#Pq6sA4KTjZ;+I!ng+F*w zjAX2ghvSmoW{=@V$g!&U`!+_uPo+j-T_8HM=T3y3F-D7fA^1c@U8i&+aSD5`<;9~q zbSdiL(d1AqgknX&`12j_p5GOlOHt^r+yNV(QtMe6O=sp}4}m7-#YL?_1R}$8K2*5^ zqLBkyEtF7Sm*3Rl#m2ZGFOrtE+NOZo=pInGt5;(K3+OO0_sL?RU~ieU1)fuXDv#?V zf_$JEothztM2~d{;60SFlZSvD*p8NW657Nx?+4iG;O$fh^GFMtPUl^elYNFa$L9QE z6B{3ha>!iKdqTe@++Oq8aF5TZWn_rUo28|Z%-%tAVl1Sw=9eaU`%F~4L-enPs)b=G zV_PKu_0-?$k7%ai$?7RTZ}tXR)uJo{a>j9kwgljCtj!txh|8hD7)w3Ls*_Sx&Ofu( zH4=X@C+A8LM@A+_LGrh&;8W;UfQ1)nyK?*G+%4VZ!CV;WSK3JbIE7)-=8N2zs+QN7 zUF4&sm7SoXBzzEQ81h}GN_trZZqRK|5*(KK2-RkG>wbA9KWMp#uC$pU3$oVFjU?#? z#4aTBaQ6G)U(=Yjs93M!ur{%`z8%)@1ZWm~qE%ad4JHKuBeNX3seT%5jm&J@B$PA0(El5w%I0 ztF-TL-#$eWR-ZR4@s2O(dvlhPBU~+7Fb9XWpU!GxmY^2L(^h_tB&WiGM>${fxm3d6 zL^U`c-T7qO6$_E4y}ZMz^fLC4@=tr0(6NzP8iO6>?V`LbY@?1@V+DWMFyjlJ&SH0U zdBch@1hX6y)w{L2595!=^d}aR$G6(TWQ1fyiM0f^yu7`afE$;4+z-N^MN!e%yNU9b znJ#os;>nwf(xB1`X+@)2CVO>fJy(`#U6_fDxSvK>bwJYW)GlX;%3WNDy^WS4bZUh=6FXjWGgjkTTPTr9L={E$+L?HQTzdamZf7G`3S;_V(d~^rf~^ne z>#X@Yjpiroa-4G{bp7h9mUG857g5F5`w+}e%88mP z|64AKt(hy7SLxH2XKA@%hN zH7YBArlpZaJ|ddqPu{ry7COyG*5b7*V}U^JWnd1Dz`m|dVF|q%|AnF^Iuor4sYWiy zFn4=d_{qwKIDuSRmoC|+JRQ>cV-X&gLYyz7-0;KNq3WSXt2J+twKWuEZ zV6t2KgeB7idqYc)Eh8f=BN03?L2_pmNBe#+Aqau@E(}CWr9LLzTOAh!Iu=eE$K-vM zT3Uk6%xQJgGm$;Ixow^W@=6km){q4pzba%?BaT`Ra0h+*mG)*;3+SoE^_ew)1ag33 z?46tykmJr3^d)LZA|Z8o^iklQE2xY%A^~LTU`MnhT-6NKO}KKx1k!1Nl3}aR|>YCte*7!aMWhf9~!4T-XRd!BQAw`{71e z&|Jupu{Z8vcVwd5>X4n9HvCCepQfysxQ$dY2TxmHKeVFau}Xq%ZCu)qKUr8MwA*i= zMf%lLA)0nP>+G(5yn{bUod%_yI_`s$5J7KyKgI7Dn{)v_u*YS8+VAla!cXFr!S9y_ zn=_Wqb{SfUAJ+Cc2q9|P4+7t6(K}xW*PK6%Y&H;m?_@?BgatKFm%BJU4$e*Fz9d^B zmp9apHlZQBb~0rQqK1|7kBb$`Tfa3l1&Iy8D>|;&uu)pLpd05_`#w6lF38tRrV06L zL5nKLGdviq&3>1;KW=@CM+G>!An5P}0s?7#Ws9r0y}`oX2rFpc=iqh$20b%-HrK7x zy)*wSOZYY@NQju>jS#JFBy^8zfMa6`+=7*s7Wh?EM$~^P1AKaMo{o7A0n~+eI6C&} z3vqz>T&SAgPZdXw$)}pu{A_zAb%X!EHb7=UMVHpNk`&2iXVYf8{;- zzEVM@q|*3{U;duT`<|qwSX_yGC8`-N)b#j_D(z)Vt;Z&LD_vKjh|9+L%wvr57A?I= zl&gU$yu^IpCsrlX3zr|;y3sg=2nJz-J9bYe@dGpfQw?uh%PQI;vIK$cY^%s+y$1I)~ zvD#2?{QhW~2S1*24}x8@o^Eg_|A@@)B9$=_P7FkqkBJ^t^OL1N`|8-$QX`lj$hZ5F z{DD1I*|>2?xl4^ssVJs}jFFB|EykcwU}Ev_`OM1cQ1{3%`<2I)oyoRSFWNRkU-Vt3 z89exC#4oVvL}AlPHQJ(K+p@5kL$#J3^}Jg`BKOaPI?2`jvS%+M+2GlIGOPdGOl`Md zrpjGvGJDu$GO|rVqN4aMv^=Z`prD!feHe~(qa4XF;_*Kk<)9$irB6TuqZ!xKXjwg1=_+$mkC%ArJprsSUB`4??Pn(m76joG zZtCOD?F+>KFv!iUcVvD;_r*bFp_~jT$by!GgM*ftK2AcB zIV~*> z#R(qbbP>7QQ9yJ%|DdTx7JISy0>N9!u&trMU{wa<v3C8Vo;5cU|W}~wMK{K46Y7?s?QwW6-f%%) zGyq{O3R-V-UgyPwmP{am9h_aC51vuWIJ*7$nM5$K*vN_RFLc*XY(+-)@TBOwCH0fv zB@?qxz>hN}Y(m zUmY*#TkslgcV4cRxUXAH!8WxDN_OS@!65j#be#U2E9~0~Mm7*W!Q)^4ZlcE=J#snU zZlkjs=HIW2M8`{5W_e5b$>*+29J)Pn6iY?ek*OU7Harf@z+Im%4LPwA;9!&`)+{`8 z>Ehi*RhHbI9+Yu--u7g}UEd{%#Eg$kx=1xVUNm~XU?17cG!Ud5&k*u)w`~|d?ng|l z&6xYeN^5X(_)n^cxFMlS%_BV4w?QkaT8Xi>i;UyGo&*Q_VuUz(aiO#zYQARxuk)mX zCxYTMQN*2mg#{F2Fd>nx6*X8&!c0{=>}v3bULiO*Pe|jj`|z2O)OPxiJF6WS95;6M zORu-9XfPv~>4v|@wbR}Im&Q?NZuh`q3O6Av%9rHM^s)W9b&bAqmU4^!@YqsrFv9Umlg1Fz~X2g|j*tvE$n) z5zi=oZx8<9=jzS3RA~~-&xe`CQrU7IN9flVk=V94@G)3z29C&vJYE?RsU!&}dG|qT ze!o+j`{6mQUrFP&6MbAwRIMjI^Qsj zd9KkbJ#Sy93>)FOulTJr} z&W$q?8#{nbY3UONF8=-&!-1wINXfswpSp+mX$S!^l&u!u=S^Jn@|6EFO0z5|-vEKa zj6&!1r4(0Dl@oQ`F+mfPEcuY)jiMbbenyl7D*Vk2h zbY`xu-t;gx=VZ|Ni&iM4vVaypnY;O^s;UYBExmfs{P+90l!NStp=F#n8Vh3VJYq(^ zhJo{?g=Voy9fl2O;5E^X4oOy?JXu-UR%u}!)>yKLCuZC&=b}>$v8f#ZoD;UERU8}# zAIikyxN^jki%ixys=h~Wk!U?n6fja&&y3_kYvlP=wG*f>4=UD}Qp;4b1e8QO@z;nxS4FW9W zx#Nf8FX#vU9&-_kW0i`|I*eqe#9vH()gQOYECP23S@N_APq>sY1BdM#X&gAcplmVi z=pNrgQYZbHMDXV=`Ti+?K$w})tf#}upDFf8HDK4MH_YQ#kyL`_qy|ESoavR6YGht4 z<41962~KR-oY|sGRQo~12}jm@-T!d`R+g5)?cs{E2xh`}g5Te*;s0Rf6b6Y*6n7<4 z;RR2y78OlfTj=cIqC7EslUHvNI!Iwy?m z8vHs?9L|tFA;icp^2UgMeJ$@uk~x&EXK>E&j83q9ephkcVBh05y8FDr2A^isAm-jb z6THIMtgqUCO4VEm9#whx0ih=y9sL+?eL=-dQ7F)Ms^xNel&D3BxE+_67-F?03eA4G zd}MD_Z$mrt!qT?F3(s5=Q`Y+SmgUN?a%E#mmN?>x{o39`nL{m^!=~?+@2j+8f0F$K z^BaAqj|Dy|P9W#*DbRXfnh#q5PK)y5*>eq51$9}{|l$8CweYHbrPYd!Blk@UfUn^aK*$?%zr zJEp;SfoygUrOS)TTop20QI}9$u%uMySL>cX=M~y_v>YOMluCA%adbreGN&00zP!>5 zY-N>@@h>Cgg0Q(xX(NTKgUyS^bRMZP@mNMd9qXf51d{G6s7KEI^Ko|*(7yjCj;8{n zQJ9dgkGG6{3SrP5ANqV=qknWl-9$=9u&XbBCLZu@F7qJ7+$qWth*GfoO%S_iaQe&? z1MqxDf=NHOqiI~i*8c00#Kcr{t#h&qmgv=??ioHQu=a2CYRm%{{ZyA*qqYfrvfLH- z^NEP1w*ooO4D4e0#$BGzjE#v}2OCw^<ZBkE3Y0=0Be! zTE=?h79~i&FNm#_P;Dixu7#i#*}!dwaV{EZcgkKaqFemL++={KV>lC>9CTZEloDo- zHYbO*ogQw1u(3|l{#k@a5eMwrubuaIsKP@_y~2_J1S9% zBm^0fQw1Kj8QOWjxF znlW9SmH45j6}{49hnjwzh-&>p6GNvnx-oU6gC=j#l@MM1=svg%H#`OqBBwWEL}GZM8Kz{SjuDNpilO z;%aOkJwH``4hbOk(anO6^Yy-)z3f+>P0oR@T!)3Wd~!ZS$Pn-diyY~=MEtY*@*e1m z>3xkiEH4`D1z{%Ib(0JCGkyK=msUz(Z7-4{dT2eykx|YpsK|t7sa;Sja%U10cyyJu zYE(B1!`Yyp-kspa_VA2sPx5V&8J4HNLVY;Vs^`HhAiXM@3Nprh*&clXeDQ5NF0hx3 z25$2Nx8HuqRP{Xnf?b~091 zM7|N;|3}+fKSc3;|Km${2}*aPlyoi~(kdY#r2^93uyi*H(jhG^-JQ}6(%l^k%YKIE ztKQ!~;L9)U&g{K2_nvbf=W)*5IcEV~^EG61aVk<=#}xF^`rQU@b7_RDaE@6K)upFd zjjw1&SzD#?>`J%vv7Hb(8zOQ&4JK~}y+mLxmdp7M0fx?@Nu;Ov&*i5Ylb;*vow$$D zJ!j|{+abnX=;5tp-BmnzB1>(*A7>J3&<~I0DrG5~u-w5TQ`ap_V@b48;%_YG_~I=;AdWm-6-L%_&B>oJe>mqoZgr;xB4ffm zd;NtTi6Y<52&lmT$pFs0wrf$OBwgVC?#L6DMhy{?AoQ=y5gJh_6{D((|1ebZ#fuv$ z(ZH7w!_^kNv5@C$-k&|n+}Qez+Q*#?gulhm0)#3HaOzC;7rD?vjS07dH_g*w5hU$1 zyCpyub~o3Ab5}cLOD!<$-sABa<6&9h*Tq!NcXIV3pxxuyR|ecu%8ER>`x-WN!PaK_ zsTD#J*r)*=fCq$)+GTCWg2*sB%r)K%=LWw2>+nsd4O-~t_IF$Q@*h0i|NQXjL@&9E zkVN<0hh|e+G|*ifir3q(RqJ&6|7nF9!2Pje0MM2UfJr#j9N4=Z5sQKt@|ci7Y=eV6 zv;XIJ%M~vXWwcP3e)ICu0|ryEXrQ;=tQotW0E+&f79mhNR=e;*|j6$>cj%ME4b>5;=9qCsF ze_a}>Hu)yaaJd4EUk)RfDC_9M=nsMRQ!`r_3yQ4ml-%tFH4;5VG_73uKW@PrC_QBjynQ5j*|&6jlhJf^CE_8Hwc{Wgc}-0 zh@);M#cNQ+9=~hiP23L6?2LjM4j^#Mp@15iODK%Y4u&XK4NrIQGYeY8?IAJkyCCW! z5Sxoo!4YurttO%0p3~(uD_lD-v5c&rM z#7=7bJ5z^zac<F5P z8uQ>vPX7sjX+o@DI~bJSV)4+yPy1^TT! z;itlI>Uosk1lXXt4>VS2V~(d(uXZmC7S>CZ6RZpwRV-~nYR zecxXSBkh$y=O>vPsJwTE90P$D%S8fuVM%HOedYoD0{&r;3pEmnkuT(TbeiQI-svCk z)_D}W#72o6&Nx1~_gJstMhS|!mBuK#bB%bm-O2718d35j{6M7P!Ei+b4$U3n%QbkK z0>gT3Z|f%uc|f>S14q~fP1ctnDH{p2&*RwDj4@zzqA6XU0u=k-k1z_qlifefDOgQj za^wcH>a5~4$kQu*FJ_gTvEOGEJVhN-{F77C)Z3qfBT=BBTx2%?h{TB4A_1IO@I4nu z7zKquk=)j}st{KDz#8Rv`lV`wy5EL&yvjjupw<}fLb~Q}7w*0+MAsr)FO&=oZS7q& zxM`lvFBm6gQorLq5UhK`wCJUPugL(DLx$YnslxFt`9PkXo*oP{%oJL-7xXasqmrs*B`E${P}&t zUW_xJ>ZgzJj4Y8%_=GIS7~_L4%y;3yWOiVv*V2I8){-@$B_5#NUjY zTVuWX6z4yH;b`Am`LW538LkX$S!VLdx%N%iD)kQ)xk14pt1X%>r`eD!+^L6?~bwUG24E>7GUo>j_ zMm+KL&6VmWX=WmHx^g?F3y&0(T(R4i-n5las%sx4th`$XkP@Gcy_vb$f9ETVxE_l7yW|QZ$TR4d<@1a| z=<|&J84p|<`>N-^$34W8T!V26nNno_0U3I{nxQZMpxCkM+OmEtAf#qpwq~&X{OyNj za>n`c?{xP?TaeZdssGHvL8@QDcck*~m@pM_dS~~V_qUGk^)dws8J;1vZ+gltC-h@^ zFUia>!&IHZXc^juGMv?@3chUiP&`*7N{&2BnpFfO`|e&iD?K7dtifww8}U=w(8j{E zbBEWnTlS2pSdlQ9BM~5!1aDeKaQ@Z`U`n}L4(KO*paz5vQ=y2h4Q!@x7};aVA_=O} zHq?@nd|st!5Xz$;Ytc-lkeSfG?Q_Dt(nr z00OgB?t3@nM~sVgUo1wTVFS9M;917V#W7mLDr{{9^fH8PGbycOS3TEhGF>$(>yxA~ zl?nyyY$U(~H96wy>d*JOD~gvLSS@><2F38VD`>Lxj8$c)lC zn~|%rzY+SCC89YvlScK;?vld_GlAJia*jDo;b(H%Sr9bPN60itjOuJztv)75<1x@L zbesJUwWjSv>NFqZ>3DZY*8zIFAV2qgr?45L`!2RFDh-b&Y4-K`x|R0~Ja_9YF5_Rc z^&3u(_o6pnMcT?Hk}|a+=G&|%JRU0VMG1-*#*`Sni!$s~FjYw$rlw}MwiU~EC_Mw= zlko7``+9=l-7hjh2viy}Y6?6rJR7*IF1Q<5l!;Pow^irx38l zg17T??X5QROj&vq`Svoa4IJ9p$5K)vtvjNBILuj7q&!VYvwi#D{;>I2O4}g&-joWk zE31Uj@RcGIQYtg76l_1!|NTZ@p{*3hV%!k{)aH52v<&Qm5I(IHp^Kbv33lSZgnKlZpQ?zr) zSY!|s6WS8ehgw@_)h(tV`^o-qYJwNr>He=fWQ2?VZ`UZG!;U-|>3`nO66!YSe=bs; z-~Y#p`v0LBr?xf(5Q~-U4eZs&^T(4Qib*r5@`~7{t=_MMU235sQ>b$0UQ<}BuAT75 zoqb_oPJ?APQHj}bkrani3=?3Q{Qb$|K%25j0q**J$l{mO))!#yd76K6iUnF-&qMlUVDQWFM5?eTc$gK4kA&YXX$x~XB8(K}DfUWz;X`vmt@P2khu zO_%7nTSK#D!9XZr9R1(DX7c~%(Byv(8Cw49LL71AhCR-TI`)h!>)bu>94bs)f{Nt18ZnL+zFA?dZb=4mXNeSh?%7cqQI{&b7Q7Q?Fkc<}Hp?3L zR`2Y^DAEvBt=I5)di$i>Q1I@Y5QThMnzh$5>&UNp zoU@4(1^zzA+0Y~<7lrk;SCWJc5A6`L1ibt zjT~S1MUY+~m~fG75dS#S6lFv!EfNAjK4eoHYwgN|ATv`GL}~*XqH-!Q!5EKMmnCSR zTQ}#9z7i}@#aKC&J=ImpL27_Fr|!PeNcFeAxvtW#h8xyzpViV{oF?1) z9Bn*u=gZ$G&N97sOJtiet$F$PJY@=G!Do3`KWGz7YlW>{E8Q~b_f3&%m zGm*At{f&71v%o*qQs7QkYuB}=+9nx#K~{v`rim#^^P0=iD4DKV?YYB^>7b4^5H>Da zs9Z%kXCwh4&gCD;Okx6@E5@C93YYy zME(8pXwO&giZOW)&ef{94yiAOC#{eMaJ5cf3Vs73SM5FR0*;ZvoZNwJKj^*W)bDWx zjVD(8u5bQ1wzxtlKB>Dx;TI8gG@JR}FjI!uoKi_JC)3kui!x}4_?x@iPn{J2?uzL^Lj=y51#Z&bFJE?S@?*1^fndlKN({4)0k=Z#=z; z;!50Oot7bn;|@HUlmJ}~p8_v0+g$esJdUll+egVm$2&Po_Jp^Q_Cd$@ADYdb2C!K@ zmO~n5K|h1_dW=)k@RgvK&3KOGl+#H@1F^islq^HU>5%nChNe#l=zY<`)ZrS`N+WSm z1Q5>V^JV6^q}lKOVS3*-(zOoM4qV-yBWX6~If!1tNZki)(Gf zkQda^zhWaAI*II9i?Qq({e2AYqMpT!%Pdr15^SOD`}&}Q=R$+%v}i)97Rk{-D?576 zbwd_QW+T6E30YtIAD^d2$4r zk-ohzYb|6j-^LI7fr2?tXpqC%_ZD8qOP)?cW_IQ4CI!|_QAwvZT9<(|9}2O6g;q9) z(%xlkR4L<~L(Mgb&GsT)F}pBTpx_d|A&Z^PX{f{I)p#+-$b>y(d_R_ZnPBAQm~x^F zF#>4ffTuFITp{g7T?0jQpBYAB9g_Ds^1GOp9NYL^+@7{O3QdPRmt6@e5|`&sr8K;W z6}%~T1+X?-7nwKVFljvI)(~q(e85lS)le1xL?=Xb{m)Em9V83aG9a0q++ON>4vfMR ztpa$tQfDO@NOlh9_T>y_7@23NZ<}+X4mV5+H0^l~%3$DV@mD)H!&+}W6@@el zL^r|U_aVFjm|GG7(!Q_TNW?FdT`PDHW#m8hU&IL;hfe0$23fBRBQ%FcUQi9b^jlNj z+wt?8c&#vR`uXSUf|ZXrfub~4mcDqWI@Z9A&tpV-(ZL@28SXDt_IdQ?V-sbPhYuZ{ z3ig)p^%PVo*t?WlewAkO#TuJ2oLAYQj(sRlg>$CSiuOGzY7qQBSF=H0dzp50kpKI? zkW^?meP!~`&n0x4Yzzo5A$gVoeAFN@_%zTbkREZ3C$O=<;S0UQ-N4;Lmyks)I5CZ` z6rhSbdr*Me$vrF>sqDuCWF+BykH0DBZ`n_-U$KT{%`ZqTgw{FYX>i_kZ4BmxX0^mqHlEwXm|pzv}sr+-D-(T2Gv;+kwNauhRtd@ z7-4Xj*)%jW(fL;|HE<|7s&&)d_e|X0XA?jR-*sR355lx8j|gZufQvVHQ<$piQQ&3p zw&i)l3=ICrZAg3WSSeK)L4mddB9QkZdHX2?&4|}$=w*<+Lrw(_*9cymjM1S&*UMSv z3sF$++2TB_D1i3X5PP4{T&RiI{wsONu>H+V(1pXz&5>qp8FmeTwJmVZ>aQ@hK?j*9 zaFEY5DuZ)UJiZ@4qY*5Ds|jE^$MI;;N${5<$)rV1K(PRN_|k^?#C1DKn2}8?4fic^ zCpEv;2Dq*l2~>RJ4AizFR%Qv~kdl3_ zJS*+@<{&Hb*^UODpac2qEYV@a1r}A&IA1G!LnPTc3>I7#r4NKXY%>!(}c^Y>lV%s&q?t+6-n( zIUC+Oqa%hE8to72EyOztj9oL+9qEXZ_ul-a@*#3X?B+-Dcyih~1qWCt6MkY?-rf3+ z`S}fNX&a5Ov4hHQ9r8jbst?Bx?L7@qe$qODmtl8{uTv= z`;@$D|2h$o_jMZ3->;chWn71p;*MM8<38t!>*6iM`|{~oUVj$K1BD8dYJ~f-S>unC zq6b`}s*K{S3>}nfMeHeQWXm)FUZLd>wL66K&v~yVtq&CnwVXodMcdW?ea%2{{qh&T(f@si`t_VcFTNH zE%h?zxFT(d;rpRont>z}X>D>FQh-dywSWYL68uhkc8(W6I_)B{8SLfuhUWG69uqSk z*2nwVmuF2o;*-jHMI15_=HRr1U}<^F?hA=AVe-E^<6L|@p9xHFfVJ|e?1As?3GWEP z%llizaB)xEO-FWmiSAQ1bY;mbdEQIgqx)-%W z2U0iE<7T6@^z3LjeDXd2?OlHRv!YKkMOpx8P8`qg$>TT?_7=AOo$H7XTHK-K@&-m~ zP*8q*Pv2IQ*?*K1Xlby~v?}(rKOad5G_Mxd{ zsvsC*bo$Yv>5m3$^{#xN@yDcv>)b;x8em#jM5sfRtncIEzSCp>dG~`-|7E$YCn9Ei(59m)_Az8>;B)HqG0<|2c~1x3z4tt#iDU9zx`oFNd-*akH_xur1CCD9S>WL z^N)Kxcfz88zsLg%%LOJ?8Wufv!q^6W9%2oJRW2Y5vW~9ls_s?tv=QZfYj;eA?6zOH z*$}GhvXU&a7hD$0i+$fbsBe*#SpS7I_t0+t{^URcP$gi(bC6*&>(_VrhPix*1#suoD5CFv1`3_N|r5q`hS}?l%16oC$LSa*jNB5b#4WXS{ z{%J-AQeHW=bkxNz`t&V^a*t_Pq#$84RKL*T<^u9`Uw~ECp8?k z(T&L&&FK18yO;&cD>W5MU#?d&lSarBHoWo040&_07V^f)m~e0eEe9)gHRKI2SMuK; z6ZbV@%!LHD6Ya|H%c8B$s~p5lr!ZzvmrfWZIHpaf^oTWC zh=GjfQhk0>Vfe8ME?456Q2K(XDUwlaiG-$zyU+GInXqXIMe4PlMnPTF2S_qmSU}h7 zso!O+PM2pz@5qV;UfekbUJyh7c(3DqSjiI}$Vu81gQYx1KG+5OIA;D-{zquHGo09j zk8Qp)By41Ft+TV^WjO~tp?ok>?j;}K7;C~m&Ux!q`rW9})ABr>0qPMZ5%=ac+Jta|-bT!n1cX0d_wyj0n?Y@W_wI8|%>e7FmN4 zD^LvP0zpUOPoGNte6Wl|JA{5|cgM&Fq^tys%Jgg8*O!JYRe>5|Xmx zCw_BY8#k(u{-9nIej!aU)IP=xLht&ED$>L?H_wPGGORGvp>k93CfeI&(!<_ueX3#n zNknI99~{NccZkk?;;P48i*SK|2<_{ZAgv?$!Qs0Z2g-lPIXJP0cBB^<#$J$xkJa*n zDsIUjn)h+9t99AoXs`bTC?|(2)TuL14&_r+PVAz=;Nim~t&MnH1RA9JLE3a#qT=() z8LkDEQG?i}&nH8NOG1sz}hPal8IG(hgCph5hC zD7FQOf*Ta3jI+GC7rbxmsFe%$32 z?CGkOgG~3yO{z?9sOt&;@pplEX-|Jto948weIsR#v;YAmT)o~c3rZtU`Gs^ClX6kN$&g4v; zEB@R5FqGC-?e|wv$^DEF;jBj0bJ7OX5jKi~O|Fu^aMN!p*V*?Ou|sLpsTF+j?C=qt z1FP3)q5lLPiE}?aO!iI{@8|aSSXK88-Jn4DSo#w5y8^je6M?OUIi_d|l;NVsD9g-r z_yH;&v1ZDX`8L0U)nsUZ0rYr3ykqi~6EOwJ$j`)UsEV*hlboB%mh^fONjdot(d-Cl zyNIPaCV!(~^i+51eV*f6GCV~NI#(~)Mg9@7UHslTB68MJk~JPjC%Sq5KHd1=p*jwk z0g?vRUP92RW@(4{QVha;429l;z*qH{cc$_qfOK(}I5K1^6jCQ2Jk*8vb;fXmCfx6; z8YQPg(TWILq68)1XcY3cQF-w-W&(G5t)|4U$DBuN`14gBOG3?2&S<)tOxC^zcd6hI zxO*$b-rrASr%KUHW#!6n(ja*~-gB$yh>cLSDe62NMn=>n#1Kpe!+;63~jOn^hd-=f7K~{}XIAMa-AbrP+o=SZiL4w=P9 zey@;F274IERlvxxnwh`tTKuEOgSb~uOZ!S6IPZ;b^C<9%$n@2HUK4qRd&w#3(Zeqt z0=gM{rSa8dV2iO!4r=OU4!!omP7HG@VkIoz+p%7uMS(Y5W@L(tEdTj=EA!3^kQT_T zQUPy$l|X+Q9!N}oIhVMHBvEK)Z!hxZ{-LiK)f~x3#kGN?h<>LdZKFw`3evXomR~;O z&$NM$DGG$4@%6_t6mCSe)Eilm7L!e4{Ddw+sAu0lab@o4aeLv9eS5cP)L!_Cii&QR z6sop0Jc#8Dx`p`FI}}NM4dfL8QL0p=F;NdFO-|cOno{i)KQhM(#|y_eRWd8YO%@w<_~;cOc4<{e9Fkab<>ge$trs{H4_CWiXc_Z|K8v96HzCv1kkJ z@cs#v<5LLUG%aVt>EYLhYCAaWhF(~h?4@>@jGLPvP`(=i6nLWL<9p7{&5e$S*9S}q zxAnqrZhFRAb71RZo86ie&a_xb6V9~vvtxpSH5C>rr*!-GjCK@&jWos5W4y;)Iw)P^~zy^sw zQGgcSNHZY*;~g_?_au^MLJni!e6c+CHvl7^=D1|T|8$^1l{-bE;uGiy$hgQZ8*sa+ z&#cvlvX&QBS&SQyI(oD&z~I%fLO~sbgJBq2UgPASVTIZKJx6lDWt|9@f3MO+7F}Fu zHtcD7Jc!K3C98-Vt#V|s->i+a#R2`fRk4nh8S8Z0ds~>k0(YC#R%NZp>LC*_yN^Jcgo*>O4Zq{q4i z?)|}ZWkmvf67_0z>waPuku{S_j_rqGE~Me)H#=@}p2KF^7WKLVx8B?G331;rqz6E3 z;{-WEc6D~_Rz64GM8tJn`gAx#|5&F;dvxxcjg5`9gM)~H1ZGp9vG$r&jB3@J2q-|yQ1J$lTx zo#`P11vS^|cL~E^;pZB%o_;aJwRtF}0~4S?cFZ2Vn^!WQ@I$_RP>lDsy~zv|V#PY` z?&0rNNsY{f`-B)oCqLk_*qfMdOvfWQ0gy-^%xRx76-edSmfxg*ei$i)0tmYs4P@V{ zVsGD6KdMA-YXA5Lhr*s_N}@$lA$*~H~2WFF=jjQyuVP{}l^b>%pB`)-6> z>YvB8U$_|v#sM=#;|dvY_wkTU&e^cAM2`LQ#C0O=k*x&@ce;j#uzY-cfK?(XBZKUg z(Kj}R-`Uy8#l;0#Uj8_o38p6I&~JaZyWsYQIw=ZW534Bx^$&pr$DLhWXV8OkdM++} za(=6J%kq{lRVTwgc;e#X{Km%Ay`XyqZfilrr`4IT;k9cxlM812vzCrKH(I-Md{M7_ z(=YF-o8_9YpQM`=dAXmbGYf0bP_fzN!!Jf9iuNJJ#adj65-N z3fwnt@K!=S>!^9=U7-|W{87sCr83vK=sY+H8B7i|YQoHpB>@Wv+U>y;T zNrhsJ=V+EEfC;L|W5I`Rn`W!fx6l}68cMWp7?ek z;1bl$lfejiu;tJ-nAU$iL(?(mVNg`p`i0(ckc&$a_U2o(Fot^}VQ{@Oc{);qV?HmZ z;+{xJvTDns*XtLKShEWo$m17TyRFPeEF3lf1w`oS$(TT2-K7v+V68=tczQh9D<}yV zo5DgC(W|L<=(xCYKxKpA;NaDbjeylvBjBYC0Ah{KHwQwaqvbq3MK}ywBY`6{uU=s% zFsXFbt@uRr_R1|e46*Apxv=xwE?d3hl>$0UPA2)8pKo%!)KG7?hDhbU3A{4q2H6k< z3Un$^gqLWS(+LWaARr(J+O2{vJ;Z8lSE8vOPeb_SC7sfuN72uE+k70v;tSk1N=77= zk58nMLl9_bA6M^;oo=8;=ZQWtJ(pS4IQ3%|68D-^U8`JOgn~fz_$*ddtI3@R9 zAw8f*;X(|6OZb`>;52puqZbHO1dgP>Y2PqH*OoVfAN)ow;c7jW!xLtaVbWS!FI-NR zqoSj6U+Mlvmz0z|y}Ii8shF_3w&n*Myu7*TGU94qTqFnK6A=a0*75^KO!udX6aY4| z0)KQJP8Gl_P|NJyhyim9t5lxfu=4Z2(9qC$N(gFU!Md=pV7JzZA|tDKa=zzASpb;x zwXP8RSp(OOt}Z0tFEli?9gDNsNc-N|GPly*S7@*t+t~UoezTPH+D1vp>`#l+HLs4E z+RpMFOu2^^{BD&XfgLpDYh$BZ%vNFF=i_N;-#J%LH%3$Jy=-Wjuj|&Tse6p_aE>yG z!6?SFe`I_og${+LqxYj-yynNk@{Eaz7JUzPnC%yDv{s2fuH^Xb;1f~>HhmO`B8mzk zL1AM<^X^LsCgEe)nA@+Xv10uicPK4Sa2WN-Qu@c3wX~cM%V%Ne$!Ul~5pB4~YVQVV ziM-AYbW-?mzgxjlbar6AxTOJMzx?Zs47{t==o^ZlJV>h{)9#@Ag)D(D{1a(o;+V-F zRukS6fEn<~Zjo3$3(gU0I>8v61*tEXMOJXa?6ru5xUDl6j@9J9?y+2^|3$NR=oeMWLXc%{H5**XxE!!8+xf~(G zV?1!2u!4Qx>m7dQwA?U=RQ!z5ORO1n6NQzfn0;oHBt~O-@!81xSh>0OY_YA|^J4Kf=NV+!q!X$Cs8O zWg}j!b%znU?WDVM0la{hpMPQM@!`P#^gh9(`OJu7y)JP>XA)#{LMo#JVGj26=)hC% zH8N#s_XK@R80USB;Vq5oU!YIVGu=0Wd)=v8=>)WeI#W1l`W zk9Nz!_Y@*n`o4d$AN1aU@~KLC^6CGCADviU%NR=IJbRZgrhd)NPn^+{!{zHWxnP>W zK|}cr1>dw+7-@Hmvr8rTYiY4~_`O}ppDT6Uku{f0c@cO84m(99Uz03Knfi3YvPSk875S~_O}8_e4X z>GNHW=x^}`8BFA{hGywGgih}wnLm06eLN?>=ovbjYp#*gub6j(k=}n+(GbE%5M|X9 zoq6%ZGb3a@u=y3!spXAuV-dwJR#r2;wp0gdiFevM^bWcOJw&@&Sd}?8>ui&jtN+F} z`_;{a*C`^x}zAx3_};Spr*yo?xT3RouzRX?1_P zzxx;!>VlvGr3K&zE~R9&^3)(`tRIpb>LaTKmz zPM*f+sE@#L!kCDt=RSo139zXnl*v)t)Pc549GvGftu{JsdOPN_!7`h6Nn#=x6{7JU zNr(5?rqyt~%_M{0X=-b4OclK|w;%}SLqS357#+m}%8TzF9m(qHk%MSNMJYgIGc%}Q zFnDTu+HXT}_sWAp%!3Hv9rYI@B4>4Nus_?40KBX(+P2A>o3rFA|3GZ{7}E%BdfP=4 z!#+OW8q%q^qm`19QrEL=>5@!xtkR9?+%I9VrIyJIVea(T<#r!@ALxl^oHa}M%|IIj zia=yG4L2tFM%jX%A{uyokxp`X*&CVT($$LzaVK!OlJM`6~^LwK~Es;Wl7)#o!-ZxK$H35eh4NuNODs4Jl zM>EXFyljX$DRI%fCix)gcz3CXwj5Ad=1-tNWXu_+HZJRks_48xnoqmzlu`LR3R~H@ z4O(eD(xDk2hs| z!} zb~Q)O+`$I5>ogk1P)WC$sm2~z%~c?z3fQ880K_p`thIJKtn34UGGD<0v7plUF?kcF zs%e6LBk;pb&?)G2LW$GQCGexi9%Iw~+hqOz@(0T)9uuF7{X#Y z0d!8kd>q`x?euM5U_6Zm>m)*_o7x?7l5gUCm(&e-CufUOug5LD-!|G98F>oBoC15y#{A<#NhSZHsP29H2 zq7ezujrH|0zzzc72Waf&_4UH^V+gn>WDnTx+&7X19~K6BIQ zAwhb&-ads`)lpnfge#OfM73(}u}?aG{UQV5q5Aw;qsaaEjKC-DdxR~PSPCW7So@I> z>;4_@G1hM=$n>{)QF0r*cSogFw5;h&t{v8Vs+)2ZFM4BIbR7Iav=%|T$O!y3nKFnr z(J^l+Fl7PFE7^Kru}GdQ$fZ%E8_PG2Jzvv#({g`v(3mEfwW~zxO;{XK^Ve4@Z(hEm6>%H`}DTYt<(r^=?E9zF| z6{1+==CdkNaKG4Yg>O?Bd6pxn_8lAwsX7jmo}4%EISe0J4xQGJcfwAcm8d}-$+o)( z(z#Leq+g&&8a@*atu}krFWIE_d9}p8L@zVkmOopgD;rcHpjUs=;M5U>Fn4>N?Uz4fhbwK=z!LJk`Rgj^xE+a8gZ31l z`cVBvad5uPx6L3Ly$A^uaivpX1eDnL8-RuYI%$4vB=K7S3V^EYKx8_;e*Jpd&*_5z zawRdjp1#4r7ZXFz2% zL=d398$i?y1UV>c!lk67tUqo95+4r?3!?tv#5S)ENpd+_R{5}A0Fhj8WMjgZg;P*Q&!pRE%W^W zvhQ%{Y2Ro#=ls&+CO-9W@^+Bn3Vx{k4VLdN4^qKes>X(ih71ka)nA3M%RbOf5Ij7z z_aN^%%RXgA6AbxID)|Ij?QzA%_uyusIIeqF41-p6Lh+cOL-lwP`++t6so*@d`g=!%ZxD{f6*1`MfV~kc>y$cHqK_Dk*=O>;Y8W}00txf#> z)dznd_d7B&@@nm(O&8Gei99|{IJjSgl?Z!a?8*ns_>{pg7k1AY_)c;-_n==T7992!!}v9-Jh59s)dd5*5%X{`xt zzO@D8W)^l87hRkgxRTp6jibSfXH2=wK{rdU(F}dgU5POpxK+_nAxHbpq$619z-IXa}Htrw`X! ziPtze_4RUJKv*MqVKjx$F_xM&Z}C`Of)Amzd5NDi%+ zM#4^i7OHv#mNA3x@1H{UNR4wA(=fL4}_t*7>BOQy47DSh+PfR9_3+~aSr zit^#P5=~U^tKPx}g=gfI=>E@S@$pGW%8< zPj1fX28~=F`~2!iJ)c?sK*VrB6}mItX%m3@zJEp|QT#cX;?;vnzUJCH7}1KwW24&C z?=g{M|4_U*7T5EFo3dn4dZdmmHGAz(+n>*0SGXfdIIkt4M_nf*UlgGb6lkv$_7LLr zWi_5Eb$|BiGA8Hs{Tq_pE&(#2!#GF24vl_^oE%ir9XkCQP-ir=ku(C85+>#3tXowj zrHDd{Y}X|e0%|&qV<1bQ`&(Q@rToOf_H7&x5CD-=SC8#ZQ)AbuZUIVZuL3o0l0{t0 zy7x7T~wH4yCdYAVz*KT=_zJe=Z zxFi1c__$aBU$QS@Ob>_mgr^=Fq<{=hC%VoA?SJ7KApD)X{A1UA`k9`s{1V97C8X1a z@7SW@(7{Oa9I~1HwVL3-;S|X;-!?I1ib9ntU)u(8Q;21X2Ls&RPe?5^cm8Rrbp0Gn z5np!Of%p|h4*qO3^6JAnYTYmu#x*p<2i(|(!sZaK8It)bLaOa_NPIvKl7OCN!92vMf2@H8Xq@ z7s-SV;`g3wiIZ3Qbg}`2?kn!bqv@M(7#OtKX%kwx z2-y!GCItppsO}Jc{e&>mS&=TCg&7B6E2j%j+mOyRpS)4(GI)2~ZtI)ocX{cwxwU0{ zwLe{aak#tNe*Cv74(J|;ID7Zt?n%F7hmn%c~$@`Z!%POTTmPP`< z`{3X}Ltp<@N|qQLC>hU3mJJ_|0fDw##RHF)!dQW_F$@gIfKBKg&y|-viLfZT@+EB! zy?S!>;^^g1=gl%{d3lKdh$d7y6~8~^xxKr~E-l45X}*Xy_rICeHdItT)uCI9-y?ko zAJv80?U`4b`(G!On%Rv{#n2eiGU>^~LHQ{6>$ST^fyihZMWG~zQ0OZ*u|jyf9oWi{ zA1!1V47|@|5Q>Z0E_RV)w>~A?fqb%oaXL;uw!9GD+2+ljvf5H$*~$5?ONLO?^?*~J z<145mXDk~evx2l7722~*zm8oya$ib?(FRn_eMXO9YY@r$%t+^cMg!i2_5C6FAc}>R zz)R{}t2+V)7I=Rm1FF3ScP!v`*!(4sd8GSwZT6c!*XFq^WN~mPEVYT|9Hhf3tVx%J ztnDu~c00JLZO@GAI~0au(OBD2&Ha7Ac6|`xla!b{D{Cc`7pI4WL=!m_*>L92%ArE@ z)NK60Ig8tCcl#+uf)hXHKwu({-F12 zE~;iAL;VBmaXSshPuIVGO|7bzAIe%BlOSw)w&hj~w^d)v0Ded?fVQ^c1JiE4?7Ekg ztk26s0mHhQ)^C8YjrwcjR35WvX-OScUl9MD2-23}`}YjvAfcfZDxGJWY(SyoCyn{r z2flC%kK|5{AtSQ&`cazob#Yv+v0&-A%Y$41}=S zLM4_C4g&Ja#OwCeh%0?Qtb{ZW25@)aN7f3jX8hP7z^4itcnT_~rDak!kGu<#|Bt7)4yda6zK0Lp-QAr^N_R>s4H8O9i!@w1 zL_(ybMG%x!q`ONRq*J=3`@X~T`F-Di^j^4eIJ0N(wbxoR(@d`~z&=cmYNkB{FO$;@ zG@KsioekAf=LpJN`iP{V;$q-}+qWn#I4c6oIi#G3z7-e4VDB5Tm@TMQx%ad85vW+Ik zw1>E#?-`la*<)@!-|AN+8p>|s4rKk=?hpsHDR+OcaOQ)Na{o(|r?=9rO>8k{PnONT zcsP~3)v5`9AlbhU@7+$|dFH90y2gE3d-g`Wpxs1-!)y*qt0N_{U%DvaY2WW}Wo5Xa zI_04jl$B|EA02Z{Ob(JP6&DvH@#YXp6B$_wDF-bx{Z+ZFN|lZQCwxUxqCYY1Gv`U_ zxA=Im{%pEw&Ov!kt=YZ(?5}L3Z|boZ!MPwTU-pae^YMFbgp>?i-4}7Qp}Y!azf@`) zkAdc(q@sd8lq2n8@G${|Kyq?2I3vBiv}O?#z`|jv8*KPxkM#4J;4#G#u`FCrNz(-F z2|*lLJpME?&Xkrqm@b6H`Vk|Q*Gx`VmynZ-%kBQwM^I2Ox3Cb+-2Wen&F{3}^5$#I z*HdMB8cOc9)PW|Z^aqUw=(%pYkp`pd)7mPjX~_8s%f#ZifN`@I=%5OTo; z^2G@o!X*v*6%w@Vdla>J_ZHL^)d3{m@)8;iH@DV#SuQvS_0Z2CZ#E&Dys z*AF@O>=%3ExmdNY8)whij+rhxeilZ*QIdN1?p?y8tpxL=WR`S=KKSr;G%*QDG;`Sh zzT>!$tyEzE*OcU(L(=xDSc6MU%=ia(5*`YVq30As&57l}Wgpu&L<&ys=gBR_6@@-b z(!42+(9T>=Z~Q!-dMv9m&@l7rjBIV$x?`y#K`+jc7zHv_JV;Fddp(@wJv5~0e}A=! zj*hOar%8GoWBAg_iXZ6OPtyf4q@<*P%<(_NNN`S$D?WG_3?%S}Gvf2|5K%)B{{8#+ zpq_%Ld595kn0UkUIFuFNdE(S4uygKT0o*Nq+0x<~*$-At%19TDPf=TaPUJmk47u_0x?7@`mr!${gczDfR2F_%^*ut^FuJ^p z5s@?2k>W8=a}>r=mlsjbOJ{#{lg60bqL@6FAJm_+f31ii3uQE}PvcA=UoO->Sxb6KU z_czs0dez;$?^FA7%;=c=@;Qg^u{*167m2c|8b6{R?a}5sg|>7_r2VY0b|rHkq_Utv zE8)Xi=$R0V>rrNj{c{sRS?}uAub|-ZCQ&?NdYQs;>B(5~imgH-Z2=xqJ-P1=@t3PjXreduTvYFiOds6<3YPL2*(eW}t`|_^M178#ef|9Y&Au*YU|~T4>7)xB8mpHYj`vTo zA_pVbm)5H%lF40;9aE|r_G1T+?PevVK!-m*zSCfnceS*AI5a$Iht~`m#8| zh<#fvzjWFcrjb7qka;u3b*@_)#a4Wo6qZ!ed}Mt$Z`xa_+KI(TEzOIz392ZOrRI<` zuXJRb5jwL5a(#>;WO^6OxxQdl$Cwb65a^~ot_hB%(`YJC@CVuAhP?lttz91XUl5Ox zTR1fCb-LK?i&U*h!9vN%q8<3M?hqrdqZw?e@1(9wnKp_~-A?7o78O%W{`LY2|Lyn5 zoL_{HP1A(!oP>zqUJc!*6N@d~@+0=;-lblj-wCOv+^*hA(u%(xUfB!hRP^B_n;YA> zXqn!|R3D$B&6a>MNSMDpt8zawm=uXt&|@b5(Gzmb69Yth74}SFuFC;w*z8F7?*=9U z%6+y)1ms#69zMN7_)8=vQ7)uU*>%1bgar&3=0nKRxu=I_E$FuDd{M}kL%%4}vLtBW zHFs(G5^5K$KkPY@59gUSFTXu2REr9gxIGEOAkx-nl^oSjQzH~Yaul^eEO>GPvk`Or z_$EH{@A~I#*hRxqbo=>~Im}4}`>cl!#_hlba+u>-8o*NHx5+Y;gqVdqWVbWJpa4F2 zm_kBAI>m#ai$es&up(DS3uIes`f&k+!xwpi(}6ET=|;R>|0$8x(@Rzf8Xp@2hfc?v zg<94phZy2d|JqCDiyT;a_UxG(AfCSf2;J4yW#`}kj8kNt*OkTzAd?OE_O{+#EXDIR zUm`X&HATI9*Z!x}B>d3qv7-cp#m@aj2t{li^WO z=pLS)c>q~~@~5GpA^LWQ7+mnf9-tH8czBbgYf@ZViKsc}2AoJdI(@wq@QrY@W90dZ zCKC(irgvo0c1ns^u6flYS21js3y}s+JMgKld&Ao%;-r)p3OvIMypORj4zH*8uQ!(- z(e7%#wffu0?+=f&BS(B+Yp+CIKZsygYOi47M}+t#z*1OK4j}(BPp_5ZD$UH>Q%Yyd z$1kr1aeH1PeGn2sh-!#n~&OHJ? zL9wXVittJ==*LBk-Q8D9(UsCr#47Dl1mjzr*9sYUEx%W$Tau4fQp@;GxvzYozrB_5eTcwC;S)+&O41KP;E7LUnEi) z0kLY!tWXwh5q=NI1AkwAqy65*9C0Qj#nRD2Ta?nUrVG>XqCvZ@_BH#qyzXd!b6o!k zdWC?SlBXpt4HtlA9e(%)>N}~*bvLxV1@(`img5(o>{^Z`;m>D1CcqkR!H^+GGPSF? z^zl6Qm~RLqI8`)X29w64+tc(Bf|dj~4N`uoyAs&)@kO)G^{G7+LZ6wEf(o&7aec(6 zWmEuG($z}P2edsnBfZL&xqiK#;syO8$tLZS9&siHcMW8&Q!VhE4tD!v)sOp1RZEMk zN(nrBleWL&M{c*?VDqaj@_Z(%-*-S0G$Fkd$#hW*RnmLF?7J*rb3Q zd5l`p$p&&RNYYT)Bbj|Oa9Y9TrT2pYGdw&z(eIUy(XVLfXa!yV> ztE;OCnVIha;rBpV1KsVj!rx>7;vV`-$&2~Wu`yl$qc*gytu2}7&xs$%j@zqYnCCYh z6|6+?zK6Jfz0iP&SIQ|(#HrS!|!G-eXjQ~J=BXe^x&k8kV z%cmX`#0LTTh4%_dY8d>4B&&A+nB-~tBP_gm{b&r?N0)=60+;t@<3A4McUKH>Q#+(7 z3VK5PT7qGL$1I)!R_#?~fy|oNN;Dt_z9P{(-rsp`LT4P zTwu^=0a+c)hNqhIpA7Rkajv@FU9*Rd6TxuGEZMKk575gA=x~^VS7^PY9B7SiW2x^u zD3?1Zcb9_BT+YSMDQuZlxCV2~^h!Apl8hwym>dstc8o;h!Sx);E8??FtvEi--Io08)C zXd3mMbkC3Q_)7vCmhe$frMi0ZV%5}z0bdQ1V9-a|_+TRb0nSG%$lQF-V7j+-n6M_6`iZF^+6(l%Oi~f($EdV)K+* zX?J#Z{=2&8v;}lvy;;Rq&l3G!nuPPnStSg2T>vuhk*_#6F3X%N1M{{8SBp(O;J^# zp$0Ceqmz@+8Al~`bu1vkfQEE*VIdYMFAPA57FqBh>W-(wi~IW!dcdu02@vUnIZiW6 zEW9HU4{RPUuWMs_HY{?sI-q6jR`ne-`o|;h??=R_sN7qjbcyX}iN6R5g37*Xn(mDJ z{pNSjnvZY3CMiX;t@ze?(!4gRiqJYMAdT*;vX=}yC7OqwvvBZVe*(f+N?x{*Lvbhp zDZ*2{aRz^CH1nfc2ZV!9doiCrw!7t3)9^iiyE=HmXW^yxYv($ix&LZ?KKh+8wWcY% zSXIMnYYyl+A75!u`#oC2C(#Q<#i5i4F~dnv`1?%Yvc+)MwxC72)oy z--hI95|`jC9u~b_gp_z7iNGq-(acS98obE}3i{}hiUk)B)MJ+ZJQ@<}4A@xFBON5e z(g-HgN2&qdj&~;1ub(7QA0RLca} z--1OVDQDqvtq+ES>(w*r4I>Pq4}3c}NOVF`tZ~qY??1xYpnt2j|KJ9(mqqzH)Z$5` zuW^gI1^Hg{_sTjtmM~MlF*2ga`|^c_lI|R)5V)1q-Yy54j^IfL(UAG=MLjqvOQfF+ z{c`~O+MfRQ;E)uiQA<60ln7(hh0rgqz(EcO6%Jz)LA*Kzf)Llr=i9yHwgq+V)MTE& zLz3>A)G&o+!%|wR+tyLrvDVRs64v*}y3f9XJO+3$23A&7U}ynd1u!mn?|dsfiZQ>H zJKh7wWxKBR53aH``p~?4($xT=)9KGWAmiE=66%$>kbcZUn-|C zC=XlpcOtWii0vr&s_B8fH8ML9K0MGsurjbRn2tbQ=9Dl2pBehmfuusT7QLOWl7eMPDxG<|~^A|8s>QxA)C{4a@M0CSMY3YwOy(^EtQ6BTK-GDL<8e8}YNTYdBPv z0NAZZKoS9|=RK9k17q<}!oV^1a`N&zMn=&fCY~D@d}(SjOOJT}yiOO+rfzc7o=pEc zey^MFJ8y0%nw0lR$=VED;EeH>4m3Av$d89!w6}*I`c>UWzAjr?!4Ub}@CI5RTtL6T zQ54^d?~g+;Ejp2P#E%~?_H|2b!G$>-v{Srk={cjbw`0|&6tt^d{7jC#G8kQcG;p1M z^wk{MQ_HzMQm8c}kRZy=p7J3NyYunzt?YdgyR!gZF$scTb7cY>t@>)3xI?^|0ZWgn| zB0)1zXo1I#!Sqq8DxpQ4^}RzkbcKje9a2q6N6OM>ssSPUh%MGu_E6dXI2^zrw~yEh z&^ltq%+wVtvCnQgT=*t%)|C0X?tApdhj$+!f2Lo#iW5I*1qk5Z9}^c0xUC@e(q*^E z(R!-6+WjGq_I

F?#d$4%fU}56uH6erWEsr0REVb=od%atUs)AHzMN77ecxo)sA5)8g}hk4r!^eLq4Z*ms!Tc+^{>RxD~e7y@>IhkljeG zZ0H65PP@hHhexP5OgLV0h_6>dAAV!$D5FO#it{kE1hRCJF>xUvUxDv9MCsW0%%dXt2kftnHb zXY&gc_mxga)5u6=?VUd_73*94Yjz~zKU9JU-qpv7 zT7d=Q0tITgkzadt{>FLS$MqwN@}=Gyx!^K;2?k|n=Hal-Pde5k?LT)tl?~j%Lw}tj z)lZ+jCT?7_7c7VnM2}3y!pc#WN~wgFbnO|Ki3_>@oMntdv(4SyS{N&n4L07r(ZO)K zUz#2{hmQt-NNmZvhGxVGOpM(e-p26$pBG@hn>RfmC2)H4jm{TC^a3KHbMXQ=nbP6P z%#y=mK^t$)I_>st^5V<=z8TNzi^l)1&ok7uM&ipPYI=Wq3}xY&yGTHRe*_~RPMN&( zaVMs95Pfg0Sm8qf2MmyvpqhH~3kPzugp3~q!3eqOw@^^sB6>iQ?5+5dk+9SA$7n8g zB&1GNwx0;5LSl*l1d2w>cl4F0p14FKkU$a$+Zd zWU-sP_=45mR@u5hs%Gi}xy}Mbr7Caz=jP;eUi{Z{CiYK+BevC2UrOhL-eMR+{zwT0qT$E`(6g)TVGL#;bm}mpFO0zD6&Xv(B+8gj| zKA%uS9o;C2hUlfZBIm#At2TIux_v&w`{Yo7=AqPvO94G#3VfrcB%%Y;InYDU4W7JO9RhQ~9AbLexwBh=D9oL{4oD7p^ zLRPkq)*{2_liIP1RZ$!4p3!9~Fg?y9(Pvq^)AHHSHyQZuQj-$d8&7EZBht&`I?ofq zJqZ_b`>T#i+{+Cmd7`Lmh8oJgHc28lN9W(&`^{@Lb{byI5&Jmzfn~t7wyyey?CDR+ zfO>4ZA%k<7FE_~#8$MSh2h{RwX5lhH$pCo5)gJGT_t_vAFTG`FZXA)BO=|S(rn$E^0Cu%+N#52AN_CVp99KQF26B-epZgtlQb)0FB^kn)|u&twO6`(n2pIcjjQyrl8?uCRYJ~B6#VJX*{ zj?-<7zy4~C#B7+|qd@6On9L9WivR&=Vs>E*tf$zW5#v}^K(@s9K9*}NwPb3s=}9&t|&SS*%MV`N?RtLPRKdqzOE#A>@!0Yv=ra){zhV= zakRE@T+t7aKluy4n&sbNz7qX>a^uhb^d4Ijg=u4l!nLTiiBUs^RAF z8@S2<{5zkVhAIY`027Xus;a>6GbP~Piy_L?{2hgpQ&jYp{q!dmgJQvw6+thZ|-KuYUr`8w7it1dTn@9tV#^c5C+0 zm-xpPAh~pXv=p)sVbr(l;}ce=PRk0O{cY-^5ctE0@iu`}7U!XkA~+Z4EvxUFkvB!! zhSSN2vd@rosD?fF%5qvStW&ce7+{#X)oq|zuJ+Y{JSX6eGYhH>pw5648~vJh&TGSW zPDmyW)TbBU4(*2;j7dFlorluduPnnINqx9he-z{rfU3m~3aXzN91G}p;Muh92s@K> zyQxv?S7l$nPa0R#RklTa@xpMF_v=^X`|$qS#S8d{6u6#!Q15{Ns*J|*jbwr!Rv zablQ9Qgq9Sz5=JjB&UN!k?!6%vODu_3Vr%vK4Ez}mO-MRfvZARW;N29mvcml;%){f zsl_r~=d0%@`MgW|j>w;$i^@63kq6$S;&wKscdf6}t$B(28w0}y*R9vF52vP}5g|6j zwv(mh>4*E;QB+5UyzyKUT4S?z&*2balbb02Q%wqH|Bq|_+T%xR+l16Sf%zD(;B4H? zgTnUxvP)TXdvL{FF6Lmh3GP}ow)hD+hZgbCkfuQ2p=|SI-J2ZL7^C^XKn@3m9;+)1 zi|t(eq`}Ghx2wJBygCnK7|kLccG$NWo12fIPiUC*3*BLd)2pZ^8#y9o+lj+YK{ZoNpDSmqPB#_@&*Rd5ivTu(=LZO2zXM*AuApz9c@lw3q}cJYqY?vq<^F& zG5Kr3?g(cV`j19iH!4#5iU(MnFtrL-C?^H^NG#H_8S!oanY@3-{*y^@yJWJ^co zF*Xkdce2ZN-P$tXYa;+1=1V8$b8wV-yZ_BKbo|}ZZU-i0L3OdH$@?PJ8wEw4$CrBZ z7|zo1?Dp4VZS2p3(h3{h+u@-sg;vk)Kf95a64&IAogmK-?N<2U6FQHycbW2)`WHNCEr5B=DxLt#pT6to{rR4nziD^e4Y9S-1)+rMEx=LCMg z$L93Y4M00F+eJmM*#FHNcGZRY0eWTz>Q6%b!VbGe0$*T=H1+eE7=I)QBPUt=REl5p zPs8Ez1xC1EK!kQi#yEZKM0mcZwJwWP|hl~S};s7DOm!vuAtUL8XPF-622X594!cgTnrpR<0+HNTm8gqca`%zM%J<2 z_wg+D(dfxf{yr6+y_8Qb4b?}IGY2F8TxCWmvxF4cl#tf2Qpyt>)bB69rr!fsS&8~M zmT@lP@U?sfT-S8?VR#B^b$D{)bY zpp~Q$lFk|uDsb4*z2C33!=hM2!hFHYNUBA~)}RTuBzo)X(p5(G%rM1SZtV$?Jq&Ih z(xBy_ckIDW5itY!MG@9DeGbq4dFDfW43?*c9NH$IY0=@w*JyDEn&>UytD@yg} z2Ed!k8n)8No#p5(efa%6T=R31bCUsKU=f_d(UF%ZmkHQB>NszItZV-at?@!cpU$56 zK8Q9S*vziui}@R~MYpZH4%JZgQpZ6{dHn~OzR%quRi~%L$&Btu6mX)XA{5sp6p9)- zwXJkA6K9%qW<^?TgmZ6SN*gUiowc~gEWWeIxG+1rc?tSUuO4LeG8C&Rda!%$+O`T+ z3toYpmcx$b8~&PH)Qn12wf&j>OYcOjZc>|tBVxfa2+|^E|Ega2xBZ$rjt3=Hb1*wg z7W7@+0NcShobw;hH!Kw+!9_OL;x$_avW$SPZdfk5B174d?{8kYAbyK=2m2?~SwnZL zwFIB><76h#*O;~+}O?sD>bI-NmbJ^a|7{*qS);tB$r(4zos3v(>iJSe`_pw#m za=0XcRMLI(3>`fZais9(Zt=bTp3DU zW76-TwL4hR80YQJ(ZBN;!A>MY)yE}9(M@&35zT{2C3ZxIWl-l=#r48x7T+8EaV(~k zU9Rq-*<0I_`s{~_E#4jb6CR&*yZ;!0QU8;P_DlJYuwgKNs>#&8X=E(Upd;a1-3?{` zk&liplb(;?SI5blbt_qO!8;yFcW*G~G><#1VP=EmgS+Th=nLU5yRQA@f-v^NQd}N$ zuN9UY3#RPZC1iI0jCrj1`a^2GCUpTDLF;z)i^l5tbB}=+_ovc3FktM&{=AE8_pfpa z?s1(OYq+deQ>lYui$+f@#L<9AYkp}fevpACBJ*(&wU-t%>O%&Unui~KB8{0i&Zf)> zYi)iK!qy%?#=(Cku+DJ^?})}?`KmAPhUg7?xD--qvYVWKM07d)pZUYSc?hl(@U;s6 zqMv$t@P>4eViflRI7Z2Nk6tV?)-f8vK@mY__T=w?9lz^6hvv9NuV1K;TvBmIwCanK zo3RaetN^^~Zi!T+|6ZE#xW3 zw}ThwtJ0R0kiEEfO!a=7TD3x7?HnhkVY`}>w+j!FbQRsmo`ERE7 z)Q+CRS5jK)sHJ+6k5y&PqXjwoR-$CEf0NuOKbc0*p6pQ1-@C*}^E)^N#?XLi`Z}>9t zMutc4YdN)dAEkEaG;o*|=}mT6E`+TK|habPcN|llGZ$*ZE@i zZY6F(puk@1vY?*xs_6p;=4;CK6a?1=?B2!g%F5gAKVB|rP3#!K$NtJD@XErRgR-0R z>zvu?#ajch;EO+tFNY7ZcYeo7r`%$9&71%HB1?_;-6N#B#US7I->gX#R@~(ki$vJ}HU#O1MaSRSS$G4xKAh(}b z$&HWrl{jI3p*dn1Ea@GRmt7Kdr4kLxI#0|-kw>>l=bY72!*p)su>~l2UtFgmGCZ}W z_Rffn477byrl{~CM?w4Ey+^{cG8XG-=o?<{3+N}uE`RVfT}7NKVbJ_2vTk}@*wUa8 z(F0m6FtZ82Vndf6V~;&}jkqR-Aj5yEGlsRj#-{CYElS)zY`6`3{lx4Lrkv}c-tgOV zQ~E6S%xActo&ss#TJxsm*MQ@ftAF}S+EVJCg7m<+sw|7EBzKAMimeU*{GMgh&-<~s zyNHI@CwNj_@W9 zb7~NnDvW*?cZYy71BT9FIX#o=^B{tu7`f_WwXVIsi#TS=b&z~*ATepaUir{7> zL53?mpp8(Cwjk0xU%%?I`HeFv{s~t7cX;QPa_&Kzp?J-9=tjNQr7 zqq3=oeqhLrX%9YhOu>0Iw~LHk!5bD1M$v#&R`~%yku&QL@e|Lce(23{96pH&4`yD1 zloM~+lYY0{>A zhzXSg`0MR>Sbl}O=N6I$WHLkLf}{&NeK8wSp(3Mmb5IixveAvSKiKM|Ua(0Wk>6tJ zB2tKJfKRw}^cIxfY4tAvbTSXuB8^U%Si}8Z-m$%*aWA6X4;W?yacIDPkgUYOTo$@n zbyfbJ%KHBGO$)Ke?0q?^JPQmD1A*~j%|KG-yad9x^ir6*NX_T!Xxg}2`$|PgZAxqM zGbD4|6bP`Az2Q2K_VOF-ABfcCK))Bqqez$mYMM(gzXeXPG2<7Jgcu=&FrFoO8XfBP zm6q$UK&ewkJrpLmtx*MM2Ryy&x9*yU9!RHg_zEXEjHJn)vG;@VC`Jg{cB}Ia>lKx8 zt-y0xU)H}Ve&h87B23aHYBVTZIe=YDq+DmABxjt%g#KX8-jY3po&D<@_*O*2O$(*B z$vv$u;+j)MNL3RCe-dZgN`H=CU0gvhADVhllPaj@Yb}vTL#(-lx#M)tC%^(jJ|Y^; zUKIMO4L0BI4{nND5{AQP??I*$hEL{~p8ARA?!$MM5AMrZHC(_# zg77wdB(XvAZ+1d22|SEFftfvi5<@0e?ESBnM3G0-Y}!-uOGKHI;X=U-%7%U`ulK8} zDy1IUR+kbH3(%wQ$Ml*_`dyAtn-!s(K9v1W zNlJwB*A-t^tQfop^Vi*y(EE*g>?a6TZju;nKz}%*ofenb65$uSonNaZc*?JYcOY;MBlOWaQvQE3OPRU0;rs*o7^-w|YKUh4K&rwd{l7P3q@$`lC^3TXIp5n5u|G&5 zBmC!|?SuaN=#HY0|Afq3*$(Y?+kCA5KKTEAE4T)fSjhf=qRM|iTZss^K`fLFjnKh3 zMq+qRQd#uF*cs;w-V@UyT8Ik`KA+LCS<lY@uo@9*JD zXTEsR;G-qEG`5)Xgn@r8b`_`m72ejh?_CgWWnGK-)5E!#e;NUX)sFOJb()7&qx`>m zSKO8A(J2MzD@H=-!G*tDDQ&3i?x!)`lcWby4D%8o!B8x6v@1G0=HBXk6qfw*-1$6? z$R$O+;|z;Ynyz#KCjc*A9CkzOoqf@k;c|WC|9){|oWf4F_43fB{P*tGp${{w|EdX2 z_eP{BuIRNntZTIpj-&hrD-o^rVq5g|^0+z6rnyGoS5req%+A)7%1Ey~6BwBH)Pgt( z;6@mHk?BKu?t%%Z#jAOa)XL47V_(KzuH?xq4<*d!=cW@7iBRGp(2Iz(b-afo_4g3*# zcqcoveo`ASTM`*}zeh6P@KQ)O@ci&-MU;E#hx6ZiAs;?mY#H0pv+J!VuwPHfMeyS? zeAZ+xDdcgO6ceAR63Arme}*+-Ix2+y-c-Y^L;o&ii4~bbKPfd+88$Ao#n}F6WCFW+ z>U{#N$;lcw6)6_^A((kO>Cu6ncB_r0eEiH_Xm~unc(^`2wepuFPrPJ;wwUR@w5d-W zW_7IUvZ=8fHHflKx`OH?X{|%=2KeNL?C@Cp*vX#XvG4eU=7+oV2GuubEYCyfSq|4{ zK#y57=}(;ZevW?}l{0e%grNx7qCXcDoSRUWDdL)!r_Vhs?b1vF-YI-FFwni~x+?dI z=?@dnJdi8=0V#V6{%3Nxk{-J%ZqrV2OWSSvN&i;JIXYS%_`BPu7VsdyCvjBdH4gXA zFc>U=t_STD@ACR)#{(T3z4gv75Et@xF+re&-SI*e|Fq~3pod#&F!vtMefcdZEkb}V z4DMDhBWa`j{u8|ln77#~O@Up}srPi3FFvXSLco0c{y@NK#3-QPAwRTn_(S1D9;oMG zWq??hxG@=QD5*GPck=E2bTlBv2lFfvgbq@Abj-+@yXnb)FX6A9_@Md1OjpNUkF^i+h6c%M7h(RW61>mkZm5_zGsl8^8TG5uL zvu?c=&033WjoZBV%iG~{ydGP>R1*X7A>%%J<*dk)Fm zrmRC1WUc)#U%%*vj`GW0$`^YI%@4nX@}c2MHZ?&(HE%BHSJAMJ77Vi6&|0prq*~aw zWHP*{2??uQsYP0Ec3ROcPmh|n94Q5m?Z(26l3V(3DSV$`4f(qn-?nHei2C069Az~{ zW#dbQuuOmnXBdj79!LuA*XxZ(g~lP^zBbk^vR{=Z)tWZ65hB&mfAt{D27=;!MSJ-z za)6*6wDvYBbzxCeipz9hmjjj(PKk)Ag5oGvXS2(1Y!M$;+0I-{@KgC|1ks+TMU{ve zqPVQRV@nZkc0q?&>6>Zo=GPIb%20p2TBU)^&onnv;m^s z@Im`v|1u~Jg9q|}yZfNf00R9lR5SVd1P)jRJ`Vfth%7XIY0bzM*phz3FP{D=KxY5Q z1lu{0yw6KueuN&@^i7uKkw&P{) zVwISHYfKAP<{vPl^b{LCT(c0#_TR~hs5#B`6I=)}H2lfx;bHt-;b41k&(DARwzM7l z<2IJMMJvl=secfml*2$zNs-)>mETBWbaXLgL(~#B=p$7rHkao}G*Wj_=+(5G*n&b# z^ire?WUogSXCD3E0F)=$=94$@I_u3Lhjsl{b@`uOYydtIioRATV2i@EVG1) zYJoYOx9szC zHl*O}&w26Y&vPYc*7q?14Npy-pf6j2 zoI+|ix2d35%Dx7FIVM@VzoYYSh6p7aBkS1R=|R;cY+DOC=G@2Z2KF_K=!Hxn0;tn= zU7IkXuamQ>>FEbSjy9c}n3FOydd!o*9)yUJ0!LuW;lCeS_iyLMhpR5)LYVg< zhz_o*Ap6`yirNWX-1|c7F`a)vhf5IGJ{0u3Wo^}ExGC(LbR!Te6OybdyK ztzlPgVyYC=KYtV+xP!wn6okQoG{Q;>eJX|FAs`xnPUCV-hG;QxlYV*$JaH6!=}4!2 z4JHsXT6%8$;N{=<|V>tUhW(s;MU=gj}{86A9(=0p&OOxDjT7e{P zRi{hT4xzV`+w(zZf%HHfdC+|uN&Z1eLP~M7Ir}GI7CmYL|MdBvAR7T<_?WJonH%ZT z@j6)s3!IGy|3h6;lIsVLy>}~}|5i0B?4P{|l6j$e)4|v>{XX^#wLBrGxcsuFYI+8aZ$%xq92!UNlmi-V2$%*xee?my!0p~*= z`y*Ak%p%S0F6(LZPfrrK((Xibe z(0UV$;GQ!zd263MnZ}#T3wu(vk`>x(lEHCrBP5$dTJS~bO&;mP;O^ZL_nbdH0&aev zJB7N3>bG`&0zMTo{^aT01=MG4zTbZ7A0Ip)|1@NF-m&hT>rw#O=gZ~=!L)7wNY(9d zl@8^#$o{uQKPQXV(4au?bB0GWSE3KZ=QSUEp599R>A$Q_{@8f>%|}$uu&$o+(83VjGqDE zNkgfB_?`ypjB<5xyu_g$^4pNT+^P;fq+5QQ5*&PR^hiGBnmeTl&jmiyA7U*Xxs>jr z+Hzw;A$J(t)j5LR*m;*oM;A!MDSm296yF_K1Ri6YA$Qu zCjmIYRpo&K-^;nMeidVg67508)g8kIoG@{qvK&%tN-z%<7gTvxkt(dNU^JF!?wEqi zZy|e+eo9qwo(gh#HCaKbxucSf3ZX=>n z+At-_KBQ9zJ+;nt_sO`eIO0L?%sV3yewFfTRGwxTlt{FaHRZroH=wP@{4r>)X>IsA z%pFmD&s-}aEX?@$F(H%?V@g|@ad}yCc(~OACDz=trL;7oNO(K?!sDka_w2a?ua^?8 z_wW=4hx4^NWUp^s7X{J)WbVB%K}8j9X-1G-qMIDI^LzZHzoMh!EhIs*Loz3 zx3eF<5Pji(u`(<@)HMMANm=TrZsEP9e~NUu6)v53u4TTOl(Tes~1No;~R;ww<@hFa3Q07xOe zqeG$>g3}+q6IOJRdRJA<)$xB=wX%{ARWsf!3W}$PmNT{>RKlGo_j`Ia+C+ z(kRXE)i6KjsMB7dAcc^vxa`l^bsDp&A16tF$B#$9u>hobe22!I{F9ctIF3*^u_N<5b7Bd`6Iyp7buR$VU~hLPVZ0Q)bK zHv_lg2fz$!VvA8%&XRuP=S4sJwfxalV;BRDr!R;GMEun3cW-Wd9%+eNgp*qnk(&U! z)c^R1$59f|_cA9g(zYp(9XPPT@ z9xX;Fhv|5oJD;zZfc}IB@snE}Q)d5Qu9{l9Q<%BF0EDdp2m2i{$Z#V2$s@H6(WQ$A zO(KucBG@1~un)=y_kL%SsU#n(2WmHAW+yGc*WP!G##hvjrm)baj_>Js4OLkz_F=id z)JJ}16_wK@il-uU0I(rAgVw4&x(hv9i?rc ze#Yd^C!e6K1o0b2kSk_CVX#w|QnWTZd>`8Zc^QNqvW5QNaQ1JkL8Yk{&epQPNANp` z#5Fnyll94;k9L1<`?5JwB%TUG6r&C#sw20eG{@C*4v@%RaeJRbj7s2^VYHC@>mF=!GE%`r)rIVi7r5&zI0gAjE! zl0{kx-#p&Uf5K0=7D>-0E9XO=!_&H}fDip7h?z(H23LpalWCHoGjo&47l%{y-S%N$ zzN$juczj$5+(_h0@<}3=y*tuUR=LB|6QxK?F3we_2r|mbXxG=*t}As@kM2^X4X=h^ zx0ok3ixFFc6eGK*=woQDj>0c3@7110NBQo?3YpX(LEO|e{uhyV$WuALkGhs%OWFunv1-cY!_Y5d%#j3KB4Dl~|Nj`B29vZyvKGl1>%A)~ zmzP~`OmYmged0RiSPDib4CsiqmCq1&iZrM{(7k)5lu#%e zvf1Z=CA?Qmcn8?nc7Y5>I$Vu1J1PEV!z(OR~$lKn}8**B{HnJ-3H7@-P+9FcftcD`Q zQA>7*QxJoLaH^Q3KDDirPN2hkbv@q|$};J8wKENK3pzaopFQJy^8 zC;ylaFr}3`q#S%Q^wL0#b}s6}uJl1Z5v^>-s&+Fsbr^{yaP0oviM*vXT?#*$uik;d`9*?FRt}QdwC1qkI$&5 z)t>a;-LH_tF7m(`did$h_|MMT?7n@IwX?&Y728*~ntWh8p#;;gZZW3;6dylhGE6DZ z+lsK~3jM8K(72qG3uQLb!c;}%S2WcXyL;$KQ#a1Tf#GGsb(QbvSY%O-|k-r*V?J)i|&?;1leeluFOGarm*5K?!x+nkg zTbb67$BPZsIIUpC!*BgN)+2Ext|h*gzX;qC=PS8>BGOuOk$yAh?|U;Vc7yhm$k^Do zt|$&HPka864gyPmJ`fO%jxI!l9iB{21pfZth5~eFyKSVH$B4oX}!-+%c7BjJd&O;=OUKO zGGGpt63?3Aj@^SYuBxJDZ%{#Q$k0-Y0EVIS{|jmnmF|{;MyL7btq{o1#(D#m?6AI{ zJQ$pbgm`C=n?47)1X zTM8O&G*P12>Yxxl6xyKS$e&1r68WLIua7dIyl!~=9~j#DlfMrD`1B-P^K4{B$}zf9y5U9(J;M3+ zJeBy<2VXSx^!&&I3t+MQwr|(FYwLgaxh}hIu{k&A!+tL|i&xRx+l#)wKJ@kXBOo9E z{~WjmpT8eQ%!G*u2@eO)^Dz4Xp%y)kt=xrqJ6B@%bC1F@K5%bN$IrD8*cvowa0nX$ z#6n`0gEFi**oXK49&#sr+Wf0~IK&6=sswK}a7KOrjJNuD8r?&Frc~>rCnx}ln7>U8}?P9v@00qdJ8Ux z3FL=}Z${lJF|u4Pq-CNzi`4ie(fv38L?IJ^cmg}z0uO+Oy(2h zDgkzf{K$hI$nO(UlYdGI>o;b$hVOPI`XAN3y-YIK^NY>Ms9VM5NAKZNhhEw15|qkD z!6_X1-+6+Jx>a1^pb&nZ&*GFcB|~KjHyrs>`t&#LGZ}TOxC7i)ULR!`()y__-w@P) z@^YZ#m;pgW!Vq-#s z1`T5e4haxo6-dl5B7QK+SAMZUK>#))PIkGeC&a`a`C%i=Ny<3PAOV;a%&DASBS8eF z{pF|3ECG!RP^a}_aX4|IO{i<7OHwI+h+($FMNL2ogfQK4;B5qN$!WQhd!&@W_A?1T zTLvRBjl}6ci%fnKH;eHJ$>cY2`GZ0bK!FL&Zl!HYf`Xxs5*+RA5n$53xvTkcM1D$2 znz1=+BDNGX+9kl7vnI--M0&0PA?;FWSFl8w9LkW_YQcuaCjY05x>ekg=smpkj-ucp z%b&7=Gj{yKFzj`v~gWTV5*IUd!^87~=Iy*ZtWy%zM{q@)A?d?TqNC>`|(1}K45ANhR zl%G3?n46~{Ffb4m7pf5G>yN8D|Bk4q@Bi`k@!R?Jo$EC%kOmDJ?7}Gll0)x60A?{1 z!U?+xN`zoDw2jhbTj*;qj7UUE?RB00lq7c`P2ylLJgGbs|XByW>_jh2fgZcmH{tmph zT&^7wgh5a4AQGYrTK^`2cQp4uY0HKZ_5^>ckK)jgui?z!UV0;`{c)7PhxK3i#I5(C z_OfsQwdads;lEAd_j@=0b8OAa(CKuz*j$HMlcytU z)Az;i_M|+Cr%HbRXm@YmlVNox_fBVq5$DgJ$2aCB!w?z@V_Vza=kkBK@`JTIU@>)K zW_%*5I~&k#?nUsp@h~>G06l$ZDkwq3kM3ES!{vyV%4*P{L4zEs2oRlgZiCTn0oYTp zci8~e)A!ME0?d|yHG}eIK6L+t8Um_@_(;>X-piE1ud<1z#P+`@ph!)bP%pfelvsV5 zMq1!e1M4X;21Am2CIqtPkVJ0m5nxZik{@%u5hW#pPgvfHcyaE{4b?lD|F+|w6$ah8 zBZy2h$3ou|$V5v{+=eUfLWu_I`p93d0UWLHr2eG+F}51<_f}zr{OE_jfnKkNudgp| z-@OtT^bPv@Vh#GI^dojc6i%=C9p>(O694;eIS366h0$n4SXdbDedTFNdM|*LuPlB7 zPrZY4#l)- z6H$BR3Sy>AfvMeuFns{(cOS!T>;6R}K^in@unW~Ha94yDZ)tzh+slv~XcD8DWz?fy!IjCEUv-zeC4WP~}are&E0I)ZQ&k@@#I3ySsFI@CW9SPst5jkYzD|q~P zbeK#42ZR}f^=(|hIDCBe6vibafa|qjg5Nj{_yBWX{7(c02ce;<5iM655Q=bID!zn} zfWVbQRXzmPyYywB7HrBrzB;R|3{LCVMk$RwXgdJVo0hPBfdJk`|HzF5CyAJN9iyAgmL47&~foR z!X`vwe#mre<$n3jlwMhZirt#YJ+ z87|lx0~$sLJQ28AO%g=|B%iQMeiJ93@9f|9w10B#l(UFvtZD05)cz1eU$w#D62qCd zD`v2xHGeUH%3xY!39imXNJ$H6qrtYe*sY7D0$te0%cto}0aU zbAR*u-QS_9>pX@udlK|ecKIp4K*p=)sW z@CNzxu?Q=Nb*O+@QHnVG{?v`XpS1^eb8p2Ld9C%Yy!_4i1OfrR^U5j=X^7(efr`XW zjm3f3j8S*8?W4U=lmRk?Az!*@9?3+K$M4Kv@57$&Rj&-o zKtLz2X(Zc{2)E9!7A8vefBmfc*#@`U9n*E4R4P@R&7z@VgKU^Gmr386iT&O`=?vz$ zrv6@*N<%y!T+?{7KBQ)!u?J0$kPGD)U3)tZcMQyXjv!od3L~b6!$$wqRbGsBJh-Wv#_?w(wl5$o> zQ7$O%1V5*OlQ@7s;0JnLvKE^+{yyGH9Ad_(I{{)&Ssg$kk?6}@Jv1T7=S^Dw-ioWx zLG`+!lDtKGYZt92yU;v-+7lg+&*2s>G8wbyyHnQ$<&?#;WaV+I1FIXnlGtktf65z6 zH#796k=W!IK6xa0&AkzzEK){AC`6)MaQrX7MC-*8}042W<0Xm4zK)gA0;+81-?4F-dK zUf1+>*T|%qC7UUbw-aOwHkRx{7ZTG3k1ZHP7GVptNE9oVrY&u9+Yga{{D~%n>B1ka zV3LuPuNwJ_`Z2{2Mq^ZS*Zk(Obqw=FXlw643+RlCeGON6`Nl=9wXx;;@_2bp!}Dni zAGDm{+S^C+>5euQcP%YRC%EE(XGB%isWE!S-dulD{a~ahR}d8dDT<;f$^hVGZM z&OAaFWV_l4=mCb62kGp}@r|eQ()4AqkEbYjE^b3$Ll~Pz;-0;I+H$fflkmt0cQ5-M zM{`|R5I0(De*oau^+$J4UBU+~CvYdTjH|828}OH;y znF@duMNt%`9~Cz^SU%<q| zP~F?N$@HKjWU@Aybedak7(#nX3zjQ@t=stX7NJ2=aOE&N(rChkG_z=$hp<;*SuV1j zX|m}80-H%s1Z7C~vU7R1&smZv`s^*$OUU}V1F0`Bc#tFc3?82^Ze;3DuV2$PJ-B`G z_qRQ=0=Mo#2%B^|9b4sJMSbz-dTC0qe2sfmS;tm(-NH8(XeHaeO}tA=_)shBJ3syxdcgxBFUi9v$rN&Ubq&+ZqYnu|HiNXhWKt;*E_5LfZh@64kV>Tq`F$WH z!ZMLA7iD2T>2xQrtnv0aD`E(v@e6vS=4bO?z@5(H4#8KSpU)Hd`g7)5>08<0F$=NR zs|^6$x`zqdp4zok8r8iymXpPS?x4rvWPISvGC1cm@3$X1XWR*%;Qa3gsV;De(trL7 XKUa!TG?^gj00000NkvXXu0mjfNH`CO literal 192019 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

fv>m)R#hM7k#UGu%~~E?FDkJ4`0+; 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 z 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 N$cXxLgoCFCFEV#Q27Mz(S-|p7# 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 U+#JX2zcv5`nUB)7QYNAQ3FXmCZ2$lO diff --git a/tgstation.dme b/tgstation.dme index 11399a1b14..daa00357f1 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1931,7 +1931,6 @@ #include "code\modules\mob\living\simple_animal\hostile\bear.dm" #include "code\modules\mob\living\simple_animal\hostile\bees.dm" #include "code\modules\mob\living\simple_animal\hostile\carp.dm" -#include "code\modules\mob\living\simple_animal\hostile\creature.dm" #include "code\modules\mob\living\simple_animal\hostile\eyeballs.dm" #include "code\modules\mob\living\simple_animal\hostile\faithless.dm" #include "code\modules\mob\living\simple_animal\hostile\giant_spider.dm" @@ -1944,6 +1943,7 @@ #include "code\modules\mob\living\simple_animal\hostile\mimic.dm" #include "code\modules\mob\living\simple_animal\hostile\mushroom.dm" #include "code\modules\mob\living\simple_animal\hostile\nanotrasen.dm" +#include "code\modules\mob\living\simple_animal\hostile\netherworld.dm" #include "code\modules\mob\living\simple_animal\hostile\pirate.dm" #include "code\modules\mob\living\simple_animal\hostile\russian.dm" #include "code\modules\mob\living\simple_animal\hostile\skeleton.dm" From 3fc98677a06d86fbf843f2832f01cd628990e701 Mon Sep 17 00:00:00 2001 From: vuonojenmustaturska Date: Sat, 16 Dec 2017 19:20:12 +0200 Subject: [PATCH 34/94] Fixes a brain login runtime (#33569) * Fixes a silly brain meme * better --- code/modules/mob/living/login.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/login.dm b/code/modules/mob/living/login.dm index ffdd37bdca..611d9dbc4c 100644 --- a/code/modules/mob/living/login.dm +++ b/code/modules/mob/living/login.dm @@ -13,8 +13,8 @@ update_damage_hud() update_health_hud() - if (loc) - var/turf/T = get_turf(src) + var/turf/T = get_turf(src) + if (isturf(T)) update_z(T.z) //Vents From e71fa098ae5be0152cc9ec7cfded57f671bd979a Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Dec 2017 12:18:08 -0500 Subject: [PATCH 36/94] Shield balance (#33553) Rebalances Marauder shields --- .../clock_cult/clock_mobs/clockwork_marauder.dm | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm b/code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm index a1c3d211fb..562814dfeb 100644 --- a/code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm +++ b/code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm @@ -1,13 +1,13 @@ #define MARAUDER_SLOWDOWN_PERCENTAGE 0.40 //Below this percentage of health, marauders will become slower -#define MARAUDER_SHIELD_REGEN_TIME 100 //In deciseconds, how long it takes for shields to regenerate after breaking +#define MARAUDER_SHIELD_REGEN_TIME 200 //In deciseconds, how long it takes for shields to regenerate after breaking //Clockwork marauder: A well-rounded frontline construct. Only one can exist for every two human servants. /mob/living/simple_animal/hostile/clockwork/marauder name = "clockwork marauder" desc = "The stalwart apparition of a soldier, blazing with crimson flames. It's armed with a gladius and shield." icon_state = "clockwork_marauder" - health = 150 - maxHealth = 150 + health = 120 + maxHealth = 120 force_threshold = 8 speed = 0 obj_damage = 40 @@ -39,10 +39,11 @@ speed = initial(speed) + 1 //Yes, this slows them down else speed = initial(speed) - if(shield_health != max_shield_health && world.time >= shield_health_regen) - to_chat(src, "Your shield has recovered. [max_shield_health] blocks remaining!") + if(shield_health < max_shield_health && world.time >= shield_health_regen) + shield_health_regen = world.time + MARAUDER_SHIELD_REGEN_TIME + to_chat(src, "Your shield has recovered, [shield_health] blocks remaining!") playsound_local(src, "shatter", 75, TRUE, frequency = -1) - shield_health = max_shield_health + shield_health++ /mob/living/simple_animal/hostile/clockwork/marauder/update_values() if(GLOB.ratvar_awakens) //Massive attack damage bonuses and health increase, because Ratvar From be6a0e82ff760fa49ff5378577396258561f511e Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Dec 2017 12:14:54 -0500 Subject: [PATCH 38/94] Slightly faster, more stunnable (#33568) --- code/modules/mob/living/carbon/human/species_types/zombies.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index 2fe526368a..792485960e 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -25,7 +25,7 @@ limbs_id = "zombie" mutanthands = /obj/item/zombie_hand armor = 20 // 120 damage to KO a zombie, which kills it - speedmod = 2 + speedmod = 1.6 mutanteyes = /obj/item/organ/eyes/night_vision/zombie var/regen_cooldown = 0 @@ -34,7 +34,7 @@ /datum/species/zombie/infectious/spec_stun(mob/living/carbon/human/H,amount) - . = min(2, amount) + . = min(20, amount) /datum/species/zombie/infectious/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked, mob/living/carbon/human/H) . = ..() From 7d1485643eb5644b4f935dde30623081d38047d4 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Dec 2017 12:14:18 -0500 Subject: [PATCH 40/94] Fixes race swap (#33566) --- code/modules/events/wizard/race.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/events/wizard/race.dm b/code/modules/events/wizard/race.dm index 29773d95b2..5adc4bb851 100644 --- a/code/modules/events/wizard/race.dm +++ b/code/modules/events/wizard/race.dm @@ -12,7 +12,7 @@ for(var/speciestype in subtypesof(/datum/species)) var/datum/species/S = new speciestype() - if(!S.dangerous_existence) + if(!S.dangerous_existence && !S.blacklisted) all_species += speciestype var/datum/species/new_species = pick(all_species) From a536831bbb6ca59b751a36bdcfd33c384cb0cf9c Mon Sep 17 00:00:00 2001 From: Leo Date: Sun, 17 Dec 2017 11:35:11 -0200 Subject: [PATCH 42/94] Merge pull request #33586 from Xhuis/power_alerts Disables clockcult power alerts to ghosts when it's not clockcult --- .../gamemodes/clock_cult/clock_helpers/power_helpers.dm | 7 +++++-- .../gamemodes/clock_cult/clock_helpers/scripture_checks.dm | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/clock_cult/clock_helpers/power_helpers.dm b/code/game/gamemodes/clock_cult/clock_helpers/power_helpers.dm index 1935eb3e0b..c2479460c7 100644 --- a/code/game/gamemodes/clock_cult/clock_helpers/power_helpers.dm +++ b/code/game/gamemodes/clock_cult/clock_helpers/power_helpers.dm @@ -10,12 +10,15 @@ for(var/obj/effect/clockwork/sigil/transmission/T in GLOB.all_clockwork_objects) T.update_icon() var/power_overwhelming = GLOB.clockwork_power + var/unlock_message if(power_overwhelming >= SCRIPT_UNLOCK_THRESHOLD && !GLOB.script_scripture_unlocked) GLOB.script_scripture_unlocked = TRUE - hierophant_message("The Ark swells as a key power threshold is reached. Script scriptures are now available.") + unlock_message = "The Ark swells as a key power threshold is reached. Script scriptures are now available." if(power_overwhelming >= APPLICATION_UNLOCK_THRESHOLD && !GLOB.application_scripture_unlocked) GLOB.application_scripture_unlocked = TRUE - hierophant_message("The Ark surges as a key power threshold is reached. Application scriptures are now available.") + unlock_message = "The Ark surges as a key power threshold is reached. Application scriptures are now available." + if(GLOB.servants_active) + hierophant_message(unlock_message) return TRUE /proc/can_access_clockwork_power(atom/movable/access_point, amount) //Returns true if the access point has access to clockwork power (and optionally, a number of watts for it) diff --git a/code/game/gamemodes/clock_cult/clock_helpers/scripture_checks.dm b/code/game/gamemodes/clock_cult/clock_helpers/scripture_checks.dm index 0b94d34ab1..bfa27cefdb 100644 --- a/code/game/gamemodes/clock_cult/clock_helpers/scripture_checks.dm +++ b/code/game/gamemodes/clock_cult/clock_helpers/scripture_checks.dm @@ -11,6 +11,8 @@ //reports to servants when scripture is locked or unlocked /proc/scripture_unlock_alert(list/previous_states) + if(!GLOB.servants_active) + return . = scripture_unlock_check() for(var/i in .) if(.[i] != previous_states[i]) From 5a50462f10fad8360bd154ef84ec3f3aa6a0bef1 Mon Sep 17 00:00:00 2001 From: Armhulen Date: Sun, 17 Dec 2017 08:41:57 -0800 Subject: [PATCH 44/94] gives credit to people who more than deserve it --- html/changelog.html | 1489 ++++++++++++++++++++++++++++ html/changelogs/.all_changelog.yml | 917 +++++++++++++++++ 2 files changed, 2406 insertions(+) diff --git a/html/changelog.html b/html/changelog.html index 45dfe57b20..d73ebdcd62 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -1279,3 +1279,1492 @@

[J_title]: [J_opPos]/[job.total_positions < 0 ? " (unlimited)" : J_totPos]" if(job.title == "AI" || job.title == "Cyborg") - dat += " (Cannot Late Join)
" + dat += " (Cannot Late Join)
" + if(job.total_positions >= 0) + dat += "Add | " + if(job.total_positions > job.current_positions) + dat += "Remove | " + else + dat += "Remove | " + dat += "Unlimit
+ + + + /tg/ Station 13 Changelog + + + + + + + +
+ + + + +
+
Traditional Games Space Station 13
+ +

+ Visit our IRC channel: #tgstation13 on irc.rizon.net +
+ + + + + +
+ Current Project Maintainers: -Click Here-
+ Currently Active GitHub contributor list: -Click Here-
+ Coders: TLE, NEO, Errorage, muskets, veryinky, Skie, Noise, Numbers, Agouri, Noka, Urist McDorf, Uhangi, Darem, Mport, rastaf0, Doohl, Superxpdude, Rockdtben, ConstantA, Petethegoat, Kor, Polymorph, Carn, Nodrak, Donkie, Sieve, Giacom, Ikarrus, trubble_bass, Aranclanos, Cael_Aislinn, Cheridan, Intigracy, Malkevin, SuperSayu, DumpDavidson, Tastyfish, Yvar, Elo001, Fleure, ManeaterMildred, Miauw, MrPerson
+ Spriters: Agouri, Cheridan, Cruazy Guest, Deeaych, Deuryn, Matty406, Microwave, ShiftyEyesShady, Skie, Uhangi, Veyveyr, Petethegoat, Kor, Ricotez, Ausops, TankNut, Pewtershmitz, Firecage, Nienhaus2
+ Sounds: Skie, Lasty/Vinyl
+ Main Testers: Tenebrosity, Anyone who has submitted a bug to the issue tracker
+ Thanks to: Baystation 12, /vg/station, NTstation, CDK Station devs, FacepunchStation, GoonStation devs, the original SpaceStation developers and Invisty for the title image.
Also a thanks to anybody who has contributed who is not listed here :( Ask to be added here on irc.
+
Have a bug to report?
Visit our Issue Tracker.
+ Please ensure that the bug has not already been reported and use the template provided here. +
+ + +
+

16 December 2017

+

Armhulen and lagnas2000 (+his team of amazing spriters) updated:

+
    +
  • Mi-go have entered your realm!
  • +
+

Robustin updated:

+
    +
  • Marauder shields now take twice as long to regenerate and only recharge one charge at a time.
  • +
  • Marauders now have 120hp down from 150hp.
  • +
  • The wizard event "race swap" should now stick to "safer" species.
  • +
  • Zombies are now properly stunned for a maximum of 2 seconds instead of 2/10ths of a second.
  • +
  • Zombie slowdown adjusted from -2 to -1.6.
  • +
+

SpaceManiac updated:

+
    +
  • The shuttle will no longer be autocalled if the round has already ended.
  • +
+

Xhuis updated:

+
    +
  • Vitality matrices don't have visible messages when someone crosses them anymore.
  • +
+ +

15 December 2017

+

AverageJoe82 updated:

+
    +
  • drones now have night vision
  • +
  • drones no longer have lights
  • +
+

Cruix updated:

+
    +
  • Shuttles now place hyperspace ripples where they are about to land again.
  • +
+

Cyberboss updated:

+
    +
  • Added "$include" directives to config files. These are recursive. Only config.txt will be default loaded if they are specified inside it
  • +
  • Added multi string list entry CROSS_SERVER. e.g. CROSS_SERVER Server+Name byond://server.net:1337
  • +
  • CROSS_SERVER_ADDRESS removed
  • +
+

Epoc updated:

+
    +
  • Adds Cybernetic Lungs to the Cyber Organs research node
  • +
+

JStheguy updated:

+
    +
  • Added 10 new assembly designs to the integrated circuit printer, the difference from current designs is purely aesthetics.
  • +
  • Added the icons for said new assembly designs to electronic_setups.dmi, changed the current electronic mechanism and electronic machine sprites.
  • +
+

MrStonedOne updated:

+
    +
  • Added new admin flag, AUTOLOGIN, to control if admins start with admin powers. this defaults to on, and can be removed with -AUTOLOGIN
  • +
  • Admins with +PERMISSION may now deadmin or readmin other admins via the permission panel.
  • +
+

Naksu updated:

+
    +
  • Preliminary work on tracking cliented living mobs across Z-levels to facilitate mob AI changes later
  • +
  • Tidied up some loc assignments
  • +
  • fixes the remaining loc assignments
  • +
+

ShizCalev updated:

+
    +
  • Revamped gun dry-firing sounds.
  • +
  • Everyone around you will now hear when your gun goes click. You don't want to hear click when you want to hear bang!
  • +
+

SpaceManiac updated:

+
    +
  • Remote signaler and other non-telecomms radio code has been cleaned up.
  • +
+

Xhuis updated:

+
    +
  • Grinding runed metal and brass now produces iron/blood and iron/teslium, respectively.
  • +
  • As part of some code-side improvements, the amount of reagents you get from grinding some objects might be slightly different.
  • +
  • Some grinding recipes that didn't work, like dead mice and glowsticks, now do.
  • +
  • All-In-One grinders now correctly grind up everything, instead of one thing at a time.
  • +
+

nicbn updated:

+
    +
  • Closet sprites changed.
  • +
+ +

13 December 2017

+

Naksu updated:

+
    +
  • glass shards and bananium floors no longer make a sound when "walked" over by a camera or a ghost
  • +
+

SpaceManiac updated:

+
    +
  • Nonstandard power cells found in MULEbots, cyborgs, and elsewhere now have the correct description.
  • +
+

deathride58 updated:

+
    +
  • Genetics will no longer have a random block completely disappear each round
  • +
+ +

12 December 2017

+

Mark9013100 updated:

+
    +
  • Medical Wardrobes now contain an additional standard and EMT labcoat.
  • +
+

Robustin updated:

+
    +
  • The blood cult revive rune will now replace the souls of braindead or inactive cultists/constructs when properly invoked. These "revivals" will not count toward the revive limit.
  • +
  • The clock cult healing rune will now replace the souls of braindead or inactive cultists/constructs when left atop the rune. These "revivals" will not drain the rune's energy.
  • +
+

Swindly updated:

+
    +
  • Swarmers can no longer deconstruct objects with living things in them.
  • +
+

kevinz000 updated:

+
    +
  • You can now print telecomms equipment again.
  • +
+ +

11 December 2017

+

Anonmare updated:

+
    +
  • Booze-o-mats have beer
  • +
+

Cruix updated:

+
    +
  • The white ship navigation computer now takes 10 seconds to designate a landing spot, and users can no longer see the syndicate shuttle or its custom landing location. If the white ship landing location would intersect the syndicate shuttle or its landing location, it will fail after the 10 seconds have elapsed.
  • +
+

Frozenguy5 updated:

+
    +
  • Some hardsuits have had their melee, fire and rad armor ratings tweaked.
  • +
+

Improvedname updated:

+
    +
  • cats now drop their ears and tail when butchered.
  • +
+

Robustin updated:

+
    +
  • Modes not in rotation have had their "false report" weights for the Command Report standardized
  • +
+

SpaceManiac updated:

+
    +
  • The MULEbots that the station starts with now show their ID numbers.
  • +
  • The dependency by Advanced Cybernetic Implants and Experimental Flight Equipment on Integrated HUDs has been restored.
  • +
+

kevinz000 updated:

+
    +
  • flightsuits should no longer disappear when you take them off involuntarily
  • +
  • beam rifles actually fire striaght now
  • +
  • click catchers now actually work
  • +
  • you no longer see space in areas you normally can't see, instead of black. in reality you can still see space but it's faint enough that you can't tell so I'll say I fixed it.
  • +
+

uraniummeltdown updated:

+
    +
  • Added MANY new types of airlock assembly that can be built with metal. Use metal in hand to see the new airlock assembly recipes.
  • +
  • Added new airlock types to the RCD and airlock painter
  • +
  • Vault door assemblies can be built with 8 plasteel, high security assemblies with 6 plasteel
  • +
  • Glass mineral airlocks are finally constructible. Use glass and mineral sheets on an airlock assembly in any order to make them.
  • +
  • Glass and mineral sheets are now able to be welded out of door assemblies rather than having to deconstruct the whole thing
  • +
  • Airlock painter no longer works on airlock assemblies (still works on airlocks)
  • +
  • Titanium airlocks no longer have any missing overlays
  • +
+ +

10 December 2017

+

SpaceManiac updated:

+
    +
  • External airlocks of the mining base and gulag are now cycle-linked.
  • +
  • The pAI software interface is now accessible via an action button.
  • +
+

Swindly updated:

+
    +
  • You can kill yourself with a few more items.
  • +
+

XDTM updated:

+
    +
  • Instead of activating randomly on speech, Godwoken Syndrome randomly grants inspiration, causing the next message to be a Voice of God.
  • +
+

Xhuis updated:

+
    +
  • Flickering lights will now actually flicker and not go between emergency lights and normal lighting.
  • +
  • Emergency lights no longer stay on forever in some cases.
  • +
+

kevinz000 updated:

+
    +
  • Nanotrasen would like to remind crewmembers and especially medical personnel to stand clear of cadeavers before applying a defibrillator shock. (You get shocked if you're pulling/grabbing someone being defibbed.)
  • +
  • defib shock/charge sounds upped from 50% to 75%.
  • +
+ +

08 December 2017

+

Dax Dupont updated:

+
    +
  • Fixed observer chat flavor of silicon chat.
  • +
  • Grilles now no longer revert to a pre-broken icon state when you hit them after they broke.
  • +
+

Dorsisdwarf updated:

+
    +
  • Minor fixes to some techweb nodes
  • +
  • Made flight suits, combat implants, and combat modules require more nodes
  • +
+

Fox McCloud updated:

+
    +
  • Slime blueprints can now make an area compatible with Xenobio consoles, regardless of the name of the new area
  • +
+

MrDoomBringer updated:

+
    +
  • All stations have been outfitted with brand new Smoke Machines! They have nicer sprites now!
  • +
+

Shadowlight213 updated:

+
    +
  • You now can get a medal for wasting hours talking to the secret debug tile.
  • +
  • Fixed runtime for the tile when poly's speech file doesn't exist.
  • +
+

Xhuis updated:

+
    +
  • You can now make pet carriers from the autolathe, to carry around chef meat and other small animals without having to drag them. The HoP, captain, and CMO also start with carriers in their lockers for their pets.
  • +
+

YPOQ updated:

+
    +
  • Fixed the camera failure, race swap, cursed items, and imposter wizard random events
  • +
  • The cursed items event no longer nullspaces items
  • +
+

jammer312 updated:

+
    +
  • Action buttons now remember positions where you locked.
  • +
  • Now locking action buttons prevents them from being reset.
  • +
+ +

07 December 2017

+

ShizCalev updated:

+
    +
  • Games vending machines can now properly be rebuilt.
  • +
  • Games vending machines can now be refilled via supply crates.
  • +
  • Games Supply Crates have been added to the cargo console.
  • +
+

SpaceManiac updated:

+
    +
  • Radio frequency 148.9 is once again serviced by the telecomms system.
  • +
+

Xhuis updated:

+
    +
  • Added the Eminence role to clockcult! Players can elect themselves or ghosts as the Eminence from the eminence spire structure on Reebe.
  • +
  • The Eminence is incorporeal and invisible, and directs the entire cult. Anything they say is heard over the Hierophant network, and they can issue commands by middle-clicking themselves or different turfs.
  • +
  • The Eminence also has a single-use mass recall that warps all servants to the Ark chamber.
  • +
  • Added traps, triggers, and brass filaments to link them. They can all be constructed from brass sheets, and do different things and trigger in different ways. Current traps include the brass skewer and steam vent, and triggers include the pressure sensor, lever, and repeater.
  • +
  • The Eminence can activate trap triggers by clicking on them!
  • +
  • Servants can deconstruct traps instantly with a wrench.
  • +
  • Mending Mantra has been removed.
  • +
  • Clockwork scriptures have been recolored and sorted based on their functions; yellow scriptures are for construction, red for offense, blue for defense, and purple for niche.
  • +
  • Servants now spawn with a PDA and black shoes to make disguise more feasible.
  • +
  • The Eminence can superheat up to 20 clockwork walls at a time. Superheated walls are immune to hulk and mech punches, but can still be broken conventionally.
  • +
  • Clockwork walls are slightly faster to build before the Ark activates, taking an extra second less.
  • +
  • Poly no longer continually undergoes binary fission when Ratvar is in range.
  • +
  • The global records alert for servants will no longer display info that doesn't affect them since the rework.
  • +
+

coiax updated:

+
    +
  • The drone dispenser on Box Station has been moved from the Testing Lab to the Morgue/Robotics maintenance tunnel.
  • +
+

deathride58 updated:

+
    +
  • The default view range can now be defined in the config. The default is 15x15, which is simplified to 7 by BYOND. For reference, Goonstation's widescreen range is 21x15. Do note that changing this value will affect the title screen. The title screen images and the title screen area on the Centcom z-level will have to be updated if the default view range is changed.
  • +
+ +

06 December 2017

+

Dax Dupont & Alek2ander updated:

+
    +
  • Binary chat messages been made more visible.
  • +
+

Revenant Defile ability updated:

+
    +
  • Revenant's Defile now removes salt piles
  • +
+

XDTM updated:

+
    +
  • Brain damage has been completely reworked! remove: Brain damage now no longer simply makes you dumb. Although most of its effects have been shifted into a brain trauma.
  • +
  • Every time you take brain damage, there's a chance you'll suffer a brain trauma. There are many variations of brain traumas, split in mild, severe, and special.
  • +
  • Mild brain traumas are the easiest to get, can be lightly to moderately annoying, and can be cured with mannitol and time.
  • +
  • Severe brain traumas are much rarer and require extensive brain damage before you have a chance to get them; they are usually very debilitating. Unlike mild traumas, they require surgery to cure. A new surgery procedure has been added for this, the aptly named Brain Surgery. It can also heal minor traumas.
  • +
  • Special brain traumas are rarely gained in place of Severe traumas: they are either complex or beneficial. However, they are also even easier to cure than mild traumas, which means that keeping these will usually mean keeping a mild trauma along with it.
  • +
  • Mobs can only naturally have one mild trauma and one severe or special trauma.
  • +
  • Brain damage will now kill and ruin the brain if it goes above 200. If it somehow goes above 400, the brain will melt and be destroyed completely.
  • +
  • Many brain-damaging effects have been given a damage cap, making them non-lethal.
  • +
  • The Unintelligible mutation has been removed and made into a brain trauma.
  • +
  • Brain damage no longer makes using machines a living hell.
  • +
  • Abductors give minor traumas to people they experiment on.
  • +
+

coiax updated:

+
    +
  • The drone dispenser on Metastation has been moved to the maintenance by Robotics.
  • +
+ +

05 December 2017

+

Cyberboss updated:

+
    +
  • Reduced the volume of showers
  • +
+

Dax Dupont updated:

+
    +
  • Nanotrasen is happy to announce the pinnacle in plasma research! The Disco Inferno shuttle design is the result of decades of plasma research. Burn, baby, burn!
  • +
+

MrPerson & ninjanomnom updated:

+
    +
  • Completely changed how keyboard input is read.
  • +
  • Holding two directions at the same time will now move you diagonally. This works with the arrow keys, wasd, and the numpad.
  • +
  • Moving diagonally takes twice as long as moving a cardinal direction.
  • +
  • You can use control to turn using wasd and the numpad instead of just the arrow keys.
  • +
  • Some old non-hotkey mode behaviors, especially in relation to chatbox interaction, can't be kept with the new system. Of key note: You can't type while walking. This is due to limitations of byond and the work necessary to overcome it is better done as another overhaul allowing custom controls.
  • +
+

Robustin updated:

+
    +
  • Reverted changes in 3d sound system that tripled the distance that sound would carry.
  • +
+

SpaceManiac updated:

+
    +
  • Energy values are now measured in joules. What was previously 1 unit is now 1 kJ.
  • +
  • Syndicate uplink implants now work again.
  • +
+

Xhuis updated:

+
    +
  • Stethoscopes now inform the user if the target can be defibrillated; the user will hear a "faint, fluttery pulse."
  • +
+

coiax updated:

+
    +
  • Quiet areas of libraries on station have now been equipped with a vending machine containing suitable recreational activities.
  • +
+ +

04 December 2017

+

AnturK updated:

+
    +
  • You can now record and replay holopad messages using holodisks.
  • +
  • Holodisks are printable in autolathes.
  • +
+

Xhuis updated:

+
    +
  • You now need fuel in your welder to repair mechs.
  • +
+ +

03 December 2017

+

ExcessiveUseOfCobblestone updated:

+
    +
  • You can now lay (buckle!) yourself to a bed to avoid being burnt to a crisp during "the floor is lava" event.
  • +
+

Robustin updated:

+
    +
  • Igniting plasma statues no longer ignores ignition temperature and only creates as much plasma as was used in its creation.
  • +
+

Xhuis updated:

+
    +
  • Light fixtures now turn an ominous, dim red color when they lose power, and draw from an internal power cell to maintain it until either the cell dies (usually after 10 minutes) or power is restored.
  • +
  • You can override emergency light functionality from an APC. You can also click on individual lights as a cyborg or AI to override them individually. Traitor AIs also have a new ability that disables emergency lights across the entire station.
  • +
+

zennerx updated:

+
    +
  • fixed some typos in the weapon firing mechanism description
  • +
+ +

02 December 2017

+

BeeSting12 updated:

+
    +
  • Occupand ---> Occupant on opened cryogenic pods.
  • +
  • Cyrogenic ---> Cryogenic on opened cryogenic pods.
  • +
+

CosmicScientist updated:

+
    +
  • You can make plushies kiss one another!
  • +
+

Frozenguy5 updated:

+
    +
  • The Particle Accelerator's wires can no longer be EMP'd
  • +
+

Naksu updated:

+
    +
  • Cleans up some loc assignments
  • +
+

Robustin updated:

+
    +
  • Damage examinations now include a "moderate" classification. Before minor was <30 and severe was anything 30 or above. Now minor is <25, moderate is 25 to <50, and severe is 50+.
  • +
  • Clockwork magicks will now prevent Bags of Holding from being combined on Reebe.
  • +
  • Flashes will now burn out AFTER flashing when they fail instead of being a ticking time bomb that waits to screw you over on your next attempt.
  • +
+

SpaceManiac updated:

+
    +
  • The R&D Console has been given a much prettier interface.
  • +
  • Research scanner goggles now show materials and technology prospects in a nicer way.
  • +
+

uraniummeltdown updated:

+
    +
  • Construct shells have a new animated sprite
  • +
+ +

30 November 2017

+

ninjanomnom updated:

+
    +
  • Reduced the max volume of sm by 1/5th and made the upper bounds only play mid delamination.
  • +
+

psykzz updated:

+
    +
  • Fixing the broken turbine computer
  • +
+ +

29 November 2017

+

MrStonedOne updated:

+
    +
  • The sloth no longer suspiciously moves fast when gliding between tiles.
  • +
  • The sloth's movespeed when inhabited by a player has been lowered from once every 1/5 of a second to once every second.
  • +
+

SpaceManiac updated:

+
    +
  • The techweb node for mech LMGs no longer claims to be for mech tasers.
  • +
+ +

28 November 2017

+

ACCount updated:

+
    +
  • "Machine prototype" is removed from the game.
  • +
  • Mass-spectrometers are removed. Would anyone notice if not for this changelog entry?
  • +
+

Cruix updated:

+
    +
  • AI and observer diagnostic huds will now show the astar path of all bots, and Pai bots will be given a visible path to follow when called by the AI.
  • +
+

JJRcop updated:

+
    +
  • Fixed the Make space ninja verb.
  • +
+

Naksu updated:

+
    +
  • rejiggered botcode a little bit
  • +
+

SpaceManiac updated:

+
    +
  • Admin-added "download research" objectives are now consistent with automatic ones.
  • +
+

improvedname updated:

+
    +
  • toolbelts can now carry geiger counters
  • +
+

uraniummeltdown updated:

+
    +
  • You can make many different types of office and comfy chairs with metal
  • +
  • Stack menus use /datum/browser
  • +
+ +

27 November 2017

+

ACCount updated:

+
    +
  • New integrated circuit components: list constructors/deconstructors. Useful for building lists and taking them apart.
  • +
  • Fixed multiple bugs in integrated circuits UIs, improved overall usability.
  • +
+

More Robust Than You updated:

+
    +
  • Fixed cult leaders being de-culted upon election if they had a mindshield implant
  • +
+

Naksu updated:

+
    +
  • Hopefully fixed mesons granting the ability to hear people through walls.
  • +
+

Okand37 updated:

+
    +
  • Re-organized Delta's departmental protolathes for all departments.
  • +
  • Re-organized Delta's ORM placement by connecting it to the mining office, which now has a desk for over handing materials to the outside.
  • +
  • Added a second Nanomed to Deltastation's medical bay.
  • +
  • Nanotrasen has decided to add proper caution signs to most docking ports on Deltastation, warning individuals to be cautious around these areas.
  • +
  • Two health sensors are now placed in Deltastation's robotics area for medibots.
  • +
  • Atmospheric Technicians at Deltastation can now open up their gas storage in the supermatter power area as intended.
  • +
+

WJohnston updated:

+
    +
  • Fixed a case where items would sometimes be placed underneath racks.
  • +
+

XDTM updated:

+
    +
  • Viruses' healing symptoms have been reworked!
  • +
  • All existing healing symptoms have been removed in favour of new ones.
  • +
  • Weight Even and Weight Gain have been removed, so hunger can be used for balancing in symptoms.
  • +
  • Starlight Condensation heals toxin damage if you're in space using starlight as a catalyst. Being up to two tiles away also works, as long as you can still see it, but slower.
  • +
  • Toxolysis (level 7) rapidly cleanses all chemicals from the body, with no exception.
  • +
  • Cellular Molding heals brute damage depending on your body temperature: the higher the temperature, the faster the healing. Requires above-average temperature to activate, and the speed heavily increases while on fire.
  • +
  • Regenerative Coma (level 8) causes the virus to send you into a deep coma when you are heavily damaged (>70 brute+burn damage). While you are unconscious, either from the virus or from other sources, the virus will heal both brute and burn damage fairly quickly. Sleeping also works, but at reduced speed.
  • +
  • Tissue Hydration heals burn damage if you are wet (negative fire stacks) or if you have water in your bloodstream.
  • +
  • Plasma Fixation (level 8) stabilizes temperature and heals burns while plasma is in your body or while standing in a plasma cloud. Does not protect from the poisoning effects of plasma.
  • +
  • Radioactive Resonance gives a mild constant brute and burn healing while irradiated. The healing becomes more intense if you reach higher levels of radiation, but is still less than the alternatives.
  • +
  • Metabolic Boost (level 7) doubles the rate at which you process chemicals, good and bad, but also increases hunger tenfold.
  • +
+

kevinz000 updated:

+
    +
  • Cryo cells can now be properly rotated with a wrench.
  • +
+

ninjanomnom updated:

+
    +
  • You can now make a new tasty traditional treat: butterdogs. Watch out, they're slippery.
  • +
+ +

25 November 2017

+

CosmicScientist updated:

+
    +
  • bolas are back in tablecrafting!
  • +
+

Dorsisdwarf updated:

+
    +
  • Catpeople are now distracted instead of debilitated
  • +
  • Normal cats now go for laser pointers
  • +
+

SpaceManiac updated:

+
    +
  • You can no longer buckle people to roller beds from inside of a locker.
  • +
+

YPOQ updated:

+
    +
  • AIs and cyborgs can interact with unscrewed airlocks and APCs.
  • +
+

ninjanomnom updated:

+
    +
  • Fixes thermite burning hotter than the boiling point of stone
  • +
+

zennerx updated:

+
    +
  • Zombies don't reanimate with no head!
  • +
+ +

24 November 2017

+

ACCount updated:

+
    +
  • Removed "console screen" stock part. Just use glass sheets instead.
  • +
+

More Robust Than You updated:

+
    +
  • Spessmen are now smart enough to realize you don't need to turn around to pull cigarette butts
  • +
+

SpaceManiac updated:

+
    +
  • Fix water misters being inappropriately glued to hands in some cases.
  • +
  • Some misplaced decals in the Hotel brig have been corrected.
  • +
+

ninjanomnom updated:

+
    +
  • Custom shuttle dockers can no longer place docking regions inside other custom docker regions.
  • +
+ +

23 November 2017

+

GupGup updated:

+
    +
  • Fixes hostile mobs attacking surrounding tiles when trying to attack someone
  • +
+

MrStonedOne and Jordie updated:

+
    +
  • As a late note, serverops be advise that mysql is no longer supported. existing mysql databases will need to be converted to mariadb
  • +
+

Robustin updated:

+
    +
  • RND consoles will no longer display options for machines or disks that are not connected/inserted.
  • +
+

ShizCalev updated:

+
    +
  • Aliens in soft-crit will now use the correct sprite.
  • +
+

XDTM updated:

+
    +
  • Added two new symptoms: one allows viruses to still work while dead, and allows infection of undead species, and one allows infection of inorganic species (such as plasmapeople or golems).
  • +
+ +

22 November 2017

+

ACCount updated:

+
    +
  • Old integrated circuit save file format is ditched in favor of JSON. Readability, both of save files and save code, is improved greatly.
  • +
  • Integrated circuit panels now open with screwdriver instead of crowbar, to match every single other thing on this server.
  • +
  • Integrated circuit printer now stores up to 25 metal sheets.
  • +
  • Fixed integrated circuit rechargers not recharging guns properly and not updating icons.
  • +
  • Fixed multiple bugs in integrated circuits UIs, improved overall usability.
  • +
+

Anonmare updated:

+
    +
  • Laserpoitners now incapcitate catpeople
  • +
+

AutomaticFrenzy updated:

+
    +
  • cell chargers weren't animating properly
  • +
  • disable_warning wasn't getting checked and the chat was being spammed
  • +
+

Code by Pyko, Ported by Frozenguy5 updated:

+
    +
  • Rat Kebabs and Double Rat Kebabs have been added!
  • +
+

Cyberboss updated:

+
    +
  • Server tools API changed to version 3.2.0.1
  • +
  • "ahelp" chat command can now accept a ticket number as opposed to a ckey
  • +
+

DaxDupont updated:

+
    +
  • CentCom has issued a firmware updated for the operating computers. It is no longer needed to manually refresh the procedure and patient status.
  • +
  • Proximity sensors no longer beep when unarmed.
  • +
  • Plant trays will now properly process fluorine and adjust toxins and water contents.
  • +
+

Francinum updated:

+
    +
  • The shuttle build plate is now better sized for all stations.
  • +
+

Iamgoofball updated:

+
    +
  • fixes grammar on logic gate descriptions
  • +
  • fixes grammar on list circuits
  • +
  • fixes grammar on trig circuits
  • +
  • fixed grammar on output circuits
  • +
+

JJRcop updated:

+
    +
  • Fixes changeling eggs not putting the changeling in control if the brainslug is destroyed before hatching.
  • +
  • The silicon airlock menu looks a little more like it used to.
  • +
+

Kor updated:

+
    +
  • Blobbernauts will no longer spawn if a player is not selected to control it, preventing AI blobbernauts from running off the blob and to their deaths.
  • +
  • Following complaints that cargo has been selling all the materials they receive rather than distributing them, mineral exporting has been removed.
  • +
+

MMMiracles updated:

+
    +
  • Power regen on the regular tesla relay has been reduced to 50, from 150.
  • +
+

Naksu updated:

+
    +
  • Sped up saycode to remove free lag from highpop
  • +
  • Using a chameleon projector will now dismount you from any vehicles you are riding, in order to prevent wacky space glitches and being sent to a realm outside space and time.
  • +
+

Shadowlight213 updated:

+
    +
  • Added round id to the status world topic
  • +
+

ShizCalev updated:

+
    +
  • Chameleon goggles will no longer go invisible when selecting Optical Tray scanners.
  • +
  • Engineering and Atmos scanner goggles will now have correctly colored inhand sprites.
  • +
  • The computers on all maps have have been updated for the latest directional sprite changes. Please report any computers facing in strange directions to your nearest mapper.
  • +
  • MetaStation - The consoles in medbay have had their directions corrected.
  • +
  • The Nanotrasen logo on modular computers has been fixed, rejoice!
  • +
  • PubbyStation - Unpowered air injectors in various locations have been fixed.
  • +
  • MetaStation - Air injector leading out of the incinerator has been fixed
  • +
  • MetaStation - Corrected a couple maintenance airlocks being powered by the wrong areas.
  • +
  • Computers will no longer rotate incorrectly when being deconstructed.
  • +
  • You can now rotate computer frames during construction.
  • +
  • Chairs, PA parts, infrared emitters, and doppler arrays will now rotate clockwise.
  • +
  • Throwing drinking glasses and cartons will now consistently cause them to break!
  • +
  • Humans missing legs or are legcuffed will no longer move slower in areas without gravity.
  • +
  • The structures external to stations are now properly lit. Make sure you bring a flashlight.
  • +
  • Computers will no longer delete themselves when being built, whoops!
  • +
  • Space cats will no longer have a smashed helmet when they lay down.
  • +
+

Skylar Lineman, your local R&D moonlighter updated:

+
    +
  • Research has been completely overhauled into the techweb system! No more levels, the station now unlocks research "nodes" with research points passively generated when there is atleast one research server properly cooled, powered, and online.
  • +
  • R&D lab has been replaced by the departmental lathe system on the three major maps. Each department gets a lathe and possibly a circuit imprinter that only have designs assigned by that department.
  • +
  • The ore redemption machine has been moved into cargo bay on maps with decentralized research to prevent the hallways from becoming a free for all. Honk!
  • +
  • You shouldn't expect balance as this is the initial merge. Please put all feedback and concerns on the forum so we can revise the system over the days, weeks, and months, to make this enjoyable for everyone. Heavily wanted are ideas of how to add more ways of generating points.
  • +
  • You can get techweb points by setting off bombs with an active science doppler array listening. The bombs have to have a theoretical radius far above maxcap to make a difference. You can only go up, not down, in radius, so you can't get 6 times the points with 6 TTVs. The algorithm is exponentially/logarithmically scaled to prevent "world destroyer" bombs from instantly finishing research.
  • +
+

SpaceManiac updated:

+
    +
  • HUDs from mechs and helmets no longer conflict with HUD glasses and no longer inappropriately remove implanted HUDs.
  • +
  • Chasm code has been refactored to be more sane.
  • +
  • Building lattices over chasms no longer sometimes deletes the chasm.
  • +
  • Ladders have been refactored and should be far less buggy.
  • +
  • Jacob's ladder actually works again.
  • +
  • Pizza box stacking works again.
  • +
  • Fix some permanent-on and permanent-off bugs caused by the HUD stacking change.
  • +
+

WJohnston updated:

+
    +
  • A bunch of new turf decals for mappers to play with, coming in yellow, white, and red varieties!
  • +
  • Green banded default airlocks now have extended click area like all other airlocks.
  • +
+

Y0SH1 M4S73R updated:

+
    +
  • The R&D Server's name is now improper.
  • +
  • The R&D Server now has an explanation of what it does.
  • +
+

arsserpentarium updated:

+
    +
  • now lists should work properly
  • +
+

duncathan updated:

+
    +
  • The RPD has a shiny new UI!
  • +
  • The RPD can now paint pipes as it lays them, for quicker piping projects.
  • +
  • Atmos scrubbers (vent and portable) can now filter any and all gases.
  • +
+

ike709 updated:

+
    +
  • Added new vent and scrubber sprites by Partheo.
  • +
  • Fixed some computers facing the wrong direction.
  • +
+

jammer312 updated:

+
    +
  • fixed conjuration spells forgetting about conjured items
  • +
+

kevinz000 updated:

+
    +
  • purple bartender suit and apron added to clothesmates!
  • +
  • long hair 3 added, check it out. both have sprites from okand!
  • +
+

nicbn updated:

+
    +
  • Now rolling beds and office chairs have a sound!
  • +
+

oranges updated:

+
    +
  • Removed the shocker circuit
  • +
+

psykzz updated:

+
    +
  • Grilles have new damaged and default sprites
  • +
  • Added TGUI for Turbine computer
  • +
+

tserpas1289 updated:

+
    +
  • Any suit that could hold emergency oxygen tanks can now also hold plasma man internals
  • +
  • Hydroponics winter coats now can hold emergency oxygen tanks just like the other winter coats.
  • +
  • Plasma men jumpsuits can now hold accessories like pocket protectors and medals.
  • +
+

zennerx updated:

+
    +
  • fixed a bug that made you try and scream while unconscious due to a fire
  • +
  • Skateboard crashes now give slight brain damage!
  • +
  • Using a helmet prevents brain damage from the skateboard!
  • +
+ +

15 November 2017

+

Fury updated:

+
    +
  • Added new sprites for the Heirophant Relay (clock cultist telecomms equipment).
  • +
+

Naksu updated:

+
    +
  • Removed fire-related free lag. change: fire alarms and cameras no longer work after being ripped off a wall by a singulo
  • +
  • Minor speedups to movement processing. change: Fat mobs no longer gain temperature by running.
  • +
+

Robustin updated:

+
    +
  • Cult population scaling no longer operates on arbitrary breakpoints. Each additional player between the between the breakpoints will add to the "chance" that an additional cultist will spawn.
  • +
  • On average you will see less roundstart cultists in lowpop and more roundstart cultists in highpop.
  • +
  • Damage examinations now include a "moderate" classification. Before minor was <30 and severe was anything 30 or above. Now minor is <25, moderate is 25 to <50, and severe is 50+.
  • +
  • The tesla will now move toward power beacons at a significantly slower rate.
  • +
+

SpaceManiac updated:

+
    +
  • The post-round station integrity report is now functional again.
  • +
+

ninjanomnom updated:

+
    +
  • Gas overlays no longer block clicks, on 512
  • +
+ +

14 November 2017

+

ike709 updated:

+
    +
  • Added directional computer sprites. Maps haven't been changed yet.
  • +
+

psykzz updated:

+
    +
  • AI Airlock UI to use TGUI
  • +
  • Allow AI to swap between electrified door states without having to un-electrify first.
  • +
+

selea/arsserpentarium updated:

+
    +
  • Integrated circuits have been added to Research!
  • +
  • You can use these to create devices with very complex behaviors.
  • +
  • Research the Integrated circuits printer to get started.
  • +
+ +

13 November 2017

+

Cobby updated:

+
    +
  • The Xray now only hits the first mob it comes into contact with instead of being outright removed from the game.
  • +
+

Floyd / Qustinnus updated:

+
    +
  • Reebe now has ambience sounds
  • +
+

Floyd / Qustinnus: updated:

+
    +
  • Adds a few sound_loop datums to machinery.
  • +
+

Frozenguy5 updated:

+
    +
  • Broken cable cuffs no longer has an invisible sprite.
  • +
+

PKPenguin321 updated:

+
    +
  • Welders must now be screwdrivered open to reveal their fuel tank.
  • +
  • You can empty welders into open containers (like beakers or glasses) when they're screwdrivered open.
  • +
  • You can now insert any chemical into a welder, but all most will do is clog the fuel. Welding fuel will refuel it as usual. Plasma in welders tends to explode.
  • +
+

Qbopper and JJRcop updated:

+
    +
  • The default internet sound volume was changed from 100 to 25. Stop complaining in OOC about your ears!
  • +
+

SpaceManiac updated:

+
    +
  • Posters may no longer be placed on diagonal wall corners.
  • +
+

WJohnston updated:

+
    +
  • Removes stationary docking ports for syndicate infiltrator ships on all maps. Use the docking navigator computer instead! This gives the white ship and syndicate infiltrator more room to navigate and place custom locations that are otherwise occupied by fixed shuttle landing zones that are rarely used.
  • +
+

Xhuis updated:

+
    +
  • Deep fryers now have sound.
  • +
  • Deep fryers now use cooking oil, a specialized reagent that becomes highly damaging at high temperatures. You can get it from grinding soybeans and meat.
  • +
  • Deep fryers now become more efficient with higher-level micro lasers, using less oil and frying faster.
  • +
  • Deep fryers now slowly use oil as it fries objects, instead of all at once.
  • +
  • You can now correctly refill deep fryers with syringes and pills.
  • +
+

nicn updated:

+
    +
  • Damage from low pressure has been doubled.
  • +
+

ninjanomnom updated:

+
    +
  • You can now select a nearby area to expand when using a blueprint instead of making a new area.
  • +
  • New shuttle areas can be created using blueprints. This is currently not useful but will be used later for shuttle construction.
  • +
  • Blueprints can modify existing areas on station.
  • +
  • Blueprint functionality has been added to the debug tab as a verb.
  • +
+ +

12 November 2017

+

Cyberboss updated:

+
    +
  • Clockwork slabs no longer refer to components
  • +
+ +

11 November 2017

+

DaxDupont updated:

+
    +
  • Medbots can inject from one tile away again.
  • +
+

SpaceManiac updated:

+
    +
  • The detective and heads of staff are no longer attacked by portable turrets.
  • +
+

deathride58 updated:

+
    +
  • You can no longer delete girders, lattices, or catwalks with the RPD
  • +
  • Fixes runtimes that occur when clicking girders, lattices, catwalks, or disposal pipes with the RPD in paint mode
  • +
+

ninjanomnom updated:

+
    +
  • Fixes ruin cable spawning and probably some other bugs
  • +
+ +

10 November 2017

+

Anonmare updated:

+
    +
  • Adds an organ storage bag to the syndicate medborg.
  • +
+

AnturK updated:

+
    +
  • Dying in shapeshifted form reverts you to the original one. (You're still dead)
  • +
+

Floyd / Qustinnus updated:

+
    +
  • Redtexting as a traitor now plays a depressing tune to you
  • +
+

Floyd / Qustinnus (And all the sounds by Kayozz11 from Yogstation) updated:

+
    +
  • Adds about 30 new ambience sounds
  • +
  • added new defines for ambience lists.
  • +
+

Iamgoofball updated:

+
    +
  • Cooldown on the Ripley's mining drills has been halved.
  • +
  • The frequency of the Ripley's ore pulse has been doubled.
  • +
+

Jalleo updated:

+
    +
  • Removed a variable to state which RCD's can deconstruct reinforced walls
  • +
  • Made combat (ERT ones) and admin RCDs able to deconstruct r walls alongside borg ones
  • +
+

Kor updated:

+
    +
  • Cult mode will once again print out names at round end.
  • +
+

Mark9013100 updated:

+
    +
  • Deltastation now has a Whiteship.
  • +
  • Charcoal bottles have been renamed, and have been given a more informative description.
  • +
+

Mercenaryblue updated:

+
    +
  • spellchecked the hotel staff.
  • +
  • Added frog masks. Reeeeeeeeee!!
  • +
+

More Robust Than You updated:

+
    +
  • Blobbernauts and spores are no longer killed by blob victory
  • +
  • New blob overminds off the station Z level are moved to the station
  • +
  • You can now use banhammers as a weapon
  • +
  • Monkeys can no longer transmit diseases through hardsuits
  • +
  • Xenobio blobbernauts can no longer walk on blob tiles
  • +
+

Naksu updated:

+
    +
  • Added deterministic output slots to the slime processor
  • +
  • Fixed some interactions with ghosts and items
  • +
  • Nonhumans such as monkeys can now be scanned for chemicals with the health analyzer.
  • +
+

Okand37 (DeltaStation Updates) updated:

+
    +
  • Tweaked Atmospherics
  • +
  • Fixed the Incinerator air injector
  • +
  • Tweaked Engineering
  • +
  • Added logs to the Chaplain's closet for gimmicks (bonfires)
  • +
  • Tweaked Security
  • +
  • Fixed medical morgue maintenance not providing radiation shielding and exterior chemistry windoor
  • +
  • Bar now has a door from the backroom to the theatre stage
  • +
  • Tweaked Locker Room/Dormitories
  • +
+

ShizCalev updated:

+
    +
  • You can now -actually- load pie cannons.
  • +
  • The captain's winter coat can now hold a flashlight.
  • +
  • The captain's and security winter coats can now hold internals tanks.
  • +
  • All winter coats can now hold toys, lighters, and cigarettes.
  • +
  • The captain's hardsuit can now hold pepperspray.
  • +
  • Updated the Test Map debugging verb to report more issues regarding APCs. DELTASTATION
  • +
  • Reverted Okand37's morgue changes which broke power in the area.
  • +
  • Corrected wrong area on the Southern airlock leading into electrical maintenance. ALL STATIONS
  • +
  • Corrected numerous duplicate APCs in areas which led to power issues.
  • +
+

SpaceManiac updated:

+
    +
  • Ghosts can no longer create sparks from the hand teleporter's portals.
  • +
  • Digging on Lavaland no longer shows two progress bars.
  • +
  • The holodeck now has an "Offline" option.
  • +
  • Injury and crit overlays are now scaled properly for zoomed-out views.
  • +
  • Already-downloaded software is now hidden from the NTNet software downloader.
  • +
  • The crafting, language, and building buttons are now positioned correctly in zoomed-out views.
  • +
  • Bluespace shelter walls no longer smooth with non-shelter walls and windows.
  • +
+

Swindly updated:

+
    +
  • Organ storage bags can be used to perform limb augmentation.
  • +
  • You can now cancel a cavity implant during the implanting/removing step by using drapes while holding the appropriate tool in your inactive hand. Cyborgs can cancel the surgery by using drapes alone.
  • +
  • Fixed hot items and fire heating reagents to temperatures higher than their heat source.
  • +
  • Sprays can now be heated with hot items.
  • +
  • The heating of reagents by hot items, fire, and microwaves now scales linearly with the difference between the reagent holder's temperature and the heat source's temperature instead of constantly.
  • +
  • The body temperature of a mob with reagents is affected by the temperature of the mob's reagents.
  • +
  • Reagent containers can now be heated by hot air.
  • +
+

Thefastfoodguy updated:

+
    +
  • Spamming runes / battlecries / etc will no longer trigger spam prevention
  • +
+

WJohnston updated:

+
    +
  • Ancient station lighting fixed on beta side (medical and atmos remains)
  • +
+

XDTM updated:

+
    +
  • Ghosts now have a Toggle Health Scan verb, which allows them to health scan mobs they click on.
  • +
+

Xhuis updated:

+
    +
  • Ratvar and Nar-Sie plushes now have a unique interaction.
  • +
  • Clockwork marauders are now on harm intent.
  • +
  • The Clockwork Marauder scripture now takes five seconds longer to invoke per marauder summoned in the last 20 seconds, capping at 30 extra seconds.
  • +
  • Clockwork marauders no longer gain a health bonus when war is declared.
  • +
  • Moved the BoxStation deep fryers up one tile.
  • +
  • Microwaves have new sounds!
  • +
+

YPOQ updated:

+
    +
  • EMPs can pulse multiple wires
  • +
+

as334 updated:

+
    +
  • Pluoxium can now be formed by irradiating tiles with CO2 in the air.
  • +
  • Rad collectors now steadily form Tritium at a slow pace.
  • +
  • Nerfs fusion by making it slower, and produce radioactivity.
  • +
  • Noblium formation now requires significantly more energy input.
  • +
  • Tanks now melt if their temperature is above 1 Million Kelvin.
  • +
+

deathride58 updated:

+
    +
  • Directional character icon previews now function properly. Other things relying on getflaticon probably work with directional icons again, as well.
  • +
+

nicbn updated:

+
    +
  • Canister sprites for the new gases
  • +
+

ninjanomnom updated:

+
    +
  • Shuttle parallax has been fixed once more
  • +
  • You can no longer set up the auxiliary base's shuttle beacon overlapping with the edge of the map
  • +
+

uraniummeltdown updated:

+
    +
  • Replica fabricatoring airlocks and windoors keeps the old name
  • +
  • Narsie and Ratvar converting airlocks and windoors keeps the old name
  • +
+ +

02 November 2017

+

ACCount updated:

+
    +
  • "Tail removal" and "tail attachment" surgeries are merged with "organ manipulation".
  • +
  • New sprites for reflectors. They finally look like something.
  • +
  • You can lock reflector's rotation by using a screwdriver. Use the screwdriver again to unlock it.
  • +
  • Reflector examine now shows the current angle and rotation lock status.
  • +
  • You can now use a welder to repair damaged reflectors.
  • +
  • Multiple reflector bugs are fixed.
  • +
+

Improvedname updated:

+
    +
  • Removes statues from gold slime pool
  • +
+

Mercenaryblue updated:

+
    +
  • Updated Clown Box sprite to match the others.
  • +
+

More Robust Than You updated:

+
    +
  • ONLY ADMINS CAN ACTIVATE THE ARK NOW
  • +
  • The Ark's time measurements are now a bit more readable
  • +
+

MrStonedOne updated:

+
    +
  • Meteor events will not happen before 25 minutes, the worst versions before 35 and 45 minutes.
  • +
  • Meteor events are now player gated to 15, 20, and 25 players respectively
  • +
  • The more destructive versions of meteor events now have a slightly higher chance of triggering, to offset the decrease in how often it is that they will even qualify.
  • +
  • Fixed the changelog generator.
  • +
+

Naksu updated:

+
    +
  • Smartfridges and chem/condimasters now output items in a deterministic 3x3 grid rather than in a huge pile in the middle of the tile.
  • +
+

SpaceManiac updated:

+
    +
  • Admins can once again spawn nuke teams on demand.
  • +
+

Xhuis updated:

+
    +
  • Admins can now create sound emitters (/obj/effect/sound_emitter) that can be customized to play sounds to different people, at different volumes, and at different locations such as by z-level. They're much more versatile for events than the Play Sound commands!
  • +
  • You can now add grenades to plushies! You'll need to cut out the stuffing first.
  • +
  • Clockwork cult tips of the round have been updated to match the rework.
  • +
  • Abscond and Reebe rifts now place servants directly at the Ark instead of below the "base" area.
  • +
+

nicbn updated:

+
    +
  • Brown gas renamed to nitryl.
  • +
+

ninjanomnom updated:

+
    +
  • Fixes decals not rotating correctly with the turf.
  • +
  • Fixes a runtime causing some turfs to be left behind by removed shuttles.
  • +
  • Shuttles should be roughly 40-50% smoother.
  • +
  • Fixes the cargo shuttle occasionally breaking if a mob got on at exactly the right time.
  • +
+ +

30 October 2017

+

PKPenguin321 updated:

+
    +
  • You can now use beakers/cups/etc that have welding fuel in them on welders to refuel them.
  • +
+

bgobandit updated:

+
    +
  • Due to cuts to Nanotrasen's Occupational Safety and Health Administration (NO-SHA) budget, station fixtures no longer undergo as much safety testing. (Translation for rank and file staff: More objects on the station will hurt you.)
  • +
+ +

29 October 2017

+

Armhulen updated:

+
    +
  • Frost Spiders now use Frost OIL!
  • +
+

Mercenaryblue updated:

+
    +
  • Skeletons can now have their own spectral instruments
  • +
  • \[Dooting Intensifies\]
  • +
  • the variable "too_spooky" defines if it will spawn new instruments, by default TRUE.
  • +
+

Naksu updated:

+
    +
  • Removed meteor-related free lag
  • +
  • Cleaned up dangling mob references from alerts
  • +
+

Xhuis updated:

+
    +
  • You can no longer become an enhanced clockwork golem with mutation toxin.
  • +
  • Normal clockwork golems now have 20% armor, down from 40%.
  • +
+

as334 updated:

+
    +
  • This changelog has been updated and so read it again if you are interested in doing assmos.
  • +
  • Atmospherics has been massively expanded including new gases.
  • +
  • These new gases include Brown Gas, Pluoxium, Stimulum, Hyper-Noblium and Tritium.
  • +
  • Brown Gas is acidic to breath, but mildly stimulation.
  • +
  • Stimulum is more stimulating and much safer.
  • +
  • Pluoxium is a non-reactive form of oxygen that delivers more oxygen into the bloodstream.
  • +
  • Hyper-Noblium is an extremely noble gas, and stops gases from reacting.
  • +
  • Tritium is radioactive and flammable.
  • +
  • New reactions have also been added to create these gases.
  • +
  • Tritium formation: Heat large amounts of oxygen with plasma. Make sure you have a filter ready and setup!
  • +
  • Fusion has been reintroduced. Plasma will fuse when heated to a high thermal energy with Tritium as a catalyst. Make sure to manage the waste products.
  • +
  • Brown Gas formation: Heat Oxygen and Nitrogen.
  • +
  • BZ fixation: Heat Tritium and Plasma.
  • +
  • Stimulum formation: Heated Tritium, Plasma, BZ and Brown Gas.
  • +
  • Hyper-Noblium condensation: Needs Nitrogen and Tritium at a super high heat. Cools rapidly.
  • +
  • Pluoxium is unable to be formed.
  • +
  • Freon has been removed. Use cold nitrogen for your SME problems now.
  • +
  • Water vapor now freezes the tile it is on when it is cooled heavily.
  • +
+

naltronix updated:

+
    +
  • fixes that table that wasnt accessible in Metastation
  • +
+ +

28 October 2017

+

Mark9013100 updated:

+
    +
  • The Medical Cloning manual has been updated.
  • +
+ +

27 October 2017

+

Anonmare updated:

+
    +
  • Adds new grindables
  • +
+

JamieH updated:

+
    +
  • Buildmode map generators will now show you a preview of the area you're changing
  • +
  • Buildmode map generators will now ask before nuking the map
  • +
  • Buildmode map generator corners can now only be set by left clicking
  • +
+

Kor updated:

+
    +
  • Cloth golems will be available as a roundstart race during Halloween.
  • +
+

MrStonedOne updated:

+
    +
  • Created a system to profile code on a line by line basis and return detailed info about how much time was spent (in milliseconds) on each line(s).
  • +
+

Xhuis updated:

+
    +
  • Servants can no longer teleport into the gravity generator, EVA, or telecomms.
  • +
+

ninjanomnom updated:

+
    +
  • Hardsuit helmets work like geiger counters for the user.
  • +
  • Radiation should perform a little better in places.
  • +
  • Various radiation symptom thresholds have been tweaked.
  • +
  • Contamination strengths at different ranges have been tweaked.
  • +
  • Contaminated objects have less range for their radiation.
  • +
  • Hitting something with a contaminated object reduces its strength faster.
  • +
  • Contaminated objects decay faster.
  • +
  • Both radiation healing medicines have been buffed a bit.
  • +
  • Passive radiation loss for mobs is nerfed.
  • +
  • There is a soft cap for mob radiation now.
  • +
  • Projectiles, ammo casings, and implants are disallowed from becoming contaminated.
  • +
  • Suit storage units can completely cleanse contamination from stored objects
  • +
  • The first time an object is contaminated enough to spread more contamination admins will be warned. This is also added to stat tracking.
  • +
  • Thermite works on floors and can be ignited by sufficiently hot fires now
  • +
  • Thermite has been made into a component
  • +
  • Thermite no longer removes existing overlays on turfs
  • +
+ +

26 October 2017

+

Kor and JJRcop updated:

+
    +
  • Added vampires. They will be available as a roundstart race during the Halloween holiday event.
  • +
+

ShizCalev updated:

+
    +
  • Reflectors will no longer drop more materials than they took to make when deconstructed.
  • +
  • You will no longer be prompted to reenter your body while being defibbed if you can't actually be revived.
  • +
  • You can no longer teleport past the ticket stands of the Luxury Emergency Shuttle.
  • +
  • Lightgeists can now -actually- be spawned with gold slime cores.
  • +
  • The Staff of Change will now randomly assign a cyborg module when transforming a mob into a cyborg.
  • +
+

Xhuis updated:

+
    +
  • Clockwork marauders now move more slowly below 40% health.
  • +
  • Instead of a 40% chance (or more) chance to block projectiles, clockwork marauders now have three fixed 100% blocks; after using those three, they cannot block anymore without avoiding projectiles for ten seconds. This number increases to four if war is declared.
  • +
  • Projectiles that deal no damage DO reduce marauders' shield health. Use disabler shots to open them up, then use lasers to go for the kill!
  • +
  • Cogscarab shells and marauder armor now appear in the spawners menu.
  • +
  • You can no longer stack infinitely many stargazers on one tile.
  • +
+

nicbn updated:

+
    +
  • Chemical heater and smoke machine resprited.
  • +
+

ninjanomnom updated:

+
    +
  • Portable generators have a sound while active.
  • +
  • The supermatter has a sound that scales with stored energy.
  • +
+

ninjanomnom & Wjohn updated:

+
    +
  • Cable cuffs now inherit the color of the cables used to make them.
  • +
  • Split cable stacks keep their color.
  • +
  • The blue cable color is now a better blue.
  • +
+ +

25 October 2017

+

Cruix updated:

+
    +
  • Shuttle navigation computers can now place new transit locations over the shuttle's current position.
  • +
+

JJRcop updated:

+
    +
  • The heart of darkness revives you as a shadowperson if you aren't one already.
  • +
+

ShizCalev updated:

+
    +
  • Shades will no longer always hear a heartbeat.
  • +
  • Golem abilities will now be start on cooldown when they are made.
  • +
+ +

24 October 2017

+

Armhulen updated:

+
    +
  • Wizards may now shapeshift into viper spiders.
  • +
+

Improvedname updated:

+
    +
  • Blacklists holoparasite's from surplus crates
  • +
+

Kor updated:

+
    +
  • Added dullahans, which will be available from the character set up menu during the Halloween event.
  • +
  • Severed heads will no longer appear bald.
  • +
+

More Robust Than You updated:

+
    +
  • Fixes champrojector camera bugs
  • +
+

Naksu updated:

+
    +
  • Grinders will now grind grown items like cocoa pods again
  • +
  • Cameras no longer keep hard references to mobs in their motion tracking list.
  • +
+

ShizCalev updated:

+
    +
  • Creatures made via gold slime cores will now be given the proper name of their master.
  • +
+

deathride58 updated:

+
    +
  • Deltastation's armory now contains reinforced windows surrounding the lethal weaponry. This makes Delta's armory consistent with Box.
  • +
  • There are now decals in places where extra Security lockers can spawn.
  • +
  • Cleaned up semicolons in Meta and Boxstation's .dmms
  • +
+ +

22 October 2017

+

More Robust Than You updated:

+
    +
  • Blood Brother now properly shows up in player panel
  • +
+

Naksu updated:

+
    +
  • Paper bins no longer let server admins know that pens were eaten.
  • +
  • Removed dangling mob references to last attacker/attacked
  • +
+

Robustin updated:

+
    +
  • Medical biosuits (and hardsuits) now offer heavy, but not complete, radiation resistance.
  • +
+

ninjanomnom updated:

+
    +
  • Contents of silicon mobs are no longer considered for targets of radiation. This blocks them from being contaminated.
  • +
+ +

21 October 2017

+

More Robust Than You updated:

+
    +
  • Heads of staff will now have cat organs removed at roundstart
  • +
+

Robustin updated:

+
    +
  • Spray tan no longer stuns when ingested.
  • +
+

Thunder12345 updated:

+
    +
  • Sentient cats no longer forget to fall over when they die
  • +
+ +

20 October 2017

+

Kor updated:

+
    +
  • You can now select your Halloween race, rather than having it assigned randomly via event.
  • +
+

Robustin updated:

+
    +
  • Fixed a bug where detonating maxcaps, especially multiple maxcaps, on Reebe guaranteed that everyone would die and thus the Clock Cult would immediately lose; Reebe maxcap is now 2/5/10.
  • +
+

ShizCalev updated:

+
    +
  • All reflector prisms/mirrors have had their angles corrected.
  • +
  • Remains left over by dusting or soul-stoning a mob are now dissoluble with acid.
  • +
  • Changelings using biodegrade to escape restraints will now leave a pile of goop.
  • +
  • Fixed messages related to changelings using biodegrade not appearing.
  • +
+ +

19 October 2017

+

Kor updated:

+
    +
  • Blob is now a side antagonist.
  • +
  • Event and admin blobs will now be able to choose their spawn location.
  • +
  • Blob can now win in any mode by gaining enough tiles to reach Critical Mass.
  • +
  • Blobs that have Critical Mass have unlimited points, and a minute after achieving critical mass, they will spread to every tile on station, killing anyone still on board and ending the round.
  • +
  • Using an analyzer on a blob will now reveal its progress towards Critical Mass.
  • +
  • The blob event is now more common.
  • +
+

Mercenaryblue updated:

+
    +
  • You will no longer trip on inactive honkbots.
  • +
  • Sentient Honkbots are no longer forced to speak when somebody trip on them.
  • +
+

Naksu updated:

+
    +
  • Manned turrets stop firing when there's no-one in the turret shooting.
  • +
  • mobs will enter a deep power-saving state when there's not much to do except wander around. change: bees are slightly more passive in general
  • +
+

deathride58 updated:

+
    +
  • You can now press Ctrl+H to stop pulling, or simply H to stop pulling if you're in hotkey mode.
  • +
+

ninjanomnom updated:

+
    +
  • Engineering scanner goggles have a radiation mode now
  • +
  • Objects placed under showers are cleansed of radioactive contamination over a short time.
  • +
  • Showers make sound now.
  • +
+

oranges updated:

+
    +
  • Removed the bluespace pipe
  • +
+ +

18 October 2017

+

DaxDupont updated:

+
    +
  • Fixes automatic fire on guns.
  • +
+

Gun Hog updated:

+
    +
  • The GPS item now correctly changes its name when the GPS tag is changed.
  • +
+

Improvedname updated:

+
    +
  • Reverts katana's to its orginal size being huge
  • +
+

Mercenaryblue updated:

+
    +
  • it should be far easier to clean out your face from multiple cream pies.
  • +
+

More Robust Than You updated:

+
    +
  • People that are burning slightly less will appear to be burning... slightly less.
  • +
+

Robustin updated:

+
    +
  • The smoke machine now properly generates transparent smoke, transmits chemicals, and displays the proper icons.
  • +
+

ShizCalev updated:

+
    +
  • You can no longer build reinforced floors directly on top of dirt, asteroid sand, ice, or beaches. You'll have to first construct flooring on top of it instead.
  • +
  • Corrected mapping issues introduced with the latest SM engine/radiation update across all relevant maps.
  • +
  • The tools on the Caravan Ambush space ruin have had their speeds corrected.
  • +
  • Slappers will no longer appear as a latex balloon in your hand.
  • +
  • Renault now has a comfy new bed on Metastation!
  • +
  • Engineering cyborgs now have access to geiger counters.
  • +
+

Xhuis updated:

+
    +
  • You can no longer pick up brass chairs.
  • +
+

Y0SH1_M4S73R updated:

+
    +
  • Disabling leg actuators sets the power drain per step to the correct value.
  • +
+

duncathan updated:

+
    +
  • Filters no longer stop passing any gas through if the filtered output is full.
  • +
+

ninjanomnom updated:

+
    +
  • You can vomit blood at high enough radiation.
  • +
  • Radiation knockdown is far far shorter.
  • +
  • Genetics modification is less harmful but still, upgrade your machines.
  • +
  • Pentetic acid is useless for low amounts of radiation but indispensable for high amounts now.
  • +
  • Singularity radiation has been normalized and Pubby engine has been remapped.
  • +
  • No more hair loss spam
  • +
  • Mob rad contamination has been disabled for now. Regular contamination is still a thing.
  • +
  • Fixed turfs not rotating
  • +
  • Fixed stealing structures you shouldn't be moving
  • +
+ +

17 October 2017

+

DaxDupont updated:

+
    +
  • Fancy boxes(ie: donut boxes) now show the proper content amount in the sprite and no longer go invisible when empty.
  • +
+

Mercenaryblue updated:

+
    +
  • when decapitated, banana-flavored cream no longer hovers where your head used to be.
  • +
+

More Robust Than You updated:

+
    +
  • EI NATH! now causes a flash of light
  • +
+

Naksu updated:

+
    +
  • Pinned notes will now show up on vault, abductor, centcom and large glass airlocks.
  • +
  • Removed a misleading message when handling full stacks of sheets.
  • +
  • Pre-filled glass bottles (uplink, medbay, botany) will now give visual feedback about how much stuff is left inside, and the color of contents will match an empty bottle being filled with the same reagent.
  • +
  • Player-controlled "neutral" mobs such as minebots are now considered valid targets by clock cult's ocular wardens.
  • +
+

Xhuis updated:

+
    +
  • Cogged APCs can now be correctly unlocked with an ID card.
  • +
+

duncathan updated:

+
    +
  • Portable air pumps can output to a maximum of 25 atmospheres.
  • +
+

kevinz000 updated:

+
    +
  • Legacy projectiles have been removed. Instead, all projectiles are now PIXEL PROJECTILES!
  • +
  • Reflectors can now be at any angle you want. Alt click them to set angle!
  • +
  • Pipes can now be layered up to 3 layers.
  • +
+
+ +GoonStation 13 Development Team +
+ Coders: Stuntwaffle, Showtime, Pantaloons, Nannek, Keelin, Exadv1, hobnob, Justicefries, 0staf, sniperchance, AngriestIBM, BrianOBlivion
+ Spriters: Supernorn, Haruhi, Stuntwaffle, Pantaloons, Rho, SynthOrange, I Said No
+
+
+

Creative Commons License
Except where otherwise noted, Goon Station 13 is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License.
Rights are currently extended to SomethingAwful Goons only.

+

Some icons by Yusuke Kamiyamane. All rights reserved. Licensed under a Creative Commons Attribution 3.0 License.

+
+ + diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 6a6e5f672c..ab40b78512 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -13457,4 +13457,921 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - bugfix: Thermite no longer removes existing overlays on turfs 2017-10-28: Mark9013100: +<<<<<<< HEAD - tweak: The Medical Cloning manual has been updated. +======= + - tweak: The Medical Cloning manual has been updated. +2017-10-29: + Armhulen: + - rscadd: Frost Spiders now use Frost OIL! + Mercenaryblue: + - rscadd: Skeletons can now have their own spectral instruments + - rscadd: \[Dooting Intensifies\] + - admin: the variable "too_spooky" defines if it will spawn new instruments, by + default TRUE. + Naksu: + - bugfix: Removed meteor-related free lag + - bugfix: Cleaned up dangling mob references from alerts + Xhuis: + - bugfix: You can no longer become an enhanced clockwork golem with mutation toxin. + - balance: Normal clockwork golems now have 20% armor, down from 40%. + as334: + - spellcheck: This changelog has been updated and so read it again if you are interested + in doing assmos. + - rscadd: Atmospherics has been massively expanded including new gases. + - rscadd: These new gases include Brown Gas, Pluoxium, Stimulum, Hyper-Noblium and + Tritium. + - rscadd: Brown Gas is acidic to breath, but mildly stimulation. + - rscadd: Stimulum is more stimulating and much safer. + - rscadd: Pluoxium is a non-reactive form of oxygen that delivers more oxygen into + the bloodstream. + - rscadd: Hyper-Noblium is an extremely noble gas, and stops gases from reacting. + - rscadd: Tritium is radioactive and flammable. + - rscadd: New reactions have also been added to create these gases. + - rscadd: 'Tritium formation: Heat large amounts of oxygen with plasma. Make sure + you have a filter ready and setup!' + - rscadd: Fusion has been reintroduced. Plasma will fuse when heated to a high thermal + energy with Tritium as a catalyst. Make sure to manage the waste products. + - rscadd: 'Brown Gas formation: Heat Oxygen and Nitrogen.' + - rscadd: 'BZ fixation: Heat Tritium and Plasma.' + - rscadd: 'Stimulum formation: Heated Tritium, Plasma, BZ and Brown Gas.' + - rscadd: 'Hyper-Noblium condensation: Needs Nitrogen and Tritium at a super high + heat. Cools rapidly.' + - rscadd: Pluoxium is unable to be formed. + - rscdel: Freon has been removed. Use cold nitrogen for your SME problems now. + - rscadd: Water vapor now freezes the tile it is on when it is cooled heavily. + naltronix: + - bugfix: fixes that table that wasnt accessible in Metastation +2017-10-30: + PKPenguin321: + - tweak: You can now use beakers/cups/etc that have welding fuel in them on welders + to refuel them. + bgobandit: + - tweak: 'Due to cuts to Nanotrasen''s Occupational Safety and Health Administration + (NO-SHA) budget, station fixtures no longer undergo as much safety testing. + (Translation for rank and file staff: More objects on the station will hurt + you.)' +2017-11-02: + ACCount: + - tweak: '"Tail removal" and "tail attachment" surgeries are merged with "organ + manipulation".' + - imageadd: New sprites for reflectors. They finally look like something. + - rscadd: You can lock reflector's rotation by using a screwdriver. Use the screwdriver + again to unlock it. + - rscadd: Reflector examine now shows the current angle and rotation lock status. + - rscadd: You can now use a welder to repair damaged reflectors. + - bugfix: Multiple reflector bugs are fixed. + Improvedname: + - rscdel: Removes statues from gold slime pool + Mercenaryblue: + - imageadd: Updated Clown Box sprite to match the others. + More Robust Than You: + - admin: ONLY ADMINS CAN ACTIVATE THE ARK NOW + - tweak: The Ark's time measurements are now a bit more readable + MrStonedOne: + - tweak: Meteor events will not happen before 25 minutes, the worst versions before + 35 and 45 minutes. + - tweak: Meteor events are now player gated to 15, 20, and 25 players respectively + - balance: The more destructive versions of meteor events now have a slightly higher + chance of triggering, to offset the decrease in how often it is that they will + even qualify. + - bugfix: Fixed the changelog generator. + Naksu: + - tweak: Smartfridges and chem/condimasters now output items in a deterministic + 3x3 grid rather than in a huge pile in the middle of the tile. + SpaceManiac: + - bugfix: Admins can once again spawn nuke teams on demand. + Xhuis: + - admin: Admins can now create sound emitters (/obj/effect/sound_emitter) that can + be customized to play sounds to different people, at different volumes, and + at different locations such as by z-level. They're much more versatile for events + than the Play Sound commands! + - rscadd: You can now add grenades to plushies! You'll need to cut out the stuffing + first. + - tweak: Clockwork cult tips of the round have been updated to match the rework. + - tweak: Abscond and Reebe rifts now place servants directly at the Ark instead + of below the "base" area. + nicbn: + - tweak: Brown gas renamed to nitryl. + ninjanomnom: + - bugfix: Fixes decals not rotating correctly with the turf. + - bugfix: Fixes a runtime causing some turfs to be left behind by removed shuttles. + - code_imp: Shuttles should be roughly 40-50% smoother. + - bugfix: Fixes the cargo shuttle occasionally breaking if a mob got on at exactly + the right time. +2017-11-10: + Anonmare: + - bugfix: Adds an organ storage bag to the syndicate medborg. + AnturK: + - balance: Dying in shapeshifted form reverts you to the original one. (You're still + dead) + Floyd / Qustinnus: + - soundadd: Redtexting as a traitor now plays a depressing tune to you + Floyd / Qustinnus (And all the sounds by Kayozz11 from Yogstation): + - soundadd: Adds about 30 new ambience sounds + - refactor: added new defines for ambience lists. + Iamgoofball: + - tweak: Cooldown on the Ripley's mining drills has been halved. + - tweak: The frequency of the Ripley's ore pulse has been doubled. + Jalleo: + - tweak: Removed a variable to state which RCD's can deconstruct reinforced walls + - balance: Made combat (ERT ones) and admin RCDs able to deconstruct r walls alongside + borg ones + Kor: + - bugfix: Cult mode will once again print out names at round end. + Mark9013100: + - rscadd: Deltastation now has a Whiteship. + - tweak: Charcoal bottles have been renamed, and have been given a more informative + description. + Mercenaryblue: + - spellcheck: spellchecked the hotel staff. + - rscadd: Added frog masks. Reeeeeeeeee!! + More Robust Than You: + - bugfix: Blobbernauts and spores are no longer killed by blob victory + - bugfix: New blob overminds off the station Z level are moved to the station + - bugfix: You can now use banhammers as a weapon + - tweak: Monkeys can no longer transmit diseases through hardsuits + - tweak: Xenobio blobbernauts can no longer walk on blob tiles + Naksu: + - tweak: Added deterministic output slots to the slime processor + - bugfix: Fixed some interactions with ghosts and items + - bugfix: Nonhumans such as monkeys can now be scanned for chemicals with the health + analyzer. + Okand37 (DeltaStation Updates): + - rscadd: Tweaked Atmospherics + - bugfix: Fixed the Incinerator air injector + - rscadd: Tweaked Engineering + - rscadd: Added logs to the Chaplain's closet for gimmicks (bonfires) + - rscadd: Tweaked Security + - bugfix: Fixed medical morgue maintenance not providing radiation shielding and + exterior chemistry windoor + - rscadd: Bar now has a door from the backroom to the theatre stage + - rscadd: Tweaked Locker Room/Dormitories + ShizCalev: + - bugfix: You can now -actually- load pie cannons. + - bugfix: The captain's winter coat can now hold a flashlight. + - bugfix: The captain's and security winter coats can now hold internals tanks. + - tweak: All winter coats can now hold toys, lighters, and cigarettes. + - tweak: The captain's hardsuit can now hold pepperspray. + - rscadd: Updated the Test Map debugging verb to report more issues regarding APCs. + DELTASTATION + - bugfix: Reverted Okand37's morgue changes which broke power in the area. + - bugfix: Corrected wrong area on the Southern airlock leading into electrical maintenance. + ALL STATIONS + - bugfix: Corrected numerous duplicate APCs in areas which led to power issues. + SpaceManiac: + - bugfix: Ghosts can no longer create sparks from the hand teleporter's portals. + - bugfix: Digging on Lavaland no longer shows two progress bars. + - bugfix: The holodeck now has an "Offline" option. + - bugfix: Injury and crit overlays are now scaled properly for zoomed-out views. + - bugfix: Already-downloaded software is now hidden from the NTNet software downloader. + - bugfix: The crafting, language, and building buttons are now positioned correctly + in zoomed-out views. + - bugfix: Bluespace shelter walls no longer smooth with non-shelter walls and windows. + Swindly: + - rscadd: Organ storage bags can be used to perform limb augmentation. + - bugfix: You can now cancel a cavity implant during the implanting/removing step + by using drapes while holding the appropriate tool in your inactive hand. Cyborgs + can cancel the surgery by using drapes alone. + - bugfix: Fixed hot items and fire heating reagents to temperatures higher than + their heat source. + - bugfix: Sprays can now be heated with hot items. + - tweak: The heating of reagents by hot items, fire, and microwaves now scales linearly + with the difference between the reagent holder's temperature and the heat source's + temperature instead of constantly. + - tweak: The body temperature of a mob with reagents is affected by the temperature + of the mob's reagents. + - tweak: Reagent containers can now be heated by hot air. + Thefastfoodguy: + - bugfix: Spamming runes / battlecries / etc will no longer trigger spam prevention + WJohnston: + - bugfix: Ancient station lighting fixed on beta side (medical and atmos remains) + XDTM: + - rscadd: Ghosts now have a Toggle Health Scan verb, which allows them to health + scan mobs they click on. + Xhuis: + - rscadd: Ratvar and Nar-Sie plushes now have a unique interaction. + - balance: Clockwork marauders are now on harm intent. + - balance: The Clockwork Marauder scripture now takes five seconds longer to invoke + per marauder summoned in the last 20 seconds, capping at 30 extra seconds. + - balance: Clockwork marauders no longer gain a health bonus when war is declared. + - tweak: Moved the BoxStation deep fryers up one tile. + - rscadd: Microwaves have new sounds! + YPOQ: + - bugfix: EMPs can pulse multiple wires + as334: + - rscadd: Pluoxium can now be formed by irradiating tiles with CO2 in the air. + - rscadd: Rad collectors now steadily form Tritium at a slow pace. + - balance: Nerfs fusion by making it slower, and produce radioactivity. + - balance: Noblium formation now requires significantly more energy input. + - balance: Tanks now melt if their temperature is above 1 Million Kelvin. + deathride58: + - bugfix: Directional character icon previews now function properly. Other things + relying on getflaticon probably work with directional icons again, as well. + nicbn: + - imageadd: Canister sprites for the new gases + ninjanomnom: + - bugfix: Shuttle parallax has been fixed once more + - bugfix: You can no longer set up the auxiliary base's shuttle beacon overlapping + with the edge of the map + uraniummeltdown: + - tweak: Replica fabricatoring airlocks and windoors keeps the old name + - tweak: Narsie and Ratvar converting airlocks and windoors keeps the old name +2017-11-11: + DaxDupont: + - bugfix: Medbots can inject from one tile away again. + SpaceManiac: + - bugfix: The detective and heads of staff are no longer attacked by portable turrets. + deathride58: + - bugfix: You can no longer delete girders, lattices, or catwalks with the RPD + - bugfix: Fixes runtimes that occur when clicking girders, lattices, catwalks, or + disposal pipes with the RPD in paint mode + ninjanomnom: + - bugfix: Fixes ruin cable spawning and probably some other bugs +2017-11-12: + Cyberboss: + - bugfix: Clockwork slabs no longer refer to components +2017-11-13: + Cobby: + - rscadd: The Xray now only hits the first mob it comes into contact with instead + of being outright removed from the game. + Floyd / Qustinnus: + - soundadd: Reebe now has ambience sounds + 'Floyd / Qustinnus:': + - soundadd: Adds a few sound_loop datums to machinery. + Frozenguy5: + - bugfix: Broken cable cuffs no longer has an invisible sprite. + PKPenguin321: + - rscadd: Welders must now be screwdrivered open to reveal their fuel tank. + - rscadd: You can empty welders into open containers (like beakers or glasses) when + they're screwdrivered open. + - rscadd: You can now insert any chemical into a welder, but all most will do is + clog the fuel. Welding fuel will refuel it as usual. Plasma in welders tends + to explode. + Qbopper and JJRcop: + - tweak: The default internet sound volume was changed from 100 to 25. Stop complaining + in OOC about your ears! + SpaceManiac: + - bugfix: Posters may no longer be placed on diagonal wall corners. + WJohnston: + - rscdel: Removes stationary docking ports for syndicate infiltrator ships on all + maps. Use the docking navigator computer instead! This gives the white ship + and syndicate infiltrator more room to navigate and place custom locations that + are otherwise occupied by fixed shuttle landing zones that are rarely used. + Xhuis: + - rscadd: Deep fryers now have sound. + - tweak: Deep fryers now use cooking oil, a specialized reagent that becomes highly + damaging at high temperatures. You can get it from grinding soybeans and meat. + - tweak: Deep fryers now become more efficient with higher-level micro lasers, using + less oil and frying faster. + - tweak: Deep fryers now slowly use oil as it fries objects, instead of all at once. + - bugfix: You can now correctly refill deep fryers with syringes and pills. + nicn: + - balance: Damage from low pressure has been doubled. + ninjanomnom: + - rscadd: You can now select a nearby area to expand when using a blueprint instead + of making a new area. + - rscadd: New shuttle areas can be created using blueprints. This is currently not + useful but will be used later for shuttle construction. + - tweak: Blueprints can modify existing areas on station. + - admin: Blueprint functionality has been added to the debug tab as a verb. +2017-11-14: + ike709: + - imageadd: Added directional computer sprites. Maps haven't been changed yet. + psykzz: + - refactor: AI Airlock UI to use TGUI + - tweak: Allow AI to swap between electrified door states without having to un-electrify + first. + selea/arsserpentarium: + - rscadd: Integrated circuits have been added to Research! + - rscadd: You can use these to create devices with very complex behaviors. + - rscadd: Research the Integrated circuits printer to get started. +2017-11-15: + Fury: + - rscadd: Added new sprites for the Heirophant Relay (clock cultist telecomms equipment). + Naksu: + - bugfix: 'Removed fire-related free lag. change: fire alarms and cameras no longer + work after being ripped off a wall by a singulo' + - tweak: 'Minor speedups to movement processing. change: Fat mobs no longer gain + temperature by running.' + Robustin: + - refactor: Cult population scaling no longer operates on arbitrary breakpoints. + Each additional player between the between the breakpoints will add to the "chance" + that an additional cultist will spawn. + - tweak: On average you will see less roundstart cultists in lowpop and more roundstart + cultists in highpop. + - tweak: Damage examinations now include a "moderate" classification. Before minor + was <30 and severe was anything 30 or above. Now minor is <25, moderate is 25 + to <50, and severe is 50+. + - tweak: The tesla will now move toward power beacons at a significantly slower + rate. + SpaceManiac: + - bugfix: The post-round station integrity report is now functional again. + ninjanomnom: + - bugfix: Gas overlays no longer block clicks, on 512 +2017-11-22: + ACCount: + - refactor: Old integrated circuit save file format is ditched in favor of JSON. + Readability, both of save files and save code, is improved greatly. + - tweak: Integrated circuit panels now open with screwdriver instead of crowbar, + to match every single other thing on this server. + - tweak: Integrated circuit printer now stores up to 25 metal sheets. + - bugfix: Fixed integrated circuit rechargers not recharging guns properly and not + updating icons. + - bugfix: Fixed multiple bugs in integrated circuits UIs, improved overall usability. + Anonmare: + - balance: Laserpoitners now incapcitate catpeople + AutomaticFrenzy: + - bugfix: cell chargers weren't animating properly + - bugfix: disable_warning wasn't getting checked and the chat was being spammed + Code by Pyko, Ported by Frozenguy5: + - rscadd: Rat Kebabs and Double Rat Kebabs have been added! + Cyberboss: + - server: Server tools API changed to version 3.2.0.1 + - admin: '"ahelp" chat command can now accept a ticket number as opposed to a ckey' + DaxDupont: + - tweak: CentCom has issued a firmware updated for the operating computers. It is + no longer needed to manually refresh the procedure and patient status. + - bugfix: Proximity sensors no longer beep when unarmed. + - bugfix: Plant trays will now properly process fluorine and adjust toxins and water + contents. + Francinum: + - tweak: The shuttle build plate is now better sized for all stations. + Iamgoofball: + - spellcheck: fixes grammar on logic gate descriptions + - spellcheck: fixes grammar on list circuits + - bugfix: fixes grammar on trig circuits + - spellcheck: fixed grammar on output circuits + JJRcop: + - bugfix: Fixes changeling eggs not putting the changeling in control if the brainslug + is destroyed before hatching. + - tweak: The silicon airlock menu looks a little more like it used to. + Kor: + - bugfix: Blobbernauts will no longer spawn if a player is not selected to control + it, preventing AI blobbernauts from running off the blob and to their deaths. + - rscdel: Following complaints that cargo has been selling all the materials they + receive rather than distributing them, mineral exporting has been removed. + MMMiracles: + - balance: Power regen on the regular tesla relay has been reduced to 50, from 150. + Naksu: + - bugfix: Sped up saycode to remove free lag from highpop + - bugfix: Using a chameleon projector will now dismount you from any vehicles you + are riding, in order to prevent wacky space glitches and being sent to a realm + outside space and time. + Shadowlight213: + - code_imp: Added round id to the status world topic + ShizCalev: + - bugfix: Chameleon goggles will no longer go invisible when selecting Optical Tray + scanners. + - rscadd: Engineering and Atmos scanner goggles will now have correctly colored + inhand sprites. + - tweak: The computers on all maps have have been updated for the latest directional + sprite changes. Please report any computers facing in strange directions to + your nearest mapper. + - bugfix: MetaStation - The consoles in medbay have had their directions corrected. + - imageadd: The Nanotrasen logo on modular computers has been fixed, rejoice! + - bugfix: PubbyStation - Unpowered air injectors in various locations have been + fixed. + - bugfix: MetaStation - Air injector leading out of the incinerator has been fixed + - bugfix: MetaStation - Corrected a couple maintenance airlocks being powered by + the wrong areas. + - bugfix: Computers will no longer rotate incorrectly when being deconstructed. + - bugfix: You can now rotate computer frames during construction. + - bugfix: Chairs, PA parts, infrared emitters, and doppler arrays will now rotate + clockwise. + - bugfix: Throwing drinking glasses and cartons will now consistently cause them + to break! + - bugfix: Humans missing legs or are legcuffed will no longer move slower in areas + without gravity. + - bugfix: The structures external to stations are now properly lit. Make sure you + bring a flashlight. + - bugfix: Computers will no longer delete themselves when being built, whoops! + - bugfix: Space cats will no longer have a smashed helmet when they lay down. + Skylar Lineman, your local R&D moonlighter: + - rscadd: Research has been completely overhauled into the techweb system! No more + levels, the station now unlocks research "nodes" with research points passively + generated when there is atleast one research server properly cooled, powered, + and online. + - rscadd: R&D lab has been replaced by the departmental lathe system on the three + major maps. Each department gets a lathe and possibly a circuit imprinter that + only have designs assigned by that department. + - rscadd: The ore redemption machine has been moved into cargo bay on maps with + decentralized research to prevent the hallways from becoming a free for all. + Honk! + - balance: You shouldn't expect balance as this is the initial merge. Please put + all feedback and concerns on the forum so we can revise the system over the + days, weeks, and months, to make this enjoyable for everyone. Heavily wanted + are ideas of how to add more ways of generating points. + - balance: You can get techweb points by setting off bombs with an active science + doppler array listening. The bombs have to have a theoretical radius far above + maxcap to make a difference. You can only go up, not down, in radius, so you + can't get 6 times the points with 6 TTVs. The algorithm is exponentially/logarithmically + scaled to prevent "world destroyer" bombs from instantly finishing research. + SpaceManiac: + - bugfix: HUDs from mechs and helmets no longer conflict with HUD glasses and no + longer inappropriately remove implanted HUDs. + - code_imp: Chasm code has been refactored to be more sane. + - bugfix: Building lattices over chasms no longer sometimes deletes the chasm. + - code_imp: Ladders have been refactored and should be far less buggy. + - bugfix: Jacob's ladder actually works again. + - bugfix: Pizza box stacking works again. + - bugfix: Fix some permanent-on and permanent-off bugs caused by the HUD stacking + change. + WJohnston: + - imageadd: A bunch of new turf decals for mappers to play with, coming in yellow, + white, and red varieties! + - bugfix: Green banded default airlocks now have extended click area like all other + airlocks. + Y0SH1 M4S73R: + - spellcheck: The R&D Server's name is now improper. + - spellcheck: The R&D Server now has an explanation of what it does. + arsserpentarium: + - bugfix: now lists should work properly + duncathan: + - rscadd: The RPD has a shiny new UI! + - rscadd: The RPD can now paint pipes as it lays them, for quicker piping projects. + - rscadd: Atmos scrubbers (vent and portable) can now filter any and all gases. + ike709: + - imageadd: Added new vent and scrubber sprites by Partheo. + - bugfix: Fixed some computers facing the wrong direction. + jammer312: + - bugfix: fixed conjuration spells forgetting about conjured items + kevinz000: + - rscadd: purple bartender suit and apron added to clothesmates! + - rscadd: long hair 3 added, check it out. both have sprites from okand! + nicbn: + - soundadd: Now rolling beds and office chairs have a sound! + oranges: + - rscdel: Removed the shocker circuit + psykzz: + - imageadd: Grilles have new damaged and default sprites + - rscadd: Added TGUI for Turbine computer + tserpas1289: + - tweak: Any suit that could hold emergency oxygen tanks can now also hold plasma + man internals + - tweak: Hydroponics winter coats now can hold emergency oxygen tanks just like + the other winter coats. + - bugfix: Plasma men jumpsuits can now hold accessories like pocket protectors and + medals. + zennerx: + - bugfix: fixed a bug that made you try and scream while unconscious due to a fire + - tweak: Skateboard crashes now give slight brain damage! + - rscadd: Using a helmet prevents brain damage from the skateboard! +2017-11-23: + GupGup: + - bugfix: Fixes hostile mobs attacking surrounding tiles when trying to attack someone + MrStonedOne and Jordie: + - server: As a late note, serverops be advise that mysql is no longer supported. + existing mysql databases will need to be converted to mariadb + Robustin: + - tweak: RND consoles will no longer display options for machines or disks that + are not connected/inserted. + ShizCalev: + - bugfix: Aliens in soft-crit will now use the correct sprite. + XDTM: + - rscadd: 'Added two new symptoms: one allows viruses to still work while dead, + and allows infection of undead species, and one allows infection of inorganic + species (such as plasmapeople or golems).' +2017-11-24: + ACCount: + - rscdel: Removed "console screen" stock part. Just use glass sheets instead. + More Robust Than You: + - tweak: Spessmen are now smart enough to realize you don't need to turn around + to pull cigarette butts + SpaceManiac: + - bugfix: Fix water misters being inappropriately glued to hands in some cases. + - bugfix: Some misplaced decals in the Hotel brig have been corrected. + ninjanomnom: + - bugfix: Custom shuttle dockers can no longer place docking regions inside other + custom docker regions. +2017-11-25: + CosmicScientist: + - bugfix: bolas are back in tablecrafting! + Dorsisdwarf: + - tweak: Catpeople are now distracted instead of debilitated + - rscadd: Normal cats now go for laser pointers + SpaceManiac: + - bugfix: You can no longer buckle people to roller beds from inside of a locker. + YPOQ: + - bugfix: AIs and cyborgs can interact with unscrewed airlocks and APCs. + ninjanomnom: + - bugfix: Fixes thermite burning hotter than the boiling point of stone + zennerx: + - bugfix: Zombies don't reanimate with no head! +2017-11-27: + ACCount: + - rscadd: 'New integrated circuit components: list constructors/deconstructors. + Useful for building lists and taking them apart.' + - bugfix: Fixed multiple bugs in integrated circuits UIs, improved overall usability. + More Robust Than You: + - bugfix: Fixed cult leaders being de-culted upon election if they had a mindshield + implant + Naksu: + - bugfix: Hopefully fixed mesons granting the ability to hear people through walls. + Okand37: + - rscadd: Re-organized Delta's departmental protolathes for all departments. + - rscadd: Re-organized Delta's ORM placement by connecting it to the mining office, + which now has a desk for over handing materials to the outside. + - rscadd: Added a second Nanomed to Deltastation's medical bay. + - rscadd: Nanotrasen has decided to add proper caution signs to most docking ports + on Deltastation, warning individuals to be cautious around these areas. + - rscadd: Two health sensors are now placed in Deltastation's robotics area for + medibots. + - bugfix: Atmospheric Technicians at Deltastation can now open up their gas storage + in the supermatter power area as intended. + WJohnston: + - bugfix: Fixed a case where items would sometimes be placed underneath racks. + XDTM: + - balance: Viruses' healing symptoms have been reworked! + - rscdel: All existing healing symptoms have been removed in favour of new ones. + - rscdel: Weight Even and Weight Gain have been removed, so hunger can be used for + balancing in symptoms. + - rscadd: Starlight Condensation heals toxin damage if you're in space using starlight + as a catalyst. Being up to two tiles away also works, as long as you can still + see it, but slower. + - rscadd: Toxolysis (level 7) rapidly cleanses all chemicals from the body, with + no exception. + - rscadd: 'Cellular Molding heals brute damage depending on your body temperature: + the higher the temperature, the faster the healing. Requires above-average temperature + to activate, and the speed heavily increases while on fire.' + - rscadd: Regenerative Coma (level 8) causes the virus to send you into a deep coma + when you are heavily damaged (>70 brute+burn damage). While you are unconscious, + either from the virus or from other sources, the virus will heal both brute + and burn damage fairly quickly. Sleeping also works, but at reduced speed. + - rscadd: Tissue Hydration heals burn damage if you are wet (negative fire stacks) + or if you have water in your bloodstream. + - rscadd: Plasma Fixation (level 8) stabilizes temperature and heals burns while + plasma is in your body or while standing in a plasma cloud. Does not protect + from the poisoning effects of plasma. + - rscadd: Radioactive Resonance gives a mild constant brute and burn healing while + irradiated. The healing becomes more intense if you reach higher levels of radiation, + but is still less than the alternatives. + - rscadd: Metabolic Boost (level 7) doubles the rate at which you process chemicals, + good and bad, but also increases hunger tenfold. + kevinz000: + - bugfix: Cryo cells can now be properly rotated with a wrench. + ninjanomnom: + - rscadd: 'You can now make a new tasty traditional treat: butterdogs. Watch out, + they''re slippery.' +2017-11-28: + ACCount: + - rscdel: '"Machine prototype" is removed from the game.' + - rscdel: Mass-spectrometers are removed. Would anyone notice if not for this changelog + entry? + Cruix: + - rscadd: AI and observer diagnostic huds will now show the astar path of all bots, + and Pai bots will be given a visible path to follow when called by the AI. + JJRcop: + - admin: Fixed the Make space ninja verb. + Naksu: + - code_imp: rejiggered botcode a little bit + SpaceManiac: + - spellcheck: Admin-added "download research" objectives are now consistent with + automatic ones. + improvedname: + - tweak: toolbelts can now carry geiger counters + uraniummeltdown: + - rscadd: You can make many different types of office and comfy chairs with metal + - tweak: Stack menus use /datum/browser +2017-11-29: + MrStonedOne: + - tweak: The sloth no longer suspiciously moves fast when gliding between tiles. + - balance: The sloth's movespeed when inhabited by a player has been lowered from + once every 1/5 of a second to once every second. + SpaceManiac: + - spellcheck: The techweb node for mech LMGs no longer claims to be for mech tasers. +2017-11-30: + ninjanomnom: + - tweak: Reduced the max volume of sm by 1/5th and made the upper bounds only play + mid delamination. + psykzz: + - bugfix: Fixing the broken turbine computer +2017-12-02: + BeeSting12: + - spellcheck: Occupand ---> Occupant on opened cryogenic pods. + - spellcheck: Cyrogenic ---> Cryogenic on opened cryogenic pods. + CosmicScientist: + - rscadd: You can make plushies kiss one another! + Frozenguy5: + - tweak: The Particle Accelerator's wires can no longer be EMP'd + Naksu: + - code_imp: Cleans up some loc assignments + Robustin: + - tweak: Damage examinations now include a "moderate" classification. Before minor + was <30 and severe was anything 30 or above. Now minor is <25, moderate is 25 + to <50, and severe is 50+. + - balance: Clockwork magicks will now prevent Bags of Holding from being combined + on Reebe. + - bugfix: Flashes will now burn out AFTER flashing when they fail instead of being + a ticking time bomb that waits to screw you over on your next attempt. + SpaceManiac: + - tweak: The R&D Console has been given a much prettier interface. + - tweak: Research scanner goggles now show materials and technology prospects in + a nicer way. + uraniummeltdown: + - imageadd: Construct shells have a new animated sprite +2017-12-03: + ExcessiveUseOfCobblestone: + - bugfix: You can now lay (buckle!) yourself to a bed to avoid being burnt to a + crisp during "the floor is lava" event. + Robustin: + - tweak: Igniting plasma statues no longer ignores ignition temperature and only + creates as much plasma as was used in its creation. + Xhuis: + - rscadd: Light fixtures now turn an ominous, dim red color when they lose power, + and draw from an internal power cell to maintain it until either the cell dies + (usually after 10 minutes) or power is restored. + - rscadd: You can override emergency light functionality from an APC. You can also + click on individual lights as a cyborg or AI to override them individually. + Traitor AIs also have a new ability that disables emergency lights across the + entire station. + zennerx: + - spellcheck: fixed some typos in the weapon firing mechanism description +2017-12-04: + AnturK: + - rscadd: You can now record and replay holopad messages using holodisks. + - rscadd: Holodisks are printable in autolathes. + Xhuis: + - bugfix: You now need fuel in your welder to repair mechs. +2017-12-05: + Cyberboss: + - sounddel: Reduced the volume of showers + Dax Dupont: + - rscadd: Nanotrasen is happy to announce the pinnacle in plasma research! The Disco + Inferno shuttle design is the result of decades of plasma research. Burn, baby, + burn! + MrPerson & ninjanomnom: + - refactor: Completely changed how keyboard input is read. + - rscadd: Holding two directions at the same time will now move you diagonally. + This works with the arrow keys, wasd, and the numpad. + - tweak: Moving diagonally takes twice as long as moving a cardinal direction. + - bugfix: You can use control to turn using wasd and the numpad instead of just + the arrow keys. + - rscdel: 'Some old non-hotkey mode behaviors, especially in relation to chatbox + interaction, can''t be kept with the new system. Of key note: You can''t type + while walking. This is due to limitations of byond and the work necessary to + overcome it is better done as another overhaul allowing custom controls.' + Robustin: + - rscdel: Reverted changes in 3d sound system that tripled the distance that sound + would carry. + SpaceManiac: + - spellcheck: Energy values are now measured in joules. What was previously 1 unit + is now 1 kJ. + - bugfix: Syndicate uplink implants now work again. + Xhuis: + - tweak: Stethoscopes now inform the user if the target can be defibrillated; the + user will hear a "faint, fluttery pulse." + coiax: + - rscadd: Quiet areas of libraries on station have now been equipped with a vending + machine containing suitable recreational activities. +2017-12-06: + Dax Dupont & Alek2ander: + - tweak: Binary chat messages been made more visible. + Revenant Defile ability: + - bugfix: Revenant's Defile now removes salt piles + XDTM: + - rscadd: 'Brain damage has been completely reworked! remove: Brain damage now no + longer simply makes you dumb. Although most of its effects have been shifted + into a brain trauma.' + - rscadd: Every time you take brain damage, there's a chance you'll suffer a brain + trauma. There are many variations of brain traumas, split in mild, severe, and + special. + - rscadd: Mild brain traumas are the easiest to get, can be lightly to moderately + annoying, and can be cured with mannitol and time. + - rscadd: Severe brain traumas are much rarer and require extensive brain damage + before you have a chance to get them; they are usually very debilitating. Unlike + mild traumas, they require surgery to cure. A new surgery procedure has been + added for this, the aptly named Brain Surgery. It can also heal minor traumas. + - rscadd: 'Special brain traumas are rarely gained in place of Severe traumas: they + are either complex or beneficial. However, they are also even easier to cure + than mild traumas, which means that keeping these will usually mean keeping + a mild trauma along with it.' + - rscadd: Mobs can only naturally have one mild trauma and one severe or special + trauma. + - balance: Brain damage will now kill and ruin the brain if it goes above 200. If + it somehow goes above 400, the brain will melt and be destroyed completely. + - balance: Many brain-damaging effects have been given a damage cap, making them + non-lethal. + - rscdel: The Unintelligible mutation has been removed and made into a brain trauma. + - rscdel: Brain damage no longer makes using machines a living hell. + - rscadd: Abductors give minor traumas to people they experiment on. + coiax: + - rscadd: The drone dispenser on Metastation has been moved to the maintenance by + Robotics. +2017-12-07: + ShizCalev: + - bugfix: Games vending machines can now properly be rebuilt. + - bugfix: Games vending machines can now be refilled via supply crates. + - rscadd: Games Supply Crates have been added to the cargo console. + SpaceManiac: + - bugfix: Radio frequency 148.9 is once again serviced by the telecomms system. + Xhuis: + - rscadd: Added the Eminence role to clockcult! Players can elect themselves or + ghosts as the Eminence from the eminence spire structure on Reebe. + - rscadd: The Eminence is incorporeal and invisible, and directs the entire cult. + Anything they say is heard over the Hierophant network, and they can issue commands + by middle-clicking themselves or different turfs. + - rscadd: The Eminence also has a single-use mass recall that warps all servants + to the Ark chamber. + - rscadd: Added traps, triggers, and brass filaments to link them. They can all + be constructed from brass sheets, and do different things and trigger in different + ways. Current traps include the brass skewer and steam vent, and triggers include + the pressure sensor, lever, and repeater. + - rscadd: The Eminence can activate trap triggers by clicking on them! + - rscadd: Servants can deconstruct traps instantly with a wrench. + - rscdel: Mending Mantra has been removed. + - tweak: Clockwork scriptures have been recolored and sorted based on their functions; + yellow scriptures are for construction, red for offense, blue for defense, and + purple for niche. + - balance: Servants now spawn with a PDA and black shoes to make disguise more feasible. + - balance: The Eminence can superheat up to 20 clockwork walls at a time. Superheated + walls are immune to hulk and mech punches, but can still be broken conventionally. + - balance: Clockwork walls are slightly faster to build before the Ark activates, + taking an extra second less. + - bugfix: Poly no longer continually undergoes binary fission when Ratvar is in + range. + - code_imp: The global records alert for servants will no longer display info that + doesn't affect them since the rework. + coiax: + - rscadd: The drone dispenser on Box Station has been moved from the Testing Lab + to the Morgue/Robotics maintenance tunnel. + deathride58: + - config: The default view range can now be defined in the config. The default is + 15x15, which is simplified to 7 by BYOND. For reference, Goonstation's widescreen + range is 21x15. Do note that changing this value will affect the title screen. + The title screen images and the title screen area on the Centcom z-level will + have to be updated if the default view range is changed. +2017-12-08: + Dax Dupont: + - bugfix: Fixed observer chat flavor of silicon chat. + - bugfix: Grilles now no longer revert to a pre-broken icon state when you hit them + after they broke. + Dorsisdwarf: + - tweak: Minor fixes to some techweb nodes + - balance: Made flight suits, combat implants, and combat modules require more nodes + Fox McCloud: + - tweak: Slime blueprints can now make an area compatible with Xenobio consoles, + regardless of the name of the new area + MrDoomBringer: + - imageadd: All stations have been outfitted with brand new Smoke Machines! They + have nicer sprites now! + Shadowlight213: + - rscadd: You now can get a medal for wasting hours talking to the secret debug + tile. + - bugfix: Fixed runtime for the tile when poly's speech file doesn't exist. + Xhuis: + - rscadd: You can now make pet carriers from the autolathe, to carry around chef + meat and other small animals without having to drag them. The HoP, captain, + and CMO also start with carriers in their lockers for their pets. + YPOQ: + - bugfix: Fixed the camera failure, race swap, cursed items, and imposter wizard + random events + - tweak: The cursed items event no longer nullspaces items + jammer312: + - rscadd: Action buttons now remember positions where you locked. + - tweak: Now locking action buttons prevents them from being reset. +2017-12-10: + SpaceManiac: + - bugfix: External airlocks of the mining base and gulag are now cycle-linked. + - tweak: The pAI software interface is now accessible via an action button. + Swindly: + - rscadd: You can kill yourself with a few more items. + XDTM: + - tweak: Instead of activating randomly on speech, Godwoken Syndrome randomly grants + inspiration, causing the next message to be a Voice of God. + Xhuis: + - tweak: Flickering lights will now actually flicker and not go between emergency + lights and normal lighting. + - bugfix: Emergency lights no longer stay on forever in some cases. + kevinz000: + - rscadd: Nanotrasen would like to remind crewmembers and especially medical personnel + to stand clear of cadeavers before applying a defibrillator shock. (You get + shocked if you're pulling/grabbing someone being defibbed.) + - tweak: defib shock/charge sounds upped from 50% to 75%. +2017-12-11: + Anonmare: + - bugfix: Booze-o-mats have beer + Cruix: + - tweak: The white ship navigation computer now takes 10 seconds to designate a + landing spot, and users can no longer see the syndicate shuttle or its custom + landing location. If the white ship landing location would intersect the syndicate + shuttle or its landing location, it will fail after the 10 seconds have elapsed. + Frozenguy5: + - balance: Some hardsuits have had their melee, fire and rad armor ratings tweaked. + Improvedname: + - tweak: cats now drop their ears and tail when butchered. + Robustin: + - bugfix: Modes not in rotation have had their "false report" weights for the Command + Report standardized + SpaceManiac: + - bugfix: The MULEbots that the station starts with now show their ID numbers. + - bugfix: The dependency by Advanced Cybernetic Implants and Experimental Flight + Equipment on Integrated HUDs has been restored. + kevinz000: + - bugfix: flightsuits should no longer disappear when you take them off involuntarily + - bugfix: beam rifles actually fire striaght now + - bugfix: click catchers now actually work + - bugfix: you no longer see space in areas you normally can't see, instead of black. + in reality you can still see space but it's faint enough that you can't tell + so I'll say I fixed it. + uraniummeltdown: + - rscadd: Added MANY new types of airlock assembly that can be built with metal. + Use metal in hand to see the new airlock assembly recipes. + - rscadd: Added new airlock types to the RCD and airlock painter + - rscadd: Vault door assemblies can be built with 8 plasteel, high security assemblies + with 6 plasteel + - rscadd: Glass mineral airlocks are finally constructible. Use glass and mineral + sheets on an airlock assembly in any order to make them. + - tweak: Glass and mineral sheets are now able to be welded out of door assemblies + rather than having to deconstruct the whole thing + - rscdel: Airlock painter no longer works on airlock assemblies (still works on + airlocks) + - bugfix: Titanium airlocks no longer have any missing overlays +2017-12-12: + Mark9013100: + - rscadd: Medical Wardrobes now contain an additional standard and EMT labcoat. + Robustin: + - rscadd: The blood cult revive rune will now replace the souls of braindead or + inactive cultists/constructs when properly invoked. These "revivals" will not + count toward the revive limit. + - rscadd: The clock cult healing rune will now replace the souls of braindead or + inactive cultists/constructs when left atop the rune. These "revivals" will + not drain the rune's energy. + Swindly: + - bugfix: Swarmers can no longer deconstruct objects with living things in them. + kevinz000: + - bugfix: You can now print telecomms equipment again. +2017-12-13: + Naksu: + - bugfix: glass shards and bananium floors no longer make a sound when "walked" + over by a camera or a ghost + SpaceManiac: + - bugfix: Nonstandard power cells found in MULEbots, cyborgs, and elsewhere now + have the correct description. + deathride58: + - bugfix: Genetics will no longer have a random block completely disappear each + round +2017-12-15: + AverageJoe82: + - rscadd: drones now have night vision + - rscdel: drones no longer have lights + Cruix: + - bugfix: Shuttles now place hyperspace ripples where they are about to land again. + Cyberboss: + - config: Added "$include" directives to config files. These are recursive. Only + config.txt will be default loaded if they are specified inside it + - config: Added multi string list entry CROSS_SERVER. e.g. CROSS_SERVER Server+Name + byond://server.net:1337 + - config: CROSS_SERVER_ADDRESS removed + Epoc: + - bugfix: Adds Cybernetic Lungs to the Cyber Organs research node + JStheguy: + - rscadd: Added 10 new assembly designs to the integrated circuit printer, the difference + from current designs is purely aesthetics. + - imageadd: Added the icons for said new assembly designs to electronic_setups.dmi, + changed the current electronic mechanism and electronic machine sprites. + MrStonedOne: + - server: Added new admin flag, AUTOLOGIN, to control if admins start with admin + powers. this defaults to on, and can be removed with -AUTOLOGIN + - admin: Admins with +PERMISSION may now deadmin or readmin other admins via the + permission panel. + Naksu: + - code_imp: Preliminary work on tracking cliented living mobs across Z-levels to + facilitate mob AI changes later + - code_imp: Tidied up some loc assignments + - code_imp: fixes the remaining loc assignments + ShizCalev: + - soundadd: Revamped gun dry-firing sounds. + - tweak: Everyone around you will now hear when your gun goes click. You don't want + to hear click when you want to hear bang! + SpaceManiac: + - code_imp: Remote signaler and other non-telecomms radio code has been cleaned + up. + Xhuis: + - rscadd: Grinding runed metal and brass now produces iron/blood and iron/teslium, + respectively. + - balance: As part of some code-side improvements, the amount of reagents you get + from grinding some objects might be slightly different. + - bugfix: Some grinding recipes that didn't work, like dead mice and glowsticks, + now do. + - bugfix: All-In-One grinders now correctly grind up everything, instead of one + thing at a time. + nicbn: + - imageadd: Closet sprites changed. +2017-12-16: + Armhulen and lagnas2000 (+his team of amazing spriters): + - rscadd: Mi-go have entered your realm! + Robustin: + - balance: Marauder shields now take twice as long to regenerate and only recharge + one charge at a time. + - balance: Marauders now have 120hp down from 150hp. + - bugfix: The wizard event "race swap" should now stick to "safer" species. + - bugfix: Zombies are now properly stunned for a maximum of 2 seconds instead of + 2/10ths of a second. + - tweak: Zombie slowdown adjusted from -2 to -1.6. + SpaceManiac: + - bugfix: The shuttle will no longer be autocalled if the round has already ended. + Xhuis: + - tweak: Vitality matrices don't have visible messages when someone crosses them + anymore. +>>>>>>> 7f8905e... Fixes Mi-Go crediting (#33626) From ac95eb06e82d8142a0df021ac6c63f700baf06d0 Mon Sep 17 00:00:00 2001 From: oranges Date: Mon, 18 Dec 2017 10:01:41 +1300 Subject: [PATCH 45/94] Dance Machine now obeys instrument preference (#33607) --- code/game/machinery/dance_machine.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm index ec8779b7d2..79ec733303 100644 --- a/code/game/machinery/dance_machine.dm +++ b/code/game/machinery/dance_machine.dm @@ -459,6 +459,8 @@ var/sound/song_played = sound(selection.song_path) for(var/mob/M in range(10,src)) + if(!M.client || !(M.client.prefs.toggles & SOUND_INSTRUMENTS)) + continue if(!(M in rangers)) rangers[M] = TRUE M.playsound_local(get_turf(M), null, 100, channel = CHANNEL_JUKEBOX, S = song_played) From 5b107f392275ed2b1edbdf1b4b4c6855a56a47a1 Mon Sep 17 00:00:00 2001 From: Ashe Higgs Date: Sun, 17 Dec 2017 17:15:38 -0500 Subject: [PATCH 47/94] Microwave sound loops now stop in all cases where it should, such as being interrupted or breaking (#33598) * Stops microwave sound loops when it should * rogue sound! --- code/modules/food_and_drinks/kitchen_machinery/microwave.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm index 9f76139151..dfa249c04d 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -277,9 +277,9 @@ operating = FALSE // Turn it off again aferwards icon_state = "mw" updateUsrDialog() + soundloop.stop() /obj/machinery/microwave/proc/stop() - soundloop.stop() abort() /obj/machinery/microwave/proc/dispose() @@ -293,7 +293,6 @@ icon_state = "mwbloody1" // Make it look dirty!! /obj/machinery/microwave/proc/muck_finish() - playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) visible_message("The microwave gets covered in muck!") dirty = 100 // Make it dirty so it can't be used util cleaned icon_state = "mwbloody" // Make it look dirty too @@ -303,6 +302,7 @@ if(prob(50)) new /obj/item/reagent_containers/food/snacks/badrecipe(src) qdel(S) + soundloop.stop() /obj/machinery/microwave/proc/broke() var/datum/effect_system/spark_spread/s = new @@ -314,6 +314,7 @@ flags_1 = null //So you can't add condiments operating = FALSE // Turn it off again aferwards updateUsrDialog() + soundloop.stop() /obj/machinery/microwave/Topic(href, href_list) if(..() || panel_open) From a2dbbac70332e3dafd43afe10b265892be29cc55 Mon Sep 17 00:00:00 2001 From: coiax Date: Sun, 17 Dec 2017 22:17:09 +0000 Subject: [PATCH 49/94] Lollipop dispensers can push lollipops into people's hands (#33419) * Lollipop dispensers can push lollipops into people's hands :cl: coiax add: A lollipop dispenser in "dispense lollipops" mode can push the lollipop straight into the targets hand, rather than getting it dirty on the floor first. /:cl: Also tidied up and around the robot_items.dm file. This is a good idea because then you can give people lollipops as a cyborg that has the lollipop dispenser module. * Integers instead of numbers --- code/game/objects/items/robot/robot_items.dm | 51 ++++++++++++++------ 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index e4485266b5..c0c927320c 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -33,7 +33,7 @@ add_logs(user, M, "stunned", src, "(INTENT: [uppertext(user.a_intent)])") /obj/item/borg/cyborghug - name = "Hugging Module" + name = "hugging module" icon_state = "hugmodule" desc = "For when a someone really needs a hug." var/mode = 0 //0 = Hugs 1 = "Hug" 2 = Shock 3 = CRUSH @@ -336,6 +336,10 @@ cooldown = world.time + 600 log_game("[user.ckey]([user]) used an emagged Cyborg Harm Alarm in ([user.x],[user.y],[user.z])") +#define DISPENSE_LOLLIPOP_MODE 1 +#define THROW_LOLLIPOP_MODE 2 +#define THROW_GUMBALL_MODE 3 + /obj/item/borg/lollipop name = "lollipop fabricator" desc = "Reward good humans with this. Toggle in-module to switch between dispensing and high velocity ejection modes." @@ -343,8 +347,9 @@ var/candy = 30 var/candymax = 30 var/charge_delay = 10 - var/charging = 0 - var/mode = 1 + var/charging = FALSE + var/mode = DISPENSE_LOLLIPOP_MODE + var/firedelay = 0 var/hitspeed = 2 var/hitdamage = 0 @@ -379,10 +384,22 @@ var/obj/O = A if(O.density) return FALSE - new /obj/item/reagent_containers/food/snacks/lollipop(T) + + var/obj/item/reagent_containers/food/snacks/lollipop/L = new(T) + + var/into_hands = FALSE + if(ismob(A)) + var/mob/M = A + into_hands = M.put_in_hands(L) + candy-- check_amount() - to_chat(user, "Dispensing lollipop...") + + if(into_hands) + user.visible_message("[user] dispenses a lollipop into the hands of [A].", "You dispense a lollipop into the hands of [A].", "You hear a click.") + else + user.visible_message("[user] dispenses a lollipop.", "You dispense a lollipop.", "You hear a click.") + playsound(src.loc, 'sound/machines/click.ogg', 50, 1) return TRUE @@ -427,29 +444,33 @@ if(R.emagged) hitdamage = emaggedhitdamage switch(mode) - if(1) + if(DISPENSE_LOLLIPOP_MODE) if(!proximity) return FALSE dispense(target, user) - if(2) + if(THROW_LOLLIPOP_MODE) shootL(target, user, click_params) - if(3) + if(THROW_GUMBALL_MODE) shootG(target, user, click_params) hitdamage = initial(hitdamage) /obj/item/borg/lollipop/attack_self(mob/living/user) switch(mode) - if(1) - mode++ + if(DISPENSE_LOLLIPOP_MODE) + mode = THROW_LOLLIPOP_MODE to_chat(user, "Module is now throwing lollipops.") - if(2) - mode++ + if(THROW_LOLLIPOP_MODE) + mode = THROW_GUMBALL_MODE to_chat(user, "Module is now blasting gumballs.") - if(3) - mode = 1 + if(THROW_GUMBALL_MODE) + mode = DISPENSE_LOLLIPOP_MODE to_chat(user, "Module is now dispensing lollipops.") ..() +#undef DISPENSE_LOLLIPOP_MODE +#undef THROW_LOLLIPOP_MODE +#undef THROW_GUMBALL_MODE + /obj/item/ammo_casing/caseless/gumball name = "Gumball" desc = "Why are you seeing this?!" @@ -655,7 +676,7 @@ /obj/item/borg/sight/xray - name = "\proper x-ray Vision" + name = "\proper x-ray vision" icon = 'icons/obj/decals.dmi' icon_state = "securearea" sight_mode = BORGXRAY From 9a30c288f0dca48c8a84a6198b9825ab218ba8ea Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 17 Dec 2017 17:36:19 -0600 Subject: [PATCH 51/94] Automatic changelog generation for PR #4346 [ci skip] --- html/changelogs/AutoChangeLog-pr-4346.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4346.yml diff --git a/html/changelogs/AutoChangeLog-pr-4346.yml b/html/changelogs/AutoChangeLog-pr-4346.yml new file mode 100644 index 0000000000..d03954b91f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4346.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - bugfix: "The standard-issue PDAs are now holographic again." From 8d6d56195028dc037159298ff79caf86626225c2 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 17 Dec 2017 17:37:53 -0600 Subject: [PATCH 52/94] Update beebox.dm --- code/modules/hydroponics/beekeeping/beebox.dm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/code/modules/hydroponics/beekeeping/beebox.dm b/code/modules/hydroponics/beekeeping/beebox.dm index 1e3cf41362..d4269013f7 100644 --- a/code/modules/hydroponics/beekeeping/beebox.dm +++ b/code/modules/hydroponics/beekeeping/beebox.dm @@ -257,10 +257,5 @@ B.forceMove(drop_location()) for(var/obj/item/honey_frame/HF in honey_frames) if(HF.loc == src) -<<<<<<< HEAD - HF.loc = get_turf(src) - qdel(src) -======= HF.forceMove(drop_location()) qdel(src) ->>>>>>> 5233ec1... Finishes the forceMove port (#33519) From 5c3b500ba9cd5ec6d5ec0ff493fc7ad549132397 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 17 Dec 2017 17:38:00 -0600 Subject: [PATCH 53/94] Update camera.dm --- code/modules/mob/camera/camera.dm | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/code/modules/mob/camera/camera.dm b/code/modules/mob/camera/camera.dm index f4705bdb18..9a95bc9a4a 100644 --- a/code/modules/mob/camera/camera.dm +++ b/code/modules/mob/camera/camera.dm @@ -1,20 +1,11 @@ -// Camera mob, used by AI camera and blob. - -/mob/camera - name = "camera mob" +// Camera mob, used by AI camera and blob. + +/mob/camera + name = "camera mob" density = FALSE anchored = TRUE - status_flags = GODMODE // You can't damage it. + status_flags = GODMODE // You can't damage it. mouse_opacity = MOUSE_OPACITY_TRANSPARENT -<<<<<<< HEAD - see_in_dark = 7 - invisibility = INVISIBILITY_ABSTRACT // No one can see us - sight = SEE_SELF - move_on_shuttle = 0 - -/mob/camera/experience_pressure_difference() - return -======= see_in_dark = 7 invisibility = INVISIBILITY_ABSTRACT // No one can see us sight = SEE_SELF @@ -25,4 +16,3 @@ /mob/camera/forceMove(atom/destination) loc = destination ->>>>>>> 5233ec1... Finishes the forceMove port (#33519) From eb9260c8bf3d3a8c009874cabf99d283a9423c5c Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 17 Dec 2017 17:38:09 -0600 Subject: [PATCH 54/94] Update implantcase.dm --- .../objects/items/implants/implantcase.dm | 82 ------------------- 1 file changed, 82 deletions(-) diff --git a/code/game/objects/items/implants/implantcase.dm b/code/game/objects/items/implants/implantcase.dm index aa700b6e37..00bda4dadb 100644 --- a/code/game/objects/items/implants/implantcase.dm +++ b/code/game/objects/items/implants/implantcase.dm @@ -1,84 +1,3 @@ -<<<<<<< HEAD -/obj/item/implantcase - name = "implant case" - desc = "A glass case containing an implant." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "implantcase-0" - item_state = "implantcase" - lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' - throw_speed = 2 - throw_range = 5 - w_class = WEIGHT_CLASS_TINY - materials = list(MAT_GLASS=500) - var/obj/item/implant/imp = null - var/imp_type - -/obj/item/implantcase/update_icon() - if(imp) - icon_state = "implantcase-[imp.item_color]" - reagents = imp.reagents - else - icon_state = "implantcase-0" - reagents = null - - -/obj/item/implantcase/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/pen)) - var/t = stripped_input(user, "What would you like the label to be?", name, null) - if(user.get_active_held_item() != W) - return - if(!in_range(src, user) && loc != user) - return - if(t) - name = "implant case - '[t]'" - else - name = "implant case" - else if(istype(W, /obj/item/implanter)) - var/obj/item/implanter/I = W - if(I.imp) - if(imp || I.imp.imp_in) - return - I.imp.loc = src - imp = I.imp - I.imp = null - update_icon() - I.update_icon() - else - if(imp) - if(I.imp) - return - imp.loc = I - I.imp = imp - imp = null - update_icon() - I.update_icon() - - else - return ..() - -/obj/item/implantcase/Initialize(mapload) - . = ..() - if(imp_type) - imp = new imp_type(src) - update_icon() - - -/obj/item/implantcase/tracking - name = "implant case - 'Tracking'" - desc = "A glass case containing a tracking implant." - imp_type = /obj/item/implant/tracking - -/obj/item/implantcase/weapons_auth - name = "implant case - 'Firearms Authentication'" - desc = "A glass case containing a firearms authentication implant." - imp_type = /obj/item/implant/weapons_auth - -/obj/item/implantcase/adrenaline - name = "implant case - 'Adrenaline'" - desc = "A glass case containing an adrenaline implant." - imp_type = /obj/item/implant/adrenalin -======= /obj/item/implantcase name = "implant case" desc = "A glass case containing an implant." @@ -159,4 +78,3 @@ name = "implant case - 'Adrenaline'" desc = "A glass case containing an adrenaline implant." imp_type = /obj/item/implant/adrenalin ->>>>>>> 5233ec1... Finishes the forceMove port (#33519) From 67e7f6241699bb32dca7235160d00d86346b91ea Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 17 Dec 2017 17:38:17 -0600 Subject: [PATCH 55/94] Update shock_kit.dm --- code/modules/assembly/shock_kit.dm | 52 +++++------------------------- 1 file changed, 8 insertions(+), 44 deletions(-) diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm index aeb81054f0..174312df1e 100644 --- a/code/modules/assembly/shock_kit.dm +++ b/code/modules/assembly/shock_kit.dm @@ -1,47 +1,12 @@ -/obj/item/assembly/shock_kit - name = "electrohelmet assembly" - desc = "This appears to be made from both an electropack and a helmet." - icon = 'icons/obj/assemblies.dmi' - icon_state = "shock_kit" - var/obj/item/clothing/head/helmet/part1 = null - var/obj/item/device/electropack/part2 = null - w_class = WEIGHT_CLASS_HUGE +/obj/item/assembly/shock_kit + name = "electrohelmet assembly" + desc = "This appears to be made from both an electropack and a helmet." + icon = 'icons/obj/assemblies.dmi' + icon_state = "shock_kit" + var/obj/item/clothing/head/helmet/part1 = null + var/obj/item/device/electropack/part2 = null + w_class = WEIGHT_CLASS_HUGE flags_1 = CONDUCT_1 -<<<<<<< HEAD - -/obj/item/assembly/shock_kit/Destroy() - qdel(part1) - qdel(part2) - return ..() - -/obj/item/assembly/shock_kit/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/wrench)) - var/turf/T = loc - if(ismob(T)) - T = T.loc - part1.loc = T - part2.loc = T - part1.master = null - part2.master = null - part1 = null - part2 = null - qdel(src) - return - add_fingerprint(user) - return - -/obj/item/assembly/shock_kit/attack_self(mob/user) - part1.attack_self(user) - part2.attack_self(user) - add_fingerprint(user) - return - -/obj/item/assembly/shock_kit/receive_signal() - if(istype(loc, /obj/structure/chair/e_chair)) - var/obj/structure/chair/e_chair/C = loc - C.shock() - return -======= /obj/item/assembly/shock_kit/Destroy() qdel(part1) @@ -72,4 +37,3 @@ var/obj/structure/chair/e_chair/C = loc C.shock() return ->>>>>>> 5233ec1... Finishes the forceMove port (#33519) From 3c5632bad25b27cfc0c8f8bc9568b56b0c84e162 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 17 Dec 2017 17:38:51 -0600 Subject: [PATCH 56/94] Update pill.dm --- .../reagents/reagent_containers/pill.dm | 159 +----------------- 1 file changed, 1 insertion(+), 158 deletions(-) diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index b1a126ba62..5a2e888210 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -1,159 +1,3 @@ -<<<<<<< HEAD -/obj/item/reagent_containers/pill - name = "pill" - desc = "A tablet or capsule." - icon = 'icons/obj/chemical.dmi' - icon_state = "pill" - item_state = "pill" - lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' - possible_transfer_amounts = list() - volume = 50 - var/apply_type = INGEST - var/apply_method = "swallow" - var/roundstart = 0 - var/self_delay = 0 //pills are instant, this is because patches inheret their aplication from pills - -/obj/item/reagent_containers/pill/Initialize() - . = ..() - if(!icon_state) - icon_state = "pill[rand(1,20)]" - if(reagents.total_volume && roundstart) - name += " ([reagents.total_volume]u)" - - -/obj/item/reagent_containers/pill/attack_self(mob/user) - return - - -/obj/item/reagent_containers/pill/attack(mob/M, mob/user, def_zone) - if(!canconsume(M, user)) - return 0 - - if(M == user) - M.visible_message("[user] attempts to [apply_method] [src].") - if(self_delay) - if(!do_mob(user, M, self_delay)) - return 0 - to_chat(M, "You [apply_method] [src].") - - else - M.visible_message("[user] attempts to force [M] to [apply_method] [src].", \ - "[user] attempts to force [M] to [apply_method] [src].") - if(!do_mob(user, M)) - return 0 - M.visible_message("[user] forces [M] to [apply_method] [src].", \ - "[user] forces [M] to [apply_method] [src].") - - - add_logs(user, M, "fed", reagentlist(src)) - if(reagents.total_volume) - reagents.reaction(M, apply_type) - reagents.trans_to(M, reagents.total_volume) - qdel(src) - return 1 - - -/obj/item/reagent_containers/pill/afterattack(obj/target, mob/user , proximity) - if(!proximity) - return - if(target.is_open_container() != 0 && target.reagents) - if(!target.reagents.total_volume) - to_chat(user, "[target] is empty! There's nothing to dissolve [src] in.") - return - to_chat(user, "You dissolve [src] in [target].") - for(var/mob/O in viewers(2, user)) //viewers is necessary here because of the small radius - to_chat(O, "[user] slips something into [target]!") - reagents.trans_to(target, reagents.total_volume) - qdel(src) - -/obj/item/reagent_containers/pill/tox - name = "toxins pill" - desc = "Highly toxic." - icon_state = "pill5" - list_reagents = list("toxin" = 50) - roundstart = 1 -/obj/item/reagent_containers/pill/cyanide - name = "cyanide pill" - desc = "Don't swallow this." - icon_state = "pill5" - list_reagents = list("cyanide" = 50) - roundstart = 1 -/obj/item/reagent_containers/pill/adminordrazine - name = "adminordrazine pill" - desc = "It's magic. We don't have to explain it." - icon_state = "pill16" - list_reagents = list("adminordrazine" = 50) - roundstart = 1 -/obj/item/reagent_containers/pill/morphine - name = "morphine pill" - desc = "Commonly used to treat insomnia." - icon_state = "pill8" - list_reagents = list("morphine" = 30) - roundstart = 1 -/obj/item/reagent_containers/pill/stimulant - name = "stimulant pill" - desc = "Often taken by overworked employees, athletes, and the inebriated. You'll snap to attention immediately!" - icon_state = "pill19" - list_reagents = list("ephedrine" = 10, "antihol" = 10, "coffee" = 30) - roundstart = 1 -/obj/item/reagent_containers/pill/salbutamol - name = "salbutamol pill" - desc = "Used to treat oxygen deprivation." - icon_state = "pill16" - list_reagents = list("salbutamol" = 30) - roundstart = 1 -/obj/item/reagent_containers/pill/charcoal - name = "charcoal pill" - desc = "Neutralizes many common toxins." - icon_state = "pill17" - list_reagents = list("charcoal" = 10) - roundstart = 1 -/obj/item/reagent_containers/pill/epinephrine - name = "epinephrine pill" - desc = "Used to stabilize patients." - icon_state = "pill5" - list_reagents = list("epinephrine" = 15) - roundstart = 1 -/obj/item/reagent_containers/pill/mannitol - name = "mannitol pill" - desc = "Used to treat brain damage." - icon_state = "pill17" - list_reagents = list("mannitol" = 50) - roundstart = 1 -/obj/item/reagent_containers/pill/mutadone - name = "mutadone pill" - desc = "Used to treat genetic damage." - icon_state = "pill20" - list_reagents = list("mutadone" = 50) - roundstart = 1 -/obj/item/reagent_containers/pill/salicyclic - name = "salicylic acid pill" - desc = "Used to dull pain." - icon_state = "pill9" - list_reagents = list("sal_acid" = 24) - roundstart = 1 -/obj/item/reagent_containers/pill/oxandrolone - name = "oxandrolone pill" - desc = "Used to stimulate burn healing." - icon_state = "pill11" - list_reagents = list("oxandrolone" = 24) - roundstart = 1 - -/obj/item/reagent_containers/pill/insulin - name = "insulin pill" - desc = "Handles hyperglycaemic coma." - icon_state = "pill18" - list_reagents = list("insulin" = 50) - roundstart = 1 - -/obj/item/reagent_containers/pill/shadowtoxin - name = "black pill" - desc = "I wouldn't eat this if I were you." - icon_state = "pill9" - color = "#454545" - list_reagents = list("shadowmutationtoxin" = 1) -======= /obj/item/reagent_containers/pill name = "pill" desc = "A tablet or capsule." @@ -308,5 +152,4 @@ desc = "I wouldn't eat this if I were you." icon_state = "pill9" color = "#454545" - list_reagents = list("shadowmutationtoxin" = 1) ->>>>>>> d447acd... All-In-One grinder results are now defined by type, not by huge lists (#33181) + list_reagents = list("shadowmutationtoxin" = 1) From 9cbe879b511e80947289698394e20a7b4f88d1ce Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 17 Dec 2017 17:47:12 -0600 Subject: [PATCH 57/94] Update comms.dm --- code/controllers/configuration/entries/comms.dm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/controllers/configuration/entries/comms.dm b/code/controllers/configuration/entries/comms.dm index 70197b6fd4..56cec985f1 100644 --- a/code/controllers/configuration/entries/comms.dm +++ b/code/controllers/configuration/entries/comms.dm @@ -4,11 +4,7 @@ /datum/config_entry/string/comms_key/ValidateAndSet(str_val) return str_val != "default_pwd" && length(str_val) > 6 && ..() -<<<<<<< HEAD -CONFIG_DEF(string/cross_server_address) -======= /datum/config_entry/keyed_string_list/cross_server ->>>>>>> 8c537ea... Adds config inclusion system (#33307) protection = CONFIG_ENTRY_LOCKED /datum/config_entry/string/cross_server_address/ValidateAndSet(str_val) @@ -21,4 +17,4 @@ GLOBAL_VAR_INIT(medals_enabled, TRUE) //will be auto set to false if the game fa /datum/config_entry/string/medal_hub_address /datum/config_entry/string/medal_hub_password - protection = CONFIG_ENTRY_HIDDEN \ No newline at end of file + protection = CONFIG_ENTRY_HIDDEN From 1c380e3ed4d6b8e75b29b6e2218d7947d414be27 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 17 Dec 2017 17:50:05 -0600 Subject: [PATCH 58/94] Update verbs.dm --- .../simple_animal/friendly/drone/verbs.dm | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm index a8cf57bb08..86bc3b69e5 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm @@ -11,26 +11,7 @@ to_chat(src, "Drone Laws") to_chat(src, laws) - -<<<<<<< HEAD -/mob/living/simple_animal/drone/verb/toggle_light() - set category = "Drone" - set name = "Toggle drone light" - if(stat == DEAD) - to_chat(src, "There's no light in your life... by that I mean you're dead.") - return - if(light_on) - set_light(0) - else - set_light(8) - - light_on = !light_on - - to_chat(src, "Your light is now [light_on ? "on" : "off"].") - -======= ->>>>>>> c2c5e90... Removed drone light in favor of night vision (#33529) /mob/living/simple_animal/drone/verb/drone_ping() set category = "Drone" set name = "Drone ping" From e93bb49994c8de5df04b9707432b64e6ec62ec90 Mon Sep 17 00:00:00 2001 From: coiax Date: Mon, 18 Dec 2017 01:27:17 +0000 Subject: [PATCH 59/94] Spinning resin or laying eggs on vents prompts the user if they're sure (#33302) add: Aliens (and humans with alien organs) are unable to create resin structures or lay eggs atop vents or scrubbers. This stops stupid aliens from obscuring entrances to the very helpful and useful atmospheric piping system. --- .../carbon/alien/humanoid/alien_powers.dm | 22 ++++++++++++++----- .../mob/living/carbon/alien/humanoid/queen.dm | 12 ++++++---- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index eb17ecc40a..a15e952bcf 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -59,6 +59,14 @@ Doesn't work on other aliens/AI.*/ return 0 return 1 +/obj/effect/proc_holder/alien/proc/check_vent_block(mob/living/user) + var/obj/machinery/atmospherics/components/unary/atmos_thing = locate() in user.loc + if(atmos_thing) + var/rusure = alert(user, "Laying eggs and shaping resin here would block access to [atmos_thing]. Do you want to continue?", "Blocking Atmospheric Component", "Yes", "No") + if(rusure != "No") + return FALSE + return TRUE + /obj/effect/proc_holder/alien/plant name = "Plant Weeds" desc = "Plants some alien weeds." @@ -243,7 +251,7 @@ Doesn't work on other aliens/AI.*/ name = "Secrete Resin" desc = "Secrete tough malleable resin." plasma_cost = 55 - check_turf = 1 + check_turf = TRUE var/list/structures = list( "resin wall" = /obj/structure/alien/resin/wall, "resin membrane" = /obj/structure/alien/resin/membrane, @@ -254,18 +262,22 @@ Doesn't work on other aliens/AI.*/ /obj/effect/proc_holder/alien/resin/fire(mob/living/carbon/user) if(locate(/obj/structure/alien/resin) in user.loc) to_chat(user, "There is already a resin structure there.") - return 0 + return FALSE + + if(!check_vent_block(user)) + return FALSE + var/choice = input("Choose what you wish to shape.","Resin building") as null|anything in structures if(!choice) - return 0 + return FALSE if (!cost_check(check_turf,user)) - return 0 + return FALSE to_chat(user, "You shape a [choice].") user.visible_message("[user] vomits up a thick purple substance and begins to shape it.") choice = structures[choice] new choice(user.loc) - return 1 + return TRUE /obj/effect/proc_holder/alien/regurgitate name = "Regurgitate" diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm index 4f79ed7d25..5a48e1c6d1 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm @@ -79,16 +79,20 @@ name = "Lay Egg" desc = "Lay an egg to produce huggers to impregnate prey with." plasma_cost = 75 - check_turf = 1 + check_turf = TRUE action_icon_state = "alien_egg" /obj/effect/proc_holder/alien/lay_egg/fire(mob/living/carbon/user) if(locate(/obj/structure/alien/egg) in get_turf(user)) - to_chat(user, "There's already an egg here.") - return 0 + to_chat(user, "There's already an egg here.") + return FALSE + + if(!check_vent_block(user)) + return FALSE + user.visible_message("[user] has laid an egg!") new /obj/structure/alien/egg(user.loc) - return 1 + return TRUE //Button to let queen choose her praetorian. /obj/effect/proc_holder/alien/royal/queen/promote From 2578484644f600badb30970b0f60a82ab12cf2f4 Mon Sep 17 00:00:00 2001 From: Leo Date: Mon, 18 Dec 2017 00:21:25 -0200 Subject: [PATCH 61/94] Merge pull request #33613 from Armhulen/patch-32 deep fryers are quieter now... --- code/datums/looping_sounds/machinery_sounds.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/looping_sounds/machinery_sounds.dm b/code/datums/looping_sounds/machinery_sounds.dm index 562311180d..b84133faf7 100644 --- a/code/datums/looping_sounds/machinery_sounds.dm +++ b/code/datums/looping_sounds/machinery_sounds.dm @@ -32,7 +32,7 @@ mid_sounds = list('sound/machines/fryer/deep_fryer_1.ogg' = 1, 'sound/machines/fryer/deep_fryer_2.ogg' = 1) mid_length = 2 end_sound = 'sound/machines/fryer/deep_fryer_emerge.ogg' - volume = 25 + volume = 15 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// From 2c9e7abb0f810221c0b10acdc7b8b1db6de11dbe Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 17 Dec 2017 20:28:09 -0600 Subject: [PATCH 63/94] Automatic changelog generation for PR #4375 [ci skip] --- html/changelogs/AutoChangeLog-pr-4375.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4375.yml diff --git a/html/changelogs/AutoChangeLog-pr-4375.yml b/html/changelogs/AutoChangeLog-pr-4375.yml new file mode 100644 index 0000000000..2cf7f4c721 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4375.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - code_imp: "fixes the remaining loc assignments" From f235a4e3919a326e2bd67379975dd1883b26568d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 17 Dec 2017 20:36:19 -0600 Subject: [PATCH 64/94] Automatic changelog generation for PR #4384 [ci skip] --- html/changelogs/AutoChangeLog-pr-4384.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4384.yml diff --git a/html/changelogs/AutoChangeLog-pr-4384.yml b/html/changelogs/AutoChangeLog-pr-4384.yml new file mode 100644 index 0000000000..d7f2f90350 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4384.yml @@ -0,0 +1,4 @@ +author: "EtheoBoxxman" +delete-after: True +changes: + - rscdel: "Removed chasm that spawns on killing ash walker tendril" From 77b792d69adf2e7f2331c0f8adaee03663664497 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 17 Dec 2017 20:37:41 -0600 Subject: [PATCH 65/94] Automatic changelog generation for PR #4390 [ci skip] --- html/changelogs/AutoChangeLog-pr-4390.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4390.yml diff --git a/html/changelogs/AutoChangeLog-pr-4390.yml b/html/changelogs/AutoChangeLog-pr-4390.yml new file mode 100644 index 0000000000..89d3683a34 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4390.yml @@ -0,0 +1,5 @@ +author: "AverageJoe82" +delete-after: True +changes: + - rscadd: "drones now have night vision" + - rscdel: "drones no longer have lights" From ea47d74997658924a6b50676a9f1dbf0cac1852d Mon Sep 17 00:00:00 2001 From: AnturK Date: Mon, 18 Dec 2017 03:45:26 +0100 Subject: [PATCH 66/94] Adds repeated message squashing to chat. (#33605) * Adds repeated message squashing to chat. * Forgot to actually use the pref * Drops some unnecessary css * No trimming same thing three times * Increases size of repeats up to 24px, fixes scrolling --- .../browserassets/css/browserOutput.css | 13 +++ .../browserassets/html/browserOutput.html | 1 + .../browserassets/js/browserOutput.js | 79 ++++++++++++++----- 3 files changed, 75 insertions(+), 18 deletions(-) diff --git a/code/modules/goonchat/browserassets/css/browserOutput.css b/code/modules/goonchat/browserassets/css/browserOutput.css index 4d31d082c6..824c86c69d 100644 --- a/code/modules/goonchat/browserassets/css/browserOutput.css +++ b/code/modules/goonchat/browserassets/css/browserOutput.css @@ -38,6 +38,19 @@ img.icon { vertical-align: bottom; } + +.r:before { /* "repeated" badge class for combined messages */ + content: 'x'; +} +.r { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: 700; + line-height: 1; + color: #f00; +} + a {color: #0000ff;} a.visited {color: #ff00ff;} a:visited {color: #ff00ff;} diff --git a/code/modules/goonchat/browserassets/html/browserOutput.html b/code/modules/goonchat/browserassets/html/browserOutput.html index 7b2d3ecfe0..82a1ed4885 100644 --- a/code/modules/goonchat/browserassets/html/browserOutput.html +++ b/code/modules/goonchat/browserassets/html/browserOutput.html @@ -39,6 +39,7 @@
Toggle ping display Highlight string Save chat log + Toggle line combining Clear all messages
diff --git a/code/modules/goonchat/browserassets/js/browserOutput.js b/code/modules/goonchat/browserassets/js/browserOutput.js index 2ef7704625..43092846c2 100644 --- a/code/modules/goonchat/browserassets/js/browserOutput.js +++ b/code/modules/goonchat/browserassets/js/browserOutput.js @@ -22,7 +22,7 @@ window.onerror = function(msg, url, line, col, error) { //Globals window.status = 'Output'; -var $messages, $subOptions, $subAudio, $selectedSub, $contextMenu, $filterMessages; +var $messages, $subOptions, $subAudio, $selectedSub, $contextMenu, $filterMessages, $last_message; var opts = { //General 'messageCount': 0, //A count...of messages... @@ -68,6 +68,8 @@ var opts = { 'defaultMusicVolume': 25, + 'messageCombining': true, + }; function clamp(val, min, max) { @@ -294,27 +296,54 @@ function output(message, flag) { opts.messageCount--; //I guess the count should only ever equal the limit } - //Actually append the message - var entry = document.createElement('div'); - entry.className = 'entry'; - - if (filteredOut) { - entry.className += ' hidden'; - entry.setAttribute('data-filter', filteredOut); + var handled = false; + var trimmed_message = message.trim() + var lastmessages = $messages.children('div.entry:last-child'); + if (opts.messageCombining && lastmessages.length && $last_message) + { + if($last_message == trimmed_message) + { + if(lastmessages.children('span.r').length) + { + var current_value = parseInt(lastmessages.children('span.r').text()) + lastmessages.children('span.r').text(current_value+1) + } + else + { + lastmessages.append($('', { 'class': 'r', 'text': 2})); + } + if(parseInt(lastmessages.css("font-size")) < 24) //Completely arbitrary max size + lastmessages.css("font-size","+=2") + opts.messageCount--; + handled = true; + } + } + + if(!handled) + { + //Actually append the message + var entry = document.createElement('div'); + entry.className = 'entry'; + + if (filteredOut) { + entry.className += ' hidden'; + entry.setAttribute('data-filter', filteredOut); + } + + $last_message = trimmed_message; + entry.innerHTML = trimmed_message; + $messages[0].appendChild(entry); + $(entry).find("img.icon").error(iconError); + //Actually do the snap + //Stuff we can do after the message shows can go here, in the interests of responsiveness + if (opts.highlightTerms && opts.highlightTerms.length > 0) { + highlightTerms(entry); + } } - entry.innerHTML = message.trim(); - $messages[0].appendChild(entry); - $(entry).find("img.icon").error(iconError); - //Actually do the snap if (!filteredOut && atBottom) { $('body,html').scrollTop($messages.outerHeight()); } - - //Stuff we can do after the message shows can go here, in the interests of responsiveness - if (opts.highlightTerms && opts.highlightTerms.length > 0) { - highlightTerms(entry); - } } function internalOutput(message, flag) @@ -568,6 +597,7 @@ $(function() { 'shighlightTerms': getCookie('highlightterms'), 'shighlightColor': getCookie('highlightcolor'), 'smusicVolume': getCookie('musicVolume'), + 'smessagecombining': getCookie('messagecombining'), }; if (savedConfig.sfontSize) { @@ -606,7 +636,15 @@ $(function() { opts.updatedVolume = newVolume; sendVolumeUpdate(); internalOutput('Loaded music volume of: '+savedConfig.smusicVolume+'', 'internal'); - } else { + } + if (savedConfig.smessagecombining) { + if (savedConfig.smessagecombining == 'false') { + opts.messageCombining = false; + } else { + opts.messageCombining = true; + } + } + else { $('#adminMusic').prop('volume', opts.defaultMusicVolume / 100); } @@ -922,6 +960,11 @@ $(function() { } }); + $('#toggleCombine').click(function(e) { + opts.messageCombining = !opts.messageCombining; + setCookie('messagecombining', (opts.messageCombining ? 'true' : 'false'), 365); + }); + $('img.icon').error(iconError); From 39a4d4c24fd86a148aa70b23cd8a1f5fc06df687 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 17 Dec 2017 21:24:14 -0600 Subject: [PATCH 68/94] Automatic changelog generation for PR #4394 [ci skip] --- html/changelogs/AutoChangeLog-pr-4394.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4394.yml diff --git a/html/changelogs/AutoChangeLog-pr-4394.yml b/html/changelogs/AutoChangeLog-pr-4394.yml new file mode 100644 index 0000000000..68d57a2d11 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4394.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "The shuttle will no longer be autocalled if the round has already ended." From 4aa7e2e30b55a75cd1c2caa2de1536e9ae587626 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 17 Dec 2017 21:25:44 -0600 Subject: [PATCH 69/94] Automatic changelog generation for PR #4389 [ci skip] --- html/changelogs/AutoChangeLog-pr-4389.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4389.yml diff --git a/html/changelogs/AutoChangeLog-pr-4389.yml b/html/changelogs/AutoChangeLog-pr-4389.yml new file mode 100644 index 0000000000..36f17b95de --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4389.yml @@ -0,0 +1,4 @@ +author: "Toriate" +delete-after: True +changes: + - tweak: "NEBs now consistently alt click to recolor" From c12fdd08e2e4df939d3cffa3ed8901cff9ad06f7 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 17 Dec 2017 21:26:10 -0600 Subject: [PATCH 70/94] Automatic changelog generation for PR #4377 [ci skip] --- html/changelogs/AutoChangeLog-pr-4377.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4377.yml diff --git a/html/changelogs/AutoChangeLog-pr-4377.yml b/html/changelogs/AutoChangeLog-pr-4377.yml new file mode 100644 index 0000000000..5234e24f49 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4377.yml @@ -0,0 +1,7 @@ +author: "Xhuis" +delete-after: True +changes: + - rscadd: "Grinding runed metal and brass now produces iron/blood and iron/teslium, respectively." + - balance: "As part of some code-side improvements, the amount of reagents you get from grinding some objects might be slightly different." + - bugfix: "Some grinding recipes that didn't work, like dead mice and glowsticks, now do." + - bugfix: "All-In-One grinders now correctly grind up everything, instead of one thing at a time." From 1c142356fff22597bdd6f0e5bca27cf12ff4bd23 Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Mon, 18 Dec 2017 10:51:22 -0500 Subject: [PATCH 71/94] Gun sounds (#33615) --- code/game/objects/items/toys.dm | 2 +- code/game/sound.dm | 10 ++++++++- code/modules/projectiles/box_magazine.dm | 4 ++-- code/modules/projectiles/gun.dm | 2 +- code/modules/projectiles/guns/ballistic.dm | 19 +++++++++++++++--- .../projectiles/guns/ballistic/revolver.dm | 4 ++-- .../projectiles/guns/ballistic/shotgun.dm | 3 ++- code/modules/projectiles/guns/energy.dm | 2 +- sound/weapons/gun_chamber_round.ogg | Bin 0 -> 10433 bytes .../{dry_fire_1.ogg => gun_dry_fire_1.ogg} | Bin .../{dry_fire_2.ogg => gun_dry_fire_2.ogg} | Bin .../{dry_fire_3.ogg => gun_dry_fire_3.ogg} | Bin .../{dry_fire_4.ogg => gun_dry_fire_4.ogg} | Bin sound/weapons/gun_magazine_insert_empty_1.ogg | Bin 0 -> 12615 bytes sound/weapons/gun_magazine_insert_empty_2.ogg | Bin 0 -> 11844 bytes sound/weapons/gun_magazine_insert_empty_3.ogg | Bin 0 -> 16135 bytes sound/weapons/gun_magazine_insert_empty_4.ogg | Bin 0 -> 12284 bytes sound/weapons/gun_magazine_insert_full_1.ogg | Bin 0 -> 13463 bytes sound/weapons/gun_magazine_insert_full_2.ogg | Bin 0 -> 10519 bytes sound/weapons/gun_magazine_insert_full_3.ogg | Bin 0 -> 13650 bytes sound/weapons/gun_magazine_insert_full_4.ogg | Bin 0 -> 13462 bytes sound/weapons/gun_magazine_insert_full_5.ogg | Bin 0 -> 14096 bytes sound/weapons/gun_magazine_remove_empty_1.ogg | Bin 0 -> 10077 bytes sound/weapons/gun_magazine_remove_empty_2.ogg | Bin 0 -> 8752 bytes sound/weapons/gun_magazine_remove_empty_3.ogg | Bin 0 -> 8957 bytes sound/weapons/gun_magazine_remove_empty_4.ogg | Bin 0 -> 10486 bytes sound/weapons/gun_magazine_remove_full.ogg | Bin 0 -> 9383 bytes sound/weapons/gun_slide_lock_1.ogg | Bin 0 -> 16722 bytes sound/weapons/gun_slide_lock_2.ogg | Bin 0 -> 14397 bytes sound/weapons/gun_slide_lock_3.ogg | Bin 0 -> 15524 bytes sound/weapons/gun_slide_lock_4.ogg | Bin 0 -> 15266 bytes sound/weapons/gun_slide_lock_5.ogg | Bin 0 -> 14194 bytes 32 files changed, 34 insertions(+), 12 deletions(-) create mode 100644 sound/weapons/gun_chamber_round.ogg rename sound/weapons/{dry_fire_1.ogg => gun_dry_fire_1.ogg} (100%) rename sound/weapons/{dry_fire_2.ogg => gun_dry_fire_2.ogg} (100%) rename sound/weapons/{dry_fire_3.ogg => gun_dry_fire_3.ogg} (100%) rename sound/weapons/{dry_fire_4.ogg => gun_dry_fire_4.ogg} (100%) create mode 100644 sound/weapons/gun_magazine_insert_empty_1.ogg create mode 100644 sound/weapons/gun_magazine_insert_empty_2.ogg create mode 100644 sound/weapons/gun_magazine_insert_empty_3.ogg create mode 100644 sound/weapons/gun_magazine_insert_empty_4.ogg create mode 100644 sound/weapons/gun_magazine_insert_full_1.ogg create mode 100644 sound/weapons/gun_magazine_insert_full_2.ogg create mode 100644 sound/weapons/gun_magazine_insert_full_3.ogg create mode 100644 sound/weapons/gun_magazine_insert_full_4.ogg create mode 100644 sound/weapons/gun_magazine_insert_full_5.ogg create mode 100644 sound/weapons/gun_magazine_remove_empty_1.ogg create mode 100644 sound/weapons/gun_magazine_remove_empty_2.ogg create mode 100644 sound/weapons/gun_magazine_remove_empty_3.ogg create mode 100644 sound/weapons/gun_magazine_remove_empty_4.ogg create mode 100644 sound/weapons/gun_magazine_remove_full.ogg create mode 100644 sound/weapons/gun_slide_lock_1.ogg create mode 100644 sound/weapons/gun_slide_lock_2.ogg create mode 100644 sound/weapons/gun_slide_lock_3.ogg create mode 100644 sound/weapons/gun_slide_lock_4.ogg create mode 100644 sound/weapons/gun_slide_lock_5.ogg diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index e82f536dad..259193b177 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -182,7 +182,7 @@ src.add_fingerprint(user) if (src.bullets < 1) user.show_message("*click*", 2) - playsound(src, "gun_dry_fire", 50, 1) + playsound(src, "gun_dry_fire", 60, 1) return playsound(user, 'sound/weapons/gunshot.ogg', 100, 1) src.bullets-- diff --git a/code/game/sound.dm b/code/game/sound.dm index 085c5eecd5..9cfa197738 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -182,7 +182,15 @@ if("bullet_miss") soundin = pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg') if("gun_dry_fire") - soundin = pick('sound/weapons/dry_fire_1.ogg', 'sound/weapons/dry_fire_2.ogg', 'sound/weapons/dry_fire_3.ogg', 'sound/weapons/dry_fire_4.ogg') + soundin = pick('sound/weapons/gun_dry_fire_1.ogg', 'sound/weapons/gun_dry_fire_2.ogg', 'sound/weapons/gun_dry_fire_3.ogg', 'sound/weapons/gun_dry_fire_4.ogg') + if("gun_insert_empty_magazine") + soundin = pick('sound/weapons/gun_magazine_insert_empty_1.ogg', 'sound/weapons/gun_magazine_insert_empty_2.ogg', 'sound/weapons/gun_magazine_insert_empty_3.ogg', 'sound/weapons/gun_magazine_insert_empty_4.ogg') + if("gun_insert_full_magazine") + soundin = pick('sound/weapons/gun_magazine_insert_full_1.ogg', 'sound/weapons/gun_magazine_insert_full_2.ogg', 'sound/weapons/gun_magazine_insert_full_3.ogg', 'sound/weapons/gun_magazine_insert_full_4.ogg', 'sound/weapons/gun_magazine_insert_full_5.ogg') + if("gun_remove_empty_magazine") + soundin = pick('sound/weapons/gun_magazine_remove_empty_1.ogg', 'sound/weapons/gun_magazine_remove_empty_2.ogg', 'sound/weapons/gun_magazine_remove_empty_3.ogg', 'sound/weapons/gun_magazine_remove_empty_4.ogg') + if("gun_slide_lock") + soundin = pick('sound/weapons/gun_slide_lock_1.ogg', 'sound/weapons/gun_slide_lock_2.ogg', 'sound/weapons/gun_slide_lock_3.ogg', 'sound/weapons/gun_slide_lock_4.ogg', 'sound/weapons/gun_slide_lock_5.ogg') if("law") soundin = pick('sound/voice/bgod.ogg', 'sound/voice/biamthelaw.ogg', 'sound/voice/bsecureday.ogg', 'sound/voice/bradio.ogg', 'sound/voice/binsult.ogg', 'sound/voice/bcreep.ogg') if("honkbot_e") diff --git a/code/modules/projectiles/box_magazine.dm b/code/modules/projectiles/box_magazine.dm index 324470ede4..0e6ab6c23f 100644 --- a/code/modules/projectiles/box_magazine.dm +++ b/code/modules/projectiles/box_magazine.dm @@ -87,7 +87,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) + playsound(src, 'sound/weapons/bulletinsert.ogg', 60, 1) A.update_icon() update_icon() @@ -98,7 +98,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) + playsound(A, 'sound/weapons/bulletremove.ogg', 60, 1) update_icon() /obj/item/ammo_box/update_icon() diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 42e1352b2d..047243cb45 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -107,7 +107,7 @@ /obj/item/gun/proc/shoot_with_empty_chamber(mob/living/user as mob|obj) to_chat(user, "*click*") - playsound(src, "gun_dry_fire", 50, 1) + playsound(src, "gun_dry_fire", 60, 1) /obj/item/gun/proc/shoot_live_shot(mob/living/user as mob|obj, pointblank = 0, mob/pbtarget = null, message = 1) diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index e75905b8c1..f5d846c912 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -30,8 +30,9 @@ var/obj/item/ammo_casing/AC = chambered //Find chambered round if(istype(AC)) //there's a chambered round if(casing_ejector) - AC.forceMove(get_turf(src)) //Eject casing onto ground. + AC.forceMove(drop_location()) //Eject casing onto ground. AC.SpinAnimation(10, 1) //next gen special effects + addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, AC, 'sound/weapons/bulletremove.ogg', 60, 1), 3) chambered = null else if(empty_chamber) chambered = null @@ -58,7 +59,13 @@ if(user.transferItemToLoc(AM, src)) magazine = AM to_chat(user, "You load a new magazine into \the [src].") - chamber_round() + if(magazine.ammo_count()) + playsound(src, "gun_insert_full_magazine", 70, 1) + if(!chambered) + chamber_round() + addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/weapons/gun_chamber_round.ogg', 100, 1), 3) + else + playsound(src, "gun_insert_empty_magazine", 70, 1) A.update_icon() update_icon() return 1 @@ -110,13 +117,19 @@ magazine.forceMove(drop_location()) user.put_in_hands(magazine) magazine.update_icon() + if(magazine.ammo_count()) + playsound(src, "sound/weapons/gun_magazine_remove_full.ogg", 70, 1) + else + playsound(src, "gun_remove_empty_magazine", 70, 1) magazine = null to_chat(user, "You pull the magazine out of \the [src].") else if(chambered) AC.forceMove(drop_location()) AC.SpinAnimation(10, 1) + addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, AC, 'sound/weapons/bulletremove.ogg', 60, 1), 3) chambered = null to_chat(user, "You unload the round from \the [src]'s chamber.") + playsound(src, "gun_slide_lock", 70, 1) else to_chat(user, "There's no magazine in \the [src].") update_icon() @@ -162,7 +175,7 @@ return(OXYLOSS) else user.visible_message("[user] is pretending to blow [user.p_their()] brain[user.p_s()] out with [src]! It looks like [user.p_theyre()] trying to commit suicide!") - playsound(src, "gun_dry_fire", 50, 1) + playsound(src, "gun_dry_fire", 60, 1) return (OXYLOSS) #undef BRAINS_BLOWN_THROW_SPEED #undef BRAINS_BLOWN_THROW_RANGE diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 4dafbc3f3c..a802ca8bbe 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -42,10 +42,10 @@ CB.forceMove(drop_location()) CB.SpinAnimation(10, 1) CB.update_icon() + addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, CB, 'sound/weapons/bulletremove.ogg', 60, 1), 3) 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!") @@ -229,7 +229,7 @@ return user.visible_message("*click*") - playsound(src, "gun_dry_fire", 50, 1) + playsound(src, "gun_dry_fire", 60, 1) /obj/item/gun/ballistic/revolver/russian/proc/shoot_self(mob/living/carbon/human/user, affecting = "head") user.apply_damage(300, BRUTE, affecting) diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index e6e06cfd68..d3b1815d0b 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -57,7 +57,8 @@ /obj/item/gun/ballistic/shotgun/proc/pump_unload(mob/M) if(chambered)//We have a shell in the chamber chambered.forceMove(drop_location())//Eject casing - chambered.SpinAnimation(5, 1) + chambered.SpinAnimation(10, 1) + addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, chambered, 'sound/weapons/bulletremove.ogg', 60, 1), 3) chambered = null /obj/item/gun/ballistic/shotgun/proc/pump_reload(mob/M) diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 3adadb90eb..f556bd3f58 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -175,7 +175,7 @@ return(OXYLOSS) else user.visible_message("[user] is pretending to blow [user.p_their()] brains out with [src]! It looks like [user.p_theyre()] trying to commit suicide!") - playsound(src, "gun_dry_fire", 50, 1) + playsound(src, "gun_dry_fire", 60, 1) return (OXYLOSS) diff --git a/sound/weapons/gun_chamber_round.ogg b/sound/weapons/gun_chamber_round.ogg new file mode 100644 index 0000000000000000000000000000000000000000..951b9d144d87e7a374a6f8f087de94c205a3c049 GIT binary patch literal 10433 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 TnBV(NPWQM>E*%LIuu1+8zn1ii literal 0 HcmV?d00001 diff --git a/sound/weapons/dry_fire_1.ogg b/sound/weapons/gun_dry_fire_1.ogg similarity index 100% rename from sound/weapons/dry_fire_1.ogg rename to sound/weapons/gun_dry_fire_1.ogg diff --git a/sound/weapons/dry_fire_2.ogg b/sound/weapons/gun_dry_fire_2.ogg similarity index 100% rename from sound/weapons/dry_fire_2.ogg rename to sound/weapons/gun_dry_fire_2.ogg diff --git a/sound/weapons/dry_fire_3.ogg b/sound/weapons/gun_dry_fire_3.ogg similarity index 100% rename from sound/weapons/dry_fire_3.ogg rename to sound/weapons/gun_dry_fire_3.ogg diff --git a/sound/weapons/dry_fire_4.ogg b/sound/weapons/gun_dry_fire_4.ogg similarity index 100% rename from sound/weapons/dry_fire_4.ogg rename to sound/weapons/gun_dry_fire_4.ogg diff --git a/sound/weapons/gun_magazine_insert_empty_1.ogg b/sound/weapons/gun_magazine_insert_empty_1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ef34a8e358d2ccf5d727964df9016793eb6c76d1 GIT binary patch literal 12615 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 ejqq)UGPNBGVeMf8c%FyZJb>#+$u000*N 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 literal 0 HcmV?d00001 diff --git a/sound/weapons/gun_magazine_insert_empty_3.ogg b/sound/weapons/gun_magazine_insert_empty_3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..dda772be5d47d8b5b5c4bf2bbeb152795a7b0696 GIT binary patch literal 16135 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 KAoCM8@P7d0rpR&t literal 0 HcmV?d00001 diff --git a/sound/weapons/gun_magazine_insert_full_1.ogg b/sound/weapons/gun_magazine_insert_full_1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..dbbede3f710d440ef334213e4260cc433d3f41f5 GIT binary patch literal 13463 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 J<*XP*`#&{tjGq7i literal 0 HcmV?d00001 diff --git a/sound/weapons/gun_magazine_insert_full_3.ogg b/sound/weapons/gun_magazine_insert_full_3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..95b9b891eff98fbcdae7afea7b6bd384dbc64b60 GIT binary patch literal 13650 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 Ld`CK30RMjh6Tq|g literal 0 HcmV?d00001 diff --git a/sound/weapons/gun_magazine_insert_full_4.ogg b/sound/weapons/gun_magazine_insert_full_4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d63f0310e562f01d827e2fc0e1d20ec2bf524d4f GIT binary patch literal 13462 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 literal 0 HcmV?d00001 diff --git a/sound/weapons/gun_magazine_insert_full_5.ogg b/sound/weapons/gun_magazine_insert_full_5.ogg new file mode 100644 index 0000000000000000000000000000000000000000..cfd6198760225ad387158c3f8ff4b0ca3452f3ce GIT binary patch literal 14096 zcmb7r1yodD+wU1bx|EPEK^S@n=@twTvr)3NR0WWLe_d2;{|sS#W+_Hq(csxYrM(ZqCn1ai6tn z$`Y_v#(HkeT5p)>hJ8$yEULMfd3 zXbaPvFqw<80x-GyXae7G?c~KO3hor;MhfmS)s9JGvDHqU%qn2td>R z)nWX#g9f3CBr2&Hz9jks`%mD4Bqs!`f6Sr*{1IjXGG7U0s|W|HD2B)Bl}=fe33$i3 zrB&4w)Df4fzNVY`tefksn~!!7U7BqkNn@SkAL$8 zVF+!yMS_h#I(M}3U$^)p*pg(UOJV;b3Gszb*_$*eV<~6D0=Ow#S;d5@lixq9r7|`Z zC#C+4;JXph4MZ%#1IgW4$zv(bBeK{j`TvYQJV`|>FP=c$BZa2n_K+GQzGpp=f>u1Q zg_x^7ma<*cM2HxDj!R{%Yf}4%-@nqL*dT4>yTBS^#^+zDwoMrNh|!f<+Tk$9!@d8R zKH`YD8PAdQqzBOWM53Ay(iYIhQn^Io#%4kKz=k+0;61K+BUGUmGk{I#400D|!U zX7Rtfzp4CB7U#u;F%K}+3~>#zK6GVWBZ7P1y6~m2A&4wyf8$F>=e!_rg<6La2 z+#>2~>Y8qL+KH|U4Z-?zt}C-XE3*-XPecA^V*M9#00d}){$euDBplM47N{tR@lSyN zjhy#{y4R5zb?GoP->?=WMk;HW1fFVu>71-oSd;! zoP+s4kYg2Am=sp{DGd54lIe4T_2-n5rkr;J6?@J9&-P!)k#V9&Gz4;_o#_7qIh_y+ zDFm9TSryLyu~B3k;ZPUpr~erM0O*XymjAnsD66ndtME>%u&Jww{NE9Spic8BO!6Qc z8xH`a0ATk0f+h$bH+M>sQ^IOU0=0NEOF}k(dM0oipF3ROC_X4gR!&4~MB-=k84YbO zp{blT3!C{A$#-$+;`=Rp6vVQJ0w@E3KO_Y5lf-F6wmKizAW$LYe=>^m9345`c#IU}cX*6M@7D0l)-X1rr<`r!oTGj#e3f zY*DDl2^6HMjtHPr1`R+^(*yCr`4p-nU?@e}AXZSXXHX!JR`{c)P9UvLq&}IT zpk8M;%40XLroTk2uHIn2aPFg7AH2e?piQhkJ)It^~DXTz>>;I=p9yY8vP?&aD{F0lJjQL6*E~na#ArDr@A_TR{B5B6sI-0`-h45jvz4QcN6QDgX=V;{<2~Pch8xW)^%%`A`E;h zXN!=bV#`}FV}gwkuJTv-m#TjYXReBm(RoufJ*QK~TSshaQ#C_uS`L}{Wm?`=_*W|g zL11Raw4C?iujLQw=Fiw5EGK&q{zR9l_(3?r5r2j2{9Cw|tqohxU#+xED@1xVOqI$J zT9wt+Y1o$WLbXgQ5mgg5KVpAMdW(vQqm2Q)1OfO#Ox(*so=44BdhuSc7_1C+xI4z2-hc)OQ+)IW_SVb!j zK+q#3VMh#fjGT4e~aO`9MTq6vBn?n!dSm+Yf( z#zpK^WzMC@!UL<$k<#|vG=0y^~(fD!tpY~~#BHS6C-U`xt96v?l_e=Fs@hYhtS z>7gTWR{UE%3-pqhB3zsHP)s8#kp}{z96^-T4>d_Rf`IrFVeCVR@_#S_pYEYxu+IBi zHSj!?4u41gKOFInQv{!b%{ANCYXfk){28Q??#B$!e_ zfIkK<;)zA$8%s^CO>SdxZ0qm9PDYoX7G{0^F^CqaiL zTdGfX0Mau9Mnzap19XZ94WS@CdTT_34B+BF$pid` zHwrHr|LfzJC$R)^h${P^i-v~g?*Q@S2GG#_>-mxFAKJt7;{zWg!Q_4pb~P~ zU0r=0GyQu>9teb+(@;}~T~}8}M_-?V+sIVc*wV__%-qD(%G`Jgeen4^?Qxcn0HQ)k zubJ^pBS!tNt~WviE1JT_znlgc2RQA(VTCg}KgGH~Xcdzetk$oW_yt&6vdtJ-R=Cu5_ zB5@}u_tu7+l{cc;K~pI5E%h8KlQe{_qXRhoz~A?P%eZT&X?{ovqTzkhBZSYB(YThS0I1 zI^Uwh$Y4adxl*PaH!54WY{uw}e9E>7(hAFxPduk2GPn`*tct zciKzTVnQROk!8;|M@%oHO3r^#X2r^VnX94hb=%4D>GyO~iR^gA>s{mM9_fuItI;qE zBhRM`SjASP0YHl=?hXS$9b<-+Q){nt@_xsg!V8mh!{w30(7PMYzJ;A3iV*n-%e`$Q z^u9D+l$@URtB}ezZzfectOhI94PQUvms^$xAKtw9wTP`vJFz1ABQ3}uc@afE6sk1H ze}sZ913&P)!#Zi(>ss(_YYP!Q6f;;6GqANhB z$efR?XKjD%4H=y&(C7G9+1Z&F$3736+w~!q;gj1Q&47mtd&sdljF=wtRVPx#2K8q@Fh1c5# zeN=euzGTTu@b8`bldz936)Z7wa}C$|Z;wKo-NsKOoU&0|E_-)v7c`+as%-Vrz#__* z5~$FWPtBcJTEriN1orDf2d3wh3Ap{a6F=P^*Mu1{)CC^Ff)z1Gw`sg z^NimIg&Gu6xk4l7g~1N8Nl~}io41B{C6>P{y?!lH0N+n3r+`5QrRV7Hduyong*vxd zHg1gteHA$Ne6@RtpsFp)v(h8e#veeVZ3(BLH*>Xw;IIT9ZEmNy`_K+BJn|x?&F_yH zL0A-}I+ffb64rv@!)Cg;U)Q$2d3RtGU;zY9YG^+=JSR`4h}ZQbOY-iPUND}=LO*fE;pfOk zHa?ogSuO5TZQVuhAS>z^3r~SP9zL~q7f0Tqqsv0Dn(WFK-9d|``2Mr<1h2eTm+&k% zmBqu7&GhRkLwAMDXXZu2IfDe)zo1tb#`vVNVIJ{G-$qc>gqo8Kt$OOl%H?0TmN)Aa z(Z-?H6^rU!fBbf#sSsia6Fl^TzQ*YD%47u1xqOah*sky@R}i5sd{uTu@*6&D-i0Zu zbuYF^!;B{Jvi!r5AS>lm8M5ToZuUqtdKQQNIF;-2<#g_k1QdVf{%pbSOpWkZ5HNQa zwXOvSk5|Z4rDB4IE zTyi3r4ZCFzJ@2dTUJDmcBFt*KEV5!`USuXitAItAx8D~}d{1duw)5F}<@w0A;?b8# zH2UER@dcxP;2nY-s}5vCP&4vG#TsN6TOyq+?nzk1Yz_Q5||{JgfbTc5@K^sKgBY zV8_oO;*NQv+%VBbTTyFg{nQc?zU%sJASu)%Ak|qoY=5;$v~Y2+_E31IESph8s0i)e zovj3WHn!Ai@k^?tmH6TcSZ*m7W~79a8A$v7{_)zRrEeSvMP-mmE;;3H_0+Aaw9%Ul zs+?~kERwLYH_%j+L1YShp`{LGz8+7G{@K)FYg?SXcA@Y1^p?feP!xI6{s?S;=(_aY z4#F;~X?F#?%D!_L1i4~-X90c+3{q9M^$?V_br9z&-=BEISHeGtZoxK0{QhXSu|qk3 zu2O8KK=)3%$ppVrMU0L(=99bC)K&{Od1i9#TGmb}g(uw4+r!qcG{nW#FxC=hLD86*{vRS~J1XZ5%pr$qJf zDet~Y#6jq}(O{553&iH$SzY|DH0Kkbc7hoiiXkD5X@A>z1DQYB;p`pOujqnqbrC2q zij?iV8>(^I^;Jqw3t?;3D`>N!6uzd-Z{Bp}NI2&bJD5=@>VMzQt{Afrx08$Fw%+Ra zT*%k$`gbm77ADFSrspv(zGDOQ_GpK5=qR*u@;2qqxrW1qNm7ezX(FLRQ(jFR`PAnP z^L}d74y?p#jD^`LK_x1)@iaNorJJ3s=XdZ$zq@%jjL|TwG`K!nLbP2(4~+)UJ82!} zL+wW(1zpogj_s+|-dv{CUuEARd!K|^(x4D5_;`cu89Q1H;N^?HDTJeN3Y^@=Cwq0S zZGMxkmgm1~lv@Wjkv;C;|LG50;TkA-@zz>qpvj%bCM|di*7RuFN#A*zjFX`S*bTxC_Hii+ou+bmn#PVyA<>u-j3e<|W}q_QN8-h>k#x zkwDoO2{pWk2*_D()b};6CTJcuWHuQzC?COV9Y|)mcljm5e~Lk`+ZhXLyqrFtd^#o2 zF^~NK@7%Ozdu?-Kw|V4*zjV~D>85IM3tw#u-L&-ZD^s2tdE;>1aHu?}VhhT(6}q14{4h^GlLoQB>y3RFO^dKE0(lfRY@h0Acw9T2jm36_x z19Ll|b7Zw&R!Z$oU*D-RB|D^qVW*~NZ19kA~aGTwOow}72tARZGjN`(ew~2W1-OU|e zjOTjEd%E6=94YY~y8dYvu;}8SIXmF_z#Ag?xQu0FRos`=&-szZ`yOuuD?CnIA|k&JvvGT#62DyooF00jI_vLfm)uH z86?B;2!{6XHX42X`UT)UHTB_Mq_*t467EZ(Z!+-(y1L}^^HmckL&=~i$<(Y@U-cUg zUhKcp)#THu21jf`uJ5{UW_K=So=4rP zQbpaAUG98??}BY-+P|dRHj*7kMH!g4d9T0VqjtULDh+&cp`#@t4&8sQcGA1X8b;wa z<~}6S!B?<>ky}+<*L}v3M&63l`ye^%1lZG6S(`?#VxG~aRNre@s;OL!p`e-p-H-EE zsvlhIT=jkD29@KKTbJ(oD?G4cy)ojX4F&34zFy&mU!peSI{J!Ig{)!m=^b6SF2fv2 zdt^mhMoWj!YDem^nft%LP=8m#xe?Y1;l?~P-S)%pkJ81{^wgq%Ch2tgEZ>1m4L)W) zzuPRZDB0@X0xg)jjp9ND{(wbhOut#3n4WO@+@D2xFmI%<6?#9P?l^Vjml4V=du9;o zLkU&icb(b0ZIOvZ>%P?7F&lA)15}NJBRGv_f&Qp&88siVo?xY~^hpiB&DPTmr7wp+ z+R`F~1l&sUq#po0it^8X%Vlu-F2$~JE^Y9(5mx4OP;`V`On)){b4`NRgt-BA?NPOx za}IaLaki^4{S@YG+iN+wekt0}uXkjate4VI=bm|MU9#<1%{NQF%;@00Xi~Q{evEWC?f$-=x#NtC7LX5ziN_qteAFWb``#d>AB<4Mn)?&tsf{`9`; zsrBs-;Ut<1XBc3#6q|#z*bM&4O3PeDP^j_c^b6lqW^DJRGm8^aPS}^A1|r90-r8 z$$@`fG<1sm_lpK(#IV-)ozQa=BNKBAi+d&B7d+gyc4n5=w!G$64)5+Q`1pBVn48~g z-Q(OpI{W!ZJ^<}U_{fLL~@)}k;*G=!j_Rf%bV8Ft40lv>g8@l zv2V}7zQ522VxrHc&ba;@5C3x0(@rZxw;8S>XR%MenCYDhmYR)nAN-ulM7M%TcsqdN37wYbFsdnmbcTW_QaQTRN&PFTeI5fh&`};HF?U&=HK%2CKx;WoA z7$-b0^P<9-o!1v&XTE~6H?9J>y$-nz7iY)VwoIptrQM~LOK{lXjyR=l#|ba)(=t7_ z{?n2t{Zs1oa|$=Oy{-Jw?kMCV_bs6TD%V*jZ~97?_E!DyexPG7lFH}x;twVNl=JZ3 z-`#@-c0~=ya%hTW5W}_ZL-nE423-SbuHY3|Vd?uibpgRu#sk^*?jIIOz_*9l?zbup_|iA^*1&zo37 z=}(oC-chT~X*2o?(m(IwcJgd2o#j6c3M7=w!uZtetEIiq+h3> zPt`q{GV}I@ui*F>U5F7by1j_s=>tD$L&g36e#K$u8#M-~kDV8a@4}Bw;Q!oV`5m2C zL;7eHunDTnj?d;+rx{2UVD`7zj5zAG|7AfC#hCHavR-j-k1x}`aXIfsVal$Ifd}W* zVyLq*4XG7m_=P0YvD!7@vL=k`Ntt+0#pTD=xl7OZHzF)og2F1K1`|s7P92qreTICk zOd5Uec|u6Q5UfH9`-L;=>gX3*ajdoWsO_!G^-!awrj~VA%Gy489h7SNFzZa-jJE9_ zVxa~91<@H$?QMk&4nI?8V(bi$1lCoBi77psB4Kwjv!c$d#_#h*#fA&M67HB(MvwgS znywK^pL2#Zm>ftB4e9j$bK<(ASa@@!`}S;<(~4O9*NtWe!Pz!wtIyW#hf~;80*OhR zH2l6FdA!!Wnyl!AuYNnXchHub&iYT};k3Wnuf$t6g+(0RY}kF6emzdvA1$>&zhS$M z{WIkp-`V6*2~2GJ+oY#!N%(w~86KCeqT%f)Tg1O7gRORECw-mC(I3*s&8HynWYK z|8Rk#7q=W#ZE?vyN_>4D7VA#Tq&A>@4`pC145eEGFv%F6{Rty%y_u-Aqp%vhJgS`wNefZnBDB9Xh za_t6j(aXwjl;s2C^{Jzi8yCJ^WBN578IRx1Ng3-|7AGF1*@?&MFFU~L<_pzRaYB6! zuCBowSB2VbvY|&P0Lqg}@%^}nxCHY)17M&0DGb&`zrS8K^E$G%fYYUyW zGH+X6u8!=KPaIptSoF>pdDVmK0HOvg9RS12Isi%$14su zQ=7f)z`%Z@x@%hdps7Kqr6;nUCk%ZOMVG@RBnFOqJil{ZFN)_!dUewu=IV^CP2N5O zZB~N0x``SVo(ZSgFzr843xl2UE$$55&!ZU_g!5#tKVG?y>?#)RNrIbnqJcJ!QaiKVs*J_F6_GE z+H;V}L7yL$I$bn3-Z^SG9H{-Nwwqb1&cD0+vRv^7&pry3dR@gaqx|+kQq39H-SIXLH0e z!&Pd*y3!fFM}4C1eo_qGVSY==^{u+A(EfR`yI327UUU6Xg78l4%u*D}Xzr9XB4D1! zVq`WltZIMi<|Bo|D-cs6QrfM-o^)#cyJtv^A6zlVB#nIAPTfSs-`Du5I@aTE^~*u_(S2Kp z^!&4w#Yb_SPp4O7I#{lTi*`$QMO#fD0pYL;7$o%(O+bq17Sb5z+FooeNsvX|c-Qg? zV=dOZJ5tG)vRk-3IbN+v7B6!)*^PtcLEbQ5@yGeL#%46nF_oSdV%3WGeeo2|O-^d0 z^gC}T5U?s3I7;|7t#OZKIgvA@=h#zN88wU&j#D`dtfdRN`j7wC(oBQ2$xNFEJCUrs zB2JI*wQd`+uId%8Pd>9^k7;(X&CBP7XQ+Z% z)IA}ehx5ICdX?`s=e^(l^ZPF=3p?K+pfa$#R!sgTAHD`<=jFAp2I*DpFPLY$Lq?(T zZ;ET*NC+`lxv+3uA7>sLb`_Z)qPOrJnbU6b1+&{7kS7xz{lCXe7S1|9U2F)EG{f-N5;@L&7 zaiWlESn3N_@jQ(jFQ1qqi0OKpU~H=0^jv+^Z0)4Y_#1;e4^gW`%2I?-n0mBKJm1!h zI7b8-i6hHvyi>=rF=#l30QZ<|vG%uRXB|7k4Dgo$DIwEZsxPEK*+xP+PJmETFXNdj zDj?du5QL6`^_G?RN#9Z#vsA$Rk7GC$iT@x_jOw2!lu1((o}=f!zcd_PA>`+E7R_`l z8p)=~xBNlvDXR0`)cXP0JQ|B+-R(+bCmwXQ>5 zeJ+MaPS1GU6yBc1h_U4X4aE%4YPeaQ2zBm2Mm(TBAheT=JjqPm8qCkFhpX_&nAueF z1WAHdRpGLUCXe=phe*K7P82hV+IfS*{!_iR3E3U*hX@j}LM($9V&S2wO5W|OW%DNE zw)nYpN>7$p08qxGMWawr@kd^!a>mMCmWB-B4w-3H#6XFPT!vwR#2OLin@rJfU4FOl zl=-^&h?b}q3oyqb_9?Y5-zyji1dFwAsPw3&o=+LEPxEWcO-?E6E>$Tp6SDMWHmgsb z1q85vnvQzjU~+z@CUymTJQ3z6rZab$X_FFjWK;wBQfwakt-(o&T;=gMg}qCT$GX!e zFQ53;K+*Z^zQ%q%Khr9%^$m4}A;ag^^Sp9At`FDbZT;J7)F3!46Td!HRC$>t`)32i zx{0?YM^j|oG_Jd+KTKtB!X`;9&~3ENyzD5_TWfTo9sI4fu59wsg&`VJHTE9GlBUQ< zI=JG!_n+&;87KgQt%c)(8_?7J1UrzY&yUD0D&Q@zM`ylS2))ExRp6=c(6nvH@^C=I z`Vzm++es~@rw)T(-nTfEoD5KSRNwgu6%dQdb+47^ucN=h`i$C|QRaPggtUL9l`U8+ zJcHNU$hQ)P7nbgjSJjt0#p9dbq5CCFtoj$QLvMo>cy)1Z6Cb$kO^$a~bxXPT%yI_& zyW6aR(bVVd?{l7{->uVS2}}Glbt&Rhb&5`8AEo>Qdi)HT-L)=ll`F zVu2ni8H_EvSNt4#zk4OVo>ypYTx1(u-I;EAT+=K%wJK9Kse*(PUgF^Tyk%b!Pe~$*=935AqWfg+3G(c~Wv$(_sbPF<-0Y}pJvg;7! zr=k=1PVyQwsx!|%jIsVm=>0Ue#PP&UN=^j@`ydvsFcW~Xu}@<0WUY-wO?4nwil56Q z52Gy)e^pw80pm@p%(AFL=wqhm)NF~fcX2HquMTFHiJ6~nJH#T#eLrz(N%w?BZ>o4+ zjitu^pl*iiaOqaB_R2Bh91Ennl;NA9Gv9RuaEr39 z2ywj(8N7bIPe*4odm{03{3-Ve0Y6OTyfFWpTJ2sRnLh+KP ze6=;m>m?f0C!o|0lKR_q-?cr%NSg6tQM|nNet@p+WDi+A~TRm*44s*;p@e&7|a-!SDBGg6PZa~%>=TQxrEMIX!plo z$6?t*-{Yb{u9f{S>3im0@bxCm*;;A4&Q;FJFn&6wp>FLGu0)T}jI};vdvvpl2-CE~|5CL&2%6+UmLToX(49!ww=Y?s@YU%Blyq7$luce!L=>|Y>412O)9q}kt$v%4;;&LbXwcA!C6f*}( zd31g>NyypM6SQ%q21+FXZis*?cW*H);Er%Jle&E^$*L-mT3a2$=wpsy=JEPHS|7g z5|=@q2EBb)yFG+7UrCZoE+#&P1(r_IX*+hZI~--sm~X1mKL$9-I796-tXqE%gmB?= za)?AR&T#c0S;b`!?oLIdx<2K;#jA~{XP*-XFeO%H?U&SWF6th{FH#O9kt zXz}Nw@*IPBarT%H`^MV#DJ$`&Yhd;Gru^7Y~g literal 0 HcmV?d00001 diff --git a/sound/weapons/gun_magazine_remove_empty_1.ogg b/sound/weapons/gun_magazine_remove_empty_1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a3ae4fa2ebf8e2b9b5344faa1a74117bb62c0613 GIT binary patch literal 10077 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 Rv2~gFHqXE13SjLB{|~qmHx~c^ literal 0 HcmV?d00001 diff --git a/sound/weapons/gun_magazine_remove_empty_2.ogg b/sound/weapons/gun_magazine_remove_empty_2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..da73e5217329f1cfe4fdcd5f8a68660b21c2ad1b GIT binary patch literal 8752 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 literal 0 HcmV?d00001 diff --git a/sound/weapons/gun_magazine_remove_empty_3.ogg b/sound/weapons/gun_magazine_remove_empty_3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..18689dc26b6d51605e0bcca3cfd71d1bd05d4e28 GIT binary patch literal 8957 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%0D0`Y(PQR$Ly1HY!*F1ijRZ}|5cEXSN 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 literal 0 HcmV?d00001 diff --git a/sound/weapons/gun_slide_lock_3.ogg b/sound/weapons/gun_slide_lock_3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b30be8ab84dfc56796cab3cc89060e0a9a89f818 GIT binary patch literal 15524 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%0AU@+j$` z$j*!5UL*95iZLdwjExWabt`1>yr$vvsHEM8dR$THMd6NQU2%FeR3ka)>YdQSDi@9; zLODk4k)!g+udZ3wmYenC({cC9v!-hacHo<~7p|G=NEBQj+XaW3FhS=ZW8o{ba0;At za^6$U@Gxi!||U%lrHyBp(f!$vy;ygI6P zxo%(^&PeMC>2QOE_Royasw01qQURlLH$Ad3I-r7l7_)>WrjJK9=V5p6qLZ=Pi!cfF zKBFG_N?wXqg|_H~IMAkv9J+k##XlS|*}a~|CXCncdFk=aIGo0p;Y%d-_0KaImv+zJA!7L?EvI6q-n{0c_%!fRf5@Pz=}fr# zchnF2VkK-T8cgSChip;ys_)A-^CBmM%@kRO0~scwdOSK}>BGXg#cgS?)Vw5&Y)G;^ zr_5s;+-Z&i@ZC-ucb%EaNb^_-JJu)|hTr=+T%tc{_Y7^zn)FrJbk+%?y_)Z;&L)0H zSIUcmoC}p&=m@Og|GKo%skVbCN@GxJAJ0mD(`I-{WzU14KiZ$PFYVdAD?)JP-MJltuSYk*6C%eu}kELbs zuP}iCNWV`=H1p0`{MezKESb;Jx;f9}^V z@6*+(?D9`!FT_2Tzw-y@E+7LG7R%E1C%+6!sVNc5h3nuP`oX&Kad4~%=7A)@7;&Oa z{L7fhpsIFpq&X`xA(}Noj#B%qU*$$21G7gyIgzc=-`8#$T;DDSDYjFFBbCN&GU{ztfh^rwb!od&n-Z|XOwoZp$&onRWC*SrOgwbiIvVW}`r{2WPA|fTnDC`uM z-bJalI>z2CkWfo3^~+t0St*Y@R8}Y^7&Dpfu-lu>IEpIrtFiXUZA85M%gGapfaUlg zS)>9~w#-+wf50f#z9G+wU4w{f);|cob7ffL-J-dSl>v;8nJaIqP5MuwX5EDmbqbe5 z5D{}(R}tT`$F+bKIlpmq^*2csu-X_IBFpmwiBt$$$j;Q|ONjEnFfnJ(3#{(Q^=N(X ze(x`X>TeLbYMq+BvA4aaW_*)|v|ZyNdmTtz8CdL4?b<(DP$lr#@npbnqa`g(PyR4JiYBkl+~UL>y3Qq)n2S_!$wc-0wsmSUcI1I# zc0y9uj*qIQZjtW*%oBe-o`ozrd3}=7b)IO%8r;*+JBQnEiH*Y+3!m==0_9HqkRQC? zsjkG)FZZ&eR-hdwT)E2vEJ%-(7k&b)B~@V5LTHET4Zl>{Oav>bEs8JpySOQ;vod2TPOsEZ;F zc#N@b{9+5EU@y4Mu3z&f=KAr>`lGv}E|0wH9p!Ba#Kom)z9E|wYUBSX*_o#jojY=q z@J{%^py(IG7ks;Z-A;^|{aTJ!0U+D;d?WkvEMukp=)yay$oSqBn=kJuwz-NP+oP*$ zs9J5_%rdelyS5q>W=lF8)_rVo@^7;vo!4CNj<1!WW1I9!xm*`(V7zUn5=y&MqSf762b#jZ3d$Sz1hdDU#+xHtNKG2Qd3-^=c7MP14 zHddtv)RHM3WC(y2n`)8?;`lVGw)M^jJJ7c2x%AASJ7`oU;X{t3c{bw`5H-+Ot(M)p{L`gRCRJ=kv$fG%01G3H0XjMj zg>Sd3o)SXV=0ibjr>w^AHCldeS6hW?!gdYUevvQkX@ozJW z@)q{qE{nat$tKDC_JiU``{i%(2WHkr4%@HpEvjtNl_tACJG*~4MeVaWgT?CMmJTA{My*T0Gr|wm`t4B9WIy-xznAdhIuDQj%(w zm41P8a>^5?ol{u-U1$&5*wLMOU`fj4$?dV+WuhS9URx`{933L?jz5dx<6$m}EWdRt z>Q;RwPtAL+q>R)S>0b4eQ(65$CCTaLXrB9>n{xpU(FKrk%c3g@MoB~R*$ETq(Qgt} zjhsV&Y)206Y*xr*b5}Ryk=-evX6N}3uT^JET68R`*QeEti65eYf;zkJq%KPW0@HJs zl;7AZQ95FH8+M!DelMd5j1>0|z$8_uObgaV`GS%;OS78ukm2QXRg|gQ`Sx2k1aW#T zLwtP-gQ7y{3IQ(?Pp3FHzio@fRNW4w?ZKKE0Ke+-Hn&~%4+88<3}pGe0(u~=?I&x- z!JpVp7c9PxQlozCw{F-A+*G<#x6<1qnuBoptKksK~-`YzE z{>SkR*QH>Ew~8U2XIHJlI_v%;X>5=W7`$Xu(ho$XK()4afl2s=g#j{WIiayo&zUx* zl3rry?C0}ui57RdCG=PNJ?SODU7c(5>p#|YIL!vrQSd1}k4V|vYCHAJ&bjGd5c=X6 z@^0+x92E9FL>W^$2npz$`mi(gIebswNVB8cUmVU^-Yz}Y5oqehXh04Ucu9P{N_AAI zLeGVJfBc$zn4$Zdnv9_P4*t$}c_!qV4D3#rtbUQ2puuevc3=@cpZVs)VYfvwTz8iMWBLtXO~8}T$a48M5hMql%+huhR%JL3Dyye=;t%b5o*BXq%SgM?R~ z;aw=o^{AF+c>tY=KEr1y+ZJ6)(5q7+0lz@5Xg=LaXLQ5BA?1#e@TMA;Fhr9v@sFWG zQM^TI?7YXbD2q`PtHsjo zb9z*>ef!p*tTR%x@|=s{ht+g@xW}-6rFe}Tv>uMIT6?oY#1g!J49I1QF?*Bj_r)-ONgRO)1wg%t?mRYU^1KF<=dgLIiGe99-R-L{sxY$z z9Q@Jx4Dib{`i_~`6v&Yzg5^8?)whCPeH7rf`IC9JGc*4&b+Emdmd2R|`Nd$z#X}PZ zmD8Aa$C~kdd(@g4<4yJFI70N7HM0biFaNMyWGpJmsZyBiciygi8S{%zn&A)yKu#(i zEhf8xyxBU|)cwqXc~^!KIY-p9FSCOy`So*0f21%*H5YVuuyK$5fvSHFKpW1se|$Z( zQlYz3j&Za>w2O)1`Hd{>j1BtS(xxOQ86F^28IBi^Lm8C`M1q;a9poz7qE(4`Lo7E% zI-g4%87sw}mx}V*!@?aFqH#L|-oP(=SwUjhyKIG8f3!kr9GK=B;3L4?^Iz@WPSMlF zb_}n~l<EEu^M)(KZZ)wu-D;}ps%UkQ^BEj)P`t5!lC%8f)nSdBce--{UX@it9 zG@M>fSZPm~?PAiN5oY_t{;Bl#8!17wE@}wng3bVJK}ALAR{BmO=M1pev1!)((!+Q* zU02j4LQ<(sYj-$pxqnQexoCR8(K+i3Yx~rbOyHfO=V_N~6JGsiMNUq?(#DWf^XsyR zsDsR!I(vvaJwDk&2VwmWdgj_(+(;3plqwbCX-xo;Nij8!p>SY)Q(5<6B&r-tiVZu6 z4J}Ke&5mG>kusV8$tB6RD#xY^7P6kpL0^%S?mIniPBO<^YVr9a%}&q ze6%KEAHVeJ5)g0zW$n3`B>LjaumiiE#SbxkL!0Tg@7(e`O!p7O+Krw|geUag6&gQ- zNr6$9?eLMFYCw?*%J>U=NS+o>MPX-P}1pr6_h$ICETu}g5r>-D8&eYFYM5V|A>czk-m*|03&eJBA&s2C68%l%4|*crPh-pzCCa z>z8VVS;}+offYCa;VrO$C64PHMU@A8kd&S41szYYXYwj;a)8xG@dPZVW&Ahas`iLo zG{?RHU$Wn$c42>fUg7a<3z?Skh>|nVy34--&6&>)Q8k!IVgG!QwRfOe(2+-x_+2lN zxIY@PR0EH0TiaRFk;0njcDwu8EhKt-;oe$=+iw$r?Dg@$+j!73ekYC1Kar*6!uPq} z+dmp+i|L+kP-tvS+XxP)l9G49#Q$=Ox%DFfK!NWbI{;l2jOlXE&_E$~2ZG@rfQ=sp zz<_w1I&AHrXiIcaE0`X0P1&tjUfxIATMmUw>2ox@*eI^%D{UYEQYZ_tY`zYm5hW^0 zn$|Y}%5OY^jCAIYkgV_0-Sj?K@6Eo_rzt;{fq3;Cy_dYr2rdZmnM4JC6VyzSIl7AE z-EwYK9O4(_hkPgPFv6smwXFN{z3ung$(N)34945;^t`&5tS~WdM*1LKz>EfOg?;`? zF=(?|2)i^)hElv_YReJ^{?fPw0akx^KtZNyJw(qhD-++IGF%&04PJMY5f9dKe0S@h z=+d_|a)A{u5DFc)j6$VW%Uk#1^#t)Y5&uRZ&o*gA&2pFay7Mad%gwprt%+3 z&kW4pMhlF}bI<>}o_ju1V5+8PF@>J~^ZEn#4yhdYfn37in&1#x~I}r{1+{OfUvi?<} z{MCaJI+oXn#O7G9k)PQ|FqWjdLRtNz79|h_RTGd&#FMMV8?GfCoupAYWl_cDndFjs zr>>*{y*v!GJT2xuJ?1_Ab<#uiTKsidLiH9x4X#2>h{FC=uKm}pp37g=DPe#-YJs#3 z#)4Nb3w{d}z=ecW!UE>cCZR-0dc~MjC|6=>3%1E@vaV=y7_MU(u0#L(6R1n!pGO1a z*<_UbZ^cq4&Eo%E#H|OJ0CA`-2V6)8Txg`!Xa-zakp5bD5PP4R4z|NHgfZ@fSi zp~|*QvkgM#N-+6rmLMowqI_gY^nWBle-M$sNtrQ`aW*P|k+GFmhL<`0HBvp3zO^hp z^REZ($A~wezGNKw+?V%xBExM=4n3pzpOz0!CQ?<|6!aePP8LQ#u?h5dHd7f$Wk0o{ zeRU=>w!gIEL0ge2ne>gV>i_WjS6Gx8W{rInScmqAT+FmFqA4C#2~{$=dpt&R9%zuUh&(ny z{&)2^l>dq1qNFIMA%^-9&S944sCG~?K0lmAi1Pe@g9XrX12ll2{! zh=#g`mZyWxCy%A(P=f`JwR!)w`B)>uu>ToY|CKoaG-*Qq=46U#3}_%LSot-|KMwwP z=D6SuB$EC}q*17&QJP{IJ>^z86?=eka@s8JEn#W>V!(!Ic;%AeE zUbDYW)4vktpR`$<_xO*@c}|g60&yF%N$~%jIe83mzxm^+<&tQ0lIVQWtRgeYKIiO~ z6`=l)%(0FtO^+&#h}wyWV~9+%iOeW(EwCQ~@3;Lw%YS8#j4KVaKr=_mmF7P(rw2qT z3C*TD7NxU)bQGC{8q{5i@IM^@06hul3V-JjRW;UGHJ({DRtpD4coCAz?itfmpVgCm~lnI~Tl-#T6p}NexMolNZq*llY!+MoBe* zXC`mM%xW=1^i_Ok*<}k09y;y81F8TJ1PTLvCvqK=`%&~}48)k7GAJNZoIEAR$eKpP z#Yo$PW44)9I3+h!ltQEsO;(I!7Fh-D1Ry~_X!#Qf_%Pyl0APx)hRPV4qBh33ouD=Z z+9Fkx7bwYkHzt5g7BU1v%nrt4EGB(7#<)WoG9s~+6+9uq005LdFwoCy25xgH0E-^@ zl|VY4%&mY&tAHz|f@d+0tE832J&MPps;)7Nt1+vtu|%Mx(L}3+E2VU3>L5}wAa zyT%Hy#(Wcxs=I-zhJ}v0hK{DiPXbMyIe!Hx^_|jBd<~5>jh`0|8fpG(?gj>07C)~v zbS^!X2*b86{R_X8H#rW0t1Idb?wTCW9M<^cGb}SQ7~0C|qRQ>c%N;Yz?UvFQ%FDl$ z*ByK=XRfGYIVfjdYJ*al%gb4!%bAAD4{p1dhTB-n%d4PV_Dh)Wx{mG^>W)ZC%lF!t zmbz+(>ZEN#Ih-BF5zNKlj**_Pw z)TVMB>u01r)Wq5ln(MmXR*T-92)>7|2t>}%wSyxc9q(n`D=6m!5(y$dnzN zB+mp&P0>XwZqSsEsx89Pvjfe|nN~r2Kv|`xm@2Z)&Y4y=LWOUqr^G;oKg%f7h>_dP zD@+n#D1-K3WbA{EiYz2W5ScMm-ISTJ5jv_WD1o84k3g@Au~AdH)XMglY2+BpKVD$v}bSygB0 z-%&vc0&{a_RXkUJHGdv%@tiGG^Ow)Uar79;SjO}k2-9c{B}C~89IhptcQZxK;n=%4^^U;wNThQ6#6M5=+T!W7Ey>A@*X z1C%LKx_zW6YP$Pb$x~`E*}-bh3e4!nG^VBKLbZV6QB+bW{<5D)(I(A%o`e3$``0lN z)(NUZAmmsHd8mifqCh)EZ{$JSSt%o+9h#yP&<<%z%4_7}qA4}x{FD?mDB{ffoA-!H zk$o`G0bxH620HrHDfV!l(5fJ9ElV!JrN2M zw>d44fCLTk!W1_(HQN+u^e|OPp@IXG{_UB|yJIm3@XN{|6T=;9I6xV`8$K~+p(Hwrb9f?X}t zqnM)U3#L__S2^$Bg68ytk0g-uO)CYUp2F+`fMjGO;5!0|rVKyhOEi|}T?G~#zyS|P zFl4|0K`0o|9gAiSbA5wtVM|$Z$DiOHdiU>^=7YuRBb#p~sCi~gX&3VGmwzD`=TkAm z0G!Z7u^nj~(58l_g}N>qz8b20WT(13BU1iW26TmUO;Z?vx+)?JnuzA9vbF*Kqe zO_w=ea!_sv)IZ0F2-Thv=n)SYfrmwSYfK3TU|``C0YTqjB?p|bu@V#p88{e7amVCJ zUjX7*uejd4G6l&henE_i+69bVK2T8roZP%qY;1YM0HM3f{0FR$SRs@INN>eqF_c@@ zBl(2a5$XTnr3(Ioz~KRJ0FdPkiioh@<`)ze6@UFkT2@|B`Rza3M`S=00Fv-1U%ko@ zh{K4-Ou$OSPQppXO@X59e=bT&%D)Zh&JCcX{Ad3dMD`EudH?v#2ks@W5j)i#I~yBx zN62PiW^H9@WozSTZ|7hqARu62Vf$pt&u434ZqCWg&BJ4CWoBbx+JPK@M4KH#_6r2R zi7c8_*10WS{~@5s5>tW1<`CyjhJ=$g3v$goKAzlA?u^jU?18RBU@ zoKn$|-Bg>(PVrOTBKVUo-1(W-P#2T4$uIk=#<>YyyTf~<_$RxK-Z240PyU^Bi;)iA zVq{<{K-d%;nCq^hK;nm^7jjN=!#IS9Oky@1AqCB~sRUhlf3MrxDTHK2f@OD0fkG;= zWl{exK+qF!({>}w$Tbuv#M^emcLWeSh``XoSjFec3X_)hwOjuPPVyR(d9UI?FvVT! z%`3Tv69LQ|-+%Q(PwT)rE<58Oot6mL5ADp+fY#uktrcnn>qt(O%)rcYRDM%^4=x96 zvHp&H9`59|n>H>ZYNcp3d)3V@r}frB1JK4(_A0C|9;Hd+$8H82OMMo_dd~ z#*=rRN}s%A!qBnWKNQ5cJ5H2r>?O{;?GAj>$1GU4(t2HNFppkZpgePxT_XZwn$Qxb5}j*P!C~R&WlJ26cvac=0WQU#~pe2 zId$o~aEYF6^lhR&{Eqc40{l(Khe>}e+$vwc*pj~D+~!ABhpKXLEAg*SJM5iGOP426 zXE=S7iqX;+g`nE>FJ6Rv{W;DkNZM~mmbTdpo@Srue3+ag+1%Ev&9<-&-6M0ZyOj2O z4Fgq5dF?Y#1KDl^uOFmG0Pcs5Sf>_GzLk2f##8>qLjL>dtz!f9?ib@*ZTrLCD!Nh- z|8Ay&0cJZDe+?mhs1W&tx?$zS=N$SD#WO2)ns7p2R!b*BAQBqjwt_}RY zO7cdL*{hY%4aG9^!g;D;oQ{I?R>+{u*7Q-|qRP4bkN6pnY{#Hi-47ofwvLTXPHaf)d1iwnnN{Nc70oAYZtztR{nF~b7Sw`(U#G9w^Ar*=oDW) zCu%4aczI+BIlN|=**`pVD2x+*xzE(}GV@^kI(liMcv^HeCd?4&iFp1I^Wyz6{tAIu z$Z9jy+VQuqCm)$loj-N1)Pq@hE}mvU0{4lqo1tjPAYIy(WoyBn_0!x>E}EpG0gs_} z1HiCfzOO0z__>2617yC+q}-OE6c1zL+09+ePzYisx(#f5iH>GVGT zz||fZW!*tODdGkItj6JOscYi|k~s>$kH+~~4-?7&I^;i}U?i!bg_)6Od#Xp6vRc*W z3owW};Jdo0Ak%%=*2rq8tsD+GTRDH4A8p9sb@&p!i)9PvPV1#DR1%I%z5|vK8>+Bs z$n(YyyXsVc-yt~a z@=l}|3(@J)g4P=2*Nhsm6Rn)aec~H&fa&$uC<{&U^i7nzv+;_242kK2M?s-DoWk$O zfW4AJD`KS%mcq_Ob>Ar8z>>++In$Nf_3~wpNkfO$wT5Dt%lY)sHu%Kgh$5vJ#MRJvDI3>a0{ahWXUoC!+?Yo5x^6qPTA2MYF#RY$#N~c+lNe77 zq9K36%FcKso_HS~RgrzbBh$>b{;{}FPFh7QeOE(1s^)tx;l;YuRkER{e$6MK0pz6( zH8n6c>D!v`d#^%SDQAcJbLkWlY0Djs+HX;__fTkNm0Dj z6vC-Q*fqav^uCck3TlG(J#URCk7}@4RT@asWxMQ@?OipCgDtV)!sUiEJ1_UFmh}Bk z&CmRg7ryIAj5K25e5c$a=gpC`Q-w*i>sF~hZ%m*7B~BbmPSn=>cbskZuZBA!R|~#N%5{M+@t{BoCLrx4tk=M z%4Q8$yuzW&U{tGyZ}T`%WqF~IY(n(S!aeTOgUvCW-s5?sLsLj(ypI4bzY@SLGTh?e zZpN}JZd;jEBf7kSeC#qH0J-%XV2<}#0Pk-dj)zq=j#o4WkEZ48#PTkedql(DeD)s= zy&}xCpE-=yZYl37iH~uj>*ZW#lscgJUMylL63E5L-oCWW8MwQu`L6wetZNAwP`5#= znM3`Z9Li1tE)k2`zkqFF4mTYS6pUTI^~f36JNf$N>`)gQ0U?FHwi% zm+S-j=I&Ls_DD`5uAQc?%o5FzfGF3q%hhQ@f_KE_VRxIY>ARHzOTI!6Y4~qWhFl8M zCA6$+hKsbY=ci8%RdOVK)~c^g$PX2K94r@k$T{D?IQwN>mcb%%acwCKY-`wdC3xaA z)5VJIGI(okFqb;qxPAD7@j_MIC;8**(>Ca5DIbM$HCt|_1yg$&p${VIjps{*=J;Py zU2rpY_kH7!0XYNVZL8H^_e^Hv7vVJhRtmb{1KG7Pc-8c^2sHY=dS`DoA!CRtPb|Tc z?==cPE(%b59 zs6H1S-B!zFeLXYPzx76EG)2Sc6J1Sk7z_0JR@ADj>k!~1^V-JN z!~9Xd9?==Q^wxR!)*5IF61eoAjNOwY>&fP!`;$9&c)IBa-8^&88e*qbfvnR%v1*{B zRXTGfd43e7{`CXlL6KKwYWv#*XZ>J-9W!p()dyp}Ca}RKQY9&XzA|Joj+LPj)hZV7 z@=5Tp*P~l0Mp7q`0aKNN%}yQSu${PK(DX`3P0{~eq5`RZ;QG9#c!?zG&a0J{*PXRZ zf#;zeiTulKd^=sTp-w@`L?F|cg>>`>cA@u%;P`KN<_HSd#RPihuQ!Fn166#7uT{6E zJ8~{N=yz|HRj))uxV(1;mezGziAP_4e|1Ev>eC7lmO&#VW%`{eTD~7?FV6Umqg$g%g@_MqEAlVgj% zhPu=yAusZw&hYB9)x8R2j9Dpc;+BA_n2`9Vy>BdUySwd$W7U0qRnxy3uMbto%`ime z??c?K-e>MSoZKXdu3fD>rfE)PiN#MlJsB-Rk$DsmawNKSI{(m*j2$H7Uf<~ID@>0c z{+=V#w^*Q*PODx!(_bW<-K%$?#y23_k^lC+Dp3O<^akU``c|8`4AZiknj> zeZJV;YD>dbdxZ*Eh(7LtEpDkT*bZjIqjN};FJV2W9lUq(@cHs$XMPs*PEbfZ;HETy zVoopxJbX7gt?Dq2ElN%`x0>suKh7M75Edx06674HRJPf^pJ4}P-y(~pUmE>T$QQXt z+i^4Drclk&760_ZE0M0YRiS?9t_yHjs?ck~|hF@#Fp z8cV^D3M>ft?s!@2raX3!K{2>GVRa{sO*G8Z?5D$F{7&P;U`AZqE%T!CX6t9)8<8O- zzxl>p8RcZ&qfOhQ`}Y?s)lof-KZya)+3$t6Lu(eaBw6>NYM#Rzg@?^MJ=(==j&-hjoQi`TvT+oHRyV|NsL zQhoNUI9^$v55=lD!9hp`>t%z(DOV4oKDJSBjfF}*@Xe91CdSzBeP*LatlFQ?=T}ar zsQbCpK1vrb!wR}?Vb|Sv$mTHBlX&kAd{GgKkUY3sl5E-x zS;@GW4J(&v>Q9cZ;fpmp+1wLR0DdrD48IUPkP}xlSA}!p$II_^mFw9It2Ywo2lv|o za?iFRe5>C#{$@0SShW`9US%YF#yN19lgqB{8n5`~WOVLgHY5J&_U(wnd*7!v!b5)+ ze&wqdS4kP0b&W(n*;+eJ2mM&v`mbtdE8%HWjhq_rSjaL1F(HB92aX%#RE#!kmjiF? zd~)Mc?Q#ZsMPlZU9(ElX=5)p?v^Xvwu*ydLo4F>zof4vJr(2$}nL&P2@A>;5!x!3I zq$lgy_MGJ0^T_aup#3-n8C(TpBtMbM8_K_#6|}tsVjujM67=7WBAu*F+<2eEU{WB z*D0a}A3k6zFnp`iT2mP}sjrC6t-!3)iQWGt=q)hne_;#r(qoB#2t|DNHId*&%1klQ zI9k}S1@tu$;Ug12(lG96-QS4fNZvXyoZ|fww7GvarU+Q(xpJ<6U`dI62G6{78rs-7&`1^bo?0n?rS+9d?`L$L-dR8+jZ> z+`*;wrA^b!cmRB>MURj#^!dzV%F;FJ4LidX0!otqgiIm51Y!)Lcq*EZl}?NnBY>~v zVORjU9iGQLcv`uGDES)}sl9wO$iYO}a&Z(C;f;%J%P56(CR@4T;TeER3mBPKU@kCe zHTw8F$k$yCex7UoD&3(T@y!WHO+8P%ZZcKD2vA`P6zRtv`0C10_2Y_}G4gk%H)}_q z8+oL4zYejHp^Inv*s)8Ibi=(CIH2jld@DF{!)Ma*Pc^bh%I8nxW-UP8i`@v$$SV&W z$f%#Jz3Y_dW$CuVTq)9Cp6@JV&U5s`s31}ealH_{)pA)yiu;NzYMcAT%Lgy~iRjOv ztmy>oj_I}UcBsdok9&96-Dm17$2o^HWkBh5yozZO6oBZ~(yyUw@ELzK^3c7=LYWT@ zN*==CFCu`LQZ|YSJ&TDC=+TdfFL7VOW4m%fB=9}@Dwk5eBo}{lfe=B5NyUlk*%|deL#{bhK@!-DJ1{+~EQFgb`pmieZMyk8t1mgE zI7sNg-tgQrFO=cI;hN0-Obj17LEb;9#^bmtR8-)MN8th9i+ZsykOiCx@pkbZU(GI8 zgVlaFV&r3_m*T?!Qcs9;pTt{MVBj4fP6D4S>x8&J9NJ!?PIc(WsZSz!zLYY){~@98 z25;@%wby*(XtLLx?!e#Ab@9e zwPbaanI1lE5GTjG1@iqB4$ceMM$HX{JZHMlaR+~E2lw9E_QXoEx0G#}PwjyV3r5kU zpY9LyZ|+9V-&y>r-)ty8c-3SvKWyLf-f}b@hk9f3>yxbtg3O%_VyEy&v%#xlF;dMxQ&s}3HI3KOXEIH+N^fDKRcBqsWvSJ463mkcwe6sL4 zxa8+~OE3G`#_<`CXcm00G#%My0{>yuhz(Ug;LCTH0fFJVd#D>@X}`H^t+WA)Y*I z=NeO5DMnt0wbSFLrNz{KvpwENe6bb(Ql27VO|QLvAWux|G<0y~bg{}nqRxdrGhp3L z%**5r0KW^4M}(h;yYO$n)$iU?@$cBNKJB=*9ev139TuGt{VQK&0eVAfMn664(eLAmD0bhWH8$M{;7^QOlE#LW#!S-G% z#3>i2|8V(x(b-M}+j15B_vO_W(cEt=R%*V$T5}oeIcVH-9in-ly?Ly=;rP^=c7k+a zITH9rKK+lYQZG9&vTO)Kg`1CAD&VAjDNeG|0C9Z%ng!I(K1 zQW#HoGa`O{BckFxz8B7)l6o_?e|TZ8X5iI1M+Hlq+kDwhUtMNLw;+r$Po$dkBV@OF z^hdAc+}=|t&W!8!CkO0pPsS&)Y?2*?)+NaL_doZUhNlPix7X4GAOhfi6AS_rm<_O9 zD7yc+l9msY_L@AjZ}4rlj!xg*tJ>uBVYwJW?%WZn(V|`;%s|X8zP!8kc2^4UBt{b% zuySuWm9Qin51;G&6LLZS{+c`LsJG0YR831v|GlJo|2tUV{M=I$M=}DRf0@r{%UtH< zPFN8Fb{tpnc(I`%60th!Zx-IzBsvg=u=j9@Eu?#)`&|@V5H5zvYk$X;{@@j8Al7ww ze$Ze=6@bS~L^6N!rH8a+d1D{n;`_7|Ecbd;dI-%PIv2twq}S^~XT)i`SyJEN2-4x1 z3w^%uU={(^>R;-%uxK`NY6tHxGSD?Q>8K9%mdb^1Hy*!EvBr8Twmb@3TuP0mBJsb! za%wW_9}iSmWpwR+bIpGFB$miD`80;$zAg`wNvUbcAoTNl{FT%ARX&?26LSvaR?e!r z`6`gcQj($|qTP$I`fR1y$)B!Ze0i@KwQ;!FP^!V%%57|Y^0nOS`x{>j9cH0%#|4iuVu=#qPDS3f-z+u-$i5x&icE-#AcU40}>FC?0}l&r>~h zam(#BQ*hm9BF5JH1;o>>Z@W@q`#XqGy*u7@pg^hAF-r{&&^L%KE+`};c3l8JIsIuC z#7y3{-Ma1Q&emu?^=#=}J~oi(rQIm~Mjw=yrc`fzM3vCqRURW>NOh-zYKg!Xdm7U% zpf+vEftGqS(|zICa?uBJ*4QrGr!b#5n(`=5-r2KFYuCMJAB6!}UJRSPCuRH-q%xO&cH(OEG8#QM0 zthlCL9WTKHM^^=pei7AYsRO28uKW%~A?SA=x>C_7hFikaT-+6pxE2`PBe6n2Ay-fs0W+!9?S-%VQjdxY_7M92{CX$N4%=x_O6du z+H@N_nehyYa6x2N(+Y}lO4vI5~np{ePN&I%35xhjahj;a~*U6Wt z6EePd50C7D`i|1tr}iB1Ny3hj?&Y1nW`$KUFPbjFGLQgUE|6!IdZcVitz@2$w(Zl^ zDKaLRX|}SQZ3di?0H_#1!iiyQIl8fs55tn)>vIY?tPddR*6P_fqNP8N$2;-dGO?R) zIu9@S+rmir-MqP--%Fj&HSEX6ID&Eg5=kjrT3ZEBhEWugrnX`>%_(6Ml|Ymx3yy%{}O2%}9ReSx4(%oz4XL0R|o3@3<2?nyT)*%dMu2HnoTW`|!>0Mtb9sdm_ zq(4dsY_a_tz9xCShl?o^qc1+QafPC3tcY0 z$-ext9(TTe8poKxa}`fN4*pr<@}VZJ*(dNf@kSM_4vD@b3H^@_hrl8&nw`*bv_?HO zMIa)X>4O{d8Oh9v9gHv_8oJ~iha1G@4F7if()+4)yb%ZBBtKUKDD`ELLXreI#rwi& zsDZTg=%hbJL0BL2X}GF8mbI^)<8mi>w9xE21QlB@TzEDe4A)p*On4e(f%mTOxx1>q%?$CI+{-|B z@@0nKP%qATkPtD1&GXc}emFcZg=vGUm|`2nDf5bQ6#~J<{J&iVHIs3iLg`pPC8LM- z^M~elE@Bs1E)1}#a^E3&6i4!(ec{aeT`1V+T|VPfU$ecvi;TZ>mD-F)_hcA&BCna~ z^TpF4?HloG?``ds{BWyIsNsB%#6%kVoz;)5?lw21b6U#cd ziW{>}J1n!XnjcU70rEx?X#p7TWzWj;@=ChSjYe;=ONkf#gw8-s+)gXHF~`=|X1ZH= zWD`z+uo!=rdM!Y$5fW%HtI;}IUj-rSZqzX`i9pJYv<>|cP;(>BG_$1LB>=8%m9Pst zKBl18XGNaMp9*kSw`i#5F4cT5b(8oF#w7@cl13YHUw6UY{~*&z9nq+P0K&@o>R#C* z5XO6WRi+#>&ldm0eA!vD=_QhK~VOglw3s8MEj%S20reM2;IN!UWkl_bJ#yd7iSGu#r#i zOX3UHW!p#8AekJN7B-0oW7cAk>N=NS#<+Y+doi!Q*h7zKI0yj4SrU73pv$ybwqZA!Yp~yWriOjzK-R2Q$idzGHpOeAG9a2dT5Vdxizps3$q8dfS3cJ#ecN$wm#uog+ z13vpOlKj`AZboNnXHx=no|yD26Cy>YN?`#%LCl5g^R~ z6~k6K|6I*D^-aY^{-lVvJ3Mh-R2tkZ;#PRGRs3$Lgp7;#(*^V29`fgF^A7}i;a6z? zj6taG!a2XmMInK>@s^LRPcR~A(^W0oQZPBS*y@N^NMI68TFjh5&hJNbCzUil$SW$Z*&HxF;Q4DgHnpvMM0 zZc?wEJ2vSNCY3Mdqq{vKz9qJg08*H#jo^tA(Ev(v5yNpgyUKWrGZQlT4K{n%Z^o?? zacX+bL(IjjXLgN|>8sFJs)NSpeuMep4+tLJgI7{Ji$hOOb|K6K$UQS?R#U$yhMOL5 zh&Vzdbxp~=UxF716yN^NfK0teJ0)qhs5%9CzUFYZ*dwK)*La1pHs`zdSy^VfSWt07 zw`7^`0VB6a9f#XXF`ngDJEN?ThR5Ffx4@WmZ}$fjB>ecQN!WyZG~?=}=KgC}uKSX< zt2}8BnEjb}>!Wh0qYUw9*e@LjjqtHvyV45N=y+}APksQwwO|CvguFc76i9$UwiP3W z{-31#y^*bolHaW*1Kn_5%l0Aw#3bXo4M=}{KY=f&$4MPaJqahWUc1L*9)1%5Cm-(7 zVQ0~ARwz`V5|qu!|KyR(iNlEGv$EaZ2ousK1#4`isd*x#hB-O^(KzzzQ^)Yn#K8?1 zJj5ukdp#YACb#rH`_H!U$siGZ^_DM^*O`;U_(64Ac6(nR7i{?O`fmNZ*-+v9)aPx* zf#b7z-(loXOElBvCMdd^bGkCWPUeNGwv~CLxJI_1{nlQo-G$^QR}LbbvFtBFU@j61 z9;Ouza1Qt=3j>Hpuw%l*FB#;wFL#JRGDVnHKEh%0R<3w8wE{sB*90%;T*g|{IAc4= zv1-0F;5eX2{h9{()blLi{So`TZEJO6O@cV#$(Ouj6;S|i!kh`Oj%_|D79sd_W7Q9-1-#L@uTGYn!-#d*Ve*MVveTOhf zXld}xa{BsqebV*rD|qDNP+cJkR&Vp7uT5`i*uEU9R=n17iUN#*P>Lg=xOjfMDmjFp zj&@#$sL)L<9W>z5tn59^9`tXT)<1HP@_-;hoz=jfh`=M>{c`3Jf;GQodt)Q>WkfsD zU>>CzuuqUc_*&CCN7nIA5h9w75ZLam{#X8QS*EUHh+V9 zojXY&TVGb)+U0*3!qTF2fGHfkx_o#6)IZH;wUg%+;ylamjp%pJ?@{-;j!4p_Rq+!v z`HmDEXRE!d@PP%Py@|W-Cmz@YakDj=k2Y&}!Gypj8ZhRer+Wr9>at&T?gA`BDBCE3yGi literal 0 HcmV?d00001 diff --git a/sound/weapons/gun_slide_lock_5.ogg b/sound/weapons/gun_slide_lock_5.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5a4c1fa158c2587a9e7d917df309ea0f91ea3a71 GIT binary patch literal 14194 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 literal 0 HcmV?d00001 From da25df9329814e6372440e4559fa987cded4fdd6 Mon Sep 17 00:00:00 2001 From: nicbn Date: Mon, 18 Dec 2017 13:06:07 -0200 Subject: [PATCH 73/94] Makes the chemical smoke machine use stock parts for things --- .../chemistry/machinery/smoke_machine.dm | 41 +++++++++++----- tgui/src/interfaces/smoke_machine.ract | 48 +++++++++---------- 2 files changed, 53 insertions(+), 36 deletions(-) diff --git a/code/modules/reagents/chemistry/machinery/smoke_machine.dm b/code/modules/reagents/chemistry/machinery/smoke_machine.dm index dc92dd3b52..86205caba5 100644 --- a/code/modules/reagents/chemistry/machinery/smoke_machine.dm +++ b/code/modules/reagents/chemistry/machinery/smoke_machine.dm @@ -1,3 +1,5 @@ +#define REAGENTS_BASE_VOLUME 100 // actual volume is REAGENTS_BASE_VOLUME plus REAGENTS_BASE_VOLUME * rating for each matterbin + /obj/machinery/smoke_machine name = "smoke machine" desc = "A machine with a centrifuge installed into it. It produces smoke with any reagents you put into the machine." @@ -11,14 +13,13 @@ var/cooldown = 0 var/screen = "home" var/useramount = 30 // Last used amount - var/volume = 300 - var/setting = 3 - var/list/possible_settings = list(3,6,9) + var/setting = 1 // displayed range is 3 * setting + var/max_range = 3 // displayed max range is 3 * max range -/datum/effect_system/smoke_spread/chem/smoke_machine/set_up(datum/reagents/carry, setting = 3, efficiency = 10, loc) - amount = setting +/datum/effect_system/smoke_spread/chem/smoke_machine/set_up(datum/reagents/carry, setting=1, efficiency=10, loc) + amount = setting * 3 carry.copy_to(chemholder, 20) - carry.remove_any(setting * 16 / efficiency) + carry.remove_any(amount * 16 / efficiency) location = loc /datum/effect_system/smoke_spread/chem/smoke_machine @@ -28,10 +29,11 @@ opaque = FALSE alpha = 100 - /obj/machinery/smoke_machine/Initialize() . = ..() - create_reagents(volume) + create_reagents(REAGENTS_BASE_VOLUME) + for(var/obj/item/stock_parts/matter_bin/B in component_parts) + reagents.maximum_volume += REAGENTS_BASE_VOLUME * B.rating /obj/machinery/smoke_machine/update_icon() if((!is_operational()) || (!on) || (reagents.total_volume == 0)) @@ -41,13 +43,20 @@ . = ..() /obj/machinery/smoke_machine/RefreshParts() - efficiency = 6 + var/new_volume = REAGENTS_BASE_VOLUME for(var/obj/item/stock_parts/matter_bin/B in component_parts) - efficiency += B.rating + new_volume += REAGENTS_BASE_VOLUME * B.rating + reagents.maximum_volume = new_volume + if(new_volume < reagents.total_volume) + reagents.reaction(loc, TOUCH) // if someone manages to downgrade it without deconstructing + reagents.clear_reagents() + efficiency = 9 for(var/obj/item/stock_parts/capacitor/C in component_parts) efficiency += C.rating + max_range = 1 for(var/obj/item/stock_parts/manipulator/M in component_parts) - efficiency += M.rating + max_range += M.rating + max_range = max(3, max_range) /obj/machinery/smoke_machine/process() ..() @@ -78,6 +87,11 @@ return return ..() +/obj/machinery/smoke_machine/deconstruct() + reagents.reaction(loc, TOUCH) + reagents.clear_reagents() + return ..() + /obj/machinery/smoke_machine/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) @@ -99,6 +113,7 @@ data["active"] = on data["setting"] = setting data["screen"] = screen + data["maxSetting"] = max_range return data /obj/machinery/smoke_machine/ui_act(action, params) @@ -110,7 +125,7 @@ . = TRUE if("setting") var/amount = text2num(params["amount"]) - if (locate(amount) in possible_settings) + if(amount in 1 to max_range) setting = amount . = TRUE if("power") @@ -122,3 +137,5 @@ if("goScreen") screen = params["screen"] . = TRUE + +#undef REAGENTS_BASE_VOLUME diff --git a/tgui/src/interfaces/smoke_machine.ract b/tgui/src/interfaces/smoke_machine.ract index 9f21240430..983e04bce2 100644 --- a/tgui/src/interfaces/smoke_machine.ract +++ b/tgui/src/interfaces/smoke_machine.ract @@ -1,31 +1,31 @@ {{#if data.screen == "home"}} - - {{data.active ? "On" : "Off"}} - - - -
- 3 - 6 - 9 - 12 - 15 -
-
- - {{#if data.isTankLoaded}} - {{Math.round(adata.TankCurrentVolume)}}/{{data.TankMaxVolume}} Units -
+ + {{data.active ? "On" : "Off"}} + + + +
+ 3 + 6 + 9 + 12 + 15 +
+
+ + {{#if data.isTankLoaded}} + {{Math.round(adata.TankCurrentVolume)}}/{{data.TankMaxVolume}} Units +

- {{#each adata.TankContents}} - {{Math.fixed(volume, 2)}} units of {{name}}
- {{/each}} + {{#each adata.TankContents}} + {{Math.fixed(volume, 2)}} units of {{name}}
+ {{/each}} {{else}} - Tank Empty + Tank Empty {{/if}} Date: Mon, 18 Dec 2017 15:22:55 -0600 Subject: [PATCH 74/94] Update st_commands.dm --- code/modules/server_tools/st_commands.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/server_tools/st_commands.dm b/code/modules/server_tools/st_commands.dm index 9ec87a595c..1e071550e0 100644 --- a/code/modules/server_tools/st_commands.dm +++ b/code/modules/server_tools/st_commands.dm @@ -51,7 +51,7 @@ /* The MIT License -Copyright (c) 2011 Dominic Tarr +Copyright (c) 2017 Jordan Brown Permission is hereby granted, free of charge, to any person obtaining a copy of this software and From a85f5eea6b0ce6c401f0f4c4c0a223b7c56577ab Mon Sep 17 00:00:00 2001 From: LetterJay Date: Mon, 18 Dec 2017 15:23:55 -0600 Subject: [PATCH 75/94] Update server_tools.dm --- code/__DEFINES/server_tools.dm | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/code/__DEFINES/server_tools.dm b/code/__DEFINES/server_tools.dm index 9547c381c1..a444caf02a 100644 --- a/code/__DEFINES/server_tools.dm +++ b/code/__DEFINES/server_tools.dm @@ -1,28 +1,29 @@ -// /tg/station 13 server tools API v3.1.0.2 +// /tg/station 13 server tools API +#define SERVICE_API_VERSION_STRING "3.2.0.1" //CONFIGURATION //use this define if you want to do configuration outside of this file #ifndef SERVER_TOOLS_EXTERNAL_CONFIGURATION //Comment this out once you've filled in the below -//#error /tg/station server tools interface unconfigured +#error /tg/station server tools interface unconfigured //Required interfaces (fill in with your codebase equivalent): //create a global variable named `Name` and set it to `Value` //These globals must not be modifiable from anywhere outside of the server tools -#define SERVER_TOOLS_DEFINE_AND_SET_GLOBAL(Name, Value) GLOBAL_VAR_INIT(##Name, ##Value); GLOBAL_PROTECT(##Name) +#define SERVER_TOOLS_DEFINE_AND_SET_GLOBAL(Name, Value) //Read the value in the global variable `Name` -#define SERVER_TOOLS_READ_GLOBAL(Name) GLOB.##Name +#define SERVER_TOOLS_READ_GLOBAL(Name) //Set the value in the global variable `Name` to `Value` -#define SERVER_TOOLS_WRITE_GLOBAL(Name, Value) GLOB.##Name = ##Value +#define SERVER_TOOLS_WRITE_GLOBAL(Name, Value) //display an announcement `message` from the server to all players -#define SERVER_TOOLS_WORLD_ANNOUNCE(message) to_chat(world, "[html_encode(##message)]") +#define SERVER_TOOLS_WORLD_ANNOUNCE(message) //Write a string `message` to a server log -#define SERVER_TOOLS_LOG(message) log_world("SERVICE: [##message]") +#define SERVER_TOOLS_LOG(message) //Notify current in-game administrators of a string `event` -#define SERVER_TOOLS_NOTIFY_ADMINS(event) message_admins(##event) +#define SERVER_TOOLS_NOTIFY_ADMINS(event) //The current amount of connected clients -#define SERVER_TOOLS_CLIENT_COUNT GLOB.clients.len +#define SERVER_TOOLS_CLIENT_COUNT #endif //Required hooks: @@ -64,16 +65,15 @@ //IMPLEMENTATION -#define SERVICE_API_VERSION_STRING "3.1.0.2" - #define REBOOT_MODE_NORMAL 0 #define REBOOT_MODE_HARD 1 #define REBOOT_MODE_SHUTDOWN 2 #define SERVICE_WORLD_PARAM "server_service" #define SERVICE_VERSION_PARAM "server_service_version" +#define SERVICE_INSTANCE_PARAM "server_instance" #define SERVICE_PR_TEST_JSON "prtestjob.json" -#define SERVICE_INTERFACE_DLL "TGServiceInterface.dll" +#define SERVICE_INTERFACE_DLL "TGDreamDaemonBridge.dll" #define SERVICE_INTERFACE_FUNCTION "DDEntryPoint" #define SERVICE_CMD_HARD_REBOOT "hard_reboot" @@ -98,11 +98,12 @@ #define SERVICE_REQUEST_WORLD_REBOOT "worldreboot" #define SERVICE_REQUEST_API_VERSION "api_ver" +#define SERVICE_RETURN_SUCCESS "SUCCESS" + /* The MIT License -Copyright (c) 2011 Dominic Tarr - +Copyright (c) 2017 Jordan Brown Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to From 15adc5d0b044352f3b8a26aa31b391c4947f3dd6 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Mon, 18 Dec 2017 15:24:23 -0600 Subject: [PATCH 76/94] Update st_interface.dm --- code/modules/server_tools/st_interface.dm | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/code/modules/server_tools/st_interface.dm b/code/modules/server_tools/st_interface.dm index 39bebbbb3d..b0b1b0a43c 100644 --- a/code/modules/server_tools/st_interface.dm +++ b/code/modules/server_tools/st_interface.dm @@ -30,7 +30,10 @@ SERVER_TOOLS_DEFINE_AND_SET_GLOBAL(server_tools_api_compatible, FALSE) return if(skip_compat_check && !fexists(SERVICE_INTERFACE_DLL)) CRASH("Service parameter present but no interface DLL detected. This is symptomatic of running a service less than version 3.1! Please upgrade.") - call(SERVICE_INTERFACE_DLL, SERVICE_INTERFACE_FUNCTION)(command) //trust no retval + var/instance = params[SERVICE_INSTANCE_PARAM] + if(!instance) + instance = "TG Station Server" //maybe just upgraded + call(SERVICE_INTERFACE_DLL, SERVICE_INTERFACE_FUNCTION)(instance, command) //trust no retval return TRUE /world/proc/ChatBroadcast(message) @@ -72,7 +75,7 @@ SERVER_TOOLS_DEFINE_AND_SET_GLOBAL(server_tools_api_compatible, FALSE) switch(command) if(SERVICE_CMD_API_COMPATIBLE) SERVER_TOOLS_WRITE_GLOBAL(server_tools_api_compatible, TRUE) - return "SUCCESS" + return SERVICE_RETURN_SUCCESS if(SERVICE_CMD_HARD_REBOOT) if(SERVER_TOOLS_READ_GLOBAL(reboot_mode) != REBOOT_MODE_HARD) SERVER_TOOLS_WRITE_GLOBAL(reboot_mode, REBOOT_MODE_HARD) @@ -88,7 +91,7 @@ SERVER_TOOLS_DEFINE_AND_SET_GLOBAL(server_tools_api_compatible, FALSE) if(!istext(msg) || !msg) return "No message set!" SERVER_TOOLS_WORLD_ANNOUNCE(msg) - return "SUCCESS" + return SERVICE_RETURN_SUCCESS if(SERVICE_CMD_PLAYER_COUNT) return "[SERVER_TOOLS_CLIENT_COUNT]" if(SERVICE_CMD_LIST_CUSTOM) @@ -96,13 +99,13 @@ SERVER_TOOLS_DEFINE_AND_SET_GLOBAL(server_tools_api_compatible, FALSE) else var/custom_command_result = HandleServiceCustomCommand(lowertext(command), params[SERVICE_CMD_PARAM_SENDER], params[SERVICE_CMD_PARAM_CUSTOM]) if(custom_command_result) - return istext(custom_command_result) ? custom_command_result : "SUCCESS" + return istext(custom_command_result) ? custom_command_result : SERVICE_RETURN_SUCCESS return "Unknown command: [command]" /* The MIT License -Copyright (c) 2011 Dominic Tarr +Copyright (c) 2017 Jordan Brown Permission is hereby granted, free of charge, to any person obtaining a copy of this software and From 573638d9a6af301bf231215df0e8dd989d798292 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 18 Dec 2017 15:25:35 -0600 Subject: [PATCH 77/94] Automatic changelog generation for PR #4416 [ci skip] --- html/changelogs/AutoChangeLog-pr-4416.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4416.yml diff --git a/html/changelogs/AutoChangeLog-pr-4416.yml b/html/changelogs/AutoChangeLog-pr-4416.yml new file mode 100644 index 0000000000..543fe52edd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4416.yml @@ -0,0 +1,4 @@ +author: "Robustin" +delete-after: True +changes: + - bugfix: "The wizard event \"race swap\" should now stick to \"safer\" species." From 3454d658595ca48d4024cc43a80f080826f84c7a Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 18 Dec 2017 15:25:49 -0600 Subject: [PATCH 78/94] Automatic changelog generation for PR #4417 [ci skip] --- html/changelogs/AutoChangeLog-pr-4417.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4417.yml diff --git a/html/changelogs/AutoChangeLog-pr-4417.yml b/html/changelogs/AutoChangeLog-pr-4417.yml new file mode 100644 index 0000000000..46b7019353 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4417.yml @@ -0,0 +1,4 @@ +author: "Xhuis" +delete-after: True +changes: + - bugfix: "Clockcult power alerts will no longer show outside of the clockcult gamemode (they could be triggered by scarabs.)" From 390c24b3fd05fba47bbb14631644e2131aa3238e Mon Sep 17 00:00:00 2001 From: LetterJay Date: Mon, 18 Dec 2017 16:42:17 -0600 Subject: [PATCH 79/94] Create server_tools.config.dm --- code/__DEFINES/server_tools.config.dm | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 code/__DEFINES/server_tools.config.dm diff --git a/code/__DEFINES/server_tools.config.dm b/code/__DEFINES/server_tools.config.dm new file mode 100644 index 0000000000..7d3c5b8eba --- /dev/null +++ b/code/__DEFINES/server_tools.config.dm @@ -0,0 +1,8 @@ +#define SERVER_TOOLS_EXTERNAL_CONFIGURATION +#define SERVER_TOOLS_DEFINE_AND_SET_GLOBAL(Name, Value) GLOBAL_VAR_INIT(##Name, ##Value); GLOBAL_PROTECT(##Name) +#define SERVER_TOOLS_READ_GLOBAL(Name) GLOB.##Name +#define SERVER_TOOLS_WRITE_GLOBAL(Name, Value) GLOB.##Name = ##Value +#define SERVER_TOOLS_WORLD_ANNOUNCE(message) to_chat(world, "[html_encode(##message)]") +#define SERVER_TOOLS_LOG(message) log_world("SERVICE: [##message]") +#define SERVER_TOOLS_NOTIFY_ADMINS(event) message_admins(##event) +#define SERVER_TOOLS_CLIENT_COUNT GLOB.clients.len From 75d0b6c9423d58ad4248029e9b1d3c15c8b4d2f8 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Mon, 18 Dec 2017 16:43:05 -0600 Subject: [PATCH 80/94] Update tgstation.dme --- tgstation.dme | 1 + 1 file changed, 1 insertion(+) diff --git a/tgstation.dme b/tgstation.dme index 4d438607f5..737f7e8274 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -73,6 +73,7 @@ #include "code\__DEFINES\robots.dm" #include "code\__DEFINES\role_preferences.dm" #include "code\__DEFINES\say.dm" +#include "code\__DEFINES\server_tools.config.dm" #include "code\__DEFINES\server_tools.dm" #include "code\__DEFINES\shuttles.dm" #include "code\__DEFINES\sight.dm" From a9ed49d7753c4672a951f414592fef364b784d19 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Mon, 18 Dec 2017 16:44:13 -0600 Subject: [PATCH 81/94] Update README.md --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index e2b9bbfbbc..3aefb8c03e 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,9 @@ - -<<<<<<< HEAD ##Citadel Station 13
Based and maintained from /tg/station.
-======= + [![Build Status](https://travis-ci.org/tgstation/tgstation.png)](https://travis-ci.org/tgstation/tgstation) [![Krihelimeter](https://www.krihelinator.xyz/badge/tgstation/tgstation)](https://www.krihelinator.xyz) [![Percentage of issues still open](https://isitmaintained.com/badge/open/tgstation/tgstation.svg)](https://isitmaintained.com/project/tgstation/tgstation "Percentage of issues still open") [![Average time to resolve an issue](https://isitmaintained.com/badge/resolution/tgstation/tgstation.svg)](https://isitmaintained.com/project/tgstation/tgstation "Average time to resolve an issue") ![Coverage](https://img.shields.io/badge/coverage---2%25-red.svg) [![forthebadge](https://forthebadge.com/images/badges/built-with-resentment.svg)](https://forthebadge.com) [![forthebadge](https://forthebadge.com/images/badges/contains-technical-debt.svg)](https://forthebadge.com) [![forinfinityandbyond](https://user-images.githubusercontent.com/5211576/29499758-4efff304-85e6-11e7-8267-62919c3688a9.gif)](https://www.reddit.com/r/SS13/comments/5oplxp/what_is_the_main_problem_with_byond_as_an_engine/dclbu1a) ->>>>>>> c47dde9... Merge pull request #33172 from praisenarsie/patch-12 [![Build Status](https://api.travis-ci.org/Citadel-Station-13/Citadel-Station-13.png)](https://travis-ci.org/Citadel-Station-13/Citadel-Station-13) [![Krihelimeter](http://www.krihelinator.xyz/badge/Citadel-Station-13/Citadel-Station-13)](http://www.krihelinator.xyz) From 2f7c4ecc6fdb69352b43e849e3852dd3bc017055 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Mon, 18 Dec 2017 16:44:45 -0600 Subject: [PATCH 82/94] Update README.md --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index e2b9bbfbbc..b286239314 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,10 @@ -<<<<<<< HEAD ##Citadel Station 13
Based and maintained from /tg/station.
-======= + [![Build Status](https://travis-ci.org/tgstation/tgstation.png)](https://travis-ci.org/tgstation/tgstation) [![Krihelimeter](https://www.krihelinator.xyz/badge/tgstation/tgstation)](https://www.krihelinator.xyz) [![Percentage of issues still open](https://isitmaintained.com/badge/open/tgstation/tgstation.svg)](https://isitmaintained.com/project/tgstation/tgstation "Percentage of issues still open") [![Average time to resolve an issue](https://isitmaintained.com/badge/resolution/tgstation/tgstation.svg)](https://isitmaintained.com/project/tgstation/tgstation "Average time to resolve an issue") ![Coverage](https://img.shields.io/badge/coverage---2%25-red.svg) [![forthebadge](https://forthebadge.com/images/badges/built-with-resentment.svg)](https://forthebadge.com) [![forthebadge](https://forthebadge.com/images/badges/contains-technical-debt.svg)](https://forthebadge.com) [![forinfinityandbyond](https://user-images.githubusercontent.com/5211576/29499758-4efff304-85e6-11e7-8267-62919c3688a9.gif)](https://www.reddit.com/r/SS13/comments/5oplxp/what_is_the_main_problem_with_byond_as_an_engine/dclbu1a) ->>>>>>> c47dde9... Merge pull request #33172 from praisenarsie/patch-12 [![Build Status](https://api.travis-ci.org/Citadel-Station-13/Citadel-Station-13.png)](https://travis-ci.org/Citadel-Station-13/Citadel-Station-13) [![Krihelimeter](http://www.krihelinator.xyz/badge/Citadel-Station-13/Citadel-Station-13)](http://www.krihelinator.xyz) From ec42803331e16b785a3c8db9e537d7e84842861d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 18 Dec 2017 17:28:28 -0600 Subject: [PATCH 83/94] Automatic changelog generation for PR #4437 [ci skip] --- html/changelogs/AutoChangeLog-pr-4437.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4437.yml diff --git a/html/changelogs/AutoChangeLog-pr-4437.yml b/html/changelogs/AutoChangeLog-pr-4437.yml new file mode 100644 index 0000000000..9b11b0912e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4437.yml @@ -0,0 +1,4 @@ +author: "nicbn" +delete-after: True +changes: + - bugfix: "Now the chem smoke machine uses stock parts for volume and range." From 76e6cb4e48d84f3ef71b732e0ca6d6c5c58713c2 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Mon, 18 Dec 2017 17:31:07 -0600 Subject: [PATCH 84/94] Update server_tools.dm --- code/__DEFINES/server_tools.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__DEFINES/server_tools.dm b/code/__DEFINES/server_tools.dm index a444caf02a..c0fc133ada 100644 --- a/code/__DEFINES/server_tools.dm +++ b/code/__DEFINES/server_tools.dm @@ -5,7 +5,7 @@ //use this define if you want to do configuration outside of this file #ifndef SERVER_TOOLS_EXTERNAL_CONFIGURATION //Comment this out once you've filled in the below -#error /tg/station server tools interface unconfigured +//#error /tg/station server tools interface unconfigured //Required interfaces (fill in with your codebase equivalent): From 6b4099805f3905a18d30cd8b2c47ececfb9ae15c Mon Sep 17 00:00:00 2001 From: XDTM Date: Tue, 19 Dec 2017 03:30:20 +0100 Subject: [PATCH 85/94] [Ready] Adds abductor Mind Interface Devices, and a gland HUD (#33209) * Adds abductor Mind Interface Devices, and a gland HUD * . --- code/__DEFINES/atom_hud.dm | 32 +++---- code/datums/hud.dm | 1 + code/game/data_huds.dm | 3 + .../miniantags/abduction/abduction_gear.dm | 80 ++++++++++++++++++ .../gamemodes/miniantags/abduction/gland.dm | 74 ++++++++++++++-- .../miniantags/abduction/machinery/console.dm | 3 + .../browserassets/css/browserOutput.css | 1 + .../mob/living/carbon/carbon_defines.dm | 1 + .../mob/living/carbon/human/human_defines.dm | 2 +- .../carbon/human/species_types/abductors.dm | 10 +++ icons/mob/hud.dmi | Bin 13068 -> 13298 bytes icons/obj/abductor.dmi | Bin 56757 -> 58583 bytes interface/stylesheet.dm | 1 + 13 files changed, 187 insertions(+), 21 deletions(-) diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm index 2decc918f2..dcdf5aa268 100644 --- a/code/__DEFINES/atom_hud.dm +++ b/code/__DEFINES/atom_hud.dm @@ -17,8 +17,9 @@ #define DIAG_TRACK_HUD "13"// Mech tracking beacon #define DIAG_AIRLOCK_HUD "14"//Airlock shock overlay #define DIAG_PATH_HUD "15"//Bot path indicators +#define GLAND_HUD "16"//Gland indicators for abductors //for antag huds. these are used at the /mob level -#define ANTAG_HUD "16" +#define ANTAG_HUD "17" //by default everything in the hud_list of an atom is an image //a value in hud_list with one of these will change that behavior @@ -32,21 +33,22 @@ #define DATA_HUD_MEDICAL_ADVANCED 4 #define DATA_HUD_DIAGNOSTIC_BASIC 5 #define DATA_HUD_DIAGNOSTIC_ADVANCED 6 +#define DATA_HUD_ABDUCTOR 7 //antag HUD defines -#define ANTAG_HUD_CULT 7 -#define ANTAG_HUD_REV 8 -#define ANTAG_HUD_OPS 9 -#define ANTAG_HUD_WIZ 10 -#define ANTAG_HUD_SHADOW 11 -#define ANTAG_HUD_TRAITOR 12 -#define ANTAG_HUD_NINJA 13 -#define ANTAG_HUD_CHANGELING 14 -#define ANTAG_HUD_ABDUCTOR 15 -#define ANTAG_HUD_DEVIL 16 -#define ANTAG_HUD_SINTOUCHED 17 -#define ANTAG_HUD_SOULLESS 18 -#define ANTAG_HUD_CLOCKWORK 19 -#define ANTAG_HUD_BROTHER 20 +#define ANTAG_HUD_CULT 8 +#define ANTAG_HUD_REV 9 +#define ANTAG_HUD_OPS 10 +#define ANTAG_HUD_WIZ 11 +#define ANTAG_HUD_SHADOW 12 +#define ANTAG_HUD_TRAITOR 13 +#define ANTAG_HUD_NINJA 14 +#define ANTAG_HUD_CHANGELING 15 +#define ANTAG_HUD_ABDUCTOR 16 +#define ANTAG_HUD_DEVIL 17 +#define ANTAG_HUD_SINTOUCHED 18 +#define ANTAG_HUD_SOULLESS 19 +#define ANTAG_HUD_CLOCKWORK 20 +#define ANTAG_HUD_BROTHER 21 // Notification action types #define NOTIFY_JUMP "jump" diff --git a/code/datums/hud.dm b/code/datums/hud.dm index 837e7a6a95..fc6c09be14 100644 --- a/code/datums/hud.dm +++ b/code/datums/hud.dm @@ -10,6 +10,7 @@ GLOBAL_LIST_INIT(huds, list( DATA_HUD_MEDICAL_ADVANCED = new/datum/atom_hud/data/human/medical/advanced(), DATA_HUD_DIAGNOSTIC_BASIC = new/datum/atom_hud/data/diagnostic/basic(), DATA_HUD_DIAGNOSTIC_ADVANCED = new/datum/atom_hud/data/diagnostic/advanced(), + DATA_HUD_ABDUCTOR = new/datum/atom_hud/abductor(), ANTAG_HUD_CULT = new/datum/atom_hud/antag(), ANTAG_HUD_REV = new/datum/atom_hud/antag(), ANTAG_HUD_OPS = new/datum/atom_hud/antag(), diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 1afd2953a0..74ac93c023 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -60,6 +60,9 @@ /datum/atom_hud/data/bot_path hud_icons = list(DIAG_PATH_HUD) +/datum/atom_hud/abductor + hud_icons = list(GLAND_HUD) + /* MED/SEC/DIAG HUD HOOKS */ /* diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index 9128847e16..3e7e5f01ef 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -2,6 +2,8 @@ #define VEST_COMBAT 2 #define GIZMO_SCAN 1 #define GIZMO_MARK 2 +#define MIND_DEVICE_MESSAGE 1 +#define MIND_DEVICE_CONTROL 2 //AGENT VEST /obj/item/clothing/suit/armor/abductor/vest @@ -278,6 +280,84 @@ if(!istype(I, /obj/item/device/radio/headset)) r.broadcasting = 0 //goddamned headset hacks +/obj/item/device/abductor/mind_device + name = "mental interface device" + desc = "A dual-mode tool for directly communicating with sentient brains. It can be used to send a direct message to a target, \ + or to send a command to a test subject with a charged gland." + icon_state = "mind_device_message" + item_state = "silencer" + lefthand_file = 'icons/mob/inhands/antag/abductor_lefthand.dmi' + righthand_file = 'icons/mob/inhands/antag/abductor_righthand.dmi' + var/mode = MIND_DEVICE_MESSAGE + +/obj/item/device/abductor/mind_device/attack_self(mob/user) + if(!ScientistCheck(user)) + return + + if(mode == MIND_DEVICE_MESSAGE) + mode = MIND_DEVICE_CONTROL + icon_state = "mind_device_control" + else + mode = MIND_DEVICE_MESSAGE + icon_state = "mind_device_message" + to_chat(user, "You switch the device to [mode==MIND_DEVICE_MESSAGE? "TRANSMISSION": "COMMAND"] MODE") + +/obj/item/device/abductor/mind_device/afterattack(atom/target, mob/living/user, flag, params) + if(!ScientistCheck(user)) + return + + switch(mode) + if(MIND_DEVICE_CONTROL) + mind_control(target, user) + if(MIND_DEVICE_MESSAGE) + mind_message(target, user) + +/obj/item/device/abductor/mind_device/proc/mind_control(atom/target, mob/living/user) + if(iscarbon(target)) + var/mob/living/carbon/C = target + var/obj/item/organ/heart/gland/G = C.getorganslot("heart") + if(!istype(G)) + to_chat(user, "Your target does not have an experimental gland!") + return + if(!G.mind_control_uses) + to_chat(user, "Your target's gland is spent!") + return + if(G.active_mind_control) + to_chat(user, "Your target is already under a mind-controlling influence!") + return + + var/command = stripped_input(user, "Enter the command for your target to follow.\ + Uses Left: [G.mind_control_uses], Duration: [G.mind_control_duration / 10] seconds","Enter command") + + if(!command) + return + + if(QDELETED(user) || user.get_active_held_item() != src || loc != user) + return + + if(QDELETED(G)) + return + + G.mind_control(command, user) + to_chat(user, "You send the command to your target.") + +/obj/item/device/abductor/mind_device/proc/mind_message(atom/target, mob/living/user) + if(isliving(target)) + var/mob/living/L = target + if(L.stat == DEAD) + to_chat(user, "Your target is dead!") + return + var/message = stripped_input(user, "Write a message to send to your target's brain.","Enter message") + if(!message) + return + if(QDELETED(L) || L.stat == DEAD) + return + + to_chat(L, "You hear a voice in your head saying: [message]") + to_chat(user, "You send the message to your target.") + log_talk(user,"[key_name(user)] sent an abductor mind message to [L]/[L.ckey]: '[message]'", LOGSAY) + + /obj/item/device/firing_pin/abductor name = "alien firing pin" icon_state = "firing_pin_ayy" diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/game/gamemodes/miniantags/abduction/gland.dm index 22edb79c80..508f4e9f13 100644 --- a/code/game/gamemodes/miniantags/abduction/gland.dm +++ b/code/game/gamemodes/miniantags/abduction/gland.dm @@ -12,28 +12,68 @@ var/human_only = 0 var/active = 0 + var/mind_control_uses = 1 + var/mind_control_duration = 1800 + var/active_mind_control = FALSE + /obj/item/organ/heart/gland/proc/ownerCheck() if(ishuman(owner)) - return 1 + return TRUE if(!human_only && iscarbon(owner)) - return 1 - return 0 + return TRUE + return FALSE /obj/item/organ/heart/gland/proc/Start() active = 1 next_activation = world.time + rand(cooldown_low,cooldown_high) +/obj/item/organ/heart/gland/proc/update_gland_hud() + if(!owner) + return + var/image/holder = owner.hud_list[GLAND_HUD] + var/icon/I = icon(owner.icon, owner.icon_state, owner.dir) + holder.pixel_y = I.Height() - world.icon_size + if(active_mind_control) + holder.icon_state = "hudgland_active" + else if(mind_control_uses) + holder.icon_state = "hudgland_ready" + else + holder.icon_state = "hudgland_spent" -/obj/item/organ/heart/gland/Remove(var/mob/living/carbon/M, special = 0) +/obj/item/organ/heart/gland/proc/mind_control(command, mob/living/user) + if(!ownerCheck() || !mind_control_uses || active_mind_control) + return + mind_control_uses-- + to_chat(owner, "You suddenly feel an irresistible compulsion to follow an order...") + to_chat(owner, "[command]") + active_mind_control = TRUE + log_admin("[key_name(user)] sent an abductor mind control message to [key_name(owner)]: [command]") + update_gland_hud() + + addtimer(CALLBACK(src, .proc/clear_mind_control), mind_control_duration) + +/obj/item/organ/heart/gland/proc/clear_mind_control() + if(!ownerCheck() || !active_mind_control) + return + to_chat(owner, "You feel the compulsion fade, and you completely forget about your previous orders.") + active_mind_control = FALSE + +/obj/item/organ/heart/gland/Remove(mob/living/carbon/M, special = 0) active = 0 if(initial(uses) == 1) uses = initial(uses) + var/datum/atom_hud/abductor/hud = GLOB.huds[DATA_HUD_ABDUCTOR] + hud.remove_from_hud(owner) + clear_mind_control() ..() -/obj/item/organ/heart/gland/Insert(var/mob/living/carbon/M, special = 0) +/obj/item/organ/heart/gland/Insert(mob/living/carbon/M, special = 0) ..() if(special != 2 && uses) // Special 2 means abductor surgery Start() + var/datum/atom_hud/abductor/hud = GLOB.huds[DATA_HUD_ABDUCTOR] + hud.add_to_hud(owner) + update_gland_hud() /obj/item/organ/heart/gland/on_life() if(!beating) @@ -59,6 +99,8 @@ cooldown_high = 400 uses = -1 icon_state = "health" + mind_control_uses = 3 + mind_control_duration = 3000 /obj/item/organ/heart/gland/heals/activate() to_chat(owner, "You feel curiously revitalized.") @@ -71,6 +113,8 @@ cooldown_high = 1200 uses = -1 icon_state = "slime" + mind_control_uses = 1 + mind_control_duration = 2400 /obj/item/organ/heart/gland/slime/activate() to_chat(owner, "You feel nauseous!") @@ -86,6 +130,8 @@ cooldown_high = 300 uses = -1 icon_state = "mindshock" + mind_control_uses = 1 + mind_control_duration = 6000 /obj/item/organ/heart/gland/mindshock/activate() to_chat(owner, "You get a headache.") @@ -103,6 +149,8 @@ uses = -1 human_only = 1 icon_state = "species" + mind_control_uses = 5 + mind_control_duration = 300 /obj/item/organ/heart/gland/pop/activate() to_chat(owner, "You feel unlike yourself.") @@ -114,6 +162,8 @@ cooldown_high = 2400 uses = 1 icon_state = "vent" + mind_control_uses = 4 + mind_control_duration = 1800 /obj/item/organ/heart/gland/ventcrawling/activate() to_chat(owner, "You feel very stretchy.") @@ -125,6 +175,8 @@ cooldown_high = 2400 uses = 1 icon_state = "viral" + mind_control_uses = 1 + mind_control_duration = 1800 /obj/item/organ/heart/gland/viral/activate() to_chat(owner, "You feel sick.") @@ -141,6 +193,8 @@ cooldown_high = 1600 uses = 10 icon_state = "emp" + mind_control_uses = 1 + mind_control_duration = 1800 /obj/item/organ/heart/gland/emp/activate() to_chat(owner, "You feel a spike of pain in your head.") @@ -151,6 +205,8 @@ cooldown_high = 900 uses = 10 icon_state = "spider" + mind_control_uses = 2 + mind_control_duration = 2400 /obj/item/organ/heart/gland/spiderman/activate() to_chat(owner, "You feel something crawling in your skin.") @@ -164,6 +220,8 @@ icon_state = "egg" lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi' + mind_control_uses = 2 + mind_control_duration = 1800 /obj/item/organ/heart/gland/egg/activate() to_chat(owner, "You lay an egg!") @@ -175,6 +233,8 @@ cooldown_low = 200 cooldown_high = 400 uses = -1 + mind_control_uses = 1 + mind_control_duration = 450 /obj/item/organ/heart/gland/bloody/activate() owner.blood_volume -= 20 @@ -192,6 +252,8 @@ cooldown_high = 600 human_only = 1 uses = 1 + mind_control_uses = 1 + mind_control_duration = 600 /obj/item/organ/heart/gland/bodysnatch/activate() to_chat(owner, "You feel something moving around inside you...") @@ -233,6 +295,8 @@ cooldown_low = 1200 cooldown_high = 1800 uses = -1 + mind_control_uses = 1 + mind_control_duration = 800 /obj/item/organ/heart/gland/plasma/activate() to_chat(owner, "You feel bloated.") diff --git a/code/game/gamemodes/miniantags/abduction/machinery/console.dm b/code/game/gamemodes/miniantags/abduction/machinery/console.dm index f243f161c3..0b13c359eb 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/console.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/console.dm @@ -48,6 +48,7 @@ dat += "
Agent Vest
" dat += "Radio Silencer
" dat += "Science Tool
" + dat += "Mental Interface Device
" else dat += "NO EXPERIMENT MACHINE DETECTED
" @@ -109,6 +110,8 @@ Dispense(/obj/item/device/abductor/gizmo) if("vest") Dispense(/obj/item/clothing/suit/armor/abductor/vest) + if("mind_device") + Dispense(/obj/item/device/abductor/mind_device,cost=2) updateUsrDialog() /obj/machinery/abductor/console/proc/TeleporterRetrieve() diff --git a/code/modules/goonchat/browserassets/css/browserOutput.css b/code/modules/goonchat/browserassets/css/browserOutput.css index 824c86c69d..3403253c07 100644 --- a/code/modules/goonchat/browserassets/css/browserOutput.css +++ b/code/modules/goonchat/browserassets/css/browserOutput.css @@ -390,6 +390,7 @@ h1.alert, h2.alert {color: #000000;} .memo {color: #638500; text-align: center;} .memoedit {text-align: center; font-size: 16px;} .abductor {color: #800080; font-style: italic;} +.mind_control {color: #A00D6F; font-size: 3; font-weight: bold; font-style: italic;} .slime {color: #00CED1;} .drone {color: #848482;} .monkey {color: #975032;} diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 4e409391da..d601fde492 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -2,6 +2,7 @@ gender = MALE pressure_resistance = 15 possible_a_intents = list(INTENT_HELP, INTENT_HARM) + hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD,GLAND_HUD) var/list/stomach_contents = list() var/list/internal_organs = list() //List of /obj/item/organ in the mob. They don't go in the contents for some reason I don't want to know. var/list/internal_organs_slot= list() //Same as above, but stores "slot ID" - "organ" pairs for easy access. diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 8e72b26419..716373061d 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -1,5 +1,5 @@ /mob/living/carbon/human - hud_possible = list(HEALTH_HUD,STATUS_HUD,ID_HUD,WANTED_HUD,IMPLOYAL_HUD,IMPCHEM_HUD,IMPTRACK_HUD,ANTAG_HUD) + hud_possible = list(HEALTH_HUD,STATUS_HUD,ID_HUD,WANTED_HUD,IMPLOYAL_HUD,IMPCHEM_HUD,IMPTRACK_HUD,ANTAG_HUD,GLAND_HUD) possible_a_intents = list(INTENT_HELP, INTENT_DISARM, INTENT_GRAB, INTENT_HARM) pressure_resistance = 25 //Hair colour and style diff --git a/code/modules/mob/living/carbon/human/species_types/abductors.dm b/code/modules/mob/living/carbon/human/species_types/abductors.dm index cf03d12130..cd273ec98e 100644 --- a/code/modules/mob/living/carbon/human/species_types/abductors.dm +++ b/code/modules/mob/living/carbon/human/species_types/abductors.dm @@ -9,3 +9,13 @@ /datum/species/abductor/copy_properties_from(datum/species/abductor/old_species) scientist = old_species.scientist + +/datum/species/abductor/on_species_gain(mob/living/carbon/C, datum/species/old_species) + . = ..() + var/datum/atom_hud/abductor_hud = GLOB.huds[DATA_HUD_ABDUCTOR] + abductor_hud.add_hud_to(C) + +/datum/species/abductor/on_species_loss(mob/living/carbon/C) + . = ..() + var/datum/atom_hud/abductor_hud = GLOB.huds[DATA_HUD_ABDUCTOR] + abductor_hud.remove_hud_from(C) diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 70988dbef5d00f35e33a2f7c9f09be60d7266c31..5e33807ec7987dd1926bc0a9921cc92a2c1af3a9 100644 GIT binary patch literal 13298 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 literal 13068 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 FzW^wclxhF~ diff --git a/icons/obj/abductor.dmi b/icons/obj/abductor.dmi index 38edd8dc7dafeeaa39eafe2bc344e75db021c8b4..5602b03f8772267d503484b6ac5ef21c9088192f 100644 GIT binary patch delta 9620 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 delta 7760 zcmaiZWmr^E*Y<%Sm6YyMT0**8LP9}FVF(Ek=@J-;XmtW?!@RT6^95zVEYUx))Z{085|)t%(Q#0H_KpQvd*5iGatZ z-s<*VcAn4Oy`Q_e0)T&Jma$&^oCt-&2e{3S6{!yHvM`MgtcZxO41_=06HNQVIqpK!c zuDrQM$7TuwRd);wsSWf)-VaBMGSyZ}&_2((w9y z&tr2~XN*=Z!3(@>wF{yn$Mx~{xP3S5(!Q2Ae!>*!`14wMzCeOJyVWday+X(Vm-;o7 z#VF{w>{)H(9%i@Rt0u3CO zbwL@e?k!~twtG|3s>)qqgO3At)6yPLX7p$5_fRahFWz_U`f55BW&ExABt2m<59QI2^rB_%`0tgGbwMe4ZOJ=`^pE&AHrXl zV?k~k3|6HOJo=s;i^!54TfN0OQ_TGS$HvB;o?RdKCB9IHfU8o@ zNnSOGo7Ms%yp4R)yIT@d@e0J7m7UVa?y5=9wC&P&{`njsi{=%(;T8VXhtON>PM_9T zl@L0y_aH`CZoD+&U?4?&*LYrtt36Y{z&p9)V_fd|C*x=xcTV%diNt$a?Dmr>H;9E7 zv0RrzQqRY@2NBv{$YB|U+WPw5(?$3$;uGrda#0_I|D=BDuYS}U#`atFL}KY08!;+& zH<)7qU$-e>)d?=aKR}eBTM)VXUD*XD9f~`v1OSYO+UhEg&o+4In}2tplrCYwPl?E0 z=@8QkGwNH#CSzA>ga@5#aO=J#zCdcv%QKJOF;2#7IuTMhY}~zWJHnf8f8()evy5mn zrW-_w-u1?(&FXLKjE18x&kxhm5AV(%W$E)wPfXy|&Xd;8#}*WDn`zE|2wGj&Ji@hw zHPGAX5lGEx{m#kBiJ>PRAX$rO&KhAVQ(k;ioZz>_KQMSMy6BG(xN6)%B}&v2jkn0q z$!3wE(jA#at@+Kmir)1zyz60k6XPS~Pz^FH5c;zFO-Y?$tGyg;_g?HK^~p0}rL0g< z^(H~@u6k|0)H;1)1s6~D-fxM;+~;bv5;i59**gAv=-!L7;TU%nNu7|8_uAm#5NI05 zipK3KbhdQohWN*}0=Hc8^rgaU+}WF#>Yaz~Io0E**%HwO395-Nwz(a|rE=YRBn#en z=O?r+w>t1KOo`bW9eTjL`f;`EWfCpdHLJmO>~yW|;-p&RL8^`tt>7|pgVeS_ioVi- zOiRh@NV9}^U=9c#TFC?j&520>qXJ!(UGR<_Q*nqm zjT-y*N3Lzlv7Lnwuz4}g4hF{|(&Thhl;aP$-F}pJ8j+XqwJy6pQahA4e5K6*Lyj)4 zKOfofPRmk#tySV>V=u_;&fO`_yzzNB2sV}GT50Ou(?DodPIpmDZaez5_@Svo$naX& z_{Oqnykg}L*QcwioiL!$6!d<|fXy)8vXRW_=rYB@?(gk&9+}&h!DCQJKfuh)jLUfg zfk33aePMmi5*CQFcy`l3$d%Yn2J)l`V))7q z;50#KLuy>W>_fCjr}c6kg{aqIWnU;qx4etRMgY)sDle78V&!3)Y(BN{@>x6i;{yTCi=7IJ~d1U$3qx`LfqXGY_tS z?CNSNmwj3F!r-@!< z%F?$e8No`2;)aIw zue^d<*!)lkDc`-tSkw|tknH*>V~8E;%=`3bEQXEVBk6(9H|x8ne`?$oCK-8(&E{u58-X=F_cMYn6##C#UMZL6)tUTG#bTZbd* zoOTyvs=1nP z?=2U-xset8kS@X1eA9nU*Un~CCs5LzV7x_?1!9n{7}d{xgO2xJOqZ<~>te}{R&M4@ zIzNKLkt1tUr4|tndBfXQ$qzQ`Pe*5Fq{}=(9_+w$d?b*D)6(oFyO_2Zv4`Y~tf#pr zFFznfbo0g8Ht3LG`k3No3o5>>Oy~@IMJeGG-!1m%?C}Y4O;=cjq@el`b+}<-8%y>X z*^J3cED8GgK4BocdWFO8Wpz~*R6Fy5?4v)Wgaes?`zv;HINbm3BgsOS#)>^_uGHB8 zLaK!`v7{LFBv+rC) z4-?0hPdcyI%Dm72vW7zh4$IuWRC;v(VnE$0Q!(q|y&I2U0~9U`Kb{;ee=y*l$lu@i zf}A2!f}qPrt``)f$fLW`qv7qEwvx<%I^Sk=*&r7-FiWnL`*VHTat_)Bfk$g^kU5Rt z>UbI6P~eFMiJzaJN0r$y?%;**A+B|$Uv>nrS6)-yS#<1Cro>YLf%KCT-~8bacB0US z!Iae@xA0UbHiMY~6^d{j4nk!Lyd1+G911*@LTXO{TH=56|6O9JWG7Lf==E0Z@$ z1QeE(Ow>IU3W^h4((#>~oD}~;lX#175dT^AtTf;RIypUDzJD7rHcXAk80?~V`8zPTAXyr%Z(QDO-}@KNVD9pkmSC_M=g9 zi~SJDo|UPZB{{7C!(_&(F_WEqFWa_qcz>K3j?p^|Fz)@DH54OR^(Y)WhTaco%6+ONHl}KKJu!bBiWY0X8G0Q6p15Ak z!D+RJQY30+IyAMh%Xy5EDxKeQz1H@M&jA)MZ_u|+V;tAzISfbp{d!t$wl&Iyf^tJZ^zd%A;p#72mZH9ao#rvVtjmj7$Z8` za9WLOv8=5tmn|Ys)Vq*cZ$5JYQ+755Qax+gQZMIzqB0F5vQ-f&VJH6bQR~&rM?6OG z4|+&o193Y4zY#bk40oc2JoeXjo9prL1u8U~z9) zfKV$PbSVuS(8A-t2)p1tQH9SC@#ZV40I5a~1?P091C>NQ=*MwP|8JWR?1x(DUsJ}( zhNA5I%bPaV(E}o{PXxc!)a10ZDA|Ktg}#VTfHM}9J>KQumduj{iYNP$Q&VBU$?ih* zWU&dl93*8!p}=sr%fJ5eJ^lTJz^|a!eBa$raew|)h`PACver^QZh#Vbc1gTJUqdZ{<1*A?(&;nK_TJ{9sY|t?ak`yYTDkNu(@O6(3qCX3SY$~(8+m8GJugx z`4^6_=Vm-3PKjkhiiPO0+(@c$xN)%tt*L_q-YeD8S!JPO2T?LtwYmH0>LF z^ZS(;5T1bgeU8R+;Xuz|l+vp!PBT{3nk^8P8VmlgY+=?{-uP=^jGP0wDTGp^z3QJ5 zliu%F$5uu*pPR`45%~|5 zFqmE(UG_jlHc6KmAU~#J43kH>wK|OQakIZFdo3`lmez|=el}?Fa@qh>d5i<@>$B4? zLz_mJC>onQdV~|*nHxzNw7qYmaf}w78!RV4uzx>DePFS%#e+TA`T$E)_P*?S{HkuR zQnq%!G?G%%$NTZ(`JWF_8{M3v8Sp;llJ}U(F(J<_0R)yx10E$A`M4a(7{bG@nNs`1 z%Jk?{UO@ptO-&6Xi%CB1_261OVnz1k(v5oD@wU;SOjYCL9gR}K(ezqsj1F9B!yq#q zY~11@OelafbZG5xsj?$tOP7U(E2!?}DRyo$5%Cj8`F*Eq+SO8W{G`uikGSgfJG-Vb zDub6Px}acE&>5i9kZ|>L`U~|##_@@X@WE-TtuwCE_{fyk5J-K%XKWtSkm$PBb~sdP zzmIzE?A%@>CncAXauPS9bTHx2dyIbc?^nd>GXnYcjX$0_WxsA$2~-Q!|}R5=NjT@=K0-=ni9+?^xGjPan zd?)*fiW`pa6=j0OBN&#_(-|wi-E@DI=md=mG87-k^?n_;mTG}i-`DrMEjio9ham0^ zsAE8dHwgd=p7kX5yw(XdB~GQUaK> zvvWldHUJ3jeHMz^)AaGF`K;i%JViGZI5Q~hSk5)ZgVmk-LS!8}Ix>=NBh`vI-l8NS zNX*J2g%mk&l=r#bQ&+@4%YpgyE>Esa0v<8g7Br87-BS zl(Vz5Q3`>d4KN=|3@DWeMxdy~c(_&faSb=CGf+Fe0+|0){zFj%Ugkd4^YdqqZ%~jB*#GC4Cky`t<0yG2B`KL(QleX_Wi5{>*eX+F zrwE?jdedf|umdh}A;wIKg9eC#V^5AQup*4HT;EGHe*E}h-offF`Xb$V+JMHGiX0EO zVtyw|1Gjgx+MI%EgZGqK4a(MeoNWoXB^pE$))xH!{VhP*(Qz#j-EHSRQ6@|)nGtKp z@yy7GO7i90?FOochDi3v%8!}bgfrB@0R8In@_zZv8{iEf7&Yf2DYW*r8vq21g}d2K zgTgPO+yFpu_ssuk7ds6CxRl||CkL*5cZ%1Yd6OpSCB?;^O!a<2Ll`c<71ig6Q1&iv z2fWty)5`AvdnSEMq7L#&%~muiQ(gWM(@FT-o(E4}uer+A1$6JVPJ zIuv+dj$t7a@BcEpNuL`aC!8pgl#;@axDg)u5bytV!o7yd4|HBXZJ%D)x%tdOHTDQ1 z+^+k#2rE8+>poUKt%^jMvatJ(SA!GV3#P^LjV1VsC?xe48*zb zIEz47q-4;OdQ2Zpd}D7*${f-Ct#bcmy+Un>q&XSXAK-M}y8;qgwif$n`YkNWucl9b zzSq$LJGtCA!Re-CAe#W8%E}tF&Oruvo8N75dtk{j2-DEjQhx{hVF2st2hWOB;I1pcd zVR-n<2XpFsq#p_o1|K8pZK{!14$u3G4elx&Y_8_-yx`msT(T>T53AgA>2lX3jeqc^er{r!FY0I za$o%V{=?Fw9T#@#=W)j9D0St+Z*g0*sQ%g{MIkLAWPan7_G5%`1NmE3|D{ek%|O58 zjy8NXj`eSIb={F66_?~&$Gk;bGxovPWz#ID2G}y==z}DsSUh7Xv@1+Ya)+blptNt& z#CE#LBi>}}>_JXBwToUjcqp~k8YtK~%wwQJK7@{a&~F_TJFAF`xgxP~2lY&jIPzvPLPkn;GznY|V< zCqvf?P*hY@*S>pQ3QOvJrMcC=u$p~zEI?cwqQAJ-dU3|I+xEH+#5EUe{6<@q_CTpj z@O46i$0+Ft{FMYj%Ox`#^BHf>aOH5to>nKZG;LS$|CeX(OR?wZnI1e&}4LGe+#Ur99$eb8u^W z`%)HDZP*%fEw_gNfDt#Jy!9EGZ}JDc#---?kVd{+U}vqq-0{^ff;P$sXNERvYHA83 zRVPMg=wqDo%gf2@>+6B`F3s|3E()UGJGCeRfSQ^*vgmY!Mf=Q>%0ehncQ$)1b8~W3?5bz$o)jDBti01a$JQ=-a+#Z(-)=EE zZHvyZ=^`ak-G=I)P`?cIRCO%Be2W15&&2c;x3tU z^YccE*P)@fc)~ufo{C)rlw_Rn5RRwtOPsWY#EaMkoK3_x$uZH1D+LSrhkyp_cw{Z( zQL4~5RaQ>UNb(9AQZfVbuUD^rm_F|&;u#rhmjWL6faOH}*A8h1B37*ybt+>}hf~wI zLOvdNH7rC;K^X}%ugJ`utdHi2Dk=HxK23u3d|NDIP~@ZTOr;$mB$Fd!WACe|-0PqI zlG|(SXmN;b&3Q-!q420DoOCl?)G}<`QMyF_g!wAuRP<;?`$#BI;g9L+ZQ%FO$9@01 zqM-BjKVuj?N_a^8#U|me6=lQa^V=0amROXZJfR`{H-Rqv`c*|k1K(SgCA2MDu*+lz zqin064V`XBKrm7L@sx#4rKz=K#?o=XEA;UC&W^^*m!-V=)`RI1nfhPQ!`j7@s^!xU z(o>>*@kktg+v!npIBYtK^RzBTpEl2ck!DxRz=WRqjUMj>AOCANFl>73$>-HlU+l9Q zOdPhVjQv!JIiQJEGoDq$#DosmwM&xAZtd>dr>xM#0r9|K0w{Hnz7hJ(Lz}nqC zVedwd=ar{Au>H?`fk7K1yrtYf`N61vnc-E~_tR>y*-C8j%n=R5D7njA3%Fd`)dYQ~ zX&?>eU?#T_XY4%F;Uq4+BoBh@C+Mtl@qs!yA<(hM~t52@;4h0D5ab;4z$N9 z4_GOa_>zg=%)j^WoXXZynT%b}dV#px8IK^r+b#a_RA40Gq;m3`J|qPU^0+_M8Ephh zLdKZI|EjGRM5^crgi>z4Jw_n4;sicW Date: Mon, 18 Dec 2017 20:42:10 -0600 Subject: [PATCH 87/94] Automatic changelog generation for PR #4442 [ci skip] --- html/changelogs/AutoChangeLog-pr-4442.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4442.yml diff --git a/html/changelogs/AutoChangeLog-pr-4442.yml b/html/changelogs/AutoChangeLog-pr-4442.yml new file mode 100644 index 0000000000..e480e91419 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4442.yml @@ -0,0 +1,8 @@ +author: "XDTM" +delete-after: True +changes: + - rscadd: "Abductors can now see if people already have glands! Never worry about abducting the same guy twice again." + - rscadd: "Added the Mind Interface Device to the abductor shop for 2 Credits. Only scientists can use it." + - rscadd: "The MID has two modes: Transmit and Control." + - rscadd: "Transmit will allow you to send a message anytime, anywhere to the mind of a target of your choice, regardless of language barriers. The message will be anonymous, but abductor-like." + - rscadd: "Control allows you to give a temporary directive to a target with an implanted gland, that they MUST follow. Duration and amount of uses varies by gland type. When a gland is spent, it will no longer respond to Control signals. The target forgets ever receiving the objective when the duration ends." From 8149f52777521e751ee9a6f8a790495f0a520ea5 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 18 Dec 2017 18:55:09 -0800 Subject: [PATCH 88/94] Adds jousting (#33531) --- code/__DEFINES/components.dm | 3 +- code/datums/components/jousting.dm | 81 ++++++++++++++++++++++++++++ code/game/objects/items.dm | 3 +- code/game/objects/items/twohanded.dm | 4 ++ tgstation.dme | 1 + 5 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 code/datums/components/jousting.dm diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 87c226b839..0b2a3e06d4 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -61,6 +61,8 @@ #define COMSIG_ITEM_ATTACK "item_attack" //from base of obj/item/attack(): (/mob/living/target, /mob/living/user) #define COMSIG_ITEM_ATTACK_SELF "item_attack_self" //from base of obj/item/attack_self(): (/mob) #define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" //from base of obj/item/attack_obj(): (/obj, /mob) +#define COMSIG_ITEM_EQUIPPED "item_equip" //from base of obj/item/equipped(): (/mob/equipper, slot) +#define COMSIG_ITEM_DROPPED "item_drop" //from base of obj/item/dropped(): (/mob/dropper) // /obj/item/clothing signals #define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): () @@ -77,7 +79,6 @@ #define COMSIG_MACHINE_PROCESS "machine_process" //from machinery subsystem fire(): () #define COMSIG_MACHINE_PROCESS_ATMOS "machine_process_atmos" //from air subsystem process_atmos_machinery(): () - // /mob/living/carbon/human signals #define COMSIG_HUMAN_MELEE_UNARMED_ATTACK "human_melee_unarmed_attack" //from mob/living/carbon/human/UnarmedAttack(): (atom/target) #define COMSIG_HUMAN_MELEE_UNARMED_ATTACKBY "human_melee_unarmed_attackby" //from mob/living/carbon/human/UnarmedAttack(): (mob/living/carbon/human/attacker) diff --git a/code/datums/components/jousting.dm b/code/datums/components/jousting.dm new file mode 100644 index 0000000000..68621e60ec --- /dev/null +++ b/code/datums/components/jousting.dm @@ -0,0 +1,81 @@ +/datum/component/jousting + var/current_direction = NONE + var/max_tile_charge = 5 + var/min_tile_charge = 2 //tiles before this code gets into effect. + var/current_tile_charge = 0 + var/movement_reset_tolerance = 2 //deciseconds + var/unmounted_damage_boost_per_tile = 0 + var/unmounted_knockdown_chance_per_tile = 0 + var/unmounted_knockdown_time = 0 + var/mounted_damage_boost_per_tile = 2 + var/mounted_knockdown_chance_per_tile = 20 + var/mounted_knockdown_time = 20 + var/requires_mob_riding = TRUE //whether this only works if the attacker is riding a mob, rather than anything they can buckle to. + var/requires_mount = TRUE //kinda defeats the point of jousting if you're not mounted but whatever. + var/mob/current_holder + var/datum/component/redirect/listener + var/current_timerid + +/datum/component/jousting/Initialize() + if(!isitem(parent)) + . = COMPONENT_INCOMPATIBLE + stack_trace("Warning: Jousting component incorrectly applied to invalid parent type [parent.type]") + RegisterSignal(COMSIG_ITEM_EQUIPPED, .proc/on_equip) + RegisterSignal(COMSIG_ITEM_DROPPED, .proc/on_drop) + RegisterSignal(COMSIG_ITEM_ATTACK, .proc/on_attack) + +/datum/component/jousting/Destroy() + QDEL_NULL(listener) + return ..() + +/datum/component/jousting/proc/on_equip(mob/user, slot) + QDEL_NULL(listener) + current_holder = user + listener = new(user, COMSIG_MOVABLE_MOVED, CALLBACK(src, .proc/mob_move)) + +/datum/component/jousting/proc/on_drop(mob/user) + QDEL_NULL(listener) + current_holder = null + current_direction = NONE + current_tile_charge = 0 + +/datum/component/jousting/proc/on_attack(mob/living/target, mob/user) + if(user != current_holder) + return + var/current = current_tile_charge + var/obj/item/I = parent + var/target_buckled = target.buckled ? TRUE : FALSE //we don't need the reference of what they're buckled to, just whether they are. + if((requires_mount && ((requires_mob_riding && !ismob(user.buckled)) || (!user.buckled))) || !current_direction || (current_tile_charge < min_tile_charge)) + return + var/turf/target_turf = get_step(user, current_direction) + if(target in range(1, target_turf)) + var/knockdown_chance = (target_buckled? mounted_knockdown_chance_per_tile : unmounted_knockdown_chance_per_tile) * current + var/knockdown_time = (target_buckled? mounted_knockdown_time : unmounted_knockdown_time) + var/damage = (target_buckled? mounted_damage_boost_per_tile : unmounted_damage_boost_per_tile) * current + var/sharp = I.is_sharp() + var/msg + if(damage) + msg += "[user] [sharp? "impales" : "slams into"] [target] [sharp? "on" : "with"] their [parent]" + target.apply_damage(damage, BRUTE, user.zone_selected, 0) + if(prob(knockdown_chance)) + msg += " and knocks [target] [target_buckled? "off of [target.buckled]" : "down"]" + if(target_buckled) + target.buckled.unbuckle_mob(target) + target.Knockdown(knockdown_time) + if(length(msg)) + user.visible_message("[msg]!") + +/datum/component/jousting/proc/mob_move(newloc, dir) + if(!current_holder || (requires_mount && ((requires_mob_riding && !ismob(current_holder.buckled)) || (!current_holder.buckled)))) + return + if(dir != current_direction) + current_tile_charge = 0 + current_direction = dir + if(current_tile_charge < max_tile_charge) + current_tile_charge++ + if(current_timerid) + deltimer(current_timerid) + current_timerid = addtimer(CALLBACK(src, .proc/reset_charge), movement_reset_tolerance, TIMER_STOPPABLE) + +/datum/component/jousting/proc/reset_charge() + current_tile_charge = 0 diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index a74b246282..d4e5240642 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -286,7 +286,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if(!user.put_in_active_hand(src)) dropped(user) - /obj/item/attack_paw(mob/user) if(!user) return @@ -400,6 +399,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) return ITALICS | REDUCE_RANGE /obj/item/proc/dropped(mob/user) + SendSignal(COMSIG_ITEM_DROPPED, user) for(var/X in actions) var/datum/action/A = X A.Remove(user) @@ -431,6 +431,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) // for items that can be placed in multiple slots // note this isn't called during the initial dressing of a player /obj/item/proc/equipped(mob/user, slot) + SendSignal(COMSIG_ITEM_EQUIPPED, user, slot) for(var/X in actions) var/datum/action/A = X if(item_action_slot_check(slot, user)) //some items only give their actions buttons when in a specific slot. diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index c11d41eaa8..58758668c3 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -429,6 +429,10 @@ var/obj/item/grenade/explosive = null var/war_cry = "AAAAARGH!!!" +/obj/item/twohanded/spear/Initialize() + . = ..() + AddComponent(/datum/component/jousting) + /obj/item/twohanded/spear/examine(mob/user) ..() if(explosive) diff --git a/tgstation.dme b/tgstation.dme index 737f7e8274..01dbb29b04 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -345,6 +345,7 @@ #include "code\datums\components\chasm.dm" #include "code\datums\components\decal.dm" #include "code\datums\components\infective.dm" +#include "code\datums\components\jousting.dm" #include "code\datums\components\material_container.dm" #include "code\datums\components\ntnet_interface.dm" #include "code\datums\components\paintable.dm" From 65412db421d2f5272aeeff2dc9d8f785c45db919 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Tue, 19 Dec 2017 14:34:06 -0500 Subject: [PATCH 90/94] Update game_options.dm --- code/controllers/configuration/entries/game_options.dm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 4fa6133883..2d96e3c64b 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -243,9 +243,13 @@ value = 14 min_val = 4 -CONFIG_DEF(flag/allow_crew_objectives) -CONFIG_DEF(flag/allow_miscreants) -CONFIG_DEF(flag/allow_extended_miscreants) +//Cit changes - Adds config options for crew objectives and miscreants +/datum/config_entry/flag/allow_crew_objectives + +/datum/config_entry/flag/allow_miscreants + +/datum/config_entry/flag/allow_extended_miscreants +//End of Cit changes /datum/config_entry/number/bombcap/ValidateAndSet(str_val) . = ..() From edbe78cce846c8cefb82b8e17bc7593a36ef85e1 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 19 Dec 2017 13:49:34 -0600 Subject: [PATCH 91/94] Automatic changelog generation for PR #4382 [ci skip] --- html/changelogs/AutoChangeLog-pr-4382.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4382.yml diff --git a/html/changelogs/AutoChangeLog-pr-4382.yml b/html/changelogs/AutoChangeLog-pr-4382.yml new file mode 100644 index 0000000000..64568eb274 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4382.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - config: "Added \"$include\" directives to config files. These are recursive. Only config.txt will be default loaded if they are specified inside it" From 16f1a07b9228aceda04f1b875179d8f7a870ccba Mon Sep 17 00:00:00 2001 From: LetterJay Date: Tue, 19 Dec 2017 16:41:09 -0600 Subject: [PATCH 92/94] diseases --- code/modules/events/disease_outbreak.dm | 68 ++++++++++++++++++++----- 1 file changed, 54 insertions(+), 14 deletions(-) diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index eb7625e08c..8f8ad97c0e 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -10,22 +10,30 @@ var/virus_type + var/max_severity = 3 -/datum/round_event/disease_outbreak/announce(fake) + +/datum/round_event/disease_outbreak/announce() priority_announce("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak7.ogg') /datum/round_event/disease_outbreak/setup() announceWhen = rand(15, 30) + /datum/round_event/disease_outbreak/start() - if(!virus_type) + var/advanced_virus = FALSE + max_severity = 3 + max(Floor((world.time - control.earliest_start)/6000),0) //3 symptoms at 20 minutes, plus 1 per 10 minutes + if(prob(20 + (10 * max_severity))) + advanced_virus = TRUE + + if(!virus_type && !advanced_virus) virus_type = pick(/datum/disease/dnaspread, /datum/disease/advance/flu, /datum/disease/advance/cold, /datum/disease/brainrot, /datum/disease/magnitis) - for(var/mob/living/carbon/human/H in shuffle(GLOB.alive_mob_list)) + for(var/mob/living/carbon/human/H in shuffle(GLOB.living_mob_list)) var/turf/T = get_turf(H) if(!T) continue - if(!(T.z in GLOB.station_z_levels)) + if(T.z != ZLEVEL_STATION) continue if(!H.client) continue @@ -41,16 +49,48 @@ continue var/datum/disease/D - if(virus_type == /datum/disease/dnaspread) //Dnaspread needs strain_data set to work. - if(!H.dna || (H.disabilities & BLIND)) //A blindness disease would be the worst. - continue - D = new virus_type() - var/datum/disease/dnaspread/DS = D - DS.strain_data["name"] = H.real_name - DS.strain_data["UI"] = H.dna.uni_identity - DS.strain_data["SE"] = H.dna.struc_enzymes + if(!advanced_virus) + if(virus_type == /datum/disease/dnaspread) //Dnaspread needs strain_data set to work. + if(!H.dna || (H.disabilities & BLIND)) //A blindness disease would be the worst. + continue + D = new virus_type() + var/datum/disease/dnaspread/DS = D + DS.strain_data["name"] = H.real_name + DS.strain_data["UI"] = H.dna.uni_identity + DS.strain_data["SE"] = H.dna.struc_enzymes + else + D = new virus_type() else - D = new virus_type() + D = make_virus(max_severity, max_severity) D.carrier = TRUE H.AddDisease(D) - break \ No newline at end of file + + if(advanced_virus) + var/datum/disease/advance/A = D + var/list/name_symptoms = list() //for feedback + for(var/datum/symptom/S in A.symptoms) + name_symptoms += S.name + message_admins("An event has triggered a random advanced virus outbreak on [key_name_admin(H)]! It has these symptoms: [english_list(name_symptoms)]") + log_game("An event has triggered a random advanced virus outbreak on [key_name(H)]! It has these symptoms: [english_list(name_symptoms)]") + break + +/datum/round_event/disease_outbreak/proc/make_virus(max_symptoms, max_level) + if(max_symptoms > SYMPTOM_LIMIT) + max_symptoms = SYMPTOM_LIMIT + var/datum/disease/advance/A = new(FALSE, null) + A.symptoms = list() + var/list/datum/symptom/possible_symptoms = list() + for(var/symptom in subtypesof(/datum/symptom)) + var/datum/symptom/S = symptom + if(initial(S.level) > max_level) + continue + if(initial(S.level) <= 0) //unobtainable symptoms + continue + possible_symptoms += S + for(var/i in 1 to max_symptoms) + var/datum/symptom/chosen_symptom = pick_n_take(possible_symptoms) + if(chosen_symptom) + var/datum/symptom/S = new chosen_symptom + A.symptoms += S + A.Refresh() //just in case someone already made and named the same disease + return A From 516db4851fac58836d26a3409150e1dd78ce65b6 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Tue, 19 Dec 2017 16:53:21 -0600 Subject: [PATCH 93/94] Update disease_outbreak.dm --- code/modules/events/disease_outbreak.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index 8f8ad97c0e..01f5c007cd 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -29,11 +29,11 @@ if(!virus_type && !advanced_virus) virus_type = pick(/datum/disease/dnaspread, /datum/disease/advance/flu, /datum/disease/advance/cold, /datum/disease/brainrot, /datum/disease/magnitis) - for(var/mob/living/carbon/human/H in shuffle(GLOB.living_mob_list)) + for(var/mob/living/carbon/human/H in shuffle(GLOB.alive_mob_list)) var/turf/T = get_turf(H) if(!T) continue - if(T.z != ZLEVEL_STATION) + if(T.z != ZLEVEL_STATION_PRIMARY) continue if(!H.client) continue From a59b693555456852e0e95915e79eebf238f68980 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 19 Dec 2017 17:01:56 -0600 Subject: [PATCH 94/94] Automatic changelog generation for PR #4458 [ci skip] --- html/changelogs/AutoChangeLog-pr-4458.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4458.yml diff --git a/html/changelogs/AutoChangeLog-pr-4458.yml b/html/changelogs/AutoChangeLog-pr-4458.yml new file mode 100644 index 0000000000..4e51890691 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4458.yml @@ -0,0 +1,4 @@ +author: "XDTM" +delete-after: True +changes: + - tweak: "The Disease Outbreak event now can generate random advanced viruses, with more symptoms and higher level as round time goes on."