From e50b7691c4aeacc35bd96a90cd007f1b0decee99 Mon Sep 17 00:00:00 2001 From: Fikou Date: Thu, 20 Feb 2020 22:19:43 +0100 Subject: [PATCH 01/54] the basic, need fluff and sidesprites --- .../mining/lavaland/necropolis_chests.dm | 2 +- .../living/simple_animal/guardian/guardian.dm | 46 ++++++++---------- icons/mob/guardian.dmi | Bin 57311 -> 60257 bytes 3 files changed, 21 insertions(+), 27 deletions(-) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 5b37d8b5265..3d2dfb8fb84 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -49,7 +49,7 @@ if(15) new /obj/item/nullrod/armblade(src) if(16) - new /obj/item/guardiancreator/hive(src) + new /obj/item/guardiancreator/miner(src) if(17) if(prob(50)) new /obj/item/disk/design_disk/modkit_disc/mob_and_turf_aoe(src) diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index dbb8ff45980..062ad7109b1 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -45,7 +45,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians hud_type = /datum/hud/guardian dextrous_hud_type = /datum/hud/dextrous/guardian //if we're set to dextrous, account for it. var/mutable_appearance/cooloverlay - var/guardiancolor = "#ffffff" + var/guardiancolor var/recolorentiresprite var/theme var/list/guardian_overlays[GUARDIAN_TOTAL_LAYERS] @@ -87,7 +87,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians /mob/living/simple_animal/hostile/guardian/proc/updatetheme(theme) //update the guardian's theme if(!theme) - theme = pick("magic", "tech", "carp", "hive") + theme = pick("magic", "tech", "carp", "miner") switch(theme)//should make it easier to create new stand designs in the future if anyone likes that if("magic") name = "Guardian Spirit" @@ -103,6 +103,13 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians icon_state = "techbase" icon_living = "techbase" icon_dead = "techbase" + if("miner") + name = "Power Miner" + real_name = "Power Miner" + bubble_icon = "guardian" + icon_state = "minerbase" + icon_living = "minerbase" + icon_dead = "minerbase" if("carp") name = "Holocarp" real_name = "Holocarp" @@ -116,18 +123,6 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians attack_verb_simple = "bite" attack_sound = 'sound/weapons/bite.ogg' recolorentiresprite = TRUE - if("hive") - name = "Hivelord" - real_name = "Hivelord" - bubble_icon = "guardian" - icon_state = "hivebase" - icon_living = "hivebase" - icon_dead = "hivebase" - speak_emote = list("telepathically cries") - desc = "A truly alien creature, it is a mass of unknown organic material, standing by its' owner's side." - attack_verb_continuous = "lashes out at" - attack_verb_simple = "lash out at" - attack_sound = 'sound/weapons/pierce.ogg' if(!recolorentiresprite) //we want this to proc before stand logs in, so the overlay isnt gone for some reason cooloverlay = mutable_appearance(icon, theme) add_overlay(cooloverlay) @@ -143,11 +138,9 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians to_chat(src, "You are capable of manifesting or recalling to your master with the buttons on your HUD. You will also find a button to communicate with [summoner.p_them()] privately there.") to_chat(src, "While personally invincible, you will die if [summoner.real_name] does, and any damage dealt to you will have a portion passed on to [summoner.p_them()] as you feed upon [summoner.p_them()] to sustain yourself.") to_chat(src, playstyle_string) - guardiancustomize() - -/mob/living/simple_animal/hostile/guardian/proc/guardiancustomize() - guardianrecolor() - guardianrename() + if(!guardiancolor) + guardianrename() + guardianrecolor() /mob/living/simple_animal/hostile/guardian/proc/guardianrecolor() guardiancolor = input(src,"What would you like your color to be?","Choose Your Color","#ffffff") as color|null @@ -465,7 +458,8 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians to_chat(src, "Your [G.real_name] has been successfully reset.") message_admins("[key_name_admin(C)] has taken control of ([ADMIN_LOOKUPFLW(G)])") G.ghostize(0) - G.guardiancustomize() //give it a new color, to show it's a new person + G.guardianrecolor() + G.guardianrename() //give it a new color and name, to show it's a new person G.key = C.key G.reset = 1 switch(G.theme) @@ -733,17 +727,17 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians /obj/item/guardiancreator/carp/choose random = FALSE -/obj/item/guardiancreator/hive - name = "mysterious core" - desc = "All that remains of a hivelord. It has a mysterious aura around it..." +/obj/item/guardiancreator/miner + name = "power core" + desc = "Seems to be a very potent power core, may have originated from a strange meteor." icon = 'icons/obj/surgery.dmi' icon_state = "roro core 2" - theme = "hive" - mob_name = "Hivelord" + theme = "miner" + mob_name = "Power Miner" use_message = "You place the core near your heart..." used_message = "This core seems to have decayed and doesn't work anymore..." failure_message = "You couldn't gather any mass with the core, maybe try again later." ling_failure = "Even the dark energies seem to not want to be near your horrific body." -/obj/item/guardiancreator/hive/choose +/obj/item/guardiancreator/miner/choose random = FALSE diff --git a/icons/mob/guardian.dmi b/icons/mob/guardian.dmi index cce3aa7f01ceb1b619fb1e65f62fcd03a1ec71e1..0c3b74a4abbcd96fc4d1f15f13f4705463275536 100644 GIT binary patch literal 60257 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 literal 57311 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

QDw0)L_ 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 hkG8mf*W&}@-o=;I)bl)AHVg47MG~i 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 Date: Sat, 22 Feb 2020 22:45:14 +0100 Subject: [PATCH 02/54] sprites, will try to finish this pr tomorrow --- icons/mob/guardian.dmi | Bin 60257 -> 59583 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/guardian.dmi b/icons/mob/guardian.dmi index 0c3b74a4abbcd96fc4d1f15f13f4705463275536..ab6cfb718ec04ac9c622e196f2ddbb0df42da6c3 100644 GIT binary patch delta 19755 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 DMPwU8 delta 20434 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 Date: Mon, 24 Feb 2020 21:11:27 +0100 Subject: [PATCH 03/54] miner holoparasite --- .../living/simple_animal/guardian/guardian.dm | 32 +++++++++--------- .../simple_animal/guardian/types/assassin.dm | 2 +- .../simple_animal/guardian/types/charger.dm | 2 +- .../simple_animal/guardian/types/dextrous.dm | 2 +- .../simple_animal/guardian/types/explosive.dm | 2 +- .../simple_animal/guardian/types/fire.dm | 2 +- .../guardian/types/gravitokinetic.dm | 2 +- .../simple_animal/guardian/types/lightning.dm | 2 +- .../simple_animal/guardian/types/protector.dm | 2 +- .../simple_animal/guardian/types/ranged.dm | 2 +- .../simple_animal/guardian/types/standard.dm | 2 +- .../simple_animal/guardian/types/support.dm | 2 +- icons/mob/guardian.dmi | Bin 59583 -> 35340 bytes icons/obj/lavaland/artefacts.dmi | Bin 26212 -> 27124 bytes 14 files changed, 27 insertions(+), 27 deletions(-) diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 062ad7109b1..0b973774933 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -54,11 +54,11 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians var/mob/living/summoner var/range = 10 //how far from the user the spirit can be var/toggle_button_type = /obj/screen/guardian/ToggleMode/Inactive //what sort of toggle button the hud uses - var/playstyle_string = "You are a standard Guardian. You shouldn't exist!" + var/playstyle_string = "You are a Guardian without any type. You shouldn't exist!" var/magic_fluff_string = "You draw the Coder, symbolizing bugs and errors. This shouldn't happen! Submit a bug report!" var/tech_fluff_string = "BOOT SEQUENCE COMPLETE. ERROR MODULE LOADED. THIS SHOULDN'T HAPPEN. Submit a bug report!" var/carp_fluff_string = "CARP CARP CARP SOME SORT OF HORRIFIC BUG BLAME THE CODERS CARP CARP CARP" - var/hive_fluff_string = "The mass seems to be an anomaly, it shouldn't exist... Submit a bug report!" + var/miner_fluff_string = "You encounter... Mythril, it shouldn't exist... Submit a bug report!" /mob/living/simple_animal/hostile/guardian/Initialize(mapload, theme) GLOB.parasites += src @@ -469,8 +469,8 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians to_chat(src, "[G.real_name] has been summoned!") if("carp") to_chat(src, "[G.real_name] has been caught!") - if("hive") - to_chat(src, "[G.real_name] has been created from the core!") + if("miner") + to_chat(src, "[G.real_name] has appeared!") guardians -= G if(!guardians.len) verbs -= /mob/living/proc/guardian_reset @@ -607,9 +607,9 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians if("carp") to_chat(user, "[G.carp_fluff_string]") to_chat(user, "[G.real_name] has been caught!") - if("hive") - to_chat(user, "[G.hive_fluff_string]") - to_chat(user, "[G.real_name] has been created from the core!") + if("miner") + to_chat(user, "[G.miner_fluff_string]") + to_chat(user, "[G.real_name] has appeared!") user.verbs += /mob/living/proc/guardian_comm user.verbs += /mob/living/proc/guardian_recall user.verbs += /mob/living/proc/guardian_reset @@ -721,23 +721,23 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians use_message = "You put the fishsticks in your mouth..." used_message = "Someone's already taken a bite out of these fishsticks! Ew." failure_message = "You couldn't catch any carp spirits from the seas of Lake Carp. Maybe there are none, maybe you fucked up." - ling_failure = "Carp'sie is fine with changelings, so you shouldn't be seeing this message." + ling_failure = "Carp'sie seems to not have taken you as the chosen one. Maybe it's because of your horrifying origin." allowmultiple = TRUE /obj/item/guardiancreator/carp/choose random = FALSE /obj/item/guardiancreator/miner - name = "power core" - desc = "Seems to be a very potent power core, may have originated from a strange meteor." - icon = 'icons/obj/surgery.dmi' - icon_state = "roro core 2" + name = "dusty shard" + desc = "Seems to be a very old rock, may have originated from a strange meteor." + icon = 'icons/obj/lavaland/artefacts.dmi' + icon_state = "dustyshard" theme = "miner" mob_name = "Power Miner" - use_message = "You place the core near your heart..." - used_message = "This core seems to have decayed and doesn't work anymore..." - failure_message = "You couldn't gather any mass with the core, maybe try again later." - ling_failure = "Even the dark energies seem to not want to be near your horrific body." + use_message = "You pierce your skin with the shard..." + used_message = "This shard seems to have lost all its' power..." + failure_message = "The shard hasn't reacted at all. Maybe try again later..." + ling_failure = "The power of the shard seems to not react with your horrifying, mutated body." /obj/item/guardiancreator/miner/choose random = FALSE diff --git a/code/modules/mob/living/simple_animal/guardian/types/assassin.dm b/code/modules/mob/living/simple_animal/guardian/types/assassin.dm index 44c2ab2e8e1..01f101c6455 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/assassin.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/assassin.dm @@ -10,7 +10,7 @@ magic_fluff_string = "..And draw the Space Ninja, a lethal, invisible assassin." tech_fluff_string = "Boot sequence complete. Assassin modules loaded. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! Caught one! It's an assassin carp! Just when you thought it was safe to go back to the water... which is unhelpful, because we're in space." - hive_fluff_string = "The mass seems to be able to attack with stealth causing massive damage." + miner_fluff_string = "You encounter... Glass, a sharp, fragile attacker." toggle_button_type = /obj/screen/guardian/ToggleMode/Assassin var/toggle = FALSE var/stealthcooldown = 160 diff --git a/code/modules/mob/living/simple_animal/guardian/types/charger.dm b/code/modules/mob/living/simple_animal/guardian/types/charger.dm index 12463e0bc6c..93b0c555fbe 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/charger.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/charger.dm @@ -11,7 +11,7 @@ magic_fluff_string = "..And draw the Hunter, an alien master of rapid assault." tech_fluff_string = "Boot sequence complete. Charge modules loaded. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! Caught one! It's a charger carp, that likes running at people. But it doesn't have any legs..." - hive_fluff_string = "The mass seems to have primal senses, rapidly assaulting its' enemies." + miner_fluff_string = "You encounter... Titanium, a lightweight, agile fighter." var/charging = 0 var/obj/screen/alert/chargealert diff --git a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm index 182f45703c0..d07fb00c619 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm @@ -7,7 +7,7 @@ magic_fluff_string = "..And draw the Drone, a dextrous master of construction and repair." tech_fluff_string = "Boot sequence complete. Dextrous combat modules loaded. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! You caught one! It can hold stuff in its fins, sort of." - hive_fluff_string = "The mass seems to be able to... hold stuff?" + miner_fluff_string = "You encounter... Gold, a malleable constructor." dextrous = TRUE held_items = list(null, null) var/obj/item/internal_storage //what we're storing within ourself diff --git a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm index f1e38dabbb4..3a317b4143d 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm @@ -14,7 +14,7 @@ magic_fluff_string = "..And draw the Scientist, master of explosive death." tech_fluff_string = "Boot sequence complete. Explosive modules active. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! Caught one! It's an explosive carp! Boom goes the fishy." - hive_fluff_string = "The mass seems to generate explosive energy, destroying everything in its' path." + miner_fluff_string = "You encounter... Gibtonite, an explosive fighter." var/bomb_cooldown = 0 var/static/list/boom_signals = list(COMSIG_PARENT_ATTACKBY, COMSIG_ATOM_BUMPED, COMSIG_ATOM_ATTACK_HAND) diff --git a/code/modules/mob/living/simple_animal/guardian/types/fire.dm b/code/modules/mob/living/simple_animal/guardian/types/fire.dm index 641e9664e94..1b50d1ad95c 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/fire.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/fire.dm @@ -12,7 +12,7 @@ magic_fluff_string = "..And draw the Wizard, bringer of endless chaos!" tech_fluff_string = "Boot sequence complete. Crowd control modules activated. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! You caught one! OH GOD, EVERYTHING'S ON FIRE. Except you and the fish." - hive_fluff_string = "The mass seems to generate lots of energy, causing everything except its' owner to burn to ash." + miner_fluff_string = "You encounter... Plasma, the bringer of fire." /mob/living/simple_animal/hostile/guardian/fire/Life() . = ..() diff --git a/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm b/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm index 768c50e73ee..4183e056a56 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm @@ -7,7 +7,7 @@ magic_fluff_string = "..And draw the Singularity, an anomalous force of terror." tech_fluff_string = "Boot sequence complete. Gravitokinetic modules loaded. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! Caught one! It's a gravitokinetic carp! Now do you understand the gravity of the situation?" - hive_fluff_string = "The mass seems to be extremely heavy, and able to relay the heaviness to others." + miner_fluff_string = "You encounter... Bananium, a master of gravity business." var/list/gravito_targets = list() var/gravity_power_range = 10 //how close the stand must stay to the target to keep the heavy gravity diff --git a/code/modules/mob/living/simple_animal/guardian/types/lightning.dm b/code/modules/mob/living/simple_animal/guardian/types/lightning.dm index 62eb1a54300..a70bf4edae2 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/lightning.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/lightning.dm @@ -16,7 +16,7 @@ magic_fluff_string = "..And draw the Tesla, a shocking, lethal source of power." tech_fluff_string = "Boot sequence complete. Lightning modules active. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! Caught one! It's a lightning carp! Everyone else goes zap zap." - hive_fluff_string = "The mass seems to cause lots of thunder strikes around itself." + miner_fluff_string = "You encounter... Iron, a conductive master of lightning." var/datum/beam/summonerchain var/list/enemychains = list() var/successfulshocks = 0 diff --git a/code/modules/mob/living/simple_animal/guardian/types/protector.dm b/code/modules/mob/living/simple_animal/guardian/types/protector.dm index b90e99de0e2..bb2682c464d 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/protector.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/protector.dm @@ -8,7 +8,7 @@ magic_fluff_string = "..And draw the Guardian, a stalwart protector that never leaves the side of its charge." tech_fluff_string = "Boot sequence complete. Protector modules loaded. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! You caught one! Wait, no... it caught you! The fisher has become the fishy." - hive_fluff_string = "The mass seems to be extremely resistant to damage and have a special connection with the owner." + miner_fluff_string = "You encounter... Uranium, a very resistant guardian." toggle_button_type = /obj/screen/guardian/ToggleMode var/toggle = FALSE diff --git a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm index 996b21e8eb4..034943b0cc3 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm @@ -22,7 +22,7 @@ magic_fluff_string = "..And draw the Sentinel, an alien master of ranged combat." tech_fluff_string = "Boot sequence complete. Ranged combat modules active. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! Caught one, it's a ranged carp. This fishy can watch people pee in the ocean." - hive_fluff_string = "The mass seems to be able to create more mass and also hide at will." + miner_fluff_string = "You encounter... Diamond, a powerful projectile thrower." see_invisible = SEE_INVISIBLE_LIVING see_in_dark = 8 toggle_button_type = /obj/screen/guardian/ToggleMode diff --git a/code/modules/mob/living/simple_animal/guardian/types/standard.dm b/code/modules/mob/living/simple_animal/guardian/types/standard.dm index 357c593695b..43b741b2fa4 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/standard.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/standard.dm @@ -9,7 +9,7 @@ magic_fluff_string = "..And draw the Assistant, faceless and generic, but never to be underestimated." tech_fluff_string = "Boot sequence complete. Standard combat modules loaded. Holoparasite swarm online." carp_fluff_string = "CARP CARP CARP! You caught one! It's really boring and standard. Better punch some walls to ease the tension." - hive_fluff_string = "The mass seems to have immense strength and increased agility." + miner_fluff_string = "You encounter... Adamantine, a powerful attacker." var/battlecry = "AT" /mob/living/simple_animal/hostile/guardian/punch/verb/Battlecry() diff --git a/code/modules/mob/living/simple_animal/guardian/types/support.dm b/code/modules/mob/living/simple_animal/guardian/types/support.dm index 4cc09b47598..368a993ed8b 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/support.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/support.dm @@ -11,7 +11,7 @@ magic_fluff_string = "..And draw the CMO, a potent force of life... and death." carp_fluff_string = "CARP CARP CARP! You caught a support carp. It's a kleptocarp!" tech_fluff_string = "Boot sequence complete. Support modules active. Holoparasite swarm online." - hive_fluff_string = "The mass seems to have regenerative powers, while also possessing strength." + miner_fluff_string = "You encounter... Bluespace, the master of support." toggle_button_type = /obj/screen/guardian/ToggleMode var/obj/structure/receiving_pad/beacon var/beacon_cooldown = 0 diff --git a/icons/mob/guardian.dmi b/icons/mob/guardian.dmi index ab6cfb718ec04ac9c622e196f2ddbb0df42da6c3..2bcecd3e865c3ccc0f822a5b37ca0c2d1443918c 100644 GIT binary patch literal 35340 zcmXuL1yoe;_dR^+Zj|m4kQC_#1rz}R=?3ZU9ER@hZjcYs-CfckAl)Sm0zsZ&n!FEh3ahnXCMTqf_ci$b5kEJChRf%{Cj|Ji z^t(Pch!*>_9kD66r1#R^|A~J{{a1exD!MBU8T0D$&}%|#s-mjx$eqIyPHsQ{B)5T! zPvKKL@aS61<0J^Wha8_uaM`CUOtef8KDrgxyiJ!YxQQTUGJdGBkxw!(l$>yl^XgWv z{ppat$|b*+<@PQkwxQlye9M{Q>fOHB>Nlk%E&Dh}iuaX`Nk;TBRJpk}i^WMjjO;2# zN|W!8pJEi;<`>o!ZEVr3FXW7~P4itl@kiS;)}7Nj|GXzx5cxMK0fE<>d^UTB=%oSx z)PS6{gsOYyk&lmtih9SDAPrm~fFDauOPxy#fwGy`BWc$)O3mtJzAl;5V!Lz|9Q6?@ zpNVUp8Pu}$@uJ97^Ad6@znWXr8dS(4$-3)y*0MnIv#dfYBc}Gl{eYGV$f3qoUOqW2 z4<^J0($gE1RO|^T#wYk(FYeK6YVI}qdfEM*Q4~W0+OGe)k^+Gn-Dgby7A1hLk;(_A z{*`B`Ew^B*U$<);o$atw1Me=BR2<)#V*I*#zJLZqSW+x{m4VhK=F8%AZ!}2ggOF?D zM)fQb0PXa4BowQ=?CkZuKl6$ZX_0p~}xVp3kM@vmrrre5EWXY6O#nHOu1mush@-JdGB`0%TPH_H zrElN*PcDloya8S+h_rN*C@n2HP-RshOfUTp6EnTt-Ow!DkDNZ~Q;>y)g{N6%76l66 zb=}75eZ7#ASKgksGPslTp7l7mglPlq`pAQCQTHiGqBEPHfnfg!$~g98N6L|%xq0ZH zs|OYMi@TskQJ(K6CjX+GGg}|V9yId+&R*~4wb^Fr4ex^;>krjSvfH( zEjAZz<}d#8rroeb#A@xJ2n2W&CBWY#OW3=I9O>Z3%#D4>Z9CbHe|xM}3=xTlXY>R#m*hz=m$ zksNtL>`;NWGa)(-J~uQLR@R_G9a~#=)n79`x}9is@LhpJX5unFn0LrsG5+ysM$DGA@(nav)pe^kZwUA_fpZnktN=q4azh22|}G3Eqv( z>*0IDhV>U5J2`yh&dO5sW87Ug;Lr_zk^LUMsuiPhgRymYWiG@uxm&22Ul9uZL>r@MXCWl{DD;GI$2 zK(AhB>cQ?|%`3gkk9?uQLJU=a;_tMmB!RePZZ(C-L`RJ?>bObJ}=`y3hg5 z0g~7}JX6G`{c^^zv@P0E4TP;emRqoUZNw zU!%_F?JFjnI%If&LZy$qak6z{Eyup^*+=^G=ZLW__uSfA0)W%!&Ut9ZaeI5aO7f@z z^>T=y-4)kg{FmtxOfB3n_d`fSayx1i1o`*aG;#o3b91x%QT1SKMg~TJA6GLW&dVtq zHZQKp{N8~^Wz1_Aba>{FMh(wnYJWy0IOYf~saFP1S%3Is9SGfoJ9p#S@u~p!p(GZFA+lBPdo6b*o4eOcl-{ad^6{htw+oHEK0cdgu+7fVz(mN&hme<{VU zS5GDSp9l$&5YPM|0oaP=`VlFOZGk0ol^;4KLI6=Gn;(C2xOYzB^o}8a43}&NPdi)x zXtiWTM@0oOf5L3m!B$BmuCA^IkF9h*le<1(VPWyJB^Bi58Oq-tPc1B1TryD~&l>jz zWBnwfMDsqu@M=T{p3hrNdZ~EpgNHJ%X+0c>e;82w^W3#%RkBAy4nXp3r&P74W|YSX zXfx$7DoEV|CMt$ypP%;r{#WqYWTlL=-p*o1osl^8-!v)`twAFuV67*1xFmRylq!IymvdDrkWh*d zfQ;bmNioVu8ut;SwwL^$SH@4*%NkMN8F*^u74CslDf=Ywxi`)?XjSyxa^t zBT-+!n_MXh?w9X1QWGzml`NR*GD6<3^h>UwNbOJ#Tx-~~@_u}zQnY4UQ7D_W1al<~ zCk@GCEfMv>*&wI-iBOjs9unaZEQ3ImJBKOhG z``XUQ^S~a={VPvt8LRU{B9!y#U4#8AVbmZJ_iG}owr3p_)_w#;zlM2(`Hvo`9(u4c z&X6dy^!2-zuY}YB`V=l}J~sld=HHo(OMm@6jPlh-aObi=IHjQO?}EDmulY z@}Dm;E6Q59{D=^Z&EOf&wgG6)gUNf>$I}_vy+?9FJAPla^-H|%TO{G**tMrrK-9i{ zEqpXm)_Xpc5*_$gRPa0DFk9TlhK(!$;i8_E zL`bcRKg!C+7NlGns9f3?CevVeLX`~4y$ohI~%3z~UvI)O)PbwnuZl77Jbr20SmXq^SZKAjqG^#8acu2AC>O`6jTN7a1 z4tVe|LUgtAzI5Zk$jYzj;xhBaJiGKu4Ld}eVZGi;DZ2~~uP`za^W~CzWkfVzGc%?>BQ8MP@d%Z%o_W&eT-%ijn8UjN94My^ zszOBeFG`-xb?w zbcF~q9R5A(q+E2ZL_LTY_*|A$0 zS_)4Ni83#ja@4^f)_!%6mz*a$+QN!P#Bl}Xo!OrKE&jjYK&V|l4Q^nrj1z^Sp=7E&4;aCMS(I^cT$~x^;OVLp_2x75k(}?DaKI0# zcZD}~Eyvzy`>C{m!B#tP7SF9OrBk)@nVN?lb9!VfG(6nDf3$C7*7AMv08@_U4TpwXLN(rgG&ZIKJ{~3RS!&=Zm#U)5%LX^q z5=@9ShCvRGDGFXoRKOg$EXKV}9*&TB+FCL8I|fcpkB$OK&JprDiOw< z%Ksyzp$LzSC25I$`6Cp?lh^_C3kHI%Fg5_&vLoh#JatC4(a1}E|ISb>pT_-@b{9nm zi{qgp>Sl0_yN8U{NSbJhs&{hqcl&ucA;KgBxf)zBXxG8dU%SdGJ1jkRlGO7vvnJ=t zE4B2%7l3jKQ*_fMtqLOx8fx~?QR@x-RydCLO{B-vW{~^$LG9l)UPNaBlEg#=g!t&j z>P&hI=gBYUk`b^b433wd!vJWLhdf0N z!K1^&^$Q~_|0orRI(Qd9<(ePmX7h@!ErOE($Q7si>riXv>mT&8GPlJxya2K5R}MVz z6yd3e2*ju}lAVtK>KpWZBAA|@#_cM>?HU}DL8p4YRcsPsC9wL>;DP_9_$)k4(Edoo z08Yit0<6)wtH%?*!V(|in56`zXWRasQqt6xbSk5at3c?=Fl{xNHr6TxYLf!2=;;uSdhiq)=$ zK>`IbIMYm4TfzDEeN}|vh~Bd!4(GPHXmR;8c+dxsC@3g^;`O4jJlIJq#M#-oDt~zq zFOZa6yoz*cXKasLc;>};_BkR-&RsVc4bLIW?4TecU2y24lRlg+8I5qLKPf`Dw?;xgXCOfxrs>Z0i_;Rh?nhBR za~g0Vh%nu#jHFa{t;fPWJ|gdz!|k7%u^+}zYDE(;U8}?~d(`zK@*eu-zUP0OW5f7M zaS;;4m6r#$6{@PL)Epc*PS0nAgy=~3>1-)wTSZxvb@A?;xS`*ln^m{uM&~IB5jiuU z8V-C}x7q1Jj;M@0Nvzc`u0)0pt4mQfl{$L4V)9mAB{9=CFTP9NE?o z9Km3#%OTrTyZd?mjNqqFywy8H4mvVN*v}r9zBh2m)(cuGs z+&Q|oPw|P!!O&qw57AkTnw(U+CcV13F}~Q=Ks;k6yZP)0g=1tN{k^i4=zB0-gc~Le z{=8vf>FMxkv`vW!54Zl6CFp`a&9IK8HlUTVHi{tHHc^{eDH31YPsh(sEY3;$;h@R; zmRry+czSpIb0f3c)!%RX3aRe9-}2@T_%5N^Ph&6F51IY52c~zNJ>?e@V8}s6f9m0#pW{|BfCaqBnn1qRcMBN8q)cLFNsGvg`cdP930Ts*9QPR zq-amDHA6M!6EVobI6+t{%s^e8NLg8#I%VX4SDR+vKmUy;=X7WzV)x!tqgZx)31DW{ zB|Pz&lV%KM#y9-2H~>?kb}-Cal+x!cTij5Zp0S_XFysas61kVNhzV%8-mo0qZr{KT z76%tRDSbHk&i<&o3=sTclQMF6O9ccYNA1SJ4#|ieB2)3BO9|3wN{KkQXg~3h=W%m$ zE2-$RhT;uUi;8BOA>vX|O(cBE`1yXe-d~`0FO8HmS}A2lJqW%llO%Fq@1VZQg$alE zS|1?)sEujcnhzyT||Ec6V;;*1FhVCYIESj5y&WOhFZDQk4|uZ>2w z0)WaE0UY4_c&P92rYfnPP%#UOTl8+f07%vFFdfk4_k9vZXN`|4WnT4t9>kC~2~EY5 zK?8_Z?-5u%=@GepvkwN{JfpOoSp9qhXYby|_aF^B8d={J#mA;zE^KRjpv$YSo?=9l z=+pP8K$c{UaoCO#*;dmPKEbf9sA#K~`?J{XJ-F>Cu-`rMqrChBXgjF3NN-_6ds!Jq zeSLi{3WpTCnP@JUwTHAb0SA)MajR~C96 zVmyLg#LYj%AhPQ=s;2(#$n(8gV{&B$$-x?vmN6JjQZk_1O7zo*l}HqQ+Y`Tz&m(ik ze;;m+mqOy>@nz}pO;P$6x=`)pnjN+>E4!QeRs zx=jcG5fR;3S<9E>Q|u`EfIKQ1dGg*Nn^>c~wpRkDDsdzr8gv(IcXqWvO8$7iX1`-8 z1mfxh5@#ojb(JQ^dJ386Cq8eV2IMQOHEO6L4Y;D=y4cWT@#O5@$q8xtVD8T!)Osx} zTbcAvMUprDb|i5T!+na_lrpOFjK3}4w{SqLwnW!Fy-W!Bpi6jRXb+}FzK!HRd3Ht=j+#&4w~8uyP;A7#^cYw-(NHRCB2`8 z!$VEU#+Lt*#@=*T(TW5wK`kjM8JCdIOGZrGH5rSCfPgSGJiHMU7$`}N+NbNb!X^t| z`?5wAMY_tR+35+Pq+BgaVKAK4d>ncGY@>Jbz}Z?LO97?7`EXrO|9)a}Y8NwL#NrUz zje78%WR$VXdfS>&+*30cE+CGL&ww+(u?yO~w@Y1LLpnRN7ai_v4jm|pP~HF^c~C0E zh_sKL5ZuQ*3G!bSSV!|Xo68G=8l!xj>U?|=X#>r*F1$N;R{>!2j|!8p&N?}Z>EFdH zoEcl)z~e%&Z65wE)VL85l~HZI$D8qZo&QDfsOidUWMZWeJW%&|336TbQNh0Sv7Es^ zdvsk70&M~`5VT;O{kH)!qKWB$fzRbJ&6?WlbD}G5FQlI@*7HVP+|Uh_kHzV!WtbL8bI{kkc00KD`0YD1^M}@Z{w`4;3Z;#^Ye26y1i{e z3H-ahre*M9M*^4+oJx5Q7z7!DJSyw!X9eH;g~c(F9U^RPZoL7BEyhvT=T_uhU3q(Y zdmSwMnXljJwKy}^X|b`eu!w){GANo|JpJAf@GkbN{ke*9_ui$$RgSvmQ=!EbG-2lD*7yCulSTVGkCt|Ks)&ft=hN0t;N#vSEkWe0<& zK(|#Q{9{a6DbI_HfYh%>_oEXqqUDx(WkI!F>90XcY{^ewPwy@6JC%fty1R zv%%OYt45(t)>uDABd&LMmHGKS9|PfX@8bz!=PS1J7F*Dn>FF1$Fk!f_W#Jh{k%00* z)%ls1hxtumVPTgEcV3B1pDkko8Z$Gqxw6uFGL!8e6K)zlzWL(XaXfN?_2_7;UUE)A zK1VcwDT!C}IA(HyzufHy1*Y;Xdwqc3u;98lxHlfkMKl#{wdbFFvx%LGdIGNmm0ri`WPBW zKqoB;`uX6j6+8qAT<(r-g-O${_Jt96w70i|&3In%m(Rt(dUt;_0JWHjFHKD){;#o- zh=569`{lwmk4yIl08X$%k3eITNBgD^HBJRj<1V9!6nOLYZJ=7&2hg&u7WG<$uV2^f zG;JPMTv8m|4SxGFoBD;PSmDb6v^(%kT>7ao3{1p5G6Lvf#|I%V}if64&MVzF}q6y zgQ#~ipUFU&g0pdJWP#ehadlM!&+WgH{|0mBE1)f9*)D107m#l(Nnb+#nBT(vIYS_R z-^oOMwX?H>h2d-M;ZZL0oX?A`Q8FX(hLDzzk0>cAiEq!b=?bEymEKWPqb$4YJ9&78 ziynlEh9&_vyG`#T;pBNgBuM^Boy3;^1%^nu+Hu!{%|`}#G@-UQAYCsg*Y zvR}RgO_>M2`iSbE*;vr1SYT&qiO}akzoO(Ci7<8 zwH4z7lXG*Q5TLV`{kMm8N%J0*fD;n|F+KFZ!xr&8rBu^#lMq&+%peAH_@K77HnRTy z{wb3ulp^J@z(7Q>@sFqS4iFlWB%rjtN^-(T7dO;$?1=)K*{RRTZ%M8xgnaIJiW!)e z*Q4#p(9tePeC=|OAA{cr*F)H_DTUpg*h92WC$bZYpJ5Ze_!YXX$rS!?@xyQ_DWd~W zaEz|WmrkF{R&cD~Vag5O;8HjRFJNE|PRP+&2Ny*anF=>{z5-eQhw6WZc|l82YZSP7 z3|DZC)4csg)q^BNyx2_z1p!%ma0bN-bPn1zMf4ND)z#D_E9ciRW%j>nYKDPKtml1= za%rNAHpr@hZRq;ArU8x&Hf+i65aCGojLfdhg7QGXp>qwQO|@QuaH4i4UP%$?5E^U| zI*`Q9Siuk;-8(?FLV*PwUY^R>*kB=F3Cc%?cIE1YEH0A%oam$is?KHHWFqp@tixD! zEmMQdi9^iy>jU=Ht_&oV0*6U_w-`z%jfx$v{<^4WXH3(#FI(4yzB9x#^Dp+Z8~3&P z#!{&f;O{@h*e-2s4%ke8c2-j2O#H<<_j0nx0!mH?uCTOHNw3grx2;LF;L(dmC*zRI z5;So1Inn*s6}7o(^d{+(iJ6&HscL>x6Y&kZXV*vXS;LLFA*!9NW(2A*a)EMi42fPiwH`89LQ~y2~pAa4thB{?WI)^b~!6$fR&mFt;0y6xM-|rDQJ!X z`{I^2JENC?{Z@lXMl!$3^9Bma)JlIOUQDDYWo z^8V9}?^}v0t@4Hgoto38#k)lbQUgZ_NG!z0#dX^*`{5Uo+m}g2X_wSS2A=P_5nW%w zjdsO=4RqhYfTs@C1SCYEL<&TyU;`POl=S{>gv9D1eJ1yJbTC~{&CUja>6-CoUZVNu z&$l4L%quI4aOuo8l^D&*u_!Gq#a1d6l;Cx%rDoSLM@l`qDuIi{8c9t2d)ncg z>tEr%d7a*Yxcv`YY1MffFS6={t+R>BPKn0<2%aDA$odqbds}Sm5DfYR`Bg*hI?D&a z1%3U4lL!G?=}r3T4>vn+2S833x*&{L>w)?Z`OR7ObceF$t1vZKrCrTNr{*Bm=6|iWIuvnY(21sXR`sPgu%{&asU`3>0-UhQ z@p~zdB8OnU;MM>sN9rxB~pyisk(w^?C)uNK4|E|_^~Mj0|~Pp zb+G+JT;ea|+}3>f{QdnWr=}!OkdSB~zf^zAjR!~?$Uhb^{ht;9r}0Ue=XzwU&VDTY zJ;)bpy6s^~A@KZX)ftJ6fe|20YiQgF*u!FSdcJ0Jd_hQOUQZ&{53) zR2)m)N_<|tVx0m3Z-t&AqaFz-=NgrVEgAXFZF(fns0adT%K-=~bcp|gOT2wLzinNU> z5LI}e!H<|th$&~t2=O5`Vp+d^C??yz@KD~XinD(i)!Xhv`&{hC?{Gk>4rB$LU0k|N zxT{GBNJvKCS}f1Pk zrIwM2=~7EuyWGac1~nU($2wG7MI|A2^xI^~tT?0H$Gan*_HFC-USfNfr)&( z>9S?{Z`tDj#0EbqD?_vj{D)0?)(K4cM_gmaGm6q!lfo-h@KOau(4>x!c`wlh`}%Uh z9vnHqFG~d;A^J9eQ7Khq@cLeHvjwE;Q^9Zzm8SK6y4{Psry!TM=S*OISP#Gf=Xkj- zEn2eCwK}P0^EW@>a)Oz~ONnib27TQq9yg$=)#zwvr(*o?d#; zn2K`rS(E2iKgzB|eK}1!4E=$FiD~e7cV%v2A)%u~zB`&0@cXxFrr3nD_m^y8l8jZ> zc^ffhw_bkdGIlqZ+)pKTb%SpI53nhzktz3KUhD;TIhITwX5@eXDNfQTVsi4HLOCw% zk;nbK9gQjjylqFMLx}D<5g}(pAWPDxHrQrFZ{NITLvOUqyyb~y@>UMpm#$3f2JECy z@2y1*FFNStqjCmDUFQmVmlx8AIf@CCCIx!o_>*tE-z`>gnoI+-FPXRe4NI zg%gh(P?h}}ZdSCRB4~)&6BG>YiK--_`-gydL)%cyi`Y-7|I~YJg8)zxP`?5=U(eU zCCUdAC&J2-H|R*|*m@Qg%)rM$Gi%?7S8LPL%7o^E!B;}KI?ap0-FXm9?5nK|PqfiP zw)Fw;+QkfMliEEZMDBMbk2BNYfYcoh9HM{&Qfd7rs2`1pP|lec+oQtm@nNP&NV8t; zUg1G!t47SKD3<3v55Fd4dAB`bXK>-BqgBK1GMg#q*?j=If`qpL=Dun}6xt4Ok72VD zM6eHtzE_t>iFw{)p{Prj_uAggHX031WU|^rba)$IgQzo`RXnT+$RI$fdxekYCT?#} z&mWB{CM>v*(SB1rRn!p17febG7f!N#vB87*nO5uRf1gZ8ASM3Z?x3+x$($ zxQH&{Vixs{8drR(f`?7J1v8xz%Tl1s*xRXNwKzMj0trnFh&Jxv!3w>&go8%iz;~Te zX_qaW?`w@!K07J}GCRMLMpZD`HKsn-1I$yii%UOe zmJXZ8g^%_qW!wg`?QUG6fdwO)I)M-EwB3zMnl|`i`a|g#%?J|N>|}Hxm6%4-#U+aK zegDnc^Aggswu96yB=Ea1qV6pOl`na7%nf_`33r2UO+W^NFIlp)HgSjU!I-84QCm;% zv&~9V+HN?9hx9EZ=Fo|sEd8Cm%I~8Q$2F%Cb{XP>H36o<+fT#=%tH8`2B8a7`1t;} zmwR-epMq@A{&9Q#-^s~I+~D9;_S(1_ijSL$Ib(eo8R@CnSH;DQ8@g_0wA8@PFyuwa#CnX`Acy}Uy<1T^dl}C}3?WR^|)^k>GDo5B2Jk-GPt$(2W8=qBCekEzM(ny3xVeY!R;6ldJ)cjyB4xV=yxbfue< ztL*@KJ|)p9xDIa9P$12K>_3W)F}Lxl5m(#Z`AT2F5o@S`&lk~FzyKA;1fCXT41c?*<#d8yU@#iJOxPpNrK6|juU ztDdxXX{)#IzP;CIbFUsYDyE4}v%dRxIw-MfWoc=&!Y;6?`-Tv`WC0sdh*Gx<4yymW zlPl{3$1f&AqUlugHTPg$AYBo*KHcBDOW+zz88vRvfFPl}DUSu1)X9Ee1at}LsIgdrRlTwxy)VLkizVnkci+65+w3}2zJSi-|FlmndBNw-=AFF`?oKuQb6E~Y z?yC1A!d-UC+!n~L$uM*PGSHxnZUtS|;mGxhKtugG6K)WYCJe_sDx_5ej`KLCtupKG)I!x?O{+kvr2u$~!|6x2;v zg3!EX_{yc>>dGQ$LiGNf65MOBcU`~G?|2(^T_-a?bA0jLqK@x@z@Jtg?4J2OF6bAR zmR`EAJUCLYYK)DIz055@P{l>_rf1s<5|I|%5AW<|HMvr5SWD6rbL929>Rx0gCxNeb ztC<3QbJN|>&=6#WO#X+M1~z&_98`JwKQ;7*;Lr&Pk?rg}L*GFzTcs!`j?XL%P-FZ7 zxiIDA=i6Gb^KC7b*HcSQB{ipd z@^*`={tefr^o)!zn#}e)gJnNXVd9s4scU5AVsk)tJu+Z~b^M>^weul-kM)DS?z%?U zsr%&%oLV~nD9KKb$wf+};B$9S;(k1P{1bKNb%`;#H#|!h_fhY2-i260`f%&x2$RgY zl(4UEC-V32-+$vI`L6*LklHiJxawo&I*YYq!KYT z^dx)bbVfixpunb=^Qgs_`YNH5Stnc(9HNZ*)S=)(6`zXF{`f`lbut}S*-dB|(6j4j z-cv05u^ufvinbf}20IWK>YsbjcS$?*S^t4%W|D()%iN-({sVm40zcMskpIjZ`St4! z@P?JO;0UREZIkcy!%1BLhRpF9O4Hs6s$1U;_5)VM`N;4vi4)#6LuUk%a&Uqzs4;eI z&eSDoE-FF-HD;@htwEJZrXRhZieur#*N69%ZO7S0vUxmgykRy1UCRx=<>U_6gQrNH zwP2NvLOoq=_c|YaH_=2mG?iOe7|2Kt(A{l|T-f3)ZcGmBw?#HUTK{@``PV`?bWugu_(J%)5Fsx2# zN2_o<{fn62*z3t}PF7lpz|iT)bqb4)#>N%(8a$41ato%Di5_Z-+45`H-CbhmJ)Jn@ z%AQX*usU!RN&qvhxCyt*w75zFztl*a?bnz@z5o=ESc$muOHeDk(vQUarrO z|9}6nsCf^Qr#`g+ttV8nHaI!qwfAMQvHfo+POK{y0)M(^uIL9{pOuQf5@YXl7=8_A zdT=762qJR~5D&`rH5L>gfMY;Vp9oI7FFp%5fm_4Q!s4%7DhU;A`{IppBt8x|)N7gT|mYc(6-P`^x6ZLst~- z&y6$7?>Bh~Mf{SJUt7QN^k=(#aLO?EJ(!%EKK=(j>a@yD=L_jr*%FW>9`S{4kDx<#pJ9>mglR=LP}}(^e40UyPQORTDyjf`9top_#Vd zrNq4vMs8H7QDT~Ra9ZjMV%j@qpZlqqaJLacMJpsEbk&O^)|dX?YCw3d&2sj?-^l|X ze`?kLZ3uI^|9>Bl63t}T6RPR?1Jo4X-#nrLRlaLElM4&O3V|nOMSB$I5&cGmB_*|1 zU3g4yUq>vAsX!VL-9I1rDuXiD$p%jUC9=1H;1p0#j}p|<2?_}<_y$a6KK!L(s?Ped zOvUEl3)Hgw2jY7Hg*>IIvV2Dh;zmm48*`XYU;-W=-|M(iJdlLmKRylu+cgtQ#LeA- zd?|hp)d#wI1{zjM48CoHjbL)Mv%iOj3&uk_9Z!fU0rpJbE*yUv3a6U&5DIua7R3|w zf+H`h>N?(q$_YK(hKT>A9C3m?HGko`wUPPop*q4aUg&ImTp>1yZ#e$asQQoThn*>C zXr)h6(jm0@OcfN#g;v))3sEGd`eza~<~}AoPB!q=oU7Msjj=259h1sSpW)YRIw-== zh{1-}2!Yh`$`{#`h$o?khllK^Pm(s9y&AtE@mVLaZ4<|s2&vd_zps1)Do~J`Hf4O> ze*LAI=tFuH)$brIk5OaPJxZ8q6<=Tz8j^0MHcFrZ+qU~6zE58XTd}|>y*zqi(GgQg zmaISmTp#Nf`$EqD1*+w^_O*+}%5zwX4TH^k<^A^kr)_X=Fs%ys_Ks2U!=xL`r)bGV zz5f(-kqbCVt7&M2E-o%|Iau0^jn!DZGmUIT5Ov;44 zb5Brn6^c>SgUe{tpMsl^fc&u&l@c#U`uNqPN5mxP)aYp^N@cS(P9q@25BfP7NSUjY zC`gpd(72A^34HsCv68T7WjCK)L`vO z4w)Dkk&==MP^TT;LFr<*!Qq7eOwP%NDba;B7TtH+0GvLJm^lwj=!viG$t>`5YNn^f zCd?Py&Tss$7QriurhtK++_j)nOBxmY%5baKZbXI-;P8Gg5&U$LSc?4W&ZvaW*7j|M z&wQAi#gr^oM?Gq_H7EYcG}+NTUKU#uJ}t5&Q&hOGhISX~`PIAcyz_xxY^V=3UDx*@ z18!Y$^J4jq*Lv)k&6U;8(CcH8nA9KdV3&fC^_L9rgR{h5A)kBj#>pK$Jq1}~v(4j0 z#DI)%sc22u#LzL8F<^PqO$g^j3uS(Pq_TfVe7?immoY280*ANO(<2EO2&I4e^a;0h zCp0rrsO_>ev4-2!QVgVzHszg}az1xIelOUa-?sj!b4Q;lZ<;F4h>3-@c@apTye3%q z$&j&-PbyOsZT{_R>2Edx3MFK(#E7IPKYjXTelJ!C3j7fak{`lW9HpOF4I?Iesb7FY z#@#{9czKyJYK}B5sAB1vF8b{7_c!xP1k{Wu3Jd`=!_J_5C9NI!saeZ-1&+rdPLPVl zcgfy#h9GxY3MPEWt;!G>+~wuv6t2gQaMM!*Sa$fh5(u^eUu@Oj)g#C$PO-$$$`?~; zPEz}_oAXd=K3&K@*p}pdNq2DpJz;`@aYQzD3idUdf z2P`&;iHQbl9X|ZtFiybKPsvWD2HYm|ON65RVNX1q?T_7O{Ukc~CoLn!6+Uhh!5ri3 ze#>wEnY5#Vmxz8wqq8vEPR|r{2^Ue1$L3R`_TF|9aQRCJ)t+C%Cl72C^oy{!?{QyS{vA;Phn7u*eYa&>E zg!Y$@6P@}dUVW=sxJ-yz!r8^{l*zJheRj=GhTL+M!4P$VsB9imP+#Mb)(m8xZ#3@o z#leg358!B`EOuU&5-KMrI;n;THSWAb5m;f*+(&&?o&p?xJeMI-Yy`ce<;Dr! z{o@W44$5!frJ#O%IsZdgG>7A}f`WpDjZIR<*e;h_{?^zjrZFDEwaiLaxdI2!EBG(R z*Op++C0{3tW|McCi!MlJFkr2qnYx8TF65Z*8JQldZ|PqQXsX3H7%3G*TcL&&V8pC; zK2ZL5>dg{l{W*obemH<(5SNDf%0YnqywhG%ku1ep!uumRSYC{38W5PqF^7fvF1G<( zcTZMOA$6`HEmEQOzA*NL`8pK~y9kufp}2vtf35r8epJPgG82{83R%`M;@nErX}vHoRD~wdt%$2 zwQy-#Ua`60=Q0m&9-Yr{P%~dooZ#T#Dk^OqJ%p1?bl5r9ZO3yhchJ)C&<8_9n%8Vv zfglA3!ZENC{m_-%pW!R!0~oka@*B4c6igT@Njf6pI437g35)16+S*2Yp~KR#$j9sQbDoA zfXZ7D$1V_&)yhptPqDJFv|+n0NrAZHQW)s<{R!q1RZ!Us+A}UABLXCQw|95*tEzCp ziEwXU2)W{JL={z+VT__;!`4}xY1<9V1TlN{Z)|5>9U+*lbsyE~@g+b`x~}dwjqmzF zx%=t)Fu!*pNlv!4+r5_e1s_sIz)z(&xvDJHpdB+Vr_Fgl8Crk-hX_zBap<~I@BzHN zjrD;vYM}Uw*Ubrd1BFTD`y1htb!;8KGKOgJK0Z1+gs)$}9(~knZMjz~RkbczFu%RL zxUhx|TiL-xvT^u%d6UQN5NtJ1r(FBMasAguKqf{qPf5IBs>wNf8wNIgm}PVv;=bERM_TO82TE=$ zVzIwghFstb-aW&2@%w^_ySMBEy3UYedxymKeaL>dn;vXZs9Z?tNY9I*D>Npqf|kr5}2=sud^K!KABD^N{ANSF&oi(xww(x_3o zw6{(Ys7;5emAPcBeQRyHS8&sx&N$yzIq4;lOTh-jw>74$aQs+7$x zHVLtd$+e>6;GlFB1`2HM&2gnqSu7ta>+9QX`40*rML|bCFLN}nJ`soQVT0<>V?~tF zz01Mbm3ZFeX!a!{8@kPH`G?S_Sa0o`xcTvDnme9&0dgEj%$|Q0)v*Mp%OgASuN&jK z5gvqw#;5HNd2V=oeEhQkGCRPahF+HAA%df0$o0WKrn=Is?!ja`MMTU^b{&OIK;^4oPd+5UbW2jhad|&it{p=1&UA8nDyJ>F zYe%oqmg2v%GLQ-rWaP5ZS&cLQuqmx zM7EDOUafYbi=~XL8pgch+t|Kqht4mAEPG@7QAhD)(U(5>eY)#%A)0! z#{?CtB<|D8JnFU2s6i*t@!B|kaa(?S2;y5P?r_MYiFHkVKlmw-!tia=;N=7A#pPvbON(Hv z`+gV!)4=w1O6VE*8R)WHKmhA9f2LuD@omn)7Q z+SvaU4Zldv~W}CAcdjqf7 z)FTb74~zjy$V}}b^SIgJw3eE zY+||)Ydf=fBc$4OW0@1NnX(Y;+NJ|x@9Y!wWlBQ`Zv0JK9p(1<;k+1-tuqqN;n3Id z+E9Jw>s>8@W!o)%4zp%$nbyEcpy6nO)a%t0NRar^UIH!@^b@ z0?*DN7e>Zv8xJw_WgCFMy}kXtP-~`1Buh!euEWo`*9pD_8Q$wKX?}1oj&b1VUE*Ug z(D;7pG{^7gb$H*Vx_3xvIPJ%h!qMd4liG{Vs4+dcnDUYOZP|aXsdhzh_f%my^4E6+J z*etr5@i*L`@#DC+b${u0tUuLH@-1w5h=rZ5V|SdwR?*Hhx(qmn0BU-Ali!y)o+|V1 zm-ht}TYjfr_owUnRC*!Q*Wfn?tk&K?I^a~@mr<~){WJin#vX8y+E0!1_U)VRATim& zeTS=(bLmk!Oph|@Tq8l!5FHW|M80)OI(y^{mn6m z_i3jCq+4TlG1bhudzeEu+5{_%?d&Q~-vyNT` znb%^9EjZt7AtJCB_y=--Uv+dwTR1N~e+v2yCah^@0Hy-}nPqzn*d0?}{(ptN1yq#l z+CC1_qI4*of*_$H4MT^tA|Q>ZNJtJLHAqMah#(;iN~d%VA|>5OcXz`KGxK|JpL71_ z`_{MCf3Lmvp3NR!pZ9&@y6)?~ulv=69Q8cJJV=3OU6;lBNLXD_QChO%EGBIC2g~dO zN6n&|Ak88@1;yw5CwZlBr-W-TlAm(sE)u(Tm`DyZk-Ftm(TfkGjW&RmzE0NJ{vUh;Jl)M!!M=P{m2)9c!<^9 zC^jK1x4{eS@Y6}Zdg_fp&xSC8#26RA9pT=$SXo)~5)%{uRJ~35<(gJQ7TyLv(m#0k z(1*v@*w?DeAmAs<5dl2QjZE5X3_|y*>U?W@2UMVEJjnwODE&!ZJCu!Me(Zt*(b2Y0_b9vK@WF=8HM{!{D1r6G(wgNmE*oDI$_Z7-Bz#rzRS zq>Q^)jV;(>V8SU29Q;})?}15xjNd!4ENBOIXZ;_*fv{@nWqn0><@m{;COlv%07UTg%2q7i^p^7nHxB7=Tz~dxn|z>R-+VXv665>FHQ((V)VXC;=4yt@fuyIlxhIt{HR@uY1aIL4i29 zs|!$?A#TjLrb9P*)c^KHeDgxPIr!=e zOUnsoG?@ik6Rv`HC^9@E;#GX-?H%svreA&BxX|C% z*M6|nF`Dc@dU&_|}PB3wja65qQV*x4-S)xzmIT?%;u0T6N<&`KKTq?DX8+5T9LJa*j*DHn*jRh?GC2 zq`al15c57SHB>)F z({*E(8<##eOYr|n@3#r34FsKXrnTRfG)Fw7B##UWdl3{rl?|hIw5;W5>!J=p&NRF$ z?lY{dY$=0N+%~Oud0s0EM=dTJ^Q52 zt+GH=S~9%P{oefOkK<)AeQ)gcpw*R?3&~5F{WJCzD9{k(O|QX|=8GP+7XC?WJ#n{r4=$S|%$*C=d`HAnNScdAbAS7K5j^g4)-Q6??bzwt zE0l`dT-sea^y*r$_SzORsq9ZWt?4qHZ<*Q4DnLl?2C^^U4{fwj|2iNuZ&4Lr0k%FZ z#RT3DyCDfVD~yb4tzV`RUz(*oWZLx|a>AePy6sx6QH)lxR~C_+JQb&;LyFPXq`bwQ z?h`{E?uPl-UryI>#izBtXk2l3(*S|cpTckeS|6lln=C2JTbR+t@t>fVP8T&91iPQ! ze7^kxrlE9ARTdP3S13D~Icy!-a3q668gvK%KIwGeVgg2vE{8>8EKCzm8k+^d52v>A zaTbX2k6M=-)eT&~F)t|+0fNeWe{>7F2IE(3N2 ztk0i6mwI0~2anGf9jvsZ$WpPtPtw}H!9*-rJEIRIh)LQ|jnK9i@S8;V36Y|UBt%wM zsu6#wz(RN}gXCS<<++m^jewTI95rM@WhS+%?RjGs*aY)em{Tp6VZQdxG4RKa2l+sO z0=uiTw^#AW6AEV+7aaqG^&dE4J+$|SJ}m&9fdS$>%?SflQ}s*?6QHNVV>LCCLuT;9 zt!PWoecAaB&s$Y}W^I9e0aEwJLC?wo~1N($#TfA4plRRi5vs&x3Jl!AiT`335AhQETMHhj8 zJ*Xw`h@%5`I$;G8i~Nd{w}FBpXotot(j)#yK`Gfh#a|Y8g+hVyQo2C6+d$=aR@-U3 zz=^}%V9j+qVIkL)Uy@?}%Dxe;j`P`7=0yugoo#cA!QOvtwSDvEs<#11w9wJhKVNuj zXLoGGHO+V_DC2Agthx++doqj7U>FpkxZnvabPc?m4FQ^8)SVt3ZmIzw^Ko;VE00Z# z8)<7}&FdL{EpX;|EpDi+Y%EAF%GP68L<3Z$to$i@T|GUL@cNj60D);+EiF<{Pfy@r z*exTB`N{B&M1S8?&TWX*N}vW!BV$j4@5oEN6S+V8UZ9!LNm2ZZ-@%NsGyvxMI^tteoAmUg|#yB?2Z0xxzv_V#(jiOgOBl*@Ds!YtipRv!_bT*CS z%-gSR*VJ_Op?edkrb6RunzX&nEl@!r6F+c`dy1hSU$yCd)gw@h({1u%1O>e(!t%QA3`5?%;bA+u>|Es+zVr5?L-d^ zeRliKXI=vL1e^K?<6Xkp4)wtk_okzi&fSz>t}IrN-acBwn!7nH3>?!;XoO(0H)r*zm-nklgUG4a=N^XFozhL)3 zEbk1PSlv?j>$zAamWg-G!;>g172JD-mIq}~K0V|5iD3{+?XSw3Q?`LDRy>Fq>4?w0+*jKAoICrd^lw~DQGcWZ0Q z4L%ME`z)idK3A1wvlc@+EL?QO6)@*Rn;FM>9ly)u(j6p~biB(!v_1d-Gq^GwR#8}vS=owN#uW^E-zOkt( zS5LJqu-{e2RXA$|C^WTHy$&%#*sft8p|&qJHOEWL+#_~JQe@(NA3pKCID9pylQCD( zsz`Mv8CF^O$kxee5Djy8rv=hT2%o^`3OM+ad~WQ`FHl-b`XEUb)q{7N;^X5F68q>q z5T_{yM>5B0H&MY1rJLGVe+!f6drg%ed53fng`>+0Fas>pSI5!NiG`;V2Q+eSFE~0bmkFsceiNDcEO#E; zD}Y46&C6q9RX$x@`ODtOX@SQ(wC_Nzt*x!ztstFBc!YfO4igDx`_9$$l9&OWOtrfh zAb?%d$XMq?z3FabY+S*+ggAAQbXycoC7DXVr*rf?a3dAypNkUP7E8alco)omgLrW6 zcj1PBt*p8rxbhe;bJMHpT{ZW;`JG|X#h%@*b72w-UtgxH?c}gTCjG&E|L_v!ws3i- zRe4|rchX7^0V+T*;`bUXA{f09Ytp$}fACZiVWzpbG3CCkT>7xS1jp|e+S1)Vcub({ zNVdoiin+S{WVB_pvP|q6#Mm2hHF$?K-vJ$L%s398_x^XJ9NYnH=99FfxzI+%l1ufVwLC@Xlhv*c-` z4?@;!KOh_1hd%hjHr%5=SYO(kx8nA-sA=!c;&ldRh4DxR;$J-~V3+uMpYdOfq?%@S z>wFvBy2tXWe8wMgR7y`i+K^z|mF~-UJVndbxD~e)RS$CZLgcrOCR&Fx$Ma2FFcM&E zkqgWI1FbhvhK*OUcR22J-bXgrDn~A?Tp$k?cbMWpx0Pbtmzbq-7vL|hCqe4oMxvzq z(jaM@XGjBM0?bG)p*QFV^v>gLFBB`R2Yj zMWSRPNy$*76+J)Dld?5Y-plM68d=x3JS}o~?OGl)Q=@lw-WnO0)^I<#C@QyJPQ~!m zx{rFVR{uO_ZbjhEYOla{g{4D|NAcjH$Rzf_6$In9`vxIJX?5H0*z-uP+88VHXnWg0eT}hLjtTn z1s-+PpSWLS$VLn9%(*Y+u)~>0q}QU8NGD>@&pvw)hwDrC`H1+2G4nS;V(keBVQJu+ z3x2<&jqBa`Dt0P23}qSW#-WNAG?Uz1^zA-}dBSyafS_*YE?%U~R2Z2cOnAP0*dD5E zki70$2?LM0el$mUS#W#nY6@(;yy(Fu^*|m6xXtD8M~EXWGELKlWCG;C3KJaA6%x20 zl_`Mp`$$GuY=BR&Tc@r)b!d5VL3c+|$$c4?oZn`dgqs76-*^j^eyP!glqozq0bmlJ%I5vt}YEH)QHNRJ($5q>03o2%Iz9k5#Dehi#bIgClezGMI&Vqu& z#Da3g=TIbqkjI1SWMG7z3GZEPq!|)x`+Db2Uw{7;4!gyK$l%`Dj_qgEFa0Hx^xgf@ z@ogkQ&kUBVW4GEfm_Pi^mRkyV9$h90ry8Hox~rc@nEgz4QJauuzbxoi9W(ZAXp|R9 za5sj@HrJW*#8axWv2n+-#b#w{c2=p;)V-qV=;)|j`7z}5>aO}dEM(r-)Tnm|<*xT#(#y>~$7U_b1BEct zqZN1u<0$Et_>!qWp*~FcyTvs0T@XJ1dI!fH_ZIuXlJTtw7xeCK@h_sMp3vyNn$t#^ z@x?PuYMG)-3wceIHSZRKpl&ta=u<3)h%|o0M>!1lj@SFG5@A254K3kOp^Kk2baW_2 z=%&G~@z70AV9Kq_6(I3zq`|^^drbbt$8>@FrqkqKK#<4&H&2;dJI+A9G}l5 zZyE=P?m?`P`KPL}5a&yoQeXRb)bFk@XbM;psK7c@ht4#u3A3&tDsOVQWAae}2Iv-> zz*qNE?<)A*__%eTR!Q25Jpa9OWKUL$IlsD)>Ke@8M2l_yZqV#ctq0d|1%(WmXk~LS zxItRMkNv;>{YpHFPIo@bW1J_u&sn|?4{pS zc@PxH7z>E?-=E>lahPDo*!#8m{y2@{hgq2YSzzEm z6VY1G$%!lSWC}QsI%cnPzBSX3H{MWb$z~xOoG&2t@bQ_kkwUlt?$@&M{X1(8*&{$2 z#{e6|lGz$e>#zs=^PLPlOOs$m1f#k*iziD+Fc;tm!I+ZHA=b~F9xW;kX#6FBrPZ%h z{W0j7xsGaSgpY*4VkT^j1mV8h`nq31IH~f-M4=EC0o5Qx)Y4t{zgVCJDi{uADSscy zV&(n61keS0D^J96)>Gt)7?%Hk91vjoVAF+!fmS2=e`w(THJ65%`9OC!w{5SY@h$l; zWx6~;skAS-!fc6W7bc0(`_$NQNf;y*hJM%Z=^ZnmS}mF}R#yZOSZ{wt(2G!%lWwnc zw6}ji!D3H8_c(|wIyYU`i6_Z<@2^*zmKben#a1nqk`pvB>|dRXIjNr4A?H6y_d#uL zP)c_6fRRd0m08;_{kRu%lwmbaOZfKFH5O|fMItcryhbAjG+Xo~lVWn8Nbwf&EIA7G zunK3_t^Vo={PX8e^WotGFrwyao>00U!{FE`%3rD=-QHnRlfb@r@80|j90`h(?dJER zbzg1(9252CSPAjlXhLlZ(^KU`Rdt(cGMY4p`(@SR*O@h?kzWZK0DC)lB;ioqFa8*g>j&JD!IS5mtS0KOEszbDO zQb(=-N-Jl$JuL3`ORUy$uE$@RhBt2YZ=85We^)$qr%=F@F$gLeZaxUP#N;w+51m>| zP+-YR+;3gLdRI}PrZ!@&&C5(~#c5YPMS~@jq_KST4y!ruX%1UI(yjh2NWCnrC92Qy1jQxRN3w!Tr!#EG%Vdg`GffFVF7L489TC z_9xwbhAUo7;l}x`OWEz6cxG|nOD|nc+?J>hjS7uGCy{|(upojf1u6fxYpEZCrv_1{^GVcxL^vSt))_FJ5V3->v04}oNlBN&(*WC|(#$!#- zlFT$+KdC=#OBkkA0S5{jaIy(9c zDT*@7(`Admn%b$VEG;#MV(qw1h5ev-62zsPQxLMuQa({gt!L^H>iLdND@C08!vw1W zX8**UG0@1!sND2opU1D5s{T*3ZCMwgzMLaD4MGGWd3i z!0&s#`##{u#f)MfKseI?s8}H!$^ceMLRwn&4#Z{A;7!0&NoL)??WRb;EmJWQy@Kiy z%OHCpT8^xf!uq{&hV)qZRn2xgmi`95UZtU;bXv#eCQsMO1FUpoeoI$Z>I-kCQ5$NI zxcdB)+4KSm1U0avMcFt?JZ@_*1ZaS!#I?qK3+L+&h?xzjq{+D2*W4!s!s`x?qxg&L z#~Hb#GGRgpddB^KQOxu6ljI!_d%gzR`uh4Sx_ytIKXYnlaY{7s>SmVe-FNnwnhPw<2=xCS&z$Oc zU9JZ@`mV0t`PzGj=gW1_wiOE~t|0rCK4JI5#f1{|6_8c_pe#EWg_t5;o?lnix5zzQ zIeHhIl?DGzbZCjyTq1GnMxo1EUqnwl_~-M0pUu&CMwv=3Z9KUJbh&y`#Nhg*&p8mv zx$rUUVM`1csHpeJBfwaVYaCe>pBBF1^zdwjyDi@WQ}#N|9Wbk_C286)^9!iIe>6XB z!!A8ZAWdH57HP?#(?$n~`JYyZO#Yv|mAI(2A8^*&giu)Q+z6nnV%zI!=_&-bm>e@O z?_N?71j(@;+vfMF>R)&)GvPHC}bunw_f3;0d>GpvIw-{9&k)v39dHvZYKu0S3Mi5@!mEsyv!tC5mHWSZ zp_X_HZ05k+o2cII_6_v3T4>E5&G$*}1I1z@d_KWViIYnu;KkD7YqK5X2>Czs*&1p59wl2Q3UGyR?X_ibL@5~Mv?@r$|12Y0Qd)& zc8?(S){w~Iy(f7>RIdO7SI98kF_UoaiS*11=eU6s=QpnTG&wt4MR1wBXB4lLf)dmz z(Xvi|e*21iALqR}&KEWpxbddagYt4n{i& z(Y+B)Y8ngad|e*5S!h@kw?uHu&FxOGe8=5G*4)Db!iw>&?_f#8MY=xlzqP3gb*`0+ z6V8NHAV?LPv)>f!@;s;da;=oP<1Wv)H^a+;4N9T*r|(97fl6LFVj$0Y@ zjO1!tIrLT6*GnvaTz?heG&qqXGP}CA=2S$ie5_&naJ_h`qbbxEzIW?<)2-esLRP(; z#jo)>lTA~BKr3$0bxr}H?@#VND;eh-y`7tegCuF$^EPmuB$fT5y+itJ=V+^@@kV;m zD&DrnX3j-Lw%1sMH)XbDCgBfbej_Tp@59#NnJSMMv$xin!be>$e5$A3hD(q-f4cKl z0poG(-au4+1?(xBqtXUp{uhfP%OPMBlr=WqY*L-c-OBT*>}O>8{yr1Va;p5Zq=OLx zVi3mDUmqZNxf|*5Um?ElRhK|URMedGHInjnJxF~B-Ubv3y zvJ2Gd&)C+Ax0~q2Fht#595OL#>uwA~XALWCES?X}kz)^YOJK}U6j9v2FLG@kesqz7 ztR1N&3}u9)+bj3*Tq_?sx9CWiVF6N+2NvbQr9S<8!TXhqPVyTA8jaVNdUJHf=ShNc zI;f}z=`F>fk$%h%#VmKdXEJ#o$Nv_Kj4{i^FzIYUPHo;$1w~V`1Q#l$>B#B`R^McC zLmpF^hc#tYl?cmN2xC!UpLjOL&Qa&Adu>1`56e}Ee9~xOIynrr&!n3yl?JHGH&5zb zg*A`pxHQ8?);{pFt*o!k4%PaCZa(g&ypK^nV&=|R(?lKQ*q>3~==}ohAokELmXBfH zEr!{Sy5oM6K{DhN&&C9kON*nP?9l9g?X!M4c5>FpC*_JW(2eCS6#}+t68;UV328Dk z*3!3yoI~sdv1F%W`7b4)V)IM!_!gcfPDyi++)vdo#8mH!kbrCL*R?c5u!eSG~^))XklW{Pb(QO`xif z7V{!aOEyU{yZ5I;%B*#FRJ!^U3ZYR_q9KO;hj@rX6+TCh_S$V=`{=!>ELk?GnF(3* ztfio$pQRe-=VH!R$Ix1G2yXwGprWw)g*p83{H7+wR>C z7Q$qxpl=7|Nc@hoB*&QMibg*6KvDsmrDB{d+NMdpKjSncG*5T@E^Lra&!pve7G9F) zpeuST3<~Ut2xt@WSP5Hn7v1Z#1c@dI3Bvr8PvDA)Vinru_A3`PnV)Oe(m9SMZVs9q zyCWq@P&uf(t@^m?w@dhGJ3^f|M7zA%@*dyHIS1>(;E(mxRt?XKAp~(tpyg!G_Y%E#bThvdv@U?q%11jXwOD+??kD-9HX?77 zt-vYMXj&cC#s+GyEtQ8}mlFXFS;g&5@GSL0=J?AeyQus?87Q%TI64y^ntPI_D0zbI zWqlIzx;zxvi14%$@i&jArl(ssHvz(+OLTdnm9D6rp@D&*xE~`KJhIO-=71} z=WbeHO@UH`rQAdyS=Rdpchq;>rXyGhymzO?Yz1!_0H8dU*S_O&@UDH$S*)H~TXFuy zP?SD72<1k>B>{N_HwxZ_;Xq_kFshxWJ76b##b`k{nG14gyo&r{ad+mnp;0AQNNv5wYoVJoYWPOhmh*bf(koj5Wy&!jNFAY0xf>DMdf>(66-&9`t3qXg& zu)$oOz(~U);nPkihPJHkFBdPJSarcEH3zPG)arek|c0e2>x6fm7g2A(fr zCMu)rc(-7P82fJ%e9W%z`gzkmr8D%T<&NFi5TrRvEE^@6^al6hyQ^?cjqpEYXCyu- zpRf~0G(Z_Kn@}ohQ|$)zm<%~p5#{j_R}UAj5gz=+zmILR^-MDdXJ)HpWYekrd7*NV zw`70q&Ds8Jl8}Aq;l^WoYWd)+wGBy*3-|`D@ZL_$vOHe zWplo*rsPfjMFxq#BecXcvR)`NUUJanX$0=NscXr~X1Y)) z8nH(Su*qqI)PomC92HSOrWMe=ky%;mjn>yw{P^rZ5v;!rY z^KXIvUaExeo+~u(uGoBg+0dQG&w_ra9Ko$s$ft+r-Bu7x_vmy3c>* z27+IPeL8Xf)r;-*s&IwdTAInPxoApgKIf1VTTvB@EeVGx1nmdDb9^QT2I61nBX#N= zt1x8rULm6RP~(toNoR{45sua|g&BtSViN;w(DWBKUviGULWznH92#8NeboW`yC7-F zLP*3)VnBw=%G!GMMUKFKV1tZ+!B6xwmEsQVAjX{X14u3Y&0I3<$1b_vm9-EiN9EA} zkKg`q8aTW#Hj#Xs$qY;r=|DgLy%6$~dLi_;ac53XBcv!K#3J!C5GYt>? zmU)<2!Ht#O>(p%Da7ejjVIP$FVp2BFA%?Y%?9${IKsM-M9vi=z2n zUD@9}qa6tT-V|3*s(F)%*|K->;;t4D}(Q9$tD=GwR zlRH&y%pxwe$(Hr|-qL%vf=b6Ce;4(}UIJc5_nQa#;ockVqjNSNbe7d_s}EG(P3F?m z(@R%sfojBPJTi$Lgzm6J3((5EMG=ZKx#QiVx;}3dge>y&TNfY{&n(2q4-Ygzf7Dm{ zUd5Y)P?Bd#rWrs!0Gt8~^vMzB$?%kBws=$-Xm5Sp@B#oUFpCBm^9LIieQ>VbCJR7= z+4%=wqD9TW2CGKKNl4TwBc@AY$Wg%{{ly@J%2J@m#_8*P|I6VCZIC1O$PrQ3CGc5g z`!$l-Kf|>Tn7@|5#`4tjV(C{+6f+jXQ!Qu!(G8W z7bQ+G^zvb0G2!qVK7rC~^xcvmjbmn|E4b|VDdi`2^o|YaaNmzEp-si#A8LgEUORdt zM8{1NPE&eDDEFfF)i;}%w35{BVbg-qLg!jLSjmK4WU`RPm#CZ^U7qji7tN3yC{PVw zmOtlJ;nd}2uExGWs-2tWmB_%4AibKa2HW7`4Pn;^SYLg}^fA0cZFTEo(t{jr?i-8` zQ>NYsDWzs*O21fd%2BIlCWqz*J?M%X;i$@ENf=s;(*$giKmk?~ScH*kc;-&ruMs5c zBRP+Ph&NQVi@#wBgsdhMTToaeSE!2%kuAUS{75ti^CU<0jwjHdr1;vijQj$s;~E_9 zAro`F#r#If{KRA@SNWDJ z>X}Z{vEa>b!`21kTb$0AOxR%vdbkMlr(4JQJc9N*p4XRbZt#>NLw9xfVRviT5zKZ9 znEAjT?D%FI+{M%fOQnx)a@@uy&xARHUyQI*6?OBP?hzI04PM6u;O8G1Z+tiQl466og4V%A`=Yc zZFVN{3sBmqXyi;;!N4e1S3|qXQtvG$&DL2pFAg;t7%(i=aR`4%^wFm0vtcY}F*Nil zajz?CZVo3q>_q~Wyo0sm+?v1iy@CvA2QthD17qXx=byZ?d08Jd*Y*3BOIj302!44F zPROOhaEnb=M1L{5NnhT!dg>IBwhZ1JAWr=bf4xc>o2>g<@8-1;1!D zb|TbhgLZZB+E%NQA{hLLPye*r^3AYyc>lf4J>F~CJ>!f~zld;tC2EnBX>$iM-8@ph z>8h{ySdEHUXN$+I%s`>i&~+MCKA`|g&3BxHtWnQ)LcwX>naRp@k}yQ+b{jCip3i7Y z33HR~4$K+5|785)qa*IkmHp!PcEYxJ)c(qicap?&?CNMRFx|M8tSw_>G@wit*oMnojH#9m(+)dtqB$*?5!TC|QaDA3d{j_F@x{E~3k zA9b3dsa$}$idS^VA#UJpb{TuG9^6(|9GQUf;%qjTFZk3%Zp zjS5uZiojwmgtvWCB20Hv`8d}%>hPrN3vYY+uUO&yTwi+gt7?MbxpJJb6a6pUuj-#= zNZ;+N!Hbwm?{V~+PN!cL(F~GxmtIiB0+>~l*;i%c`40UtM&LNNHHT>fU*f`w>SoY$ zA`JwN*E>ye#qUoBl@zmtqjY)GB6TK@uIHv|!4HAQ$-T6UVkRM|#<)3`inEa})8uYoQ+wgmaeeShUM`&<1i^v@_9Ulk&TZXxZ zjd)q~-cJecs^e7|+`HC1kgViO(xKZ7UCXy#BX5l74&h1jY?|s6!z3R*P~jBf3+^-{ zTKl3MFOs!83WfMqtWj%A#b@csfvvJe(QqyQEH71JlL@-!sDKH`fEVDn8AZh=Uw3c5 zd^mijE14)8)9kNd+J6v1*S$c%u(=27Y$1=f`=;tbauPuYB zOZAWV54dxSk2dn;PP!nc`C8KZd`x1COyw(|g8c^i$PCB4zl%6{q1;FSkIFQq*OBgx zoZnzN@qt?p{>+k&k@h{wIeb+o0;y6D0h(Z@CEW@0ZS12Cx)c8jj?{mEZ7+9=W`1Gt z2fs_EA(b-qbH;l&EG?Mw{TfaC-Dd~S09{-;yAO>;2NqL2LF10jRh(0pGkv^{STD+S z3CY)ZTDMH3?8rUdpCxK2@8-m5U@XAcDU-s*0sgz0FGEC&XN{?wT)Ffpz3{Vh0t z?Y;)rA&};jj-!+?&E+iM`j2eFRCRL`DP7_D#c=Vi6@i=xZk`O<^K|W4HHyRUgjoh> z?>w7|CTBz6|VzdB!-Sp35Dd^{I=RgJk1%zAxHj zfh_91aSHaW8-#5e*Zs+8-qS9riX*6TWfSzWUl@6UT>EnchJT?V2z*os|0`}WYb`sQ zE(Efg+A4rzm@J`YI-vp20svXs&+S`}tz*Kr!f)BD4efy7<<9qOKtWL34+i{kaFGr> zs+`~9iONbi$)Fio=Bt;qtwOqTdESGp2x5X1fCGuX{-#sIhGcb(xo`O9)5D9jaIzkV z=bf-FK8|09m7a_{eL9|-m~h$-AlNPuQ>Q!cwbddqp#2vZ`eZAzU_;YTuitgauze&B z)$DfIBz#H=g0ZaViqJ})+al_Ea(uu;vVp!%t{uV5V{4U89uw9Uz1%F zd+bHsl2b_fR1@8waFxuk4;~|ykE6zWuQjqEw#2v*1tVLoYR7Z(d^i;*IvLuxcUFVN6plq)$d2_hP|Pu7%#KP;moNwdIkO{|gSVkD4x)p8ffqOMal#FoKt9$>WZt>< zBlrMP*SZDIZr}%WDs}!xM>Dr$)c|7)_nq#;PDcJbkkf(CF}cT{bshGcsnN$`FS=1H~3o%TU%lvzK!)l`N`~W?=SlSx$nQ_G=IY) zd~=x5IndSsm0UZF|6LyOIUUo^IcfrNo!uo32L&u&G*4 z%V&DNXsxR&Eae}F@&hhm{coB%OWduaHlxy-Yt+~AIv$-ra;;KUl)G&5-)7(gWPgbv ziY_LLo;HT^^eO%be$4Uk7i_J1w&9WZe@9Jr5Kk~^NDP=ly#ne9D1$532Q5^(SajP9 z^1q0A@|h`h!mr8o8L>q0gRh5SkveptAl?E1_fOb_u2jle2w@u8(`hmVLY=|7x^cC|6Tl|+SJ!7FCcq2>ez{*Iy>+Rt(4^KN{EHeW$j>biLS zh1Ce%hr9m8@UZK4cVf!e!ybRnj0jVD%apGt%_upnip!5*;o?g z3ElaHczaP`CPq3Fv%H~2l7RRowj^$09{_dSvKd%`xHoTJ;0oXr4-dS-jkAx0Wal~R zb71V5bmb?IfbPf&6=!LA_|fx@2<%z-X#gR+ry>KxcCXm@s`R4jO)I03Ch>(qy zzYqo+gjl0oH&%tA`sYSi4Xeq&qkP47sQCf%-s#zy<(aHNam4Xh|dj}P>t^m$o z)EKhDa${!HHu1P*{EP;Fh!3|FPN@L%7h#H;qN>@GKou06aa=<- zwGM3c$5SGE=m(Q$JU`Un zK1a1{P45m#G4oMudk&}mSCS;f8m+@k$K_cMCXUR_#eI2mfsmm3; z*JF}9EVB7F*WD=&cKq%xjaEL!#+{^@frx_pSP-A&lNR5iCFD10sX$#?}vW(wZp&8aJr^=(E^HMoW+b3N?_ zfh?vTUg5ZK0T;U<6}TK0xHy1ddU7WnztzLa7)tG3 zeOVg#v>TdvnWGi13b5i3XSqB50gF|dl@r*gwZ z6y{hBae2_e48QnitiDHQswaj?7}4$KnD!W)Rg~mrWMT8H-n}J$h3#N~WYkw^{;WgV zprXyiI4Y~*Fb_0E4GgR!y|wX#n@TR~g93~z6XR&uGLVMwn|s%Bd*_LQn$C{I-ZrDz z-@&^Ro;cLeK&0=21G8ZiCw*o`k1K4$@Dk%hOt^!o`0vuF((>|$eViR1c+AQt7@V(N zc+cu{9w!Ni^VR5CD9C5RDF-3qsHo|rmZd0&Zw#A>ImBk=AqNTLB*aWA8)+1gjoCZ% z6ArkZT?03w?rWRsns-wq*hC4CMahbW9^7A1iUyOO;}$88W&DoO)#!5!a?<@djN zK=2cdqQ*4tbWj)=%Nz^Ij(*j2!Tt<4h3Pn{SP^16%z>z9M@Z}heaFn08F~Omo)-ES z@zt}<$UWH=;L9E4XZ$;L`Vdr}*M>wv8hWJBHp+MR4kVs!T{X#i!Lj*D?Yw$Tflgf< z5dXv;q=L8>a2pWUifCH-{NHiy%)jH>1@T9B?yZ}S{u4vTGB+&dM%C7J5j5+N*DB$T zI|D@)T>sH(#QGlNAjBJWHxqT#@4ab?K005Dnv-;P2vhEiw7e9>^gwqxq7nU=OD&1= zV&mFt<_?tdns;KHLNZ#~^xX+orh zXr??)lpdBMp%Cv~$AF+}$6Wz47=r$VJBZmb!+baihV3h#$HOjYFK73B1mo_$z#K4_ zBwr3gP){%SFh>sOyYBFqTxDO-;j+@GUj0r0`1>k0`!H+;h)IYc*+`t=o0X?J%FW7* zQFN81h@itjWjVmT9vu!^%UVAG2Nb2PI8W^65N81)nlHBd)fJPd)7?0CD#5wttIb>ljqZ21v=N5hf^$ zj>df={s}v`YCaE&K^*03uO7XVC;~Nd&88MzfOKX2+9mh~9X=Vwrah@id)x_M;)J;3 zurn}`AE-p|%mG96(@eOC0t{98YXrlh)EsI3W^)O54>0l7Tls4nhBBt20MBRWp5Psb zn?2n@W^HZaOV((FeQ5a_yQ}wR8qwaK7@zMoqRUR{{Gi#isQ`!l7}C!blP#_Q1I2cd zh^J6baN0PjQ)b=1d3+nyj~PQjHqSX6`^^PQuey)rYTW+qL>W4N+qhu#9{Sb_c%i|{ z(nf~Jd-aV)hwD15M21A8T{%q=-%hLZ(!BBlv%5OrR&@@;mV)ME0zmm6e3Nc)&k&0R zkp#r+(8n0|vuqiM%7dk=U7)%WA%a$#94xE>> z-IT{PNmKL=br(Mwh7VNdnI4r-Gl9KcwH@iZ2^-Gfb>#5(?6Iojy7o0-^Oa{T5z}bx zP2B`&#vXXVqt|C7x0iidI2x4h_Kxr8W5(g=o5)*c#Bve-7gm7?rR3e4V%1AA%|Pt5 z=X(^I(!H`hE_b2AHO~+@5IXP-C*n|3KtO;?0G`b_e&|AK6Lg$}UwN3HwNuwc%bAJsm^(rGEP~9g(hr+7 zz9LH5!TUuA>EX%m(n>tNKgVUMU!`7-e%GP%x#z^c0(*PK=++5EE$qYuC1?tDl)qB) zNweX*8Z|oQG;iVpJxS7}GWsItJGeG9YRcH>y`@1zH*+h`0dDzyQh{?&?Q&o15!i3P zEyj*>RNO}F@P^lxn9^|DotsB~C^asp2{IiI$%6OUKy~(klEP-B!+**5v7>Mu5?W4` zspO`ZioFO8T!eB(Js-eGbwsrbt65M~WpT9vsLw+~EFO@d0uI8f@l_Z-38JJ<j2@p+#TUFToIwNdzmwSh4<1QOqzW`Ul^0;0cIUE@@EFt#f73 wl*|0fcdnStJr)G|c~~+0_?VU}b88)g)5OP{lI7XofCc_iRn$}{mNWPNe^jf1L;wH) literal 59583 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 Date: Mon, 24 Feb 2020 21:40:58 +0100 Subject: [PATCH 04/54] final fixes --- icons/mob/guardian.dmi | Bin 35340 -> 35489 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/guardian.dmi b/icons/mob/guardian.dmi index 2bcecd3e865c3ccc0f822a5b37ca0c2d1443918c..4f2a5ed58d6634544e72d5274d97cd6cfded5ff2 100644 GIT binary patch literal 35489 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 literal 35340 zcmXuL1yoe;_dR^+Zj|m4kQC_#1rz}R=?3ZU9ER@hZjcYs-CfckAl)Sm0zsZ&n!FEh3ahnXCMTqf_ci$b5kEJChRf%{Cj|Ji z^t(Pch!*>_9kD66r1#R^|A~J{{a1exD!MBU8T0D$&}%|#s-mjx$eqIyPHsQ{B)5T! zPvKKL@aS61<0J^Wha8_uaM`CUOtef8KDrgxyiJ!YxQQTUGJdGBkxw!(l$>yl^XgWv z{ppat$|b*+<@PQkwxQlye9M{Q>fOHB>Nlk%E&Dh}iuaX`Nk;TBRJpk}i^WMjjO;2# zN|W!8pJEi;<`>o!ZEVr3FXW7~P4itl@kiS;)}7Nj|GXzx5cxMK0fE<>d^UTB=%oSx z)PS6{gsOYyk&lmtih9SDAPrm~fFDauOPxy#fwGy`BWc$)O3mtJzAl;5V!Lz|9Q6?@ zpNVUp8Pu}$@uJ97^Ad6@znWXr8dS(4$-3)y*0MnIv#dfYBc}Gl{eYGV$f3qoUOqW2 z4<^J0($gE1RO|^T#wYk(FYeK6YVI}qdfEM*Q4~W0+OGe)k^+Gn-Dgby7A1hLk;(_A z{*`B`Ew^B*U$<);o$atw1Me=BR2<)#V*I*#zJLZqSW+x{m4VhK=F8%AZ!}2ggOF?D zM)fQb0PXa4BowQ=?CkZuKl6$ZX_0p~}xVp3kM@vmrrre5EWXY6O#nHOu1mush@-JdGB`0%TPH_H zrElN*PcDloya8S+h_rN*C@n2HP-RshOfUTp6EnTt-Ow!DkDNZ~Q;>y)g{N6%76l66 zb=}75eZ7#ASKgksGPslTp7l7mglPlq`pAQCQTHiGqBEPHfnfg!$~g98N6L|%xq0ZH zs|OYMi@TskQJ(K6CjX+GGg}|V9yId+&R*~4wb^Fr4ex^;>krjSvfH( zEjAZz<}d#8rroeb#A@xJ2n2W&CBWY#OW3=I9O>Z3%#D4>Z9CbHe|xM}3=xTlXY>R#m*hz=m$ zksNtL>`;NWGa)(-J~uQLR@R_G9a~#=)n79`x}9is@LhpJX5unFn0LrsG5+ysM$DGA@(nav)pe^kZwUA_fpZnktN=q4azh22|}G3Eqv( z>*0IDhV>U5J2`yh&dO5sW87Ug;Lr_zk^LUMsuiPhgRymYWiG@uxm&22Ul9uZL>r@MXCWl{DD;GI$2 zK(AhB>cQ?|%`3gkk9?uQLJU=a;_tMmB!RePZZ(C-L`RJ?>bObJ}=`y3hg5 z0g~7}JX6G`{c^^zv@P0E4TP;emRqoUZNw zU!%_F?JFjnI%If&LZy$qak6z{Eyup^*+=^G=ZLW__uSfA0)W%!&Ut9ZaeI5aO7f@z z^>T=y-4)kg{FmtxOfB3n_d`fSayx1i1o`*aG;#o3b91x%QT1SKMg~TJA6GLW&dVtq zHZQKp{N8~^Wz1_Aba>{FMh(wnYJWy0IOYf~saFP1S%3Is9SGfoJ9p#S@u~p!p(GZFA+lBPdo6b*o4eOcl-{ad^6{htw+oHEK0cdgu+7fVz(mN&hme<{VU zS5GDSp9l$&5YPM|0oaP=`VlFOZGk0ol^;4KLI6=Gn;(C2xOYzB^o}8a43}&NPdi)x zXtiWTM@0oOf5L3m!B$BmuCA^IkF9h*le<1(VPWyJB^Bi58Oq-tPc1B1TryD~&l>jz zWBnwfMDsqu@M=T{p3hrNdZ~EpgNHJ%X+0c>e;82w^W3#%RkBAy4nXp3r&P74W|YSX zXfx$7DoEV|CMt$ypP%;r{#WqYWTlL=-p*o1osl^8-!v)`twAFuV67*1xFmRylq!IymvdDrkWh*d zfQ;bmNioVu8ut;SwwL^$SH@4*%NkMN8F*^u74CslDf=Ywxi`)?XjSyxa^t zBT-+!n_MXh?w9X1QWGzml`NR*GD6<3^h>UwNbOJ#Tx-~~@_u}zQnY4UQ7D_W1al<~ zCk@GCEfMv>*&wI-iBOjs9unaZEQ3ImJBKOhG z``XUQ^S~a={VPvt8LRU{B9!y#U4#8AVbmZJ_iG}owr3p_)_w#;zlM2(`Hvo`9(u4c z&X6dy^!2-zuY}YB`V=l}J~sld=HHo(OMm@6jPlh-aObi=IHjQO?}EDmulY z@}Dm;E6Q59{D=^Z&EOf&wgG6)gUNf>$I}_vy+?9FJAPla^-H|%TO{G**tMrrK-9i{ zEqpXm)_Xpc5*_$gRPa0DFk9TlhK(!$;i8_E zL`bcRKg!C+7NlGns9f3?CevVeLX`~4y$ohI~%3z~UvI)O)PbwnuZl77Jbr20SmXq^SZKAjqG^#8acu2AC>O`6jTN7a1 z4tVe|LUgtAzI5Zk$jYzj;xhBaJiGKu4Ld}eVZGi;DZ2~~uP`za^W~CzWkfVzGc%?>BQ8MP@d%Z%o_W&eT-%ijn8UjN94My^ zszOBeFG`-xb?w zbcF~q9R5A(q+E2ZL_LTY_*|A$0 zS_)4Ni83#ja@4^f)_!%6mz*a$+QN!P#Bl}Xo!OrKE&jjYK&V|l4Q^nrj1z^Sp=7E&4;aCMS(I^cT$~x^;OVLp_2x75k(}?DaKI0# zcZD}~Eyvzy`>C{m!B#tP7SF9OrBk)@nVN?lb9!VfG(6nDf3$C7*7AMv08@_U4TpwXLN(rgG&ZIKJ{~3RS!&=Zm#U)5%LX^q z5=@9ShCvRGDGFXoRKOg$EXKV}9*&TB+FCL8I|fcpkB$OK&JprDiOw< z%Ksyzp$LzSC25I$`6Cp?lh^_C3kHI%Fg5_&vLoh#JatC4(a1}E|ISb>pT_-@b{9nm zi{qgp>Sl0_yN8U{NSbJhs&{hqcl&ucA;KgBxf)zBXxG8dU%SdGJ1jkRlGO7vvnJ=t zE4B2%7l3jKQ*_fMtqLOx8fx~?QR@x-RydCLO{B-vW{~^$LG9l)UPNaBlEg#=g!t&j z>P&hI=gBYUk`b^b433wd!vJWLhdf0N z!K1^&^$Q~_|0orRI(Qd9<(ePmX7h@!ErOE($Q7si>riXv>mT&8GPlJxya2K5R}MVz z6yd3e2*ju}lAVtK>KpWZBAA|@#_cM>?HU}DL8p4YRcsPsC9wL>;DP_9_$)k4(Edoo z08Yit0<6)wtH%?*!V(|in56`zXWRasQqt6xbSk5at3c?=Fl{xNHr6TxYLf!2=;;uSdhiq)=$ zK>`IbIMYm4TfzDEeN}|vh~Bd!4(GPHXmR;8c+dxsC@3g^;`O4jJlIJq#M#-oDt~zq zFOZa6yoz*cXKasLc;>};_BkR-&RsVc4bLIW?4TecU2y24lRlg+8I5qLKPf`Dw?;xgXCOfxrs>Z0i_;Rh?nhBR za~g0Vh%nu#jHFa{t;fPWJ|gdz!|k7%u^+}zYDE(;U8}?~d(`zK@*eu-zUP0OW5f7M zaS;;4m6r#$6{@PL)Epc*PS0nAgy=~3>1-)wTSZxvb@A?;xS`*ln^m{uM&~IB5jiuU z8V-C}x7q1Jj;M@0Nvzc`u0)0pt4mQfl{$L4V)9mAB{9=CFTP9NE?o z9Km3#%OTrTyZd?mjNqqFywy8H4mvVN*v}r9zBh2m)(cuGs z+&Q|oPw|P!!O&qw57AkTnw(U+CcV13F}~Q=Ks;k6yZP)0g=1tN{k^i4=zB0-gc~Le z{=8vf>FMxkv`vW!54Zl6CFp`a&9IK8HlUTVHi{tHHc^{eDH31YPsh(sEY3;$;h@R; zmRry+czSpIb0f3c)!%RX3aRe9-}2@T_%5N^Ph&6F51IY52c~zNJ>?e@V8}s6f9m0#pW{|BfCaqBnn1qRcMBN8q)cLFNsGvg`cdP930Ts*9QPR zq-amDHA6M!6EVobI6+t{%s^e8NLg8#I%VX4SDR+vKmUy;=X7WzV)x!tqgZx)31DW{ zB|Pz&lV%KM#y9-2H~>?kb}-Cal+x!cTij5Zp0S_XFysas61kVNhzV%8-mo0qZr{KT z76%tRDSbHk&i<&o3=sTclQMF6O9ccYNA1SJ4#|ieB2)3BO9|3wN{KkQXg~3h=W%m$ zE2-$RhT;uUi;8BOA>vX|O(cBE`1yXe-d~`0FO8HmS}A2lJqW%llO%Fq@1VZQg$alE zS|1?)sEujcnhzyT||Ec6V;;*1FhVCYIESj5y&WOhFZDQk4|uZ>2w z0)WaE0UY4_c&P92rYfnPP%#UOTl8+f07%vFFdfk4_k9vZXN`|4WnT4t9>kC~2~EY5 zK?8_Z?-5u%=@GepvkwN{JfpOoSp9qhXYby|_aF^B8d={J#mA;zE^KRjpv$YSo?=9l z=+pP8K$c{UaoCO#*;dmPKEbf9sA#K~`?J{XJ-F>Cu-`rMqrChBXgjF3NN-_6ds!Jq zeSLi{3WpTCnP@JUwTHAb0SA)MajR~C96 zVmyLg#LYj%AhPQ=s;2(#$n(8gV{&B$$-x?vmN6JjQZk_1O7zo*l}HqQ+Y`Tz&m(ik ze;;m+mqOy>@nz}pO;P$6x=`)pnjN+>E4!QeRs zx=jcG5fR;3S<9E>Q|u`EfIKQ1dGg*Nn^>c~wpRkDDsdzr8gv(IcXqWvO8$7iX1`-8 z1mfxh5@#ojb(JQ^dJ386Cq8eV2IMQOHEO6L4Y;D=y4cWT@#O5@$q8xtVD8T!)Osx} zTbcAvMUprDb|i5T!+na_lrpOFjK3}4w{SqLwnW!Fy-W!Bpi6jRXb+}FzK!HRd3Ht=j+#&4w~8uyP;A7#^cYw-(NHRCB2`8 z!$VEU#+Lt*#@=*T(TW5wK`kjM8JCdIOGZrGH5rSCfPgSGJiHMU7$`}N+NbNb!X^t| z`?5wAMY_tR+35+Pq+BgaVKAK4d>ncGY@>Jbz}Z?LO97?7`EXrO|9)a}Y8NwL#NrUz zje78%WR$VXdfS>&+*30cE+CGL&ww+(u?yO~w@Y1LLpnRN7ai_v4jm|pP~HF^c~C0E zh_sKL5ZuQ*3G!bSSV!|Xo68G=8l!xj>U?|=X#>r*F1$N;R{>!2j|!8p&N?}Z>EFdH zoEcl)z~e%&Z65wE)VL85l~HZI$D8qZo&QDfsOidUWMZWeJW%&|336TbQNh0Sv7Es^ zdvsk70&M~`5VT;O{kH)!qKWB$fzRbJ&6?WlbD}G5FQlI@*7HVP+|Uh_kHzV!WtbL8bI{kkc00KD`0YD1^M}@Z{w`4;3Z;#^Ye26y1i{e z3H-ahre*M9M*^4+oJx5Q7z7!DJSyw!X9eH;g~c(F9U^RPZoL7BEyhvT=T_uhU3q(Y zdmSwMnXljJwKy}^X|b`eu!w){GANo|JpJAf@GkbN{ke*9_ui$$RgSvmQ=!EbG-2lD*7yCulSTVGkCt|Ks)&ft=hN0t;N#vSEkWe0<& zK(|#Q{9{a6DbI_HfYh%>_oEXqqUDx(WkI!F>90XcY{^ewPwy@6JC%fty1R zv%%OYt45(t)>uDABd&LMmHGKS9|PfX@8bz!=PS1J7F*Dn>FF1$Fk!f_W#Jh{k%00* z)%ls1hxtumVPTgEcV3B1pDkko8Z$Gqxw6uFGL!8e6K)zlzWL(XaXfN?_2_7;UUE)A zK1VcwDT!C}IA(HyzufHy1*Y;Xdwqc3u;98lxHlfkMKl#{wdbFFvx%LGdIGNmm0ri`WPBW zKqoB;`uX6j6+8qAT<(r-g-O${_Jt96w70i|&3In%m(Rt(dUt;_0JWHjFHKD){;#o- zh=569`{lwmk4yIl08X$%k3eITNBgD^HBJRj<1V9!6nOLYZJ=7&2hg&u7WG<$uV2^f zG;JPMTv8m|4SxGFoBD;PSmDb6v^(%kT>7ao3{1p5G6Lvf#|I%V}if64&MVzF}q6y zgQ#~ipUFU&g0pdJWP#ehadlM!&+WgH{|0mBE1)f9*)D107m#l(Nnb+#nBT(vIYS_R z-^oOMwX?H>h2d-M;ZZL0oX?A`Q8FX(hLDzzk0>cAiEq!b=?bEymEKWPqb$4YJ9&78 ziynlEh9&_vyG`#T;pBNgBuM^Boy3;^1%^nu+Hu!{%|`}#G@-UQAYCsg*Y zvR}RgO_>M2`iSbE*;vr1SYT&qiO}akzoO(Ci7<8 zwH4z7lXG*Q5TLV`{kMm8N%J0*fD;n|F+KFZ!xr&8rBu^#lMq&+%peAH_@K77HnRTy z{wb3ulp^J@z(7Q>@sFqS4iFlWB%rjtN^-(T7dO;$?1=)K*{RRTZ%M8xgnaIJiW!)e z*Q4#p(9tePeC=|OAA{cr*F)H_DTUpg*h92WC$bZYpJ5Ze_!YXX$rS!?@xyQ_DWd~W zaEz|WmrkF{R&cD~Vag5O;8HjRFJNE|PRP+&2Ny*anF=>{z5-eQhw6WZc|l82YZSP7 z3|DZC)4csg)q^BNyx2_z1p!%ma0bN-bPn1zMf4ND)z#D_E9ciRW%j>nYKDPKtml1= za%rNAHpr@hZRq;ArU8x&Hf+i65aCGojLfdhg7QGXp>qwQO|@QuaH4i4UP%$?5E^U| zI*`Q9Siuk;-8(?FLV*PwUY^R>*kB=F3Cc%?cIE1YEH0A%oam$is?KHHWFqp@tixD! zEmMQdi9^iy>jU=Ht_&oV0*6U_w-`z%jfx$v{<^4WXH3(#FI(4yzB9x#^Dp+Z8~3&P z#!{&f;O{@h*e-2s4%ke8c2-j2O#H<<_j0nx0!mH?uCTOHNw3grx2;LF;L(dmC*zRI z5;So1Inn*s6}7o(^d{+(iJ6&HscL>x6Y&kZXV*vXS;LLFA*!9NW(2A*a)EMi42fPiwH`89LQ~y2~pAa4thB{?WI)^b~!6$fR&mFt;0y6xM-|rDQJ!X z`{I^2JENC?{Z@lXMl!$3^9Bma)JlIOUQDDYWo z^8V9}?^}v0t@4Hgoto38#k)lbQUgZ_NG!z0#dX^*`{5Uo+m}g2X_wSS2A=P_5nW%w zjdsO=4RqhYfTs@C1SCYEL<&TyU;`POl=S{>gv9D1eJ1yJbTC~{&CUja>6-CoUZVNu z&$l4L%quI4aOuo8l^D&*u_!Gq#a1d6l;Cx%rDoSLM@l`qDuIi{8c9t2d)ncg z>tEr%d7a*Yxcv`YY1MffFS6={t+R>BPKn0<2%aDA$odqbds}Sm5DfYR`Bg*hI?D&a z1%3U4lL!G?=}r3T4>vn+2S833x*&{L>w)?Z`OR7ObceF$t1vZKrCrTNr{*Bm=6|iWIuvnY(21sXR`sPgu%{&asU`3>0-UhQ z@p~zdB8OnU;MM>sN9rxB~pyisk(w^?C)uNK4|E|_^~Mj0|~Pp zb+G+JT;ea|+}3>f{QdnWr=}!OkdSB~zf^zAjR!~?$Uhb^{ht;9r}0Ue=XzwU&VDTY zJ;)bpy6s^~A@KZX)ftJ6fe|20YiQgF*u!FSdcJ0Jd_hQOUQZ&{53) zR2)m)N_<|tVx0m3Z-t&AqaFz-=NgrVEgAXFZF(fns0adT%K-=~bcp|gOT2wLzinNU> z5LI}e!H<|th$&~t2=O5`Vp+d^C??yz@KD~XinD(i)!Xhv`&{hC?{Gk>4rB$LU0k|N zxT{GBNJvKCS}f1Pk zrIwM2=~7EuyWGac1~nU($2wG7MI|A2^xI^~tT?0H$Gan*_HFC-USfNfr)&( z>9S?{Z`tDj#0EbqD?_vj{D)0?)(K4cM_gmaGm6q!lfo-h@KOau(4>x!c`wlh`}%Uh z9vnHqFG~d;A^J9eQ7Khq@cLeHvjwE;Q^9Zzm8SK6y4{Psry!TM=S*OISP#Gf=Xkj- zEn2eCwK}P0^EW@>a)Oz~ONnib27TQq9yg$=)#zwvr(*o?d#; zn2K`rS(E2iKgzB|eK}1!4E=$FiD~e7cV%v2A)%u~zB`&0@cXxFrr3nD_m^y8l8jZ> zc^ffhw_bkdGIlqZ+)pKTb%SpI53nhzktz3KUhD;TIhITwX5@eXDNfQTVsi4HLOCw% zk;nbK9gQjjylqFMLx}D<5g}(pAWPDxHrQrFZ{NITLvOUqyyb~y@>UMpm#$3f2JECy z@2y1*FFNStqjCmDUFQmVmlx8AIf@CCCIx!o_>*tE-z`>gnoI+-FPXRe4NI zg%gh(P?h}}ZdSCRB4~)&6BG>YiK--_`-gydL)%cyi`Y-7|I~YJg8)zxP`?5=U(eU zCCUdAC&J2-H|R*|*m@Qg%)rM$Gi%?7S8LPL%7o^E!B;}KI?ap0-FXm9?5nK|PqfiP zw)Fw;+QkfMliEEZMDBMbk2BNYfYcoh9HM{&Qfd7rs2`1pP|lec+oQtm@nNP&NV8t; zUg1G!t47SKD3<3v55Fd4dAB`bXK>-BqgBK1GMg#q*?j=If`qpL=Dun}6xt4Ok72VD zM6eHtzE_t>iFw{)p{Prj_uAggHX031WU|^rba)$IgQzo`RXnT+$RI$fdxekYCT?#} z&mWB{CM>v*(SB1rRn!p17febG7f!N#vB87*nO5uRf1gZ8ASM3Z?x3+x$($ zxQH&{Vixs{8drR(f`?7J1v8xz%Tl1s*xRXNwKzMj0trnFh&Jxv!3w>&go8%iz;~Te zX_qaW?`w@!K07J}GCRMLMpZD`HKsn-1I$yii%UOe zmJXZ8g^%_qW!wg`?QUG6fdwO)I)M-EwB3zMnl|`i`a|g#%?J|N>|}Hxm6%4-#U+aK zegDnc^Aggswu96yB=Ea1qV6pOl`na7%nf_`33r2UO+W^NFIlp)HgSjU!I-84QCm;% zv&~9V+HN?9hx9EZ=Fo|sEd8Cm%I~8Q$2F%Cb{XP>H36o<+fT#=%tH8`2B8a7`1t;} zmwR-epMq@A{&9Q#-^s~I+~D9;_S(1_ijSL$Ib(eo8R@CnSH;DQ8@g_0wA8@PFyuwa#CnX`Acy}Uy<1T^dl}C}3?WR^|)^k>GDo5B2Jk-GPt$(2W8=qBCekEzM(ny3xVeY!R;6ldJ)cjyB4xV=yxbfue< ztL*@KJ|)p9xDIa9P$12K>_3W)F}Lxl5m(#Z`AT2F5o@S`&lk~FzyKA;1fCXT41c?*<#d8yU@#iJOxPpNrK6|juU ztDdxXX{)#IzP;CIbFUsYDyE4}v%dRxIw-MfWoc=&!Y;6?`-Tv`WC0sdh*Gx<4yymW zlPl{3$1f&AqUlugHTPg$AYBo*KHcBDOW+zz88vRvfFPl}DUSu1)X9Ee1at}LsIgdrRlTwxy)VLkizVnkci+65+w3}2zJSi-|FlmndBNw-=AFF`?oKuQb6E~Y z?yC1A!d-UC+!n~L$uM*PGSHxnZUtS|;mGxhKtugG6K)WYCJe_sDx_5ej`KLCtupKG)I!x?O{+kvr2u$~!|6x2;v zg3!EX_{yc>>dGQ$LiGNf65MOBcU`~G?|2(^T_-a?bA0jLqK@x@z@Jtg?4J2OF6bAR zmR`EAJUCLYYK)DIz055@P{l>_rf1s<5|I|%5AW<|HMvr5SWD6rbL929>Rx0gCxNeb ztC<3QbJN|>&=6#WO#X+M1~z&_98`JwKQ;7*;Lr&Pk?rg}L*GFzTcs!`j?XL%P-FZ7 zxiIDA=i6Gb^KC7b*HcSQB{ipd z@^*`={tefr^o)!zn#}e)gJnNXVd9s4scU5AVsk)tJu+Z~b^M>^weul-kM)DS?z%?U zsr%&%oLV~nD9KKb$wf+};B$9S;(k1P{1bKNb%`;#H#|!h_fhY2-i260`f%&x2$RgY zl(4UEC-V32-+$vI`L6*LklHiJxawo&I*YYq!KYT z^dx)bbVfixpunb=^Qgs_`YNH5Stnc(9HNZ*)S=)(6`zXF{`f`lbut}S*-dB|(6j4j z-cv05u^ufvinbf}20IWK>YsbjcS$?*S^t4%W|D()%iN-({sVm40zcMskpIjZ`St4! z@P?JO;0UREZIkcy!%1BLhRpF9O4Hs6s$1U;_5)VM`N;4vi4)#6LuUk%a&Uqzs4;eI z&eSDoE-FF-HD;@htwEJZrXRhZieur#*N69%ZO7S0vUxmgykRy1UCRx=<>U_6gQrNH zwP2NvLOoq=_c|YaH_=2mG?iOe7|2Kt(A{l|T-f3)ZcGmBw?#HUTK{@``PV`?bWugu_(J%)5Fsx2# zN2_o<{fn62*z3t}PF7lpz|iT)bqb4)#>N%(8a$41ato%Di5_Z-+45`H-CbhmJ)Jn@ z%AQX*usU!RN&qvhxCyt*w75zFztl*a?bnz@z5o=ESc$muOHeDk(vQUarrO z|9}6nsCf^Qr#`g+ttV8nHaI!qwfAMQvHfo+POK{y0)M(^uIL9{pOuQf5@YXl7=8_A zdT=762qJR~5D&`rH5L>gfMY;Vp9oI7FFp%5fm_4Q!s4%7DhU;A`{IppBt8x|)N7gT|mYc(6-P`^x6ZLst~- z&y6$7?>Bh~Mf{SJUt7QN^k=(#aLO?EJ(!%EKK=(j>a@yD=L_jr*%FW>9`S{4kDx<#pJ9>mglR=LP}}(^e40UyPQORTDyjf`9top_#Vd zrNq4vMs8H7QDT~Ra9ZjMV%j@qpZlqqaJLacMJpsEbk&O^)|dX?YCw3d&2sj?-^l|X ze`?kLZ3uI^|9>Bl63t}T6RPR?1Jo4X-#nrLRlaLElM4&O3V|nOMSB$I5&cGmB_*|1 zU3g4yUq>vAsX!VL-9I1rDuXiD$p%jUC9=1H;1p0#j}p|<2?_}<_y$a6KK!L(s?Ped zOvUEl3)Hgw2jY7Hg*>IIvV2Dh;zmm48*`XYU;-W=-|M(iJdlLmKRylu+cgtQ#LeA- zd?|hp)d#wI1{zjM48CoHjbL)Mv%iOj3&uk_9Z!fU0rpJbE*yUv3a6U&5DIua7R3|w zf+H`h>N?(q$_YK(hKT>A9C3m?HGko`wUPPop*q4aUg&ImTp>1yZ#e$asQQoThn*>C zXr)h6(jm0@OcfN#g;v))3sEGd`eza~<~}AoPB!q=oU7Msjj=259h1sSpW)YRIw-== zh{1-}2!Yh`$`{#`h$o?khllK^Pm(s9y&AtE@mVLaZ4<|s2&vd_zps1)Do~J`Hf4O> ze*LAI=tFuH)$brIk5OaPJxZ8q6<=Tz8j^0MHcFrZ+qU~6zE58XTd}|>y*zqi(GgQg zmaISmTp#Nf`$EqD1*+w^_O*+}%5zwX4TH^k<^A^kr)_X=Fs%ys_Ks2U!=xL`r)bGV zz5f(-kqbCVt7&M2E-o%|Iau0^jn!DZGmUIT5Ov;44 zb5Brn6^c>SgUe{tpMsl^fc&u&l@c#U`uNqPN5mxP)aYp^N@cS(P9q@25BfP7NSUjY zC`gpd(72A^34HsCv68T7WjCK)L`vO z4w)Dkk&==MP^TT;LFr<*!Qq7eOwP%NDba;B7TtH+0GvLJm^lwj=!viG$t>`5YNn^f zCd?Py&Tss$7QriurhtK++_j)nOBxmY%5baKZbXI-;P8Gg5&U$LSc?4W&ZvaW*7j|M z&wQAi#gr^oM?Gq_H7EYcG}+NTUKU#uJ}t5&Q&hOGhISX~`PIAcyz_xxY^V=3UDx*@ z18!Y$^J4jq*Lv)k&6U;8(CcH8nA9KdV3&fC^_L9rgR{h5A)kBj#>pK$Jq1}~v(4j0 z#DI)%sc22u#LzL8F<^PqO$g^j3uS(Pq_TfVe7?immoY280*ANO(<2EO2&I4e^a;0h zCp0rrsO_>ev4-2!QVgVzHszg}az1xIelOUa-?sj!b4Q;lZ<;F4h>3-@c@apTye3%q z$&j&-PbyOsZT{_R>2Edx3MFK(#E7IPKYjXTelJ!C3j7fak{`lW9HpOF4I?Iesb7FY z#@#{9czKyJYK}B5sAB1vF8b{7_c!xP1k{Wu3Jd`=!_J_5C9NI!saeZ-1&+rdPLPVl zcgfy#h9GxY3MPEWt;!G>+~wuv6t2gQaMM!*Sa$fh5(u^eUu@Oj)g#C$PO-$$$`?~; zPEz}_oAXd=K3&K@*p}pdNq2DpJz;`@aYQzD3idUdf z2P`&;iHQbl9X|ZtFiybKPsvWD2HYm|ON65RVNX1q?T_7O{Ukc~CoLn!6+Uhh!5ri3 ze#>wEnY5#Vmxz8wqq8vEPR|r{2^Ue1$L3R`_TF|9aQRCJ)t+C%Cl72C^oy{!?{QyS{vA;Phn7u*eYa&>E zg!Y$@6P@}dUVW=sxJ-yz!r8^{l*zJheRj=GhTL+M!4P$VsB9imP+#Mb)(m8xZ#3@o z#leg358!B`EOuU&5-KMrI;n;THSWAb5m;f*+(&&?o&p?xJeMI-Yy`ce<;Dr! z{o@W44$5!frJ#O%IsZdgG>7A}f`WpDjZIR<*e;h_{?^zjrZFDEwaiLaxdI2!EBG(R z*Op++C0{3tW|McCi!MlJFkr2qnYx8TF65Z*8JQldZ|PqQXsX3H7%3G*TcL&&V8pC; zK2ZL5>dg{l{W*obemH<(5SNDf%0YnqywhG%ku1ep!uumRSYC{38W5PqF^7fvF1G<( zcTZMOA$6`HEmEQOzA*NL`8pK~y9kufp}2vtf35r8epJPgG82{83R%`M;@nErX}vHoRD~wdt%$2 zwQy-#Ua`60=Q0m&9-Yr{P%~dooZ#T#Dk^OqJ%p1?bl5r9ZO3yhchJ)C&<8_9n%8Vv zfglA3!ZENC{m_-%pW!R!0~oka@*B4c6igT@Njf6pI437g35)16+S*2Yp~KR#$j9sQbDoA zfXZ7D$1V_&)yhptPqDJFv|+n0NrAZHQW)s<{R!q1RZ!Us+A}UABLXCQw|95*tEzCp ziEwXU2)W{JL={z+VT__;!`4}xY1<9V1TlN{Z)|5>9U+*lbsyE~@g+b`x~}dwjqmzF zx%=t)Fu!*pNlv!4+r5_e1s_sIz)z(&xvDJHpdB+Vr_Fgl8Crk-hX_zBap<~I@BzHN zjrD;vYM}Uw*Ubrd1BFTD`y1htb!;8KGKOgJK0Z1+gs)$}9(~knZMjz~RkbczFu%RL zxUhx|TiL-xvT^u%d6UQN5NtJ1r(FBMasAguKqf{qPf5IBs>wNf8wNIgm}PVv;=bERM_TO82TE=$ zVzIwghFstb-aW&2@%w^_ySMBEy3UYedxymKeaL>dn;vXZs9Z?tNY9I*D>Npqf|kr5}2=sud^K!KABD^N{ANSF&oi(xww(x_3o zw6{(Ys7;5emAPcBeQRyHS8&sx&N$yzIq4;lOTh-jw>74$aQs+7$x zHVLtd$+e>6;GlFB1`2HM&2gnqSu7ta>+9QX`40*rML|bCFLN}nJ`soQVT0<>V?~tF zz01Mbm3ZFeX!a!{8@kPH`G?S_Sa0o`xcTvDnme9&0dgEj%$|Q0)v*Mp%OgASuN&jK z5gvqw#;5HNd2V=oeEhQkGCRPahF+HAA%df0$o0WKrn=Is?!ja`MMTU^b{&OIK;^4oPd+5UbW2jhad|&it{p=1&UA8nDyJ>F zYe%oqmg2v%GLQ-rWaP5ZS&cLQuqmx zM7EDOUafYbi=~XL8pgch+t|Kqht4mAEPG@7QAhD)(U(5>eY)#%A)0! z#{?CtB<|D8JnFU2s6i*t@!B|kaa(?S2;y5P?r_MYiFHkVKlmw-!tia=;N=7A#pPvbON(Hv z`+gV!)4=w1O6VE*8R)WHKmhA9f2LuD@omn)7Q z+SvaU4Zldv~W}CAcdjqf7 z)FTb74~zjy$V}}b^SIgJw3eE zY+||)Ydf=fBc$4OW0@1NnX(Y;+NJ|x@9Y!wWlBQ`Zv0JK9p(1<;k+1-tuqqN;n3Id z+E9Jw>s>8@W!o)%4zp%$nbyEcpy6nO)a%t0NRar^UIH!@^b@ z0?*DN7e>Zv8xJw_WgCFMy}kXtP-~`1Buh!euEWo`*9pD_8Q$wKX?}1oj&b1VUE*Ug z(D;7pG{^7gb$H*Vx_3xvIPJ%h!qMd4liG{Vs4+dcnDUYOZP|aXsdhzh_f%my^4E6+J z*etr5@i*L`@#DC+b${u0tUuLH@-1w5h=rZ5V|SdwR?*Hhx(qmn0BU-Ali!y)o+|V1 zm-ht}TYjfr_owUnRC*!Q*Wfn?tk&K?I^a~@mr<~){WJin#vX8y+E0!1_U)VRATim& zeTS=(bLmk!Oph|@Tq8l!5FHW|M80)OI(y^{mn6m z_i3jCq+4TlG1bhudzeEu+5{_%?d&Q~-vyNT` znb%^9EjZt7AtJCB_y=--Uv+dwTR1N~e+v2yCah^@0Hy-}nPqzn*d0?}{(ptN1yq#l z+CC1_qI4*of*_$H4MT^tA|Q>ZNJtJLHAqMah#(;iN~d%VA|>5OcXz`KGxK|JpL71_ z`_{MCf3Lmvp3NR!pZ9&@y6)?~ulv=69Q8cJJV=3OU6;lBNLXD_QChO%EGBIC2g~dO zN6n&|Ak88@1;yw5CwZlBr-W-TlAm(sE)u(Tm`DyZk-Ftm(TfkGjW&RmzE0NJ{vUh;Jl)M!!M=P{m2)9c!<^9 zC^jK1x4{eS@Y6}Zdg_fp&xSC8#26RA9pT=$SXo)~5)%{uRJ~35<(gJQ7TyLv(m#0k z(1*v@*w?DeAmAs<5dl2QjZE5X3_|y*>U?W@2UMVEJjnwODE&!ZJCu!Me(Zt*(b2Y0_b9vK@WF=8HM{!{D1r6G(wgNmE*oDI$_Z7-Bz#rzRS zq>Q^)jV;(>V8SU29Q;})?}15xjNd!4ENBOIXZ;_*fv{@nWqn0><@m{;COlv%07UTg%2q7i^p^7nHxB7=Tz~dxn|z>R-+VXv665>FHQ((V)VXC;=4yt@fuyIlxhIt{HR@uY1aIL4i29 zs|!$?A#TjLrb9P*)c^KHeDgxPIr!=e zOUnsoG?@ik6Rv`HC^9@E;#GX-?H%svreA&BxX|C% z*M6|nF`Dc@dU&_|}PB3wja65qQV*x4-S)xzmIT?%;u0T6N<&`KKTq?DX8+5T9LJa*j*DHn*jRh?GC2 zq`al15c57SHB>)F z({*E(8<##eOYr|n@3#r34FsKXrnTRfG)Fw7B##UWdl3{rl?|hIw5;W5>!J=p&NRF$ z?lY{dY$=0N+%~Oud0s0EM=dTJ^Q52 zt+GH=S~9%P{oefOkK<)AeQ)gcpw*R?3&~5F{WJCzD9{k(O|QX|=8GP+7XC?WJ#n{r4=$S|%$*C=d`HAnNScdAbAS7K5j^g4)-Q6??bzwt zE0l`dT-sea^y*r$_SzORsq9ZWt?4qHZ<*Q4DnLl?2C^^U4{fwj|2iNuZ&4Lr0k%FZ z#RT3DyCDfVD~yb4tzV`RUz(*oWZLx|a>AePy6sx6QH)lxR~C_+JQb&;LyFPXq`bwQ z?h`{E?uPl-UryI>#izBtXk2l3(*S|cpTckeS|6lln=C2JTbR+t@t>fVP8T&91iPQ! ze7^kxrlE9ARTdP3S13D~Icy!-a3q668gvK%KIwGeVgg2vE{8>8EKCzm8k+^d52v>A zaTbX2k6M=-)eT&~F)t|+0fNeWe{>7F2IE(3N2 ztk0i6mwI0~2anGf9jvsZ$WpPtPtw}H!9*-rJEIRIh)LQ|jnK9i@S8;V36Y|UBt%wM zsu6#wz(RN}gXCS<<++m^jewTI95rM@WhS+%?RjGs*aY)em{Tp6VZQdxG4RKa2l+sO z0=uiTw^#AW6AEV+7aaqG^&dE4J+$|SJ}m&9fdS$>%?SflQ}s*?6QHNVV>LCCLuT;9 zt!PWoecAaB&s$Y}W^I9e0aEwJLC?wo~1N($#TfA4plRRi5vs&x3Jl!AiT`335AhQETMHhj8 zJ*Xw`h@%5`I$;G8i~Nd{w}FBpXotot(j)#yK`Gfh#a|Y8g+hVyQo2C6+d$=aR@-U3 zz=^}%V9j+qVIkL)Uy@?}%Dxe;j`P`7=0yugoo#cA!QOvtwSDvEs<#11w9wJhKVNuj zXLoGGHO+V_DC2Agthx++doqj7U>FpkxZnvabPc?m4FQ^8)SVt3ZmIzw^Ko;VE00Z# z8)<7}&FdL{EpX;|EpDi+Y%EAF%GP68L<3Z$to$i@T|GUL@cNj60D);+EiF<{Pfy@r z*exTB`N{B&M1S8?&TWX*N}vW!BV$j4@5oEN6S+V8UZ9!LNm2ZZ-@%NsGyvxMI^tteoAmUg|#yB?2Z0xxzv_V#(jiOgOBl*@Ds!YtipRv!_bT*CS z%-gSR*VJ_Op?edkrb6RunzX&nEl@!r6F+c`dy1hSU$yCd)gw@h({1u%1O>e(!t%QA3`5?%;bA+u>|Es+zVr5?L-d^ zeRliKXI=vL1e^K?<6Xkp4)wtk_okzi&fSz>t}IrN-acBwn!7nH3>?!;XoO(0H)r*zm-nklgUG4a=N^XFozhL)3 zEbk1PSlv?j>$zAamWg-G!;>g172JD-mIq}~K0V|5iD3{+?XSw3Q?`LDRy>Fq>4?w0+*jKAoICrd^lw~DQGcWZ0Q z4L%ME`z)idK3A1wvlc@+EL?QO6)@*Rn;FM>9ly)u(j6p~biB(!v_1d-Gq^GwR#8}vS=owN#uW^E-zOkt( zS5LJqu-{e2RXA$|C^WTHy$&%#*sft8p|&qJHOEWL+#_~JQe@(NA3pKCID9pylQCD( zsz`Mv8CF^O$kxee5Djy8rv=hT2%o^`3OM+ad~WQ`FHl-b`XEUb)q{7N;^X5F68q>q z5T_{yM>5B0H&MY1rJLGVe+!f6drg%ed53fng`>+0Fas>pSI5!NiG`;V2Q+eSFE~0bmkFsceiNDcEO#E; zD}Y46&C6q9RX$x@`ODtOX@SQ(wC_Nzt*x!ztstFBc!YfO4igDx`_9$$l9&OWOtrfh zAb?%d$XMq?z3FabY+S*+ggAAQbXycoC7DXVr*rf?a3dAypNkUP7E8alco)omgLrW6 zcj1PBt*p8rxbhe;bJMHpT{ZW;`JG|X#h%@*b72w-UtgxH?c}gTCjG&E|L_v!ws3i- zRe4|rchX7^0V+T*;`bUXA{f09Ytp$}fACZiVWzpbG3CCkT>7xS1jp|e+S1)Vcub({ zNVdoiin+S{WVB_pvP|q6#Mm2hHF$?K-vJ$L%s398_x^XJ9NYnH=99FfxzI+%l1ufVwLC@Xlhv*c-` z4?@;!KOh_1hd%hjHr%5=SYO(kx8nA-sA=!c;&ldRh4DxR;$J-~V3+uMpYdOfq?%@S z>wFvBy2tXWe8wMgR7y`i+K^z|mF~-UJVndbxD~e)RS$CZLgcrOCR&Fx$Ma2FFcM&E zkqgWI1FbhvhK*OUcR22J-bXgrDn~A?Tp$k?cbMWpx0Pbtmzbq-7vL|hCqe4oMxvzq z(jaM@XGjBM0?bG)p*QFV^v>gLFBB`R2Yj zMWSRPNy$*76+J)Dld?5Y-plM68d=x3JS}o~?OGl)Q=@lw-WnO0)^I<#C@QyJPQ~!m zx{rFVR{uO_ZbjhEYOla{g{4D|NAcjH$Rzf_6$In9`vxIJX?5H0*z-uP+88VHXnWg0eT}hLjtTn z1s-+PpSWLS$VLn9%(*Y+u)~>0q}QU8NGD>@&pvw)hwDrC`H1+2G4nS;V(keBVQJu+ z3x2<&jqBa`Dt0P23}qSW#-WNAG?Uz1^zA-}dBSyafS_*YE?%U~R2Z2cOnAP0*dD5E zki70$2?LM0el$mUS#W#nY6@(;yy(Fu^*|m6xXtD8M~EXWGELKlWCG;C3KJaA6%x20 zl_`Mp`$$GuY=BR&Tc@r)b!d5VL3c+|$$c4?oZn`dgqs76-*^j^eyP!glqozq0bmlJ%I5vt}YEH)QHNRJ($5q>03o2%Iz9k5#Dehi#bIgClezGMI&Vqu& z#Da3g=TIbqkjI1SWMG7z3GZEPq!|)x`+Db2Uw{7;4!gyK$l%`Dj_qgEFa0Hx^xgf@ z@ogkQ&kUBVW4GEfm_Pi^mRkyV9$h90ry8Hox~rc@nEgz4QJauuzbxoi9W(ZAXp|R9 za5sj@HrJW*#8axWv2n+-#b#w{c2=p;)V-qV=;)|j`7z}5>aO}dEM(r-)Tnm|<*xT#(#y>~$7U_b1BEct zqZN1u<0$Et_>!qWp*~FcyTvs0T@XJ1dI!fH_ZIuXlJTtw7xeCK@h_sMp3vyNn$t#^ z@x?PuYMG)-3wceIHSZRKpl&ta=u<3)h%|o0M>!1lj@SFG5@A254K3kOp^Kk2baW_2 z=%&G~@z70AV9Kq_6(I3zq`|^^drbbt$8>@FrqkqKK#<4&H&2;dJI+A9G}l5 zZyE=P?m?`P`KPL}5a&yoQeXRb)bFk@XbM;psK7c@ht4#u3A3&tDsOVQWAae}2Iv-> zz*qNE?<)A*__%eTR!Q25Jpa9OWKUL$IlsD)>Ke@8M2l_yZqV#ctq0d|1%(WmXk~LS zxItRMkNv;>{YpHFPIo@bW1J_u&sn|?4{pS zc@PxH7z>E?-=E>lahPDo*!#8m{y2@{hgq2YSzzEm z6VY1G$%!lSWC}QsI%cnPzBSX3H{MWb$z~xOoG&2t@bQ_kkwUlt?$@&M{X1(8*&{$2 z#{e6|lGz$e>#zs=^PLPlOOs$m1f#k*iziD+Fc;tm!I+ZHA=b~F9xW;kX#6FBrPZ%h z{W0j7xsGaSgpY*4VkT^j1mV8h`nq31IH~f-M4=EC0o5Qx)Y4t{zgVCJDi{uADSscy zV&(n61keS0D^J96)>Gt)7?%Hk91vjoVAF+!fmS2=e`w(THJ65%`9OC!w{5SY@h$l; zWx6~;skAS-!fc6W7bc0(`_$NQNf;y*hJM%Z=^ZnmS}mF}R#yZOSZ{wt(2G!%lWwnc zw6}ji!D3H8_c(|wIyYU`i6_Z<@2^*zmKben#a1nqk`pvB>|dRXIjNr4A?H6y_d#uL zP)c_6fRRd0m08;_{kRu%lwmbaOZfKFH5O|fMItcryhbAjG+Xo~lVWn8Nbwf&EIA7G zunK3_t^Vo={PX8e^WotGFrwyao>00U!{FE`%3rD=-QHnRlfb@r@80|j90`h(?dJER zbzg1(9252CSPAjlXhLlZ(^KU`Rdt(cGMY4p`(@SR*O@h?kzWZK0DC)lB;ioqFa8*g>j&JD!IS5mtS0KOEszbDO zQb(=-N-Jl$JuL3`ORUy$uE$@RhBt2YZ=85We^)$qr%=F@F$gLeZaxUP#N;w+51m>| zP+-YR+;3gLdRI}PrZ!@&&C5(~#c5YPMS~@jq_KST4y!ruX%1UI(yjh2NWCnrC92Qy1jQxRN3w!Tr!#EG%Vdg`GffFVF7L489TC z_9xwbhAUo7;l}x`OWEz6cxG|nOD|nc+?J>hjS7uGCy{|(upojf1u6fxYpEZCrv_1{^GVcxL^vSt))_FJ5V3->v04}oNlBN&(*WC|(#$!#- zlFT$+KdC=#OBkkA0S5{jaIy(9c zDT*@7(`Admn%b$VEG;#MV(qw1h5ev-62zsPQxLMuQa({gt!L^H>iLdND@C08!vw1W zX8**UG0@1!sND2opU1D5s{T*3ZCMwgzMLaD4MGGWd3i z!0&s#`##{u#f)MfKseI?s8}H!$^ceMLRwn&4#Z{A;7!0&NoL)??WRb;EmJWQy@Kiy z%OHCpT8^xf!uq{&hV)qZRn2xgmi`95UZtU;bXv#eCQsMO1FUpoeoI$Z>I-kCQ5$NI zxcdB)+4KSm1U0avMcFt?JZ@_*1ZaS!#I?qK3+L+&h?xzjq{+D2*W4!s!s`x?qxg&L z#~Hb#GGRgpddB^KQOxu6ljI!_d%gzR`uh4Sx_ytIKXYnlaY{7s>SmVe-FNnwnhPw<2=xCS&z$Oc zU9JZ@`mV0t`PzGj=gW1_wiOE~t|0rCK4JI5#f1{|6_8c_pe#EWg_t5;o?lnix5zzQ zIeHhIl?DGzbZCjyTq1GnMxo1EUqnwl_~-M0pUu&CMwv=3Z9KUJbh&y`#Nhg*&p8mv zx$rUUVM`1csHpeJBfwaVYaCe>pBBF1^zdwjyDi@WQ}#N|9Wbk_C286)^9!iIe>6XB z!!A8ZAWdH57HP?#(?$n~`JYyZO#Yv|mAI(2A8^*&giu)Q+z6nnV%zI!=_&-bm>e@O z?_N?71j(@;+vfMF>R)&)GvPHC}bunw_f3;0d>GpvIw-{9&k)v39dHvZYKu0S3Mi5@!mEsyv!tC5mHWSZ zp_X_HZ05k+o2cII_6_v3T4>E5&G$*}1I1z@d_KWViIYnu;KkD7YqK5X2>Czs*&1p59wl2Q3UGyR?X_ibL@5~Mv?@r$|12Y0Qd)& zc8?(S){w~Iy(f7>RIdO7SI98kF_UoaiS*11=eU6s=QpnTG&wt4MR1wBXB4lLf)dmz z(Xvi|e*21iALqR}&KEWpxbddagYt4n{i& z(Y+B)Y8ngad|e*5S!h@kw?uHu&FxOGe8=5G*4)Db!iw>&?_f#8MY=xlzqP3gb*`0+ z6V8NHAV?LPv)>f!@;s;da;=oP<1Wv)H^a+;4N9T*r|(97fl6LFVj$0Y@ zjO1!tIrLT6*GnvaTz?heG&qqXGP}CA=2S$ie5_&naJ_h`qbbxEzIW?<)2-esLRP(; z#jo)>lTA~BKr3$0bxr}H?@#VND;eh-y`7tegCuF$^EPmuB$fT5y+itJ=V+^@@kV;m zD&DrnX3j-Lw%1sMH)XbDCgBfbej_Tp@59#NnJSMMv$xin!be>$e5$A3hD(q-f4cKl z0poG(-au4+1?(xBqtXUp{uhfP%OPMBlr=WqY*L-c-OBT*>}O>8{yr1Va;p5Zq=OLx zVi3mDUmqZNxf|*5Um?ElRhK|URMedGHInjnJxF~B-Ubv3y zvJ2Gd&)C+Ax0~q2Fht#595OL#>uwA~XALWCES?X}kz)^YOJK}U6j9v2FLG@kesqz7 ztR1N&3}u9)+bj3*Tq_?sx9CWiVF6N+2NvbQr9S<8!TXhqPVyTA8jaVNdUJHf=ShNc zI;f}z=`F>fk$%h%#VmKdXEJ#o$Nv_Kj4{i^FzIYUPHo;$1w~V`1Q#l$>B#B`R^McC zLmpF^hc#tYl?cmN2xC!UpLjOL&Qa&Adu>1`56e}Ee9~xOIynrr&!n3yl?JHGH&5zb zg*A`pxHQ8?);{pFt*o!k4%PaCZa(g&ypK^nV&=|R(?lKQ*q>3~==}ohAokELmXBfH zEr!{Sy5oM6K{DhN&&C9kON*nP?9l9g?X!M4c5>FpC*_JW(2eCS6#}+t68;UV328Dk z*3!3yoI~sdv1F%W`7b4)V)IM!_!gcfPDyi++)vdo#8mH!kbrCL*R?c5u!eSG~^))XklW{Pb(QO`xif z7V{!aOEyU{yZ5I;%B*#FRJ!^U3ZYR_q9KO;hj@rX6+TCh_S$V=`{=!>ELk?GnF(3* ztfio$pQRe-=VH!R$Ix1G2yXwGprWw)g*p83{H7+wR>C z7Q$qxpl=7|Nc@hoB*&QMibg*6KvDsmrDB{d+NMdpKjSncG*5T@E^Lra&!pve7G9F) zpeuST3<~Ut2xt@WSP5Hn7v1Z#1c@dI3Bvr8PvDA)Vinru_A3`PnV)Oe(m9SMZVs9q zyCWq@P&uf(t@^m?w@dhGJ3^f|M7zA%@*dyHIS1>(;E(mxRt?XKAp~(tpyg!G_Y%E#bThvdv@U?q%11jXwOD+??kD-9HX?77 zt-vYMXj&cC#s+GyEtQ8}mlFXFS;g&5@GSL0=J?AeyQus?87Q%TI64y^ntPI_D0zbI zWqlIzx;zxvi14%$@i&jArl(ssHvz(+OLTdnm9D6rp@D&*xE~`KJhIO-=71} z=WbeHO@UH`rQAdyS=Rdpchq;>rXyGhymzO?Yz1!_0H8dU*S_O&@UDH$S*)H~TXFuy zP?SD72<1k>B>{N_HwxZ_;Xq_kFshxWJ76b##b`k{nG14gyo&r{ad+mnp;0AQNNv5wYoVJoYWPOhmh*bf(koj5Wy&!jNFAY0xf>DMdf>(66-&9`t3qXg& zu)$oOz(~U);nPkihPJHkFBdPJSarcEH3zPG)arek|c0e2>x6fm7g2A(fr zCMu)rc(-7P82fJ%e9W%z`gzkmr8D%T<&NFi5TrRvEE^@6^al6hyQ^?cjqpEYXCyu- zpRf~0G(Z_Kn@}ohQ|$)zm<%~p5#{j_R}UAj5gz=+zmILR^-MDdXJ)HpWYekrd7*NV zw`70q&Ds8Jl8}Aq;l^WoYWd)+wGBy*3-|`D@ZL_$vOHe zWplo*rsPfjMFxq#BecXcvR)`NUUJanX$0=NscXr~X1Y)) z8nH(Su*qqI)PomC92HSOrWMe=ky%;mjn>yw{P^rZ5v;!rY z^KXIvUaExeo+~u(uGoBg+0dQG&w_ra9Ko$s$ft+r-Bu7x_vmy3c>* z27+IPeL8Xf)r;-*s&IwdTAInPxoApgKIf1VTTvB@EeVGx1nmdDb9^QT2I61nBX#N= zt1x8rULm6RP~(toNoR{45sua|g&BtSViN;w(DWBKUviGULWznH92#8NeboW`yC7-F zLP*3)VnBw=%G!GMMUKFKV1tZ+!B6xwmEsQVAjX{X14u3Y&0I3<$1b_vm9-EiN9EA} zkKg`q8aTW#Hj#Xs$qY;r=|DgLy%6$~dLi_;ac53XBcv!K#3J!C5GYt>? zmU)<2!Ht#O>(p%Da7ejjVIP$FVp2BFA%?Y%?9${IKsM-M9vi=z2n zUD@9}qa6tT-V|3*s(F)%*|K->;;t4D}(Q9$tD=GwR zlRH&y%pxwe$(Hr|-qL%vf=b6Ce;4(}UIJc5_nQa#;ockVqjNSNbe7d_s}EG(P3F?m z(@R%sfojBPJTi$Lgzm6J3((5EMG=ZKx#QiVx;}3dge>y&TNfY{&n(2q4-Ygzf7Dm{ zUd5Y)P?Bd#rWrs!0Gt8~^vMzB$?%kBws=$-Xm5Sp@B#oUFpCBm^9LIieQ>VbCJR7= z+4%=wqD9TW2CGKKNl4TwBc@AY$Wg%{{ly@J%2J@m#_8*P|I6VCZIC1O$PrQ3CGc5g z`!$l-Kf|>Tn7@|5#`4tjV(C{+6f+jXQ!Qu!(G8W z7bQ+G^zvb0G2!qVK7rC~^xcvmjbmn|E4b|VDdi`2^o|YaaNmzEp-si#A8LgEUORdt zM8{1NPE&eDDEFfF)i;}%w35{BVbg-qLg!jLSjmK4WU`RPm#CZ^U7qji7tN3yC{PVw zmOtlJ;nd}2uExGWs-2tWmB_%4AibKa2HW7`4Pn;^SYLg}^fA0cZFTEo(t{jr?i-8` zQ>NYsDWzs*O21fd%2BIlCWqz*J?M%X;i$@ENf=s;(*$giKmk?~ScH*kc;-&ruMs5c zBRP+Ph&NQVi@#wBgsdhMTToaeSE!2%kuAUS{75ti^CU<0jwjHdr1;vijQj$s;~E_9 zAro`F#r#If{KRA@SNWDJ z>X}Z{vEa>b!`21kTb$0AOxR%vdbkMlr(4JQJc9N*p4XRbZt#>NLw9xfVRviT5zKZ9 znEAjT?D%FI+{M%fOQnx)a@@uy&xARHUyQI*6?OBP?hzI04PM6u;O8G1Z+tiQl466og4V%A`=Yc zZFVN{3sBmqXyi;;!N4e1S3|qXQtvG$&DL2pFAg;t7%(i=aR`4%^wFm0vtcY}F*Nil zajz?CZVo3q>_q~Wyo0sm+?v1iy@CvA2QthD17qXx=byZ?d08Jd*Y*3BOIj302!44F zPROOhaEnb=M1L{5NnhT!dg>IBwhZ1JAWr=bf4xc>o2>g<@8-1;1!D zb|TbhgLZZB+E%NQA{hLLPye*r^3AYyc>lf4J>F~CJ>!f~zld;tC2EnBX>$iM-8@ph z>8h{ySdEHUXN$+I%s`>i&~+MCKA`|g&3BxHtWnQ)LcwX>naRp@k}yQ+b{jCip3i7Y z33HR~4$K+5|785)qa*IkmHp!PcEYxJ)c(qicap?&?CNMRFx|M8tSw_>G@wit*oMnojH#9m(+)dtqB$*?5!TC|QaDA3d{j_F@x{E~3k zA9b3dsa$}$idS^VA#UJpb{TuG9^6(|9GQUf;%qjTFZk3%Zp zjS5uZiojwmgtvWCB20Hv`8d}%>hPrN3vYY+uUO&yTwi+gt7?MbxpJJb6a6pUuj-#= zNZ;+N!Hbwm?{V~+PN!cL(F~GxmtIiB0+>~l*;i%c`40UtM&LNNHHT>fU*f`w>SoY$ zA`JwN*E>ye#qUoBl@zmtqjY)GB6TK@uIHv|!4HAQ$-T6UVkRM|#<)3`inEa})8uYoQ+wgmaeeShUM`&<1i^v@_9Ulk&TZXxZ zjd)q~-cJecs^e7|+`HC1kgViO(xKZ7UCXy#BX5l74&h1jY?|s6!z3R*P~jBf3+^-{ zTKl3MFOs!83WfMqtWj%A#b@csfvvJe(QqyQEH71JlL@-!sDKH`fEVDn8AZh=Uw3c5 zd^mijE14)8)9kNd+J6v1*S$c%u(=27Y$1=f`=;tbauPuYB zOZAWV54dxSk2dn;PP!nc`C8KZd`x1COyw(|g8c^i$PCB4zl%6{q1;FSkIFQq*OBgx zoZnzN@qt?p{>+k&k@h{wIeb+o0;y6D0h(Z@CEW@0ZS12Cx)c8jj?{mEZ7+9=W`1Gt z2fs_EA(b-qbH;l&EG?Mw{TfaC-Dd~S09{-;yAO>;2NqL2LF10jRh(0pGkv^{STD+S z3CY)ZTDMH3?8rUdpCxK2@8-m5U@XAcDU-s*0sgz0FGEC&XN{?wT)Ffpz3{Vh0t z?Y;)rA&};jj-!+?&E+iM`j2eFRCRL`DP7_D#c=Vi6@i=xZk`O<^K|W4HHyRUgjoh> z?>w7|CTBz6|VzdB!-Sp35Dd^{I=RgJk1%zAxHj zfh_91aSHaW8-#5e*Zs+8-qS9riX*6TWfSzWUl@6UT>EnchJT?V2z*os|0`}WYb`sQ zE(Efg+A4rzm@J`YI-vp20svXs&+S`}tz*Kr!f)BD4efy7<<9qOKtWL34+i{kaFGr> zs+`~9iONbi$)Fio=Bt;qtwOqTdESGp2x5X1fCGuX{-#sIhGcb(xo`O9)5D9jaIzkV z=bf-FK8|09m7a_{eL9|-m~h$-AlNPuQ>Q!cwbddqp#2vZ`eZAzU_;YTuitgauze&B z)$DfIBz#H=g0ZaViqJ})+al_Ea(uu;vVp!%t{uV5V{4U89uw9Uz1%F zd+bHsl2b_fR1@8waFxuk4;~|ykE6zWuQjqEw#2v*1tVLoYR7Z(d^i;*IvLuxcUFVN6plq)$d2_hP|Pu7%#KP;moNwdIkO{|gSVkD4x)p8ffqOMal#FoKt9$>WZt>< zBlrMP*SZDIZr}%WDs}!xM>Dr$)c|7)_nq#;PDcJbkkf(CF}cT{bshGcsnN$`FS=1H~3o%TU%lvzK!)l`N`~W?=SlSx$nQ_G=IY) zd~=x5IndSsm0UZF|6LyOIUUo^IcfrNo!uo32L&u&G*4 z%V&DNXsxR&Eae}F@&hhm{coB%OWduaHlxy-Yt+~AIv$-ra;;KUl)G&5-)7(gWPgbv ziY_LLo;HT^^eO%be$4Uk7i_J1w&9WZe@9Jr5Kk~^NDP=ly#ne9D1$532Q5^(SajP9 z^1q0A@|h`h!mr8o8L>q0gRh5SkveptAl?E1_fOb_u2jle2w@u8(`hmVLY=|7x^cC|6Tl|+SJ!7FCcq2>ez{*Iy>+Rt(4^KN{EHeW$j>biLS zh1Ce%hr9m8@UZK4cVf!e!ybRnj0jVD%apGt%_upnip!5*;o?g z3ElaHczaP`CPq3Fv%H~2l7RRowj^$09{_dSvKd%`xHoTJ;0oXr4-dS-jkAx0Wal~R zb71V5bmb?IfbPf&6=!LA_|fx@2<%z-X#gR+ry>KxcCXm@s`R4jO)I03Ch>(qy zzYqo+gjl0oH&%tA`sYSi4Xeq&qkP47sQCf%-s#zy<(aHNam4Xh|dj}P>t^m$o z)EKhDa${!HHu1P*{EP;Fh!3|FPN@L%7h#H;qN>@GKou06aa=<- zwGM3c$5SGE=m(Q$JU`Un zK1a1{P45m#G4oMudk&}mSCS;f8m+@k$K_cMCXUR_#eI2mfsmm3; z*JF}9EVB7F*WD=&cKq%xjaEL!#+{^@frx_pSP-A&lNR5iCFD10sX$#?}vW(wZp&8aJr^=(E^HMoW+b3N?_ zfh?vTUg5ZK0T;U<6}TK0xHy1ddU7WnztzLa7)tG3 zeOVg#v>TdvnWGi13b5i3XSqB50gF|dl@r*gwZ z6y{hBae2_e48QnitiDHQswaj?7}4$KnD!W)Rg~mrWMT8H-n}J$h3#N~WYkw^{;WgV zprXyiI4Y~*Fb_0E4GgR!y|wX#n@TR~g93~z6XR&uGLVMwn|s%Bd*_LQn$C{I-ZrDz z-@&^Ro;cLeK&0=21G8ZiCw*o`k1K4$@Dk%hOt^!o`0vuF((>|$eViR1c+AQt7@V(N zc+cu{9w!Ni^VR5CD9C5RDF-3qsHo|rmZd0&Zw#A>ImBk=AqNTLB*aWA8)+1gjoCZ% z6ArkZT?03w?rWRsns-wq*hC4CMahbW9^7A1iUyOO;}$88W&DoO)#!5!a?<@djN zK=2cdqQ*4tbWj)=%Nz^Ij(*j2!Tt<4h3Pn{SP^16%z>z9M@Z}heaFn08F~Omo)-ES z@zt}<$UWH=;L9E4XZ$;L`Vdr}*M>wv8hWJBHp+MR4kVs!T{X#i!Lj*D?Yw$Tflgf< z5dXv;q=L8>a2pWUifCH-{NHiy%)jH>1@T9B?yZ}S{u4vTGB+&dM%C7J5j5+N*DB$T zI|D@)T>sH(#QGlNAjBJWHxqT#@4ab?K005Dnv-;P2vhEiw7e9>^gwqxq7nU=OD&1= zV&mFt<_?tdns;KHLNZ#~^xX+orh zXr??)lpdBMp%Cv~$AF+}$6Wz47=r$VJBZmb!+baihV3h#$HOjYFK73B1mo_$z#K4_ zBwr3gP){%SFh>sOyYBFqTxDO-;j+@GUj0r0`1>k0`!H+;h)IYc*+`t=o0X?J%FW7* zQFN81h@itjWjVmT9vu!^%UVAG2Nb2PI8W^65N81)nlHBd)fJPd)7?0CD#5wttIb>ljqZ21v=N5hf^$ zj>df={s}v`YCaE&K^*03uO7XVC;~Nd&88MzfOKX2+9mh~9X=Vwrah@id)x_M;)J;3 zurn}`AE-p|%mG96(@eOC0t{98YXrlh)EsI3W^)O54>0l7Tls4nhBBt20MBRWp5Psb zn?2n@W^HZaOV((FeQ5a_yQ}wR8qwaK7@zMoqRUR{{Gi#isQ`!l7}C!blP#_Q1I2cd zh^J6baN0PjQ)b=1d3+nyj~PQjHqSX6`^^PQuey)rYTW+qL>W4N+qhu#9{Sb_c%i|{ z(nf~Jd-aV)hwD15M21A8T{%q=-%hLZ(!BBlv%5OrR&@@;mV)ME0zmm6e3Nc)&k&0R zkp#r+(8n0|vuqiM%7dk=U7)%WA%a$#94xE>> z-IT{PNmKL=br(Mwh7VNdnI4r-Gl9KcwH@iZ2^-Gfb>#5(?6Iojy7o0-^Oa{T5z}bx zP2B`&#vXXVqt|C7x0iidI2x4h_Kxr8W5(g=o5)*c#Bve-7gm7?rR3e4V%1AA%|Pt5 z=X(^I(!H`hE_b2AHO~+@5IXP-C*n|3KtO;?0G`b_e&|AK6Lg$}UwN3HwNuwc%bAJsm^(rGEP~9g(hr+7 zz9LH5!TUuA>EX%m(n>tNKgVUMU!`7-e%GP%x#z^c0(*PK=++5EE$qYuC1?tDl)qB) zNweX*8Z|oQG;iVpJxS7}GWsItJGeG9YRcH>y`@1zH*+h`0dDzyQh{?&?Q&o15!i3P zEyj*>RNO}F@P^lxn9^|DotsB~C^asp2{IiI$%6OUKy~(klEP-B!+**5v7>Mu5?W4` zspO`ZioFO8T!eB(Js-eGbwsrbt65M~WpT9vsLw+~EFO@d0uI8f@l_Z-38JJ<j2@p+#TUFToIwNdzmwSh4<1QOqzW`Ul^0;0cIUE@@EFt#f73 wl*|0fcdnStJr)G|c~~+0_?VU}b88)g)5OP{lI7XofCc_iRn$}{mNWPNe^jf1L;wH) From 6735128e962266c083386d857aff02bf62b8ff5f Mon Sep 17 00:00:00 2001 From: AnturK Date: Wed, 4 Mar 2020 19:02:42 +0100 Subject: [PATCH 05/54] Fixes coal stack icons. --- code/game/objects/items/stacks/sheets/mineral.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 55ea0d350fc..a65c5404aa4 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -452,6 +452,7 @@ GLOBAL_LIST_INIT(abductor_recipes, list ( \ singular_name = "coal lump" merge_type = /obj/item/stack/sheet/mineral/coal grind_results = list(/datum/reagent/carbon = 20) + novariants = TRUE /obj/item/stack/sheet/mineral/coal/attackby(obj/item/W, mob/user, params) if(W.get_temperature() > 300)//If the temperature of the object is over 300, then ignite From 7a671a45cf264e7fb2b67405895ab57f85d2d309 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 4 Mar 2020 19:57:18 +0100 Subject: [PATCH 06/54] :smirk: --- code/game/objects/items/stacks/sheets/sheet_types.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 39f197d48bf..39941f3ccde 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -89,7 +89,8 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("floodlight frame", /obj/structure/floodlight_frame, 5, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("voting box", /obj/structure/votebox, 15, time = 50), \ - new/datum/stack_recipe("pestle", /obj/item/pestle, 1, time = 50) + new/datum/stack_recipe("pestle", /obj/item/pestle, 1, time = 50), \ + new/datum/stack_recipe("hygienebot assembly", /obj/item/bot_assembly/hygienebot, 2, time = 50) )) /obj/item/stack/sheet/metal From eb5d52314a4020266f26f73ce2c5267f1938774d Mon Sep 17 00:00:00 2001 From: Mickyan Date: Thu, 5 Mar 2020 02:22:49 +0100 Subject: [PATCH 07/54] windoor access --- _maps/map_files/Deltastation/DeltaStation2.dmm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 0cbeae772d4..fca014ae062 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -381,7 +381,8 @@ "aaQ" = ( /obj/machinery/door/window{ dir = 2; - name = "Secure Art Exhibition" + name = "Secure Art Exhibition"; + req_access_txt = "37" }, /obj/structure/table/wood/fancy, /obj/structure/sign/painting/library_secure{ @@ -64400,7 +64401,8 @@ }, /obj/machinery/door/window{ dir = 8; - name = "Library Desk" + name = "Library Desk"; + req_access_txt = "37" }, /turf/open/floor/plasteel/grimy, /area/library) From 00578f5204f3b3aa6f1bc15d128e3e3f0bb2aca2 Mon Sep 17 00:00:00 2001 From: Mickyan Date: Thu, 5 Mar 2020 03:20:22 +0100 Subject: [PATCH 08/54] pubby art gallery --- _maps/map_files/PubbyStation/PubbyStation.dmm | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index b5ee1ff531b..73152900339 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -54055,11 +54055,7 @@ pixel_x = 32 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - external_pressure_bound = 140; - name = "server vent"; - pressure_checks = 0 - }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/dark, /area/library/artgallery) "nLl" = ( @@ -77221,7 +77217,7 @@ cgG cgG bWV cfn -ceP +ceJ cwe cwr clm From 5492a2c198b7355624c735f8157c8d9b6c04d141 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Wed, 4 Mar 2020 20:18:04 -0800 Subject: [PATCH 09/54] Automatic changelog generation for PR #49725 [ci skip] --- html/changelogs/AutoChangeLog-pr-49725.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49725.yml diff --git a/html/changelogs/AutoChangeLog-pr-49725.yml b/html/changelogs/AutoChangeLog-pr-49725.yml new file mode 100644 index 00000000000..a40fa1eb713 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49725.yml @@ -0,0 +1,4 @@ +author: "Mickyan" +delete-after: True +changes: + - bugfix: "Deltastation library windoors now correctly require library access" From 024d4d85818eebf364fdbd274200a6bd786b641f Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Thu, 5 Mar 2020 01:57:58 -0500 Subject: [PATCH 10/54] Makes bloodcrawling a trait instead of a var (#49572) --- code/__DEFINES/traits.dm | 1 + code/_globalvars/traits.dm | 3 ++- code/modules/antagonists/devil/imp/imp.dm | 2 +- code/modules/antagonists/slaughter/slaughter.dm | 2 +- code/modules/mob/living/bloodcrawl.dm | 2 +- code/modules/mob/living/living_defines.dm | 11 +++++------ 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index ea8237e679d..afda9ad877b 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -165,6 +165,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_NAIVE "naive" #define TRAIT_PRIMITIVE "primitive" #define TRAIT_GUNFLIP "gunflip" +#define TRAIT_BLOODCRAWL_EAT "bloodcrawl_eat" //non-mob traits #define TRAIT_PARALYSIS "paralysis" //Used for limb-based paralysis, where replacing the limb will fix it diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index 1b38a810f7b..c486bb96bf5 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -99,7 +99,8 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_XENO_IMMUNE" = TRAIT_XENO_IMMUNE, "TRAIT_NAIVE" = TRAIT_NAIVE, "TRAIT_PRIMITIVE" = TRAIT_PRIMITIVE, //unable to use mechs. Given to Ash Walkers - "TRAIT_GUNFLIP" = TRAIT_GUNFLIP + "TRAIT_GUNFLIP" = TRAIT_GUNFLIP, + "TRAIT_BLOODCRAWL_EAT" = TRAIT_BLOODCRAWL_EAT, ), /obj/item/bodypart = list( "TRAIT_PARALYSIS" = TRAIT_PARALYSIS diff --git a/code/modules/antagonists/devil/imp/imp.dm b/code/modules/antagonists/devil/imp/imp.dm index 7f1d8b4f77f..8ca84d0775a 100644 --- a/code/modules/antagonists/devil/imp/imp.dm +++ b/code/modules/antagonists/devil/imp/imp.dm @@ -41,7 +41,6 @@ deathmessage = "screams in agony as it sublimates into a sulfurous smoke." deathsound = 'sound/magic/demon_dies.ogg' var/boost = 0 - bloodcrawl = BLOODCRAWL_EAT var/list/consumed_mobs = list() var/playstyle_string = "You are an imp, a mischievous creature from hell. You are the lowest rank on the hellish totem pole \ Though you are not obligated to help, perhaps by aiding a higher ranking devil, you might just get a promotion. However, you are incapable \ @@ -49,6 +48,7 @@ /mob/living/simple_animal/imp/Initialize() . = ..() + ADD_TRAIT(src, TRAIT_BLOODCRAWL_EAT, "innate") set_varspeed(1) addtimer(CALLBACK(src, /mob/living/simple_animal/proc/set_varspeed, 0), 30) diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm index 8cb12cb897a..1cd3053eb2f 100644 --- a/code/modules/antagonists/slaughter/slaughter.dm +++ b/code/modules/antagonists/slaughter/slaughter.dm @@ -38,7 +38,6 @@ melee_damage_upper = 30 see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE - bloodcrawl = BLOODCRAWL_EAT var/playstyle_string = "You are a slaughter demon, a terrible creature from another realm. You have a single desire: To kill. \ You may use the \"Blood Crawl\" ability near blood pools to travel through them, appearing and disappearing from the station at will. \ Pulling a dead or unconscious mob while you enter a pool will pull them in with you, allowing you to feast and regain your health. \ @@ -52,6 +51,7 @@ /mob/living/simple_animal/slaughter/Initialize() ..() + ADD_TRAIT(src, TRAIT_BLOODCRAWL_EAT, "innate") var/obj/effect/proc_holder/spell/bloodcrawl/bloodspell = new AddSpell(bloodspell) if(istype(loc, /obj/effect/dummy/phased_mob/slaughter)) diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index 7df2586ec45..75ee9c53c25 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -60,7 +60,7 @@ forceMove(holder) // if we're not pulling anyone, or we can't eat anyone - if(!pullee || bloodcrawl != BLOODCRAWL_EAT) + if(!pullee || !HAS_TRAIT(src, TRAIT_BLOODCRAWL_EAT)) notransform = FALSE return diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 22ec966267b..14b4427433d 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -59,10 +59,9 @@ var/on_fire = 0 ///The "Are we on fire?" var var/fire_stacks = 0 ///Tracks how many stacks of fire we have on, max is usually 20 - var/bloodcrawl = 0 ///0 No blood crawling, [BLOODCRAWL] for bloodcrawling, [BLOODCRAWL_EAT] for crawling+mob devour - var/holder = null ///The holder for blood crawling - var/ventcrawler = 0 ///0 No vent crawling, 1 vent crawling in the nude, 2 vent crawling always - var/limb_destroyer = 0 ///1 Sets AI behavior that allows mobs to target and dismember limbs with their basic attack. + var/holder = null //The holder for blood crawling + var/ventcrawler = 0 //0 No vent crawling, 1 vent crawling in the nude, 2 vent crawling always + var/limb_destroyer = 0 //1 Sets AI behavior that allows mobs to target and dismember limbs with their basic attack. var/mob_size = MOB_SIZE_HUMAN var/mob_biotypes = MOB_ORGANIC @@ -128,10 +127,10 @@ var/list/ownedSoullinks //soullinks we are the owner of var/list/sharedSoullinks //soullinks we are a/the sharer of - + /// List of changes to body temperature, used by desease symtoms like fever var/list/body_temp_changes = list() - + //this stuff is here to make it simple for admins to mess with custom held sprites var/icon/held_lh = 'icons/mob/pets_held_lh.dmi'//icons for holding mobs var/icon/held_rh = 'icons/mob/pets_held_rh.dmi' From 319ca52545092d9e42370b5f0e5cdf85af840766 Mon Sep 17 00:00:00 2001 From: spookydonut Date: Thu, 5 Mar 2020 18:51:37 +0800 Subject: [PATCH 11/54] removing unnecesary double parent proc calls (#49694) * removing unnecesary double parent proc calls * i made an oopsie --- .../telecomms/machines/message_server.dm | 3 +-- .../game/objects/items/devices/radio/intercom.dm | 1 - .../objects/items/devices/reverse_bear_trap.dm | 2 -- code/game/objects/items/handcuffs.dm | 1 - code/modules/antagonists/cult/runes.dm | 9 ++++----- code/modules/library/lib_machines.dm | 2 +- .../mining/equipment/regenerative_core.dm | 2 +- .../mob/living/carbon/human/human_defense.dm | 1 - .../modular_computers/computers/item/laptop.dm | 3 +-- code/modules/power/floodlight.dm | 1 - code/modules/power/multiz.dm | 16 +++++++--------- code/modules/research/xenobiology/xenobiology.dm | 2 +- 12 files changed, 16 insertions(+), 27 deletions(-) diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index e07708b93ba..e903356cd02 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -34,7 +34,6 @@ return /obj/machinery/blackbox_recorder/attackby(obj/item/I, mob/living/user, params) - . = ..() if(istype(I, /obj/item/blackbox)) if(HAS_TRAIT(I, TRAIT_NODROP) || !user.transferItemToLoc(I, src)) to_chat(user, "[I] is stuck to your hand!") @@ -44,7 +43,7 @@ playsound(src, 'sound/machines/click.ogg', 50, TRUE) stored = I update_icon() - return ..() + return return ..() /obj/machinery/blackbox_recorder/Destroy() diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index a9dd5fd778d..c59972e3c9d 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -92,7 +92,6 @@ /obj/item/radio/intercom/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans, message_mode) - . = ..() if (message_mode == MODE_INTERCOM) return // Avoid hearing the same thing twice if(!anyai && !(speaker in ai)) diff --git a/code/game/objects/items/devices/reverse_bear_trap.dm b/code/game/objects/items/devices/reverse_bear_trap.dm index 2627efce051..e04e2bdc422 100644 --- a/code/game/objects/items/devices/reverse_bear_trap.dm +++ b/code/game/objects/items/devices/reverse_bear_trap.dm @@ -76,8 +76,6 @@ "You force open the padlock!", "You hear a single, pronounced click!") REMOVE_TRAIT(src, TRAIT_NODROP, REVERSE_BEAR_TRAP_TRAIT) struggling = FALSE - else - ..() return ..() diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index b7e90603f2e..b4ef9874a47 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -151,7 +151,6 @@ breakouttime = 1 SECONDS /obj/item/restraints/handcuffs/cable/attackby(obj/item/I, mob/user, params) - ..() if(istype(I, /obj/item/stack/rods)) var/obj/item/stack/rods/R = I if (R.use(1)) diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 61c727cf7d0..eee48826e86 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -507,12 +507,11 @@ structure_check() searches for nearby cultist structures required for the invoca if(do_after(user, 50, target = src)) //Prevents accidental erasures. log_game("Summon Narsie rune erased by [key_name(user)] with [I.name]") message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with [I.name]") - ..() + else if(istype(I, /obj/item/nullrod)) //Begone foul magiks. You cannot hinder me. + log_game("Summon Narsie rune erased by [key_name(user)] using a null rod") + message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with a null rod") else - if(istype(I, /obj/item/nullrod)) //Begone foul magiks. You cannot hinder me. - log_game("Summon Narsie rune erased by [key_name(user)] using a null rod") - message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with a null rod") - ..() + ..() //Rite of Resurrection: Requires a dead or inactive cultist. When reviving the dead, you can only perform one revival for every three sacrifices your cult has carried out. /obj/effect/rune/raise_dead diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index a589d35b344..28a0da4407c 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -70,7 +70,7 @@ /obj/machinery/computer/libraryconsole/Topic(href, href_list) . = ..() - if(..()) + if(.) usr << browse(null, "window=publiclibrary") onclose(usr, "publiclibrary") return diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm index 386fb930a44..d1427da54c6 100644 --- a/code/modules/mining/equipment/regenerative_core.dm +++ b/code/modules/mining/equipment/regenerative_core.dm @@ -13,7 +13,7 @@ var/obj/item/organ/regenerative_core/C = M if(!istype(C, /obj/item/organ/regenerative_core)) to_chat(user, "The stabilizer only works on certain types of monster organs, generally regenerative in nature.") - return ..() + return C.preserved() to_chat(user, "You inject the [M] with the stabilizer. It will no longer go inert.") diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index df6a887696e..1f460e0a1ae 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -176,7 +176,6 @@ var/hulk_verb = pick("smash","pummel") if(check_shields(user, 15, "the [hulk_verb]ing")) return - ..() playsound(loc, user.dna.species.attack_sound, 25, TRUE, -1) visible_message("[user] [hulk_verb]ed [src]!", \ "[user] [hulk_verb]ed [src]!", "You hear a sickening sound of flesh hitting flesh!", null, user) diff --git a/code/modules/modular_computers/computers/item/laptop.dm b/code/modules/modular_computers/computers/item/laptop.dm index 73cf9c62f48..3ec5bddfad5 100644 --- a/code/modules/modular_computers/computers/item/laptop.dm +++ b/code/modules/modular_computers/computers/item/laptop.dm @@ -40,9 +40,8 @@ . = ..() /obj/item/modular_computer/laptop/update_overlays() - . = ..() if(screen_on) - ..() + return ..() else cut_overlays() icon_state = icon_state_closed diff --git a/code/modules/power/floodlight.dm b/code/modules/power/floodlight.dm index 3aa7bef97d3..e112b38f2fd 100644 --- a/code/modules/power/floodlight.dm +++ b/code/modules/power/floodlight.dm @@ -128,7 +128,6 @@ else current-- change_setting(current, user) - ..() /obj/machinery/power/floodlight/obj_break(damage_flag) . = ..() diff --git a/code/modules/power/multiz.dm b/code/modules/power/multiz.dm index 6ad239d3b88..3ad0d8be6df 100644 --- a/code/modules/power/multiz.dm +++ b/code/modules/power/multiz.dm @@ -28,31 +28,29 @@ if(default_unfasten_wrench(user, I)) if(!anchored && broken_status == RELAY_OK) break_connections() - return return FALSE - . = ..() - if(istype(I, /obj/item/stack/cable_coil) && broken_status == RELAY_ADD_CABLE) + + else if(istype(I, /obj/item/stack/cable_coil) && broken_status == RELAY_ADD_CABLE) var/obj/item/stack/C = I if(C.use(15)) to_chat(user, "You fix the frayed wires inside [src].") icon_state = "cablerelay-broken-cable" broken_status = RELAY_ADD_METAL - return else to_chat(user, "You need 15 cables to rewire [src].") - return - if(istype(I, /obj/item/stack/sheet/metal) && broken_status == RELAY_ADD_METAL) + + else if(istype(I, /obj/item/stack/sheet/metal) && broken_status == RELAY_ADD_METAL) var/obj/item/stack/S = I if(S.use(10)) to_chat(user, "You reseal the insulation for [src].") icon_state = "cablerelay" broken_status = RELAY_OK obj_integrity = max_integrity - return else to_chat(user, "You need 10 metal to mend [src].") - return - . = ..() + + else + return ..() /obj/machinery/power/deck_relay/obj_break() ..() diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 3853f076cdb..46b6713bf1b 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -932,7 +932,7 @@ return if(C.max_heat_protection_temperature >= FIRE_IMMUNITY_MAX_TEMP_PROTECT) to_chat(user, "The [C] is already fireproof!") - return ..() + return to_chat(user, "You slather the blue gunk over the [C], fireproofing it.") C.name = "fireproofed [C.name]" C.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) From 9d198c8cc15c10fddfd0d960bbd1822d49c127e4 Mon Sep 17 00:00:00 2001 From: spookydonut Date: Thu, 5 Mar 2020 19:36:49 +0800 Subject: [PATCH 12/54] Fixes some leftover revhead flash bugs (#49706) --- code/modules/antagonists/revolution/revolution.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm index c463f52d197..bfdab56924b 100644 --- a/code/modules/antagonists/revolution/revolution.dm +++ b/code/modules/antagonists/revolution/revolution.dm @@ -115,7 +115,7 @@ /datum/antagonist/rev/head/proc/admin_take_flash(mob/admin) var/list/L = owner.current.get_contents() - var/obj/item/assembly/flash/flash = locate() in L + var/obj/item/assembly/flash/handheld/flash = locate() in L if (!flash) to_chat(admin, "Deleting flash failed!") return @@ -136,7 +136,7 @@ /datum/antagonist/rev/head/proc/admin_repair_flash(mob/admin) var/list/L = owner.current.get_contents() - var/obj/item/assembly/flash/flash = locate() in L + var/obj/item/assembly/flash/handheld/flash = locate() in L if (!flash) to_chat(admin, "Repairing flash failed!") else From b95543d24224f5a221df39dcf30e5a54f847815d Mon Sep 17 00:00:00 2001 From: spookydonut Date: Thu, 5 Mar 2020 19:42:52 +0800 Subject: [PATCH 13/54] Map fixes, and 1-2 QOL improvements. (#49690) --- _maps/RandomRuins/SpaceRuins/hellfactory.dmm | 61 +++++++++++++------- code/game/objects/items/puzzle_pieces.dm | 11 +++- 2 files changed, 49 insertions(+), 23 deletions(-) diff --git a/_maps/RandomRuins/SpaceRuins/hellfactory.dmm b/_maps/RandomRuins/SpaceRuins/hellfactory.dmm index 6e973667359..b1d621dc52c 100644 --- a/_maps/RandomRuins/SpaceRuins/hellfactory.dmm +++ b/_maps/RandomRuins/SpaceRuins/hellfactory.dmm @@ -75,7 +75,9 @@ /area/ruin/space/has_grav/hellfactoryoffice) "ak" = ( /obj/machinery/atmospherics/components/unary/tank/oxygen{ - gas_type = /datum/gas/water_vapor + dir = 8; + gas_type = /datum/gas/water_vapor; + initialize_directions = 8 }, /turf/open/floor/plasteel/grimy, /area/ruin/space/has_grav/hellfactoryoffice) @@ -161,7 +163,7 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 4 }, -/turf/closed/wall, +/turf/open/floor/plastic, /area/ruin/space/has_grav/hellfactory) "ax" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ @@ -834,6 +836,7 @@ /obj/effect/turf_decal{ dir = 5 }, +/obj/structure/fluff/broken_flooring, /turf/open/floor/plating, /area/ruin/space/has_grav/hellfactory) "cz" = ( @@ -851,10 +854,6 @@ /obj/item/stack/tile/plasteel, /turf/open/floor/plating, /area/ruin/space/has_grav/hellfactory) -"cC" = ( -/obj/structure/sign/warning/vacuum, -/turf/open/floor/plating, -/area/ruin/space/has_grav/hellfactory) "cD" = ( /obj/structure/ore_box, /obj/effect/turf_decal/delivery/white, @@ -978,7 +977,11 @@ "lR" = ( /obj/machinery/light/floor, /obj/effect/turf_decal/bot_white/right, -/turf/open/floor/plating, +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/hellfactory) +"nd" = ( +/obj/structure/sign/warning/vacuum, +/turf/closed/wall, /area/ruin/space/has_grav/hellfactory) "nT" = ( /obj/structure/rack, @@ -995,6 +998,9 @@ }, /turf/open/floor/plasteel/checker, /area/ruin/space/has_grav/hellfactory) +"oJ" = ( +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/hellfactory) "qB" = ( /obj/item/pressure_plate/hologrid{ reward = /obj/item/skub @@ -1005,7 +1011,7 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/floor, /obj/effect/turf_decal/bot_white/left, -/turf/open/floor/plating, +/turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/hellfactory) "rC" = ( /obj/structure/sign/poster/random, @@ -1015,7 +1021,7 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/floor, /obj/effect/turf_decal/bot_white/right, -/turf/open/floor/plating, +/turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/hellfactory) "wv" = ( /obj/machinery/power/apc/highcap/ten_k{ @@ -1037,7 +1043,7 @@ "BC" = ( /obj/machinery/light/floor, /obj/effect/turf_decal/bot_white/left, -/turf/open/floor/plating, +/turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/hellfactory) "EP" = ( /obj/structure/cable, @@ -1095,6 +1101,19 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ruin/space/has_grav/hellfactory) +"Yd" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"Zh" = ( +/obj/structure/closet/crate/trashcart, +/obj/item/stack/sheet/mineral/plasma, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"Zq" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/hellfactory) (1,1,1) = {" aa @@ -1355,8 +1374,8 @@ cV by Wh BC -by -Wh +oJ +Zq ry by by @@ -1373,7 +1392,7 @@ ah al ao aG -ao +Yd ah bg aA @@ -1381,10 +1400,10 @@ bL aA Wh Wh +oJ by by -by -by +oJ Wh by cw @@ -1409,8 +1428,8 @@ by by by lR -by -by +oJ +oJ uL by Wh @@ -1481,7 +1500,7 @@ ah ap ao aK -ao +Yd ah aA bn @@ -1548,9 +1567,9 @@ zI EP zI lv -cr +Zh cA -cC +by ab aa aa @@ -1578,7 +1597,7 @@ aL cr cB cL -ab +nd aa aa "} diff --git a/code/game/objects/items/puzzle_pieces.dm b/code/game/objects/items/puzzle_pieces.dm index 5e0dbc421a1..69cc78fe135 100644 --- a/code/game/objects/items/puzzle_pieces.dm +++ b/code/game/objects/items/puzzle_pieces.dm @@ -116,20 +116,27 @@ var/reward = /obj/item/reagent_containers/food/snacks/cookie var/claimed = FALSE +/obj/item/pressure_plate/hologrid/hide(yes) + . = ..() + anchored = TRUE + /obj/item/pressure_plate/hologrid/examine(mob/user) . = ..() if(claimed) . += "This one appears to be spent already." /obj/item/pressure_plate/hologrid/trigger() - reward = new reward(loc) + if(!claimed) + new reward(loc) flick("lasergrid_a",src) icon_state = "lasergrid_full" + claimed = TRUE /obj/item/pressure_plate/hologrid/Crossed(atom/movable/AM) . = ..() if(trigger_item && istype(AM, specific_item) && !claimed) - claimed = TRUE + AM.anchored = TRUE flick("laserbox_burn", AM) + trigger() sleep(15) qdel(AM) From 3944418d3742986ef52174623db6c907c77781fe Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 5 Mar 2020 03:42:56 -0800 Subject: [PATCH 14/54] Automatic changelog generation for PR #49690 [ci skip] --- html/changelogs/AutoChangeLog-pr-49690.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49690.yml diff --git a/html/changelogs/AutoChangeLog-pr-49690.yml b/html/changelogs/AutoChangeLog-pr-49690.yml new file mode 100644 index 00000000000..e88f9bf809c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49690.yml @@ -0,0 +1,4 @@ +author: "ArcaneMusic" +delete-after: True +changes: + - bugfix: "Fixed several issues with the Heck Factory ruin." From 5871a9a722babfc79d3a3cc6f2d25a6b3a3abd0d Mon Sep 17 00:00:00 2001 From: spookydonut Date: Thu, 5 Mar 2020 19:44:27 +0800 Subject: [PATCH 15/54] Small usability addition to Genetics DNA console interface. (#49689) * Small usability addition to Genetics DNA console interface. * Highlight individual gene buttons that are incomplete --- code/game/machinery/computer/dna_console.dm | 11 +++++++++-- html/browser/scannernew.css | 9 +++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 0a15070c4cc..ae7773fb3dc 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -523,7 +523,10 @@ for(var/i in 1 to DNA_SEQUENCE_LENGTH) var/num = 1+(i-1)*2 var/genenum = num+(DNA_SEQUENCE_LENGTH*2*(block-1)) - temp_html += "

" + if(sequence[num] == "X") + temp_html += "" + else + temp_html += "" temp_html += "" for(var/i in 1 to DNA_SEQUENCE_LENGTH) temp_html += "
|
" @@ -531,7 +534,11 @@ for(var/i in 1 to DNA_SEQUENCE_LENGTH) var/num = i*2 var/genenum = num+(DNA_SEQUENCE_LENGTH*2*(block-1)) - temp_html += "" + + if(sequence[num] == "X") + temp_html += "" + else + temp_html += "" temp_html += "" temp_html += "




" else diff --git a/html/browser/scannernew.css b/html/browser/scannernew.css index 9e9f8ce1f48..25d4994bd5a 100644 --- a/html/browser/scannernew.css +++ b/html/browser/scannernew.css @@ -14,6 +14,15 @@ font-family: Fixed, monospace; float: left; } +a.incompleteBlock +{ + background: #8a4040; +} +a.incompleteBlock:hover +{ + color: #40628a; + background: #ffffff; +} img.selected { border: 1px solid blue; From 7d7b88ac6b1d01a74e3a9f27fc4b60aa31165a43 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 5 Mar 2020 03:44:30 -0800 Subject: [PATCH 16/54] Automatic changelog generation for PR #49689 [ci skip] --- html/changelogs/AutoChangeLog-pr-49689.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49689.yml diff --git a/html/changelogs/AutoChangeLog-pr-49689.yml b/html/changelogs/AutoChangeLog-pr-49689.yml new file mode 100644 index 00000000000..6e875d2e625 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49689.yml @@ -0,0 +1,4 @@ +author: "emptyexpression" +delete-after: True +changes: + - rscadd: "Added simple indicator for incomplete DNA blocks" From e121d35850e37d19a9dd125eb9b761c3b7b519d9 Mon Sep 17 00:00:00 2001 From: spookydonut Date: Thu, 5 Mar 2020 19:45:40 +0800 Subject: [PATCH 17/54] Adds the ability for borgs to wear drones and pAIs as hats. (#49684) * hat * autodoc on Exited() dunno if I need to, but it's like four lines. * no more broken pAIs pls --- code/modules/mob/living/silicon/pai/pai_shell.dm | 3 +++ code/modules/mob/living/silicon/robot/robot.dm | 10 ++++++++++ code/modules/mob/living/silicon/robot/robot_defense.dm | 1 - .../living/simple_animal/friendly/drone/interaction.dm | 1 + 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index 2e404b29dbe..fd3a3af0b83 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -55,6 +55,9 @@ return visible_message("[src] deactivates its holochassis emitter and folds back into a compact card!") stop_pulling() + if(istype(loc, /obj/item/clothing/head/mob_holder)) + var/obj/item/clothing/head/mob_holder/MH = loc + MH.release() if(client) client.perspective = EYE_PERSPECTIVE client.eye = card diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 2b73aa86036..8af80955afa 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -856,6 +856,16 @@ new_hat.forceMove(src) update_icons() +/** + *Checking Exited() to detect if a hat gets up and walks off. + *Drones and pAIs might do this, after all. +*/ +/mob/living/silicon/robot/Exited(atom/A) + if(hat && hat == A) + hat = null + update_icons() + . = ..() + /mob/living/silicon/robot/proc/make_shell(var/obj/item/borg/upgrade/ai/board) if(!board) upgrades |= new /obj/item/borg/upgrade/ai(src) diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index 6250193bdb5..2eb08be7eea 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -1,7 +1,6 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't really work on borgos /obj/item/clothing/head/helmet/space, /obj/item/clothing/head/welding, - /obj/item/clothing/head/mob_holder, //I am so very upset that this breaks things /obj/item/clothing/head/chameleon/broken \ ))) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm index fa2cfa0718e..45bdd5d1982 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm @@ -50,6 +50,7 @@ to_chat(user, "You pick [src] up.") drop_all_held_items() var/obj/item/clothing/head/mob_holder/drone/DH = new(get_turf(src), src) + DH.slot_flags = worn_slot_flags user.put_in_hands(DH) /mob/living/simple_animal/drone/proc/try_reactivate(mob/living/user) From f1117e195c06e7b3449fb94ce6bfa2d5bea5a62a Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 5 Mar 2020 03:45:45 -0800 Subject: [PATCH 18/54] Automatic changelog generation for PR #49684 [ci skip] --- html/changelogs/AutoChangeLog-pr-49684.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49684.yml diff --git a/html/changelogs/AutoChangeLog-pr-49684.yml b/html/changelogs/AutoChangeLog-pr-49684.yml new file mode 100644 index 00000000000..cea57dbfac1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49684.yml @@ -0,0 +1,6 @@ +author: "zxaber" +delete-after: True +changes: + - rscadd: "Drones and pAI holoforms are now suitable borg hats (though they require a humanoid's help to get there)." + - bugfix: "Fixed drones not being equip-able as hats." + - bugfix: "Fixed pAIs returning to card form when being held or on someone's head leaving a phantom chassis behind." From 3c2e217ccc16d0421e3f4b46fe6c8a0cb385fd93 Mon Sep 17 00:00:00 2001 From: spookydonut Date: Thu, 5 Mar 2020 19:46:56 +0800 Subject: [PATCH 19/54] Secway and janicart key suicides (#49681) * Update vehicle_key.dm Adds a unique suicide to the secway key where the user spins, and gibs after a short delay. * Improvements Fixes a runtime, adds a little silliness. * Adds shame result Grammar changes and "rewards" anyone that successfully fails to commit suicide. * Adds janicart key suicide Adds a skillcheck to the suicide that will have varying effects based on the level the user has. * Adds the return at the end of the file back Whoops, didn't notice I deleted that I guess. Dunno if that matters, but I have no reason to remove it, so I'm putting it back. --- code/modules/vehicles/vehicle_key.dm | 47 ++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/code/modules/vehicles/vehicle_key.dm b/code/modules/vehicles/vehicle_key.dm index 0847512f094..0909618720f 100644 --- a/code/modules/vehicles/vehicle_key.dm +++ b/code/modules/vehicles/vehicle_key.dm @@ -9,10 +9,57 @@ desc = "A keyring with a small steel key, and a rubber stun baton accessory." icon_state = "keysec" +/obj/item/key/security/suicide_act(mob/living/carbon/user) + if(!user.emote("spin")) //In the off chance that someone attempts this suicide while under the effects of mime's bane they deserve the silliness. + user.visible_message("[user] is putting \the [src] in [user.p_their()] ear and starts [user.p_their()] motor! It looks like [user.p_theyre()] trying to commit suicide... But [user.p_they()] sputters and stalls out! ") + playsound(src, 'sound/misc/sadtrombone.ogg', 50, TRUE, -1) + return SHAME + user.visible_message("[user] is putting \the [src] in [user.p_their()] ear and starts [user.p_their()] motor! It looks like [user.p_theyre()] trying to commit suicide!") + user.say("Vroom vroom!!", forced="secway key suicide") //Not doing a shamestate here, because even if they fail to speak they're spinning. + addtimer(CALLBACK(user, /mob/living/.proc/gib), 20) + return MANUAL_SUICIDE + /obj/item/key/janitor desc = "A keyring with a small steel key, and a pink fob reading \"Pussy Wagon\"." icon_state = "keyjanitor" +/obj/item/key/janitor/suicide_act(mob/living/carbon/user) + switch(user.mind.get_skill_level(/datum/skill/cleaning)) + if(SKILL_LEVEL_NONE to SKILL_LEVEL_NOVICE) //Their mind is too weak to ascend as a janny + user.visible_message("[user] is putting \the [src] in [user.p_their()] mouth and is trying to become one with the janicart, but has no idea where to start! It looks like [user.p_theyre()] trying to commit suicide!") + user.gib() + return MANUAL_SUICIDE + if(SKILL_LEVEL_APPRENTICE to SKILL_LEVEL_JOURNEYMAN) //At least they tried + user.visible_message("[user] is putting \the [src] in [user.p_their()] mouth and has inefficiently become one with the janicart! It looks like [user.p_theyre()] trying to commit suicide!") + user.AddElement(/datum/element/cleaning) + addtimer(CALLBACK(src, .proc/manual_suicide, user), 51) + return MANUAL_SUICIDE + if(SKILL_LEVEL_EXPERT to SKILL_LEVEL_MASTER) //They are worthy enough, but can it go even further beyond? + user.visible_message("[user] is putting \the [src] in [user.p_their()] mouth and has skillfully become one with the janicart! It looks like [user.p_theyre()] trying to commit suicide!") + user.AddElement(/datum/element/cleaning) + for(var/i in 1 to 100) + addtimer(CALLBACK(user, /atom/proc/add_atom_colour, (i % 2)? "#a245bb" : "#7a7d82", ADMIN_COLOUR_PRIORITY), i) + addtimer(CALLBACK(src, .proc/manual_suicide, user), 101) + return MANUAL_SUICIDE + if(SKILL_LEVEL_LEGENDARY to INFINITY) //Holy shit, look at that janny go! + user.visible_message("[user] is putting \the [src] in [user.p_their()] mouth and has epically become one with the janicart, and they're even in overdrive mode! It looks like [user.p_theyre()] trying to commit suicide!") + user.AddElement(/datum/element/cleaning) + playsound(src, 'sound//magic/lightning_chargeup.ogg', 50, TRUE, -1) + user.reagents.add_reagent(/datum/reagent/drug/methamphetamine, 10) //Gotta go fast! + for(var/i in 1 to 150) + addtimer(CALLBACK(user, /atom/proc/add_atom_colour, (i % 2)? "#a245bb" : "#7a7d82", ADMIN_COLOUR_PRIORITY), i) + addtimer(CALLBACK(src, .proc/manual_suicide, user), 151) + return MANUAL_SUICIDE + +/obj/item/key/proc/manual_suicide(mob/living/user) + if(user) + user.remove_atom_colour(ADMIN_COLOUR_PRIORITY) + user.visible_message("[user] forgot [user.p_they()] isn't actually a janicart! That's a paddlin'!") + if(user.mind.get_skill_level(/datum/skill/cleaning) >= SKILL_LEVEL_LEGENDARY) //Janny janny janny janny janny + playsound(src, 'sound/effects/adminhelp.ogg', 50, TRUE, -1) + user.adjustOxyLoss(200) + user.death(0) + /obj/item/key/lasso name = "bone lasso" desc = "Perfect for taming all kinds of supernatural beasts! (Warning: only perfect for taming one kind of supernatural beast.)" From 94c5c70c7477ca3a538bfe293a9dd7f959e5c6f2 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 5 Mar 2020 03:47:00 -0800 Subject: [PATCH 20/54] Automatic changelog generation for PR #49681 [ci skip] --- html/changelogs/AutoChangeLog-pr-49681.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49681.yml diff --git a/html/changelogs/AutoChangeLog-pr-49681.yml b/html/changelogs/AutoChangeLog-pr-49681.yml new file mode 100644 index 00000000000..56982c96bb5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49681.yml @@ -0,0 +1,5 @@ +author: "ArcaneDefence" +delete-after: True +changes: + - rscadd: "The secway key now has a unique suicide" + - rscadd: "The janicart key now has a uniquer suicide that respects janitorial skill" From 651bff5dcf81eac195bb5c0fe036c050cedc864b Mon Sep 17 00:00:00 2001 From: spookydonut Date: Thu, 5 Mar 2020 19:47:40 +0800 Subject: [PATCH 21/54] Corrects network lists on some Box medical cameras (#49677) * Fixes the network list of chem cameras on Box * med sec post --- _maps/map_files/BoxStation/BoxStation.dmm | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index fc3e1e4f8b2..9712d8a9eb4 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -22951,7 +22951,8 @@ /area/medical/pharmacy) "bhc" = ( /obj/machinery/camera{ - c_tag = "Chemistry" + c_tag = "Chemistry"; + network = list("ss13","medbay") }, /obj/machinery/firealarm{ pixel_y = 24 @@ -23002,7 +23003,8 @@ /area/security/checkpoint/medical) "bhj" = ( /obj/machinery/camera{ - c_tag = "Security Post - Medbay" + c_tag = "Security Post - Medbay"; + network = list("ss13","medbay") }, /obj/machinery/requests_console{ department = "Security"; @@ -42968,7 +42970,7 @@ "clp" = ( /obj/machinery/camera{ c_tag = "Chemistry Lab Northeast"; - network = list("xeno","rd") + network = list("ss13","medbay") }, /turf/open/floor/plasteel/white, /area/medical/chemistry) @@ -50114,7 +50116,8 @@ /obj/machinery/chem_dispenser, /obj/machinery/camera{ c_tag = "Chemistry Lab West"; - dir = 4 + dir = 4; + network = list("ss13","medbay") }, /turf/open/floor/plasteel/white, /area/medical/chemistry) @@ -51401,7 +51404,8 @@ "oZc" = ( /obj/machinery/camera{ c_tag = "Chemistry Lab East"; - dir = 8 + dir = 8; + network = list("ss13","medbay") }, /obj/machinery/light{ dir = 4 @@ -53430,7 +53434,7 @@ }, /obj/machinery/camera{ c_tag = "Chemistry Lab North"; - network = list("xeno","rd") + network = list("ss13","medbay") }, /turf/open/floor/plasteel/white, /area/medical/chemistry) From 7e9f8746d0f3fd0f62a76ac62e7088fccdd4da5c Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 5 Mar 2020 03:47:44 -0800 Subject: [PATCH 22/54] Automatic changelog generation for PR #49677 [ci skip] --- html/changelogs/AutoChangeLog-pr-49677.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49677.yml diff --git a/html/changelogs/AutoChangeLog-pr-49677.yml b/html/changelogs/AutoChangeLog-pr-49677.yml new file mode 100644 index 00000000000..e0f1a3c4c76 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49677.yml @@ -0,0 +1,5 @@ +author: "cacogen" +delete-after: True +changes: + - bugfix: "Removes two Box chem factory cameras from xeno and RD networks" + - tweak: "Adds Box chem factory, pharmacy and med sec post to medbay network (listed on CMO telescreen)" From 5c2b8fc0d50b037617005ede95186e09fe706f05 Mon Sep 17 00:00:00 2001 From: spookydonut Date: Thu, 5 Mar 2020 20:03:16 +0800 Subject: [PATCH 23/54] Advanced tool exports. (#49498) --- code/modules/cargo/exports/tools.dm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/code/modules/cargo/exports/tools.dm b/code/modules/cargo/exports/tools.dm index 7bee3017d9f..287fba69aaa 100644 --- a/code/modules/cargo/exports/tools.dm +++ b/code/modules/cargo/exports/tools.dm @@ -95,6 +95,31 @@ export_types = list(/obj/item/radio) exclude_types = list(/obj/item/radio/mech) +//Advanced/Power Tools. +/datum/export/weldingtool/experimental + cost = 90 + unit_name = "experimental welding tool" + export_types = list(/obj/item/weldingtool/experimental) + +/datum/export/jawsoflife + cost = 100 + unit_name = "jaws of life" + export_types = list(/obj/item/crowbar/power) + +/datum/export/handdrill + cost = 100 + unit_name = "hand drill" + export_types = list(/obj/item/screwdriver/power) + +/datum/export/rld_mini + cost = 150 + unit_name = "mini rapid lighting device" + export_types = list(/obj/item/construction/rld/mini) + +/datum/export/rsf + cost = 100 + unit_name = "rapid service fabricator" + export_types = list(/obj/item/rsf) /datum/export/rcd cost = 100 From 2f33f1ef58203fcd3783dcb52f3027f4df3d1cbe Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 5 Mar 2020 04:03:20 -0800 Subject: [PATCH 24/54] Automatic changelog generation for PR #49498 [ci skip] --- html/changelogs/AutoChangeLog-pr-49498.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49498.yml diff --git a/html/changelogs/AutoChangeLog-pr-49498.yml b/html/changelogs/AutoChangeLog-pr-49498.yml new file mode 100644 index 00000000000..81a086d5d2b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49498.yml @@ -0,0 +1,4 @@ +author: "ArcaneMusic" +delete-after: True +changes: + - rscadd: "Cargo can now sell more advanced tools from RnD, for a higher profit." From 49eab491b403e071a195467b13f736309b781134 Mon Sep 17 00:00:00 2001 From: spookydonut Date: Thu, 5 Mar 2020 20:06:33 +0800 Subject: [PATCH 25/54] Gamer skill (#49618) * gaming.dm added * initial changes * gamer god trait * finalization after testing * spellcheck + flavortext * phone gamer support * incorporates review suggestions * tiny flavor change in pwr game desc * more trait-related touchups and minor fluff * adds and removes ?s where needed Co-authored-by: spookydonut --- code/__DEFINES/skills.dm | 4 +- code/__DEFINES/traits.dm | 1 + code/datums/mind.dm | 4 +- code/datums/skills/_skill.dm | 18 ++++ code/datums/skills/gaming.dm | 15 +++ code/game/machinery/computer/arcade.dm | 94 ++++++++++++------- code/modules/food_and_drinks/drinks/drinks.dm | 2 +- .../file_system/programs/arcade.dm | 19 ++-- .../chemistry/reagents/drink_reagents.dm | 9 ++ tgstation.dme | 1 + 10 files changed, 123 insertions(+), 44 deletions(-) create mode 100644 code/datums/skills/gaming.dm diff --git a/code/__DEFINES/skills.dm b/code/__DEFINES/skills.dm index e61cb51ab77..c757af43b21 100644 --- a/code/__DEFINES/skills.dm +++ b/code/__DEFINES/skills.dm @@ -17,7 +17,9 @@ #define SKILL_EXP_LEGENDARY 2500 //Skill modifier types -#define SKILL_SPEED_MODIFIER "skill_speed_modifier" +#define SKILL_SPEED_MODIFIER "skill_speed_modifier"//ideally added/subtracted in speed calculations to make you do stuff faster +#define SKILL_PROBS_MODIFIER "skill_probability_modifier"//ideally added/subtracted where beneficial in prob(x) calls +#define SKILL_RANDS_MODIFIER "skill_randomness_modifier"//ideally added/subtracted where beneficial in rand(x,y) calls // Gets the reference for the skill type that was given diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index afda9ad877b..09584eb27e5 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -166,6 +166,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_PRIMITIVE "primitive" #define TRAIT_GUNFLIP "gunflip" #define TRAIT_BLOODCRAWL_EAT "bloodcrawl_eat" +#define TRAIT_GAMERGOD "gamer-god" //double arcade prizes //non-mob traits #define TRAIT_PARALYSIS "paralysis" //Used for limb-based paralysis, where replacing the limb will fix it diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 118b691345c..f6fc597446c 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -149,9 +149,9 @@ if(silent) return if(known_skills[S] >= old_level) - to_chat(current, "I feel like I've become more proficient at [S.name]!") + S.level_gained(src, known_skills[S], old_level) else - to_chat(current, "I feel like I've become worse at [S.name]!") + S.level_lost(src, known_skills[S], old_level) ///Gets the skill's singleton and returns the result of its get_skill_modifier /datum/mind/proc/get_skill_modifier(skill, modifier) diff --git a/code/datums/skills/_skill.dm b/code/datums/skills/_skill.dm index 52d4f3e62ad..ca38b812c11 100644 --- a/code/datums/skills/_skill.dm +++ b/code/datums/skills/_skill.dm @@ -5,3 +5,21 @@ /datum/skill/proc/get_skill_modifier(modifier, level) return modifiers[modifier][level+1] //+1 because lists start at 1 + +/** + * level_gained: Gives skill levelup messages to the user + * + * Only fires if the xp gain isn't silent, so only really useful for messages. + * Arguments: + * * mind - The mind that you'll want to send messages + * * new_level - The newly gained level. Can check the actual level to give different messages at different levels, see defines in skills.dm + * * old_level - Similar to the above, but the level you had before levelling up. + */ +/datum/skill/proc/level_gained(var/datum/mind/mind, new_level, old_level)//just for announcements (doesn't go off if the xp gain is silent) + to_chat(mind.current, "I feel like I've become more proficient at [name]!") + +/** + * level_lost: See level_gained, same idea but fires on skill level-down + */ +/datum/skill/proc/level_lost(var/datum/mind/mind, new_level, old_level) + to_chat(mind.current, "I feel like I've become worse at [name]!") diff --git a/code/datums/skills/gaming.dm b/code/datums/skills/gaming.dm new file mode 100644 index 00000000000..5a8e098fda0 --- /dev/null +++ b/code/datums/skills/gaming.dm @@ -0,0 +1,15 @@ +/datum/skill/gaming + name = "Gaming" + desc = "My proficiency as a gamer. This helps me beat bosses with ease, powergame in Orion Trail, and makes me wanna slam some gamer fuel." + modifiers = list(SKILL_PROBS_MODIFIER = list(0, 5, 10, 15, 15, 20, 25), + SKILL_RANDS_MODIFIER = list(0, 1, 2, 3, 4, 5, 7)) + +/datum/skill/gaming/level_gained(var/datum/mind/mind, new_level, old_level) + switch(new_level) + if(SKILL_LEVEL_JOURNEYMAN)//gives slight extra perks outside roll modifiers + to_chat(mind.current, "I'm starting to pick up the meta of these arcade games. \ + If I were to minmax the optimal strat and accentuate my playstyle around well-refined tech...") + if(SKILL_LEVEL_LEGENDARY)//leads to a mysterious power... + to_chat(mind.current, "Maybe gamerfuel actually would help me play better...") + else + to_chat(mind.current, "I'm getting better at these arcade games!") diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 846a1deaa4c..27f0354aaf9 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -77,22 +77,28 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( return INITIALIZE_HINT_QDEL Reset() -/obj/machinery/computer/arcade/proc/prizevend(mob/user) - SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "arcade", /datum/mood_event/arcade) - if(prob(0.0001)) //1 in a million - new /obj/item/gun/energy/pulse/prize(src) - visible_message("[src] dispenses.. woah, a gun! Way past cool.", "You hear a chime and a shot.") - user.client.give_award(/datum/award/achievement/misc/pulse, user) - return +/obj/machinery/computer/arcade/proc/prizevend(mob/user, prizes = 1) + if(user.mind?.get_skill_level(/datum/skill/gaming) >= SKILL_LEVEL_LEGENDARY && HAS_TRAIT(user, TRAIT_GAMERGOD)) + visible_message("[user] inputs an intense cheat code!",\ + "You hear a flurry of buttons being pressed.") + say("CODE ACTIVATED: EXTRA PRIZES.") + prizes *= 2 + for(var/i = 0, i < prizes, i++) + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "arcade", /datum/mood_event/arcade) + if(prob(0.0001)) //1 in a million + new /obj/item/gun/energy/pulse/prize(src) + visible_message("[src] dispenses.. woah, a gun! Way past cool.", "You hear a chime and a shot.") + user.client.give_award(/datum/award/achievement/misc/pulse, user) + return - var/prizeselect - if(prize_override) - prizeselect = pickweight(prize_override) - else - prizeselect = pickweight(GLOB.arcade_prize_pool) - var/atom/movable/the_prize = new prizeselect(get_turf(src)) - playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = -3) - visible_message("[src] dispenses [the_prize]!", "You hear a chime and a clunk.") + var/prizeselect + if(prize_override) + prizeselect = pickweight(prize_override) + else + prizeselect = pickweight(GLOB.arcade_prize_pool) + var/atom/movable/the_prize = new prizeselect(get_turf(src)) + playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = -3) + visible_message("[src] dispenses [the_prize]!", "You hear a chime and a clunk.") /obj/machinery/computer/arcade/emp_act(severity) . = ..() @@ -206,9 +212,11 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( return if (!blocked && !gameover) + var/gamerSkillLevel = usr.mind?.get_skill_level(/datum/skill/gaming) + var/gamerSkill = usr.mind?.get_skill_modifier(/datum/skill/gaming, SKILL_RANDS_MODIFIER) if (href_list["attack"]) blocked = TRUE - var/attackamt = rand(2,6) + var/attackamt = rand(2,6) + rand(0, gamerSkill) var/weapon = pick(weapons) temp = "You attack with a [weapon] for [attackamt] damage!" playsound(loc, 'sound/arcade/hit.ogg', 50, TRUE, extrarange = -3, falloff = 10) @@ -222,8 +230,11 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( else if (href_list["heal"]) blocked = TRUE - var/pointamt = rand(1,3) - var/healamt = rand(6,8) + var/maxPointCost = 3 + if(gamerSkillLevel >= SKILL_LEVEL_JOURNEYMAN) + maxPointCost = 2 + var/pointamt = rand(1, maxPointCost) + var/healamt = rand(6,8) + rand(0, gamerSkill) temp = "You use [pointamt] magic to heal for [healamt] damage!" playsound(loc, 'sound/arcade/heal.ogg', 50, TRUE, extrarange = -3, falloff = 10) updateUsrDialog() @@ -238,7 +249,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( else if (href_list["charge"]) blocked = TRUE - var/chargeamt = rand(4,7) + var/chargeamt = rand(4,7) + rand(0, gamerSkill) temp = "You regain [chargeamt] points." playsound(loc, 'sound/arcade/mana.ogg', 50, TRUE, extrarange = -3, falloff = 10) player_mp += chargeamt @@ -271,6 +282,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( return /obj/machinery/computer/arcade/battle/proc/arcade_action(mob/user) + var/xp_gained = 0 if ((enemy_mp <= 0) || (enemy_hp <= 0)) if(!gameover) gameover = TRUE @@ -284,8 +296,10 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( log_game("[key_name(usr)] has outbombed Cuban Pete and been awarded a bomb.") Reset() obj_flags &= ~EMAGGED + xp_gained += 100 else prizevend(user) + xp_gained += 50 SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("win", (obj_flags & EMAGGED ? "emagged":"normal"))) @@ -327,10 +341,12 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( gameover = TRUE temp = "You have been crushed! GAME OVER" playsound(loc, 'sound/arcade/lose.ogg', 50, TRUE, extrarange = -3, falloff = 10) + xp_gained += 10//pity points if(obj_flags & EMAGGED) usr.gib() SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "hp", (obj_flags & EMAGGED ? "emagged":"normal"))) + user?.mind?.adjust_experience(/datum/skill/gaming, xp_gained+1)//always gain at least 1 point of XP blocked = FALSE return @@ -512,6 +528,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( gamers[gamer] = -1 gamer.client.give_award(/datum/award/achievement/misc/gamer, gamer) // PSYCH REPORT NOTE: patient kept rambling about how they did it for an "achievement", recommend continued holding for observation + gamer.mind?.adjust_experience(/datum/skill/gaming, 50) // cheevos make u better if(!isnull(GLOB.data_core.general)) for(var/datum/data/record/R in GLOB.data_core.general) @@ -553,6 +570,8 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( desc = "Learn how our ancestors got to Orion, and have fun in the process!" dat += "

May They Rest In Peace

" + user?.mind?.adjust_experience(/datum/skill/gaming, 10)//learning from your mistakes is the first rule of roguelikes + else if(event) dat = eventdat else if(gameStatus == ORION_STATUS_NORMAL) @@ -592,20 +611,25 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( return busy = TRUE + var/gamerSkillLevel = usr.mind?.get_skill_level(/datum/skill/gaming) + var/gamerSkill = usr.mind?.get_skill_modifier(/datum/skill/gaming, SKILL_PROBS_MODIFIER) + var/gamerSkillRands = usr.mind?.get_skill_modifier(/datum/skill/gaming, SKILL_RANDS_MODIFIER) + var/xp_gained = 0 if (href_list["continue"]) //Continue your travels if(gameStatus == ORION_STATUS_NORMAL && !event && turns != 7) if(turns >= ORION_TRAIL_WINTURN) win(usr) + xp_gained += 34 else food -= (alive+lings_aboard)*2 fuel -= 5 - if(turns == 2 && prob(30)) + if(turns == 2 && prob(30-gamerSkill)) event = ORION_TRAIL_COLLISION event() - else if(prob(75)) + else if(prob(75-gamerSkill)) event = pickweight(events) if(lings_aboard) - if(event == ORION_TRAIL_LING || prob(55)) + if(event == ORION_TRAIL_LING || prob(55-gamerSkill)) event = ORION_TRAIL_LING_ATTACK event() turns += 1 @@ -613,7 +637,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( var/mob/living/carbon/M = usr //for some vars switch(event) if(ORION_TRAIL_RAIDERS) - if(prob(50)) + if(prob(50-gamerSkill)) to_chat(usr, "You hear battle shouts. The tramping of boots on cold metal. Screams of agony. The rush of venting air. Are you going insane?") M.hallucination += 30 else @@ -621,7 +645,10 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( M.take_bodypart_damage(30) playsound(loc, 'sound/weapons/genhit2.ogg', 100, TRUE) if(ORION_TRAIL_ILLNESS) - var/severity = rand(1,3) //pray to RNGesus. PRAY, PIGS + var/maxSeverity = 3 + if(gamerSkillLevel >= SKILL_LEVEL_EXPERT) + maxSeverity = 2 //part of gitting gud is rng mitigation + var/severity = rand(1,maxSeverity) //pray to RNGesus. PRAY, PIGS if(severity == 1) to_chat(M, "You suddenly feel slightly nauseated." ) if(severity == 2) @@ -633,7 +660,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( sleep(30) M.vomit(10, distance = 5) if(ORION_TRAIL_FLUX) - if(prob(75)) + if(prob(75-gamerSkill)) M.Paralyze(60) say("A sudden gust of powerful wind slams [M] into the floor!") M.take_bodypart_damage(25) @@ -641,7 +668,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( else to_chat(M, "A violent gale blows past you, and you barely manage to stay standing!") if(ORION_TRAIL_COLLISION) //by far the most damaging event - if(prob(90)) + if(prob(90-gamerSkill)) playsound(loc, 'sound/effects/bang.ogg', 100, TRUE) var/turf/open/floor/F for(F in orange(1, src)) @@ -724,7 +751,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( event = null else if(href_list["blackhole"]) //keep speed past a black hole if(turns == 7) - if(prob(75)) + if(prob(75-gamerSkill)) event = ORION_TRAIL_BLACKHOLE event() if(obj_flags & EMAGGED) @@ -805,15 +832,16 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( else if(href_list["raid_spaceport"]) if(gameStatus == ORION_STATUS_MARKET) if(!spaceport_raided) - var/success = min(15 * alive,100) //default crew (4) have a 60% chance + var/success = min(15 * alive + gamerSkill,100) //default crew (4) have a 60% chance spaceport_raided = 1 var/FU = 0 var/FO = 0 if(prob(success)) - FU = rand(5,15) - FO = rand(5,15) + FU = rand(5 + gamerSkillRands,15 + gamerSkillRands) + FO = rand(5 + gamerSkillRands,15 + gamerSkillRands) last_spaceport_action = "You successfully raided the spaceport! You gained [FU] Fuel and [FO] Food! (+[FU]FU,+[FO]FO)" + xp_gained += 10 else FU = rand(-5,-15) FO = rand(-5,-15) @@ -872,7 +900,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( add_fingerprint(usr) updateUsrDialog() busy = FALSE - return + usr?.mind?.adjust_experience(/datum/skill/gaming, xp_gained+1) /obj/machinery/computer/arcade/orion_trail/proc/event() @@ -1273,9 +1301,9 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( var/obj/item/bodypart/chopchop = c_user.get_bodypart(which_hand) chopchop.dismember() qdel(chopchop) + user.mind?.adjust_experience(/datum/skill/gaming, 100) playsound(loc, 'sound/arcade/win.ogg', 50, TRUE, extrarange = -3, falloff = 10) - for(var/i=1; i<=rand(3,5); i++) - prizevend(user) + prizevend(user, rand(3,5)) else to_chat(c_user, "You (wisely) decide against putting your hand in the machine.") diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 5f331e5df74..520115b1f03 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -704,7 +704,7 @@ /obj/item/reagent_containers/food/drinks/soda_cans/pwr_game name = "Pwr Game" - desc = "The only drink with the PWR that true gamers crave." + desc = "The only drink with the PWR that true gamers crave. When a gamer talks about gamerfuel, this is what they're literally referring to." icon_state = "purple_can" list_reagents = list(/datum/reagent/consumable/pwr_game = 30) diff --git a/code/modules/modular_computers/file_system/programs/arcade.dm b/code/modules/modular_computers/file_system/programs/arcade.dm index 17db77381a2..ca19c80a9f2 100644 --- a/code/modules/modular_computers/file_system/programs/arcade.dm +++ b/code/modules/modular_computers/file_system/programs/arcade.dm @@ -27,6 +27,7 @@ /datum/computer_file/program/arcade/proc/game_check(mob/user) sleep(5) + user?.mind?.adjust_experience(/datum/skill/gaming, 1) if(boss_hp <= 0) heads_up = "You have crushed [boss_name]! Rejoice!" playsound(computer.loc, 'sound/arcade/win.ogg', 50, TRUE, extrarange = -3, falloff = 10) @@ -35,8 +36,8 @@ if(istype(computer)) computer.update_icon() ticket_count += 1 + user?.mind?.adjust_experience(/datum/skill/gaming, 50) sleep(10) - return else if(player_hp <= 0 || player_mp <= 0) heads_up = "You have been defeated... how will the station survive?" playsound(computer.loc, 'sound/arcade/lose.ogg', 50, TRUE, extrarange = -3, falloff = 10) @@ -44,9 +45,8 @@ program_icon_state = "arcade_off" if(istype(computer)) computer.update_icon() + user?.mind?.adjust_experience(/datum/skill/gaming, 10) sleep(10) - return - return /datum/computer_file/program/arcade/proc/enemy_check(mob/user) var/boss_attackamt = 0 //Spam protection from boss attacks as well. @@ -101,11 +101,13 @@ if(computer) printer = computer.all_components[MC_PRINT] + var/gamerSkillLevel = user.mind?.get_skill_level(/datum/skill/gaming) + var/gamerSkill = usr.mind?.get_skill_modifier(/datum/skill/gaming, SKILL_RANDS_MODIFIER) switch(action) if("Attack") var/attackamt = 0 //Spam prevention. if(pause_state == FALSE) - attackamt = rand(2,6) + attackamt = rand(2,6) + rand(0, gamerSkill) pause_state = TRUE heads_up = "You attack for [attackamt] damage." playsound(computer.loc, 'sound/arcade/hit.ogg', 50, TRUE, extrarange = -3, falloff = 10) @@ -118,8 +120,11 @@ var/healamt = 0 //More Spam Prevention. var/healcost = 0 if(pause_state == FALSE) - healamt = rand(6,8) - healcost = rand(1,3) + healamt = rand(6,8) + rand(0, gamerSkill) + var/maxPointCost = 3 + if(gamerSkillLevel >= SKILL_LEVEL_JOURNEYMAN) + maxPointCost = 2 + healcost = rand(1, maxPointCost) pause_state = TRUE heads_up = "You heal for [healamt] damage." playsound(computer.loc, 'sound/arcade/heal.ogg', 50, TRUE, extrarange = -3, falloff = 10) @@ -132,7 +137,7 @@ if("Recharge_Power") var/rechargeamt = 0 //As above. if(pause_state == FALSE) - rechargeamt = rand(4,7) + rechargeamt = rand(4,7) + rand(0, gamerSkill) pause_state = TRUE heads_up = "You regain [rechargeamt] magic power." playsound(computer.loc, 'sound/arcade/mana.ogg', 50, TRUE, extrarange = -3, falloff = 10) diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 55d0c5c207a..5754b2f7c5a 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -487,8 +487,17 @@ glass_name = "glass of Pwr Game" glass_desc = "Goes well with a Vlad's salad." +/datum/reagent/consumable/pwr_game/reaction_mob(mob/living/C, method=TOUCH, reac_volume) + ..() + if(C?.mind?.get_skill_level(/datum/skill/gaming) >= SKILL_LEVEL_LEGENDARY && method==INGEST && !HAS_TRAIT(C, TRAIT_GAMERGOD)) + ADD_TRAIT(C, TRAIT_GAMERGOD, "pwr_game") + to_chat(C, "As you imbibe the Pwr Game, your gamer third eye opens... \ + You feel as though a great secret of the universe has been made known to you...") + /datum/reagent/consumable/pwr_game/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + if(prob(10)) + M?.mind.adjust_experience(/datum/skill/gaming, 5) ..() /datum/reagent/consumable/shamblers diff --git a/tgstation.dme b/tgstation.dme index 394c10cbc08..241f3be62b4 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -592,6 +592,7 @@ #include "code\datums\ruins\space.dm" #include "code\datums\skills\_skill.dm" #include "code\datums\skills\cleaning.dm" +#include "code\datums\skills\gaming.dm" #include "code\datums\skills\medical.dm" #include "code\datums\skills\mining.dm" #include "code\datums\status_effects\buffs.dm" From d32a170a44310d5319a954313e41216e1a37841a Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 5 Mar 2020 04:06:37 -0800 Subject: [PATCH 26/54] Automatic changelog generation for PR #49618 [ci skip] --- html/changelogs/AutoChangeLog-pr-49618.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49618.yml diff --git a/html/changelogs/AutoChangeLog-pr-49618.yml b/html/changelogs/AutoChangeLog-pr-49618.yml new file mode 100644 index 00000000000..dbd9605dd4a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49618.yml @@ -0,0 +1,4 @@ +author: "PKPenguin321" +delete-after: True +changes: + - rscadd: "Gaming skill has been added, level it by playing video games. Are you a bad enough dude to become a legendary gamer?" From 880280ed480838e16e767362c0b2c55d52cd000f Mon Sep 17 00:00:00 2001 From: spookydonut Date: Thu, 5 Mar 2020 20:36:21 +0800 Subject: [PATCH 27/54] Revival surgery is no longer an advanced surgery (#49489) * Update revival.dm * Update medical_designs.dm * Update all_nodes.dm * Moves the surgery out of advanced folder * dme Co-authored-by: spookydonut --- code/modules/research/designs/medical_designs.dm | 7 ------- code/modules/research/techweb/all_nodes.dm | 2 +- code/modules/surgery/{advanced => }/revival.dm | 4 ++-- tgstation.dme | 2 +- 4 files changed, 4 insertions(+), 11 deletions(-) rename code/modules/surgery/{advanced => }/revival.dm (97%) diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 4d568a13b18..17e907becf8 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -720,13 +720,6 @@ surgery = /datum/surgery/healing/combo/upgraded/femto id = "surgery_heal_combo_upgrade_femto" -/datum/design/surgery/revival - name = "Revival" - desc = "An experimental surgical procedure which involves reconstruction and reactivation of the patient's brain even long after death. The body must still be able to sustain life." - id = "surgery_revival" - surgery = /datum/surgery/advanced/revival - research_icon_state = "surgery_head" - /datum/design/surgery/brainwashing name = "Brainwashing" desc = "A surgical procedure which directly implants a directive into the patient's brain, making it their absolute priority. It can be cleared using a mindshield implant." diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 9ca804ad89b..e1b6897e00a 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -103,7 +103,7 @@ display_name = "Advanced Surgery" description = "When simple medicine doesn't cut it." prereq_ids = list("imp_wt_surgery") - design_ids = list("surgery_lobotomy", "surgery_heal_brute_upgrade_femto", "surgery_heal_burn_upgrade_femto","surgery_heal_combo", "surgery_revival","surgery_adv_dissection") + design_ids = list("surgery_lobotomy", "surgery_heal_brute_upgrade_femto", "surgery_heal_burn_upgrade_femto","surgery_heal_combo","surgery_adv_dissection") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1500) export_price = 4000 diff --git a/code/modules/surgery/advanced/revival.dm b/code/modules/surgery/revival.dm similarity index 97% rename from code/modules/surgery/advanced/revival.dm rename to code/modules/surgery/revival.dm index e5a69a9361f..53573176e2c 100644 --- a/code/modules/surgery/advanced/revival.dm +++ b/code/modules/surgery/revival.dm @@ -1,4 +1,4 @@ -/datum/surgery/advanced/revival +/datum/surgery/revival name = "Revival" desc = "An experimental surgical procedure which involves reconstruction and reactivation of the patient's brain even long after death. The body must still be able to sustain life." steps = list(/datum/surgery_step/incise, @@ -13,7 +13,7 @@ possible_locs = list(BODY_ZONE_HEAD) requires_bodypart_type = 0 -/datum/surgery/advanced/revival/can_start(mob/user, mob/living/carbon/target) +/datum/surgery/revival/can_start(mob/user, mob/living/carbon/target) if(!..()) return FALSE if(target.stat != DEAD) diff --git a/tgstation.dme b/tgstation.dme index 241f3be62b4..6e9591d82c4 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -2894,6 +2894,7 @@ #include "code\modules\surgery\plastic_surgery.dm" #include "code\modules\surgery\prosthetic_replacement.dm" #include "code\modules\surgery\remove_embedded_object.dm" +#include "code\modules\surgery\revival.dm" #include "code\modules\surgery\stomachpump.dm" #include "code\modules\surgery\surgery.dm" #include "code\modules\surgery\surgery_helpers.dm" @@ -2903,7 +2904,6 @@ #include "code\modules\surgery\advanced\lobotomy.dm" #include "code\modules\surgery\advanced\necrotic_revival.dm" #include "code\modules\surgery\advanced\pacification.dm" -#include "code\modules\surgery\advanced\revival.dm" #include "code\modules\surgery\advanced\viral_bonding.dm" #include "code\modules\surgery\advanced\bioware\bioware.dm" #include "code\modules\surgery\advanced\bioware\bioware_surgery.dm" From e3609ed7f0bf08324b2c1b0282a08b00313293a7 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 5 Mar 2020 04:36:25 -0800 Subject: [PATCH 28/54] Automatic changelog generation for PR #49489 [ci skip] --- html/changelogs/AutoChangeLog-pr-49489.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49489.yml diff --git a/html/changelogs/AutoChangeLog-pr-49489.yml b/html/changelogs/AutoChangeLog-pr-49489.yml new file mode 100644 index 00000000000..18f519318e4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49489.yml @@ -0,0 +1,4 @@ +author: "ATHATH" +delete-after: True +changes: + - balance: "The revival surgery is now a basic surgery instead of an advanced one, so you can now perform it without needing an operating computer (or the Advanced Surgery tech)." From 29fe3a0b76d758066eef5440b2e539f3ae331492 Mon Sep 17 00:00:00 2001 From: spookydonut Date: Thu, 5 Mar 2020 20:49:24 +0800 Subject: [PATCH 29/54] a couple more genetics perks: martyrdom and HARS, locks chem spike behind crafting only (#49062) * getting somewhere * cleanup one * cleanup two * supermatter immunity > HADS * more fluff * proper return, compile * lint * lint 2 electric boogaloo * cobby happy * HADS * some more changes * i don't know why this file went rogue * final fixes, small name change, difficulty up (polish!) * skog help * EUREKAAAAAAAAAAAAAAAAAAA * chelp * reverts some regenerate limbs changes as they are no longer needed, fully integrates attach limb power * minor fuck before the big fuck * the big fuck ALMOST DONE, FINISHING TOUCHES NEEDED * the big fuck finale * teenie fuck ;) * line endings Co-authored-by: spookydonut --- code/__DEFINES/DNA.dm | 2 + code/__DEFINES/dcs/signals.dm | 2 + code/datums/mutations/_combined.dm | 4 + code/datums/mutations/_mutations.dm | 30 ++-- code/datums/mutations/body.dm | 91 ++++++++++- code/datums/status_effects/buffs.dm | 40 +++-- code/game/objects/items/devices/scanners.dm | 6 +- .../changeling/powers/regenerate.dm | 4 +- .../mob/living/carbon/human/species.dm | 154 ++++++------------ .../carbon/human/species_types/dullahan.dm | 6 +- .../carbon/human/species_types/felinid.dm | 18 +- .../human/species_types/lizardpeople.dm | 2 +- .../carbon/human/species_types/mothmen.dm | 2 +- .../human/species_types/shadowpeople.dm | 4 +- .../carbon/human/species_types/vampire.dm | 2 +- code/modules/surgery/bodyparts/bodyparts.dm | 6 +- .../surgery/bodyparts/dismemberment.dm | 50 +++--- code/modules/surgery/bodyparts/helpers.dm | 2 +- code/modules/surgery/organs/appendix.dm | 3 + code/modules/surgery/organs/eyes.dm | 1 - code/modules/surgery/organs/heart.dm | 3 + code/modules/surgery/organs/helpers.dm | 4 +- code/modules/surgery/organs/liver.dm | 3 + code/modules/surgery/organs/lungs.dm | 2 + code/modules/surgery/organs/organ_internal.dm | 12 ++ code/modules/surgery/organs/stomach.dm | 3 + .../modules/surgery/prosthetic_replacement.dm | 13 +- 27 files changed, 284 insertions(+), 185 deletions(-) diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 3719ec84df2..8f8f05fd678 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -54,6 +54,8 @@ #define GELADIKINESIS /datum/mutation/human/geladikinesis #define CRYOKINESIS /datum/mutation/human/cryokinesis #define SPIDER_WEB /datum/mutation/human/webbing +#define MARTYRDOM /datum/mutation/human/martyrdom +#define HARS /datum/mutation/human/headless #define UI_CHANGED "ui changed" #define UE_CHANGED "ue changed" diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 8fbad1070c7..d5976fd8870 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -216,6 +216,8 @@ #define COMSIG_LIVING_MINOR_SHOCK "living_minor_shock" //sent by stuff like stunbatons and tasers: () #define COMSIG_LIVING_REVIVE "living_revive" //from base of mob/living/revive() (full_heal, admin_revive) #define COMSIG_LIVING_REGENERATE_LIMBS "living_regen_limbs" //from base of /mob/living/regenerate_limbs(): (noheal, excluded_limbs) +#define COMSIG_LIVING_ATTACH_LIMB "living_attach_limb" //from base of /obj/item/bodypart/proc/attach_limb(): (new_limb, special) allows you to fail limb attachment + #define COMPONENT_NO_ATTACH 1 #define COMSIG_PROCESS_BORGCHARGER_OCCUPANT "living_charge" //sent from borg recharge stations: (amount, repairs) #define COMSIG_MOB_CLIENT_LOGIN "comsig_mob_client_login" //sent when a mob/login() finishes: (client) #define COMSIG_BORG_SAFE_DECONSTRUCT "borg_safe_decon" //sent from borg mobs to itself, for tools to catch an upcoming destroy() due to safe decon (rather than detonation) diff --git a/code/datums/mutations/_combined.dm b/code/datums/mutations/_combined.dm index 46d7128b0a0..77d581e0214 100644 --- a/code/datums/mutations/_combined.dm +++ b/code/datums/mutations/_combined.dm @@ -36,3 +36,7 @@ /datum/generecipe/tonguechem required = "/datum/mutation/human/tongue_spike; /datum/mutation/human/stimmed" result = TONGUESPIKECHEM + +/datum/generecipe/martyrdom + required = "/datum/mutation/human/strong; /datum/mutation/human/stimmed" + result = MARTYRDOM diff --git a/code/datums/mutations/_mutations.dm b/code/datums/mutations/_mutations.dm index 2392f7c09b6..144683e8303 100644 --- a/code/datums/mutations/_mutations.dm +++ b/code/datums/mutations/_mutations.dm @@ -94,21 +94,21 @@ /datum/mutation/human/proc/on_losing(mob/living/carbon/human/owner) if(owner && istype(owner) && (owner.dna.mutations.Remove(src))) - if(text_lose_indication && owner.stat != DEAD) - to_chat(owner, text_lose_indication) - if(visual_indicators.len) - var/list/mut_overlay = list() - if(owner.overlays_standing[layer_used]) - mut_overlay = owner.overlays_standing[layer_used] - owner.remove_overlay(layer_used) - mut_overlay.Remove(get_visual_indicator()) - owner.overlays_standing[layer_used] = mut_overlay - owner.apply_overlay(layer_used) - if(power) - owner.RemoveSpell(power) - qdel(src) - return 0 - return 1 + return TRUE + . = FALSE + if(text_lose_indication && owner.stat != DEAD) + to_chat(owner, text_lose_indication) + if(visual_indicators.len) + var/list/mut_overlay = list() + if(owner.overlays_standing[layer_used]) + mut_overlay = owner.overlays_standing[layer_used] + owner.remove_overlay(layer_used) + mut_overlay.Remove(get_visual_indicator()) + owner.overlays_standing[layer_used] = mut_overlay + owner.apply_overlay(layer_used) + if(power) + owner.RemoveSpell(power) + qdel(src) /mob/living/carbon/proc/update_mutations_overlay() return diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index 7781b0a3d44..cf05b7aedb0 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -137,7 +137,7 @@ if(1) owner.emote("twitch") if(2 to 3) - owner.say("[prob(50) ? ";" : ""][pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS")]", forced="tourette's syndrome") + owner.say("[prob(50) ? ";" : ""][pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS")]", forced=name) var/x_offset_old = owner.pixel_x var/y_offset_old = owner.pixel_y var/x_offset = owner.pixel_x + rand(-2,2) @@ -394,3 +394,92 @@ return //remove the 'edge' cases to_chat(owner, "You trip over your own feet.") owner.Knockdown(30) + +/datum/mutation/human/martyrdom + name = "Internal Martyrdom" + desc = "A mutation that makes the body destruct when near death. Not damaging, but very, VERY disorienting." + locked = TRUE + quality = POSITIVE //not that cloning will be an option a lot but generally lets keep this around i guess? + text_gain_indication = "You get an intense feeling of heartburn." + text_lose_indication = "Your internal organs feel at ease." + +/datum/mutation/human/martyrdom/on_acquiring() + . = ..() + if(.) + return TRUE + RegisterSignal(owner, COMSIG_MOB_STATCHANGE, .proc/bloody_shower) + +/datum/mutation/human/martyrdom/on_losing() + . = ..() + if(.) + return TRUE + UnregisterSignal(owner, COMSIG_MOB_STATCHANGE) + +/datum/mutation/human/martyrdom/proc/bloody_shower(new_stat) + if(new_stat != UNCONSCIOUS) + return + var/list/organs = owner.getorganszone(BODY_ZONE_HEAD, 1) + + for(var/obj/item/organ/I in organs) + I.Remove(owner, TRUE) + + explosion(get_turf(owner), 0, 0, 2, 0, TRUE) + for(var/mob/living/carbon/human/H in view(2,owner)) + var/obj/item/organ/eyes/eyes = H.getorganslot(ORGAN_SLOT_EYES) + if(eyes) + to_chat(H, "You are blinded by a shower of blood!") + else + to_chat(H, "You are knocked down by a wave of... blood?!") + H.Stun(20) + H.blur_eyes(20) + eyes?.applyOrganDamage(5) + H.confused += 3 + for(var/mob/living/silicon/S in view(2,owner)) + to_chat(S, "Your sensors are disabled by a shower of blood!") + S.Paralyze(60) + owner.gib() + +/datum/mutation/human/headless + name = "H.A.R.S." + desc = "A mutation that makes the body reject the head. Stands for Head Allergic Rejection Syndrome. Warning: Removing this mutation is very dangerous, though it will regenerate head organs." + difficulty = 12 //pretty good for traitors + quality = NEGATIVE //holy shit no eyes or tongue or ears + text_gain_indication = "Something feels off." + +/datum/mutation/human/headless/on_acquiring() + . = ..() + if(.)//cant add + return TRUE + var/obj/item/organ/brain/brain = owner.getorganslot(ORGAN_SLOT_BRAIN) + if(brain) //so this doesn't instantly kill you + brain.organ_flags &= ~ORGAN_VITAL + qdel(brain) + + var/obj/item/bodypart/head/head = owner.get_bodypart(BODY_ZONE_HEAD) + if(head) + owner.visible_message("[owner]'s head splatters with a sickening crunch!", ignored_mobs = list(owner)) + new /obj/effect/gibspawner/generic(get_turf(owner), owner) + head.dismember(BRUTE) + head.drop_organs() + qdel(head) + owner.regenerate_icons() + RegisterSignal(owner, COMSIG_LIVING_ATTACH_LIMB, .proc/abortattachment) + +/datum/mutation/human/headless/on_losing() + . = ..() + if(.) + return TRUE + var/successful = owner.regenerate_limb(BODY_ZONE_HEAD, noheal = TRUE) //noheal needs to be TRUE to prevent weird adding and removing mutation healing + if(!successful) + stack_trace("HARS mutation head regeneration failed! (usually caused by headless syndrome having a head)") + return TRUE + UnregisterSignal(owner, COMSIG_LIVING_ATTACH_LIMB) + owner.dna.species.regenerate_organs(owner, excluded_zones = list(BODY_ZONE_CHEST)) //only regenerate head + owner.apply_damage(damage = 50, damagetype = BRUTE, def_zone = BODY_ZONE_HEAD) //and this to DISCOURAGE organ farming, or at least not make it free. + owner.visible_message("[owner]'s head returns with a sickening crunch!", "Your head regrows with a sickening crack! Ouch.") + new /obj/effect/gibspawner/generic(get_turf(owner), owner) + + +/datum/mutation/human/headless/proc/abortattachment(datum/source, obj/item/bodypart/new_limb, special) //you aren't getting your head back + if(istype(new_limb, /obj/item/bodypart/head)) + return COMPONENT_NO_ATTACH diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 540875aeb1b..4e8fee150b5 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -385,16 +385,7 @@ if(deathTick < 4) deathTick += 1 else - owner.visible_message("[owner]'s soul is absorbed into the rod, relieving the previous snake of its duty.") - var/mob/living/simple_animal/hostile/retaliate/poison/snake/healSnake = new(owner.loc) - var/list/chems = list(/datum/reagent/medicine/sal_acid, /datum/reagent/medicine/C2/convermol, /datum/reagent/medicine/oxandrolone) - healSnake.poison_type = pick(chems) - healSnake.name = "Asclepius's Snake" - healSnake.real_name = "Asclepius's Snake" - healSnake.desc = "A mystical snake previously trapped upon the Rod of Asclepius, now freed of its burden. Unlike the average snake, its bites contain chemicals with minor healing properties." - new /obj/effect/decal/cleanable/ash(owner.loc) - new /obj/item/rod_of_asclepius(owner.loc) - qdel(owner) + consume_owner() else if(iscarbon(owner)) var/mob/living/carbon/itemUser = owner @@ -406,12 +397,20 @@ //If user does not have the corresponding hand anymore, give them one and return the rod to their hand if(((hand % 2) == 0)) var/obj/item/bodypart/L = itemUser.newBodyPart(BODY_ZONE_R_ARM, FALSE, FALSE) - L.attach_limb(itemUser) - itemUser.put_in_hand(newRod, hand, forced = TRUE) + if(L.attach_limb(itemUser)) + itemUser.put_in_hand(newRod, hand, forced = TRUE) + else + qdel(L) + consume_owner() //we can't regrow, abort abort + return else var/obj/item/bodypart/L = itemUser.newBodyPart(BODY_ZONE_L_ARM, FALSE, FALSE) - L.attach_limb(itemUser) - itemUser.put_in_hand(newRod, hand, forced = TRUE) + if(L.attach_limb(itemUser)) + itemUser.put_in_hand(newRod, hand, forced = TRUE) + else + qdel(L) + consume_owner() //see above comment + return to_chat(itemUser, "Your arm suddenly grows back with the Rod of Asclepius still attached!") else //Otherwise get rid of whatever else is in their hand and return the rod to said hand @@ -446,6 +445,19 @@ var/mob/living/simple_animal/SM = L SM.adjustHealth(-3.5, forced = TRUE) +/datum/status_effect/hippocraticOath/proc/consume_owner() + owner.visible_message("[owner]'s soul is absorbed into the rod, relieving the previous snake of its duty.") + var/mob/living/simple_animal/hostile/retaliate/poison/snake/healSnake = new(owner.loc) + var/list/chems = list(/datum/reagent/medicine/sal_acid, /datum/reagent/medicine/C2/convermol, /datum/reagent/medicine/oxandrolone) + healSnake.poison_type = pick(chems) + healSnake.name = "Asclepius's Snake" + healSnake.real_name = "Asclepius's Snake" + healSnake.desc = "A mystical snake previously trapped upon the Rod of Asclepius, now freed of its burden. Unlike the average snake, its bites contain chemicals with minor healing properties." + new /obj/effect/decal/cleanable/ash(owner.loc) + new /obj/item/rod_of_asclepius(owner.loc) + qdel(owner) + + /datum/status_effect/good_music id = "Good Music" alert_type = null diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index e3881672e6d..1a119ffbaa2 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -302,15 +302,15 @@ GENE SCANNER var/datum/species/S = H.dna.species var/mutant = H.dna.check_mutation(HULK) \ || S.mutantlungs != initial(S.mutantlungs) \ - || S.mutant_brain != initial(S.mutant_brain) \ - || S.mutant_heart != initial(S.mutant_heart) \ + || S.mutantbrain != initial(S.mutantbrain) \ + || S.mutantheart != initial(S.mutantheart) \ || S.mutanteyes != initial(S.mutanteyes) \ || S.mutantears != initial(S.mutantears) \ || S.mutanthands != initial(S.mutanthands) \ || S.mutanttongue != initial(S.mutanttongue) \ - || S.mutanttail != initial(S.mutanttail) \ || S.mutantliver != initial(S.mutantliver) \ || S.mutantstomach != initial(S.mutantstomach) \ + || S.mutantappendix != initial(S.mutantappendix) \ || S.flying_species != initial(S.flying_species) render_list += "Species: [S.name][mutant ? "-derived mutant" : ""]\n" diff --git a/code/modules/antagonists/changeling/powers/regenerate.dm b/code/modules/antagonists/changeling/powers/regenerate.dm index d5105ec2d15..7f0e9e2f4c9 100644 --- a/code/modules/antagonists/changeling/powers/regenerate.dm +++ b/code/modules/antagonists/changeling/powers/regenerate.dm @@ -26,8 +26,8 @@ C.regenerate_limbs(1) if(!user.getorganslot(ORGAN_SLOT_BRAIN)) var/obj/item/organ/brain/B - if(C.has_dna() && C.dna.species.mutant_brain) - B = new C.dna.species.mutant_brain() + if(C.has_dna() && C.dna.species.mutantbrain) + B = new C.dna.species.mutantbrain() else B = new() B.organ_flags &= ~ORGAN_VITAL diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index d744bcf1753..7ba92ffced3 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -75,20 +75,23 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/sound/attack_sound = 'sound/weapons/punch1.ogg' var/sound/miss_sound = 'sound/weapons/punchmiss.ogg' - //Breathing! - var/obj/item/organ/lungs/mutantlungs = null + //Breathing! Most changes are in mutantlungs, though var/breathid = "o2" - var/obj/item/organ/brain/mutant_brain = /obj/item/organ/brain - var/obj/item/organ/heart/mutant_heart = /obj/item/organ/heart + + //Do NOT remove by setting to null. use OR make a RESPECTIVE TRAIT (removing stomach? add the NOSTOMACH trait to your species) + //why does it work this way? because traits also disable the downsides of not having an organ, removing organs but not having the trait will make your species die + var/obj/item/organ/brain/mutantbrain = /obj/item/organ/brain + var/obj/item/organ/heart/mutantheart = /obj/item/organ/heart + var/obj/item/organ/lungs/mutantlungs = /obj/item/organ/lungs var/obj/item/organ/eyes/mutanteyes = /obj/item/organ/eyes var/obj/item/organ/ears/mutantears = /obj/item/organ/ears - var/obj/item/mutanthands var/obj/item/organ/tongue/mutanttongue = /obj/item/organ/tongue - var/obj/item/organ/tail/mutanttail = null - - var/obj/item/organ/liver/mutantliver - var/obj/item/organ/stomach/mutantstomach + var/obj/item/organ/liver/mutantliver = /obj/item/organ/liver + var/obj/item/organ/stomach/mutantstomach = /obj/item/organ/stomach + var/obj/item/organ/appendix/mutantappendix = /obj/item/organ/appendix + //only an honorary mutantthing because not an organ and not loaded in the same way, you've been warned to do your research + var/obj/item/mutanthands var/override_float = FALSE //Bitflag that controls what in game ways can select this species as a spawnable source @@ -149,110 +152,47 @@ GLOBAL_LIST_EMPTY(roundstart_races) return 0 return 1 -//Will regenerate missing organs -/datum/species/proc/regenerate_organs(mob/living/carbon/C,datum/species/old_species,replace_current=TRUE) - var/obj/item/organ/brain/brain = C.getorganslot(ORGAN_SLOT_BRAIN) - var/obj/item/organ/heart/heart = C.getorganslot(ORGAN_SLOT_HEART) - var/obj/item/organ/lungs/lungs = C.getorganslot(ORGAN_SLOT_LUNGS) - var/obj/item/organ/appendix/appendix = C.getorganslot(ORGAN_SLOT_APPENDIX) - var/obj/item/organ/eyes/eyes = C.getorganslot(ORGAN_SLOT_EYES) - var/obj/item/organ/ears/ears = C.getorganslot(ORGAN_SLOT_EARS) - var/obj/item/organ/tongue/tongue = C.getorganslot(ORGAN_SLOT_TONGUE) - var/obj/item/organ/liver/liver = C.getorganslot(ORGAN_SLOT_LIVER) - var/obj/item/organ/stomach/stomach = C.getorganslot(ORGAN_SLOT_STOMACH) - var/obj/item/organ/tail/tail = C.getorganslot(ORGAN_SLOT_TAIL) - var/should_have_brain = TRUE - var/should_have_heart = !(NOBLOOD in species_traits) - var/should_have_lungs = !(TRAIT_NOBREATH in inherent_traits) - var/should_have_appendix = !(TRAIT_NOHUNGER in inherent_traits) - var/should_have_eyes = TRUE - var/should_have_ears = TRUE - var/should_have_tongue = TRUE - var/should_have_liver = !(TRAIT_NOMETABOLISM in inherent_traits) - var/should_have_stomach = !(NOSTOMACH in species_traits) - var/should_have_tail = mutanttail +/** regenerate_organs + * Corrects organs in a carbon, removing ones it doesn't need and adding ones it does + * + * takes all organ slots, removes organs a species should not have, adds organs a species should have. + * can use replace_current to refresh all organs, creating an entirely new set. + * Arguments: + * C - carbon, the owner of the species datum AKA whoever we're regenerating organs in + * old_species - datum, used when regenerate organs is called in a switching species to remove old mutant organs. + * replace_current - boolean, forces all old organs to get deleted whether or not they pass the species' ability to keep that organ + * excluded_zones - list, add zone defines to block organs inside of the zones from getting handled. see headless mutation for an example + */ +/datum/species/proc/regenerate_organs(mob/living/carbon/C,datum/species/old_species,replace_current=TRUE,list/excluded_zones) + //what should be put in if there is no mutantorgan (brains handled seperately) + var/list/slot_mutantorgans = list(ORGAN_SLOT_BRAIN = mutantbrain, ORGAN_SLOT_HEART = mutantheart, ORGAN_SLOT_LUNGS = mutantlungs, ORGAN_SLOT_APPENDIX = mutantappendix, \ + ORGAN_SLOT_EYES = mutanteyes, ORGAN_SLOT_EARS = mutantears, ORGAN_SLOT_TONGUE = mutanttongue, ORGAN_SLOT_LIVER = mutantliver, ORGAN_SLOT_STOMACH = mutantstomach) - if(heart && (!should_have_heart || replace_current)) - heart.Remove(C,1) - QDEL_NULL(heart) - if(should_have_heart && !heart) - heart = new mutant_heart() - heart.Insert(C) + for(var/slot in list(ORGAN_SLOT_BRAIN, ORGAN_SLOT_HEART, ORGAN_SLOT_LUNGS, ORGAN_SLOT_APPENDIX, \ + ORGAN_SLOT_EYES, ORGAN_SLOT_EARS, ORGAN_SLOT_TONGUE, ORGAN_SLOT_LIVER, ORGAN_SLOT_STOMACH)) - if(lungs && (!should_have_lungs || replace_current)) - lungs.Remove(C,1) - QDEL_NULL(lungs) - if(should_have_lungs && !lungs) - if(mutantlungs) - lungs = new mutantlungs() - else - lungs = new() - lungs.Insert(C) + var/obj/item/organ/oldorgan = C.getorganslot(slot) //used in removing + var/obj/item/organ/neworgan = slot_mutantorgans[slot] //used in adding + var/used_neworgan = FALSE + neworgan = new neworgan() + var/should_have = neworgan.get_availability(src) //organ proc that points back to a species trait (so if the species is supposed to have this organ) - if(liver && (!should_have_liver || replace_current)) - liver.Remove(C,1) - QDEL_NULL(liver) - if(should_have_liver && !liver) - if(mutantliver) - liver = new mutantliver() - else - liver = new() - liver.Insert(C) + if(oldorgan && (!should_have || replace_current) && !(oldorgan.zone in excluded_zones)) + if(slot == ORGAN_SLOT_BRAIN) + var/obj/item/organ/brain/brain = oldorgan + if(!brain.decoy_override)//"Just keep it if it's fake" - confucius, probably + brain.Remove(C,TRUE, TRUE) //brain argument used so it doesn't cause any... sudden death. + QDEL_NULL(brain) + oldorgan.Remove(C,TRUE) + QDEL_NULL(oldorgan) - if(stomach && (!should_have_stomach || replace_current)) - stomach.Remove(C,1) - QDEL_NULL(stomach) - if(should_have_stomach && !stomach) - if(mutantstomach) - stomach = new mutantstomach() - else - stomach = new() - stomach.Insert(C) + if(!oldorgan && should_have && !(initial(neworgan.zone) in excluded_zones)) + used_neworgan = TRUE + neworgan.Insert(C) - if(appendix && (!should_have_appendix || replace_current)) - appendix.Remove(C,1) - QDEL_NULL(appendix) - if(should_have_appendix && !appendix) - appendix = new() - appendix.Insert(C) - - if(tail && (!should_have_tail || replace_current)) - tail.Remove(C,1) - QDEL_NULL(tail) - if(should_have_tail && !tail) - tail = new mutanttail() - tail.Insert(C) - - if(C.get_bodypart(BODY_ZONE_HEAD)) - if(brain && (replace_current || !should_have_brain)) - if(!brain.decoy_override)//Just keep it if it's fake - brain.Remove(C,TRUE,TRUE) - QDEL_NULL(brain) - if(should_have_brain && !brain) - brain = new mutant_brain() - brain.Insert(C, TRUE, TRUE) - - if(eyes && (replace_current || !should_have_eyes)) - eyes.Remove(C,1) - QDEL_NULL(eyes) - if(should_have_eyes && !eyes) - eyes = new mutanteyes - eyes.Insert(C) - - if(ears && (replace_current || !should_have_ears)) - ears.Remove(C,1) - QDEL_NULL(ears) - if(should_have_ears && !ears) - ears = new mutantears - ears.Insert(C) - - if(tongue && (replace_current || !should_have_tongue)) - tongue.Remove(C,1) - QDEL_NULL(tongue) - if(should_have_tongue && !tongue) - tongue = new mutanttongue - tongue.Insert(C) + if(!used_neworgan) + qdel(neworgan) if(old_species) for(var/mutantorgan in old_species.mutant_organs) diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm index 74d83cdedf7..9935717ba80 100644 --- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm +++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm @@ -6,7 +6,7 @@ inherent_traits = list(TRAIT_NOHUNGER,TRAIT_NOBREATH) default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None") use_skintones = TRUE - mutant_brain = /obj/item/organ/brain/dullahan + mutantbrain = /obj/item/organ/brain/dullahan mutanteyes = /obj/item/organ/eyes/dullahan mutanttongue = /obj/item/organ/tongue/dullahan mutantears = /obj/item/organ/ears/dullahan @@ -142,8 +142,8 @@ hearers += owner //Stops dullahans from gibbing when regenerating limbs -/obj/item/dullahan_relay/proc/unlist_head(datum/source, noheal = FALSE, list/excluded_limbs) - excluded_limbs |= BODY_ZONE_HEAD +/obj/item/dullahan_relay/proc/unlist_head(datum/source, noheal = FALSE, list/excluded_zones) + excluded_zones |= BODY_ZONE_HEAD //Retrieving the owner's head for better ahealing. /obj/item/dullahan_relay/proc/retrieve_head(datum/source, full_heal, admin_revive) diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm index 20926b5dce9..0b646fab85d 100644 --- a/code/modules/mob/living/carbon/human/species_types/felinid.dm +++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm @@ -9,7 +9,7 @@ default_features = list("mcolor" = "FFF", "tail_human" = "Cat", "ears" = "Cat", "wings" = "None") mutantears = /obj/item/organ/ears/cat - mutanttail = /obj/item/organ/tail/cat + mutant_organs = list(/obj/item/organ/tail/cat) changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT var/original_felinid = TRUE //set to false for felinids created by mass-purrbation @@ -61,12 +61,12 @@ var/obj/item/organ/tail/cat/tail = new tail.Insert(H, drop_if_replaced = FALSE) else - mutanttail = null + mutant_organs = list() return ..() /datum/species/human/felinid/on_species_loss(mob/living/carbon/H, datum/species/new_species, pref_load) var/obj/item/organ/ears/cat/ears = H.getorgan(/obj/item/organ/ears/cat) - var/obj/item/organ/tail/cat/tail = H.getorgan(/obj/item/organ/tail/cat) +// var/obj/item/organ/tail/cat/tail = H.getorgan(/obj/item/organ/tail/cat) if(ears) var/obj/item/organ/ears/NE @@ -80,10 +80,12 @@ NE = new /obj/item/organ/ears NE.Insert(H, drop_if_replaced = FALSE) +/* if(tail) var/obj/item/organ/tail/NT - if(new_species && new_species.mutanttail) - // Roundstart cat tail overrides new_species.mutanttail, reset it here. + NT = locate(/obj/item/organ/tail) in new_species.mutant_organs + if(NT) + // Roundstart cat tail overrides new_species tail, reset it here. new_species.mutanttail = initial(new_species.mutanttail) if(new_species.mutanttail) NT = new new_species.mutanttail @@ -91,6 +93,7 @@ NT.Insert(H, drop_if_replaced = FALSE) else tail.Remove(H) +*/ /proc/mass_purrbation() for(var/M in GLOB.mob_list) @@ -141,8 +144,9 @@ for(var/obj/item/organ/current_organ in organs) if(istype(current_organ, /obj/item/organ/tail/cat)) current_organ.Remove(H, TRUE) - if(target_species.mutanttail) - var/obj/item/organ/new_tail = new target_species.mutanttail + var/obj/item/organ/tail/new_tail = locate(/obj/item/organ/tail) in target_species.mutant_organs + if(new_tail) + new_tail = new new_tail() new_tail.Insert(H, TRUE, FALSE) if(istype(current_organ, /obj/item/organ/ears/cat)) var/obj/item/organ/new_ears = new target_species.mutantears diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index 283fc02fb96..6ec26a5c6ea 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -8,7 +8,7 @@ inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_REPTILE mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs") mutanttongue = /obj/item/organ/tongue/lizard - mutanttail = /obj/item/organ/tail/lizard + mutant_organs = list(/obj/item/organ/tail/lizard) coldmod = 1.5 heatmod = 0.67 default_features = list("mcolor" = "0F0", "tail_lizard" = "Smooth", "snout" = "Round", "horns" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Normal Legs") diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index 8a4412f4950..f8865b97c79 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -18,7 +18,7 @@ changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT species_language_holder = /datum/language_holder/moth -/datum/species/moth/regenerate_organs(mob/living/carbon/C,datum/species/old_species,replace_current=TRUE) +/datum/species/moth/regenerate_organs(mob/living/carbon/C,datum/species/old_species,replace_current=TRUE,list/excluded_zones) . = ..() if(ishuman(C)) var/mob/living/carbon/human/H = C diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index 17bf82f2202..c134f3d47b2 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -39,8 +39,8 @@ species_traits = list(NOBLOOD,NO_UNDERWEAR,NO_DNA_COPY,NOTRANSSTING,NOEYESPRITES) inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_NOBREATH,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_CHUNKYFINGERS,TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOHUNGER) mutanteyes = /obj/item/organ/eyes/night_vision/nightmare - mutant_organs = list(/obj/item/organ/heart/nightmare) - mutant_brain = /obj/item/organ/brain/nightmare + mutantheart = /obj/item/organ/heart/nightmare + mutantbrain = /obj/item/organ/brain/nightmare var/info_text = "You are a Nightmare. The ability shadow walk allows unlimited, unrestricted movement in the dark while activated. \ Your light eater will destroy any light producing objects you attack, as well as destroy any lights a living creature may be holding. You will automatically dodge gunfire and melee attacks when on a dark tile. If killed, you will eventually revive if left in darkness." diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index 8e9874d0faa..1bd65fc01ab 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -9,7 +9,7 @@ changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | ERT_SPAWN exotic_bloodtype = "U" use_skintones = TRUE - mutant_heart = /obj/item/organ/heart/vampire + mutantheart = /obj/item/organ/heart/vampire mutanttongue = /obj/item/organ/tongue/vampire limbs_id = "human" skinned_type = /obj/item/stack/sheet/animalhide/human diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index e6836c403c9..a36d91334a2 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -87,14 +87,16 @@ var/mob/living/carbon/human/H = C if(HAS_TRAIT(C, TRAIT_LIMBATTACHMENT)) if(!H.get_bodypart(body_zone) && !animal_origin) + user.temporarilyRemoveItemFromInventory(src, TRUE) + if(!attach_limb(C)) + to_chat(user, "[H]'s body rejects [src]!") + forceMove(H.loc) if(H == user) H.visible_message("[H] jams [src] into [H.p_their()] empty socket!",\ "You force [src] into your empty socket, and it locks into place!") else H.visible_message("[user] jams [src] into [H]'s empty socket!",\ "[user] forces [src] into your empty socket, and it locks into place!") - user.temporarilyRemoveItemFromInventory(src, TRUE) - attach_limb(C) return ..() diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index d58499279a6..13b48fceeb7 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -259,23 +259,25 @@ /obj/item/bodypart/proc/replace_limb(mob/living/carbon/C, special) if(!istype(C)) return - var/obj/item/bodypart/O = C.get_bodypart(body_zone) + var/obj/item/bodypart/O = C.get_bodypart(body_zone) //needs to happen before attach because multiple limbs in same zone breaks helpers + if(!attach_limb(C, special))//we can attach this limb and drop the old after because of our robust bodyparts system. you know, just for a sec. + return if(O) O.drop_limb(1) - attach_limb(C, special) /obj/item/bodypart/head/replace_limb(mob/living/carbon/C, special) if(!istype(C)) return var/obj/item/bodypart/head/O = C.get_bodypart(body_zone) + if(!attach_limb(C, special)) + return if(O) - if(!special) - return - else - O.drop_limb(1) - attach_limb(C, special) + O.drop_limb(1) /obj/item/bodypart/proc/attach_limb(mob/living/carbon/C, special) + if(SEND_SIGNAL(C, COMSIG_LIVING_ATTACH_LIMB, src, special) & COMPONENT_NO_ATTACH) + return FALSE + . = TRUE moveToNullspace() owner = C C.bodyparts += src @@ -312,7 +314,10 @@ C.update_mobility() -/obj/item/bodypart/head/attach_limb(mob/living/carbon/C, special) +/obj/item/bodypart/head/attach_limb(mob/living/carbon/C, special = FALSE, abort = FALSE) + . = ..() + if(!.) + return . //Transfer some head appearance vars over if(brain) if(brainmob) @@ -350,19 +355,22 @@ AP.Grant(C) break - ..() - + C.updatehealth() + C.update_body() + C.update_hair() + C.update_damage_overlays() + C.update_mobility() //Regenerates all limbs. Returns amount of limbs regenerated -/mob/living/proc/regenerate_limbs(noheal = FALSE, list/excluded_limbs = list()) - SEND_SIGNAL(src, COMSIG_LIVING_REGENERATE_LIMBS, noheal, excluded_limbs) +/mob/living/proc/regenerate_limbs(noheal = FALSE, list/excluded_zones = list()) + SEND_SIGNAL(src, COMSIG_LIVING_REGENERATE_LIMBS, noheal, excluded_zones) -/mob/living/carbon/regenerate_limbs(noheal = FALSE, list/excluded_limbs = list()) +/mob/living/carbon/regenerate_limbs(noheal = FALSE, list/excluded_zones = list()) . = ..() - var/list/limb_list = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG) - if(length(excluded_limbs)) - limb_list -= excluded_limbs - for(var/Z in limb_list) + var/list/zone_list = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG) + if(length(excluded_zones)) + zone_list -= excluded_zones + for(var/Z in zone_list) . += regenerate_limb(Z, noheal) /mob/living/proc/regenerate_limb(limb_zone, noheal) @@ -371,7 +379,7 @@ /mob/living/carbon/regenerate_limb(limb_zone, noheal) var/obj/item/bodypart/L if(get_bodypart(limb_zone)) - return 0 + return FALSE L = newBodyPart(limb_zone, 0, 0) if(L) if(!noheal) @@ -380,5 +388,7 @@ L.brutestate = 0 L.burnstate = 0 - L.attach_limb(src, 1) - return 1 + if(!L.attach_limb(src, 1)) + qdel(L) + return FALSE + return TRUE diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm index 2837155191e..ea1298c3661 100644 --- a/code/modules/surgery/bodyparts/helpers.dm +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -290,7 +290,7 @@ body_plan_changed = TRUE O.drop_limb(1) qdel(O) - N.attach_limb(src) + N.attach_limb(src) //no sanity for if this fails here because we just dropped out a limb of the same zone, SHOULD be okay if(body_plan_changed && ishuman(src)) var/mob/living/carbon/human/H = src if(H.w_uniform) diff --git a/code/modules/surgery/organs/appendix.dm b/code/modules/surgery/organs/appendix.dm index 89937e7b5fc..8945bac1507 100644 --- a/code/modules/surgery/organs/appendix.dm +++ b/code/modules/surgery/organs/appendix.dm @@ -28,6 +28,9 @@ if(M) M.adjustToxLoss(4, TRUE, TRUE) //forced to ensure people don't use it to gain tox as slime person +/obj/item/organ/appendix/get_availability(datum/species/S) + return !(TRAIT_NOHUNGER in S.species_traits) + /obj/item/organ/appendix/Remove(mob/living/carbon/M, special = 0) for(var/datum/disease/appendicitis/A in M.diseases) A.cure() diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index e0808c33c44..c29b4842a6b 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -83,7 +83,6 @@ C.clear_fullscreen("eye_damage") return - /obj/item/organ/eyes/night_vision name = "shadow eyes" desc = "A spooky set of eyes that can see in the dark." diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index 311b14e9585..11019c4b64d 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -91,6 +91,9 @@ owner.set_heartattack(TRUE) failed = TRUE +/obj/item/organ/heart/get_availability(datum/species/S) + return !(NOBLOOD in S.species_traits) + /obj/item/organ/heart/cursed name = "cursed heart" desc = "A heart that, when inserted, will force you to pump it manually." diff --git a/code/modules/surgery/organs/helpers.dm b/code/modules/surgery/organs/helpers.dm index 35144c73bdf..a1accce86d2 100644 --- a/code/modules/surgery/organs/helpers.dm +++ b/code/modules/surgery/organs/helpers.dm @@ -17,10 +17,10 @@ /mob/proc/getorganszone(zone) return /** - * Get an organ relating to a specific slot + * Returns a list of all organs in specified slot * * Arguments: - * * slot Slot to get the organ from + * * slot Slot to get the organs from */ /mob/proc/getorganslot(slot) return diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm index fca2b6092a7..1e3e3b7cf87 100755 --- a/code/modules/surgery/organs/liver.dm +++ b/code/modules/surgery/organs/liver.dm @@ -58,6 +58,9 @@ #undef HAS_NO_TOXIN #undef HAS_PAINFUL_TOXIN +/obj/item/organ/liver/get_availability(datum/species/S) + return !(TRAIT_NOMETABOLISM in S.species_traits) + /obj/item/organ/liver/fly name = "insectoid liver" icon_state = "liver-x" //xenomorph liver? It's just a black liver so it fits. diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 3cd63729c54..e00987960e5 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -409,6 +409,8 @@ owner.visible_message("[owner] grabs [owner.p_their()] throat, struggling for breath!", "You suddenly feel like you can't breathe!") failed = TRUE +/obj/item/organ/lungs/get_availability(datum/species/S) + return !(TRAIT_NOBREATH in S.species_traits) /obj/item/organ/lungs/plasmaman name = "plasma filter" diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 3c0c658a572..98500fe422c 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -203,3 +203,15 @@ if(!getorganslot(ORGAN_SLOT_EARS)) var/obj/item/organ/ears/ears = new() ears.Insert(src) + + +/** get_availability + * returns whether the species should innately have this organ. + * + * regenerate organs works with generic organs, so we need to get whether it can accept certain organs just by what this returns. + * This is set to return true or false, depending on if a species has a specific organless trait. stomach for example checks if the species has NOSTOMACH and return based on that. + * Arguments: + * S - species, needed to return whether the species has an organ specific trait + */ +/obj/item/organ/proc/get_availability(datum/species/S) + return TRUE diff --git a/code/modules/surgery/organs/stomach.dm b/code/modules/surgery/organs/stomach.dm index 6757d141031..4d817a6f732 100755 --- a/code/modules/surgery/organs/stomach.dm +++ b/code/modules/surgery/organs/stomach.dm @@ -42,6 +42,9 @@ H.vomit(damage) to_chat(H, "Your stomach reels in pain as you're incapable of holding down all that food!") +/obj/item/organ/stomach/get_availability(datum/species/S) + return !(NOSTOMACH in S.species_traits) + /obj/item/organ/stomach/proc/handle_disgust(mob/living/carbon/human/H) if(H.disgust) var/pukeprob = 5 + 0.05 * H.disgust diff --git a/code/modules/surgery/prosthetic_replacement.dm b/code/modules/surgery/prosthetic_replacement.dm index c4bf477872d..d55598eb38f 100644 --- a/code/modules/surgery/prosthetic_replacement.dm +++ b/code/modules/surgery/prosthetic_replacement.dm @@ -72,7 +72,11 @@ tool = tool.contents[1] if(istype(tool, /obj/item/bodypart) && user.temporarilyRemoveItemFromInventory(tool)) var/obj/item/bodypart/L = tool - L.attach_limb(target) + if(!L.attach_limb(target)) + display_results(user, target, "You fail in replacing [target]'s [parse_zone(target_zone)]! Their body has rejected [L]!", + "[user] fails to replace [target]'s [parse_zone(target_zone)]!", + "[user] fails to replaces [target]'s [parse_zone(target_zone)]!") + return if(organ_rejection_dam) target.adjustToxLoss(organ_rejection_dam) experience_given -= (round(organ_rejection_dam/10)) @@ -83,7 +87,12 @@ else var/obj/item/bodypart/L = target.newBodyPart(target_zone, FALSE, FALSE) L.is_pseudopart = TRUE - L.attach_limb(target) + if(!L.attach_limb(target)) + display_results(user, target, "You fail in attaching [target]'s [parse_zone(target_zone)]! Their body has rejected [L]!", + "[user] fails to attach [target]'s [parse_zone(target_zone)]!", + "[user] fails to attach [target]'s [parse_zone(target_zone)]!") + L.forceMove(target.loc) + return user.visible_message("[user] finishes attaching [tool]!", "You attach [tool].") display_results(user, target, "You attach [tool].", "[user] finishes attaching [tool]!", From e75947f77f8f555ad1a1a9ff4c7472fed413f52e Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 5 Mar 2020 04:49:29 -0800 Subject: [PATCH 30/54] Automatic changelog generation for PR #49062 [ci skip] --- html/changelogs/AutoChangeLog-pr-49062.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49062.yml diff --git a/html/changelogs/AutoChangeLog-pr-49062.yml b/html/changelogs/AutoChangeLog-pr-49062.yml new file mode 100644 index 00000000000..c0cc19a3a95 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49062.yml @@ -0,0 +1,4 @@ +author: "tralezab" +delete-after: True +changes: + - rscadd: "Martyrdom and HADS are in the pool!" From a003e376ef151d98dc9fd0f7d6358d79eb9cc728 Mon Sep 17 00:00:00 2001 From: spookydonut Date: Thu, 5 Mar 2020 20:57:20 +0800 Subject: [PATCH 31/54] Brooms Upgraded: Disposal Bin Edition (#49433) * clean sensation * speedmerge hack * mso.webm * Update code/game/objects/items/twohanded.dm Co-Authored-By: nemvar <47324920+nemvar@users.noreply.github.com> Co-authored-by: nemvar <47324920+nemvar@users.noreply.github.com> Co-authored-by: spookydonut --- .../map_files/Deltastation/DeltaStation2.dmm | 2 +- _maps/map_files/MetaStation/MetaStation.dmm | 2 +- code/_globalvars/lists/maintenance_loot.dm | 2 +- code/game/objects/items/broom.dm | 41 +++++++++++-------- code/game/objects/items/storage/belt.dm | 2 +- code/game/objects/structures/janicart.dm | 6 +-- code/modules/cargo/packs.dm | 2 +- .../research/designs/autolathe_designs.dm | 9 ++++ code/modules/vending/wardrobes.dm | 2 +- 9 files changed, 41 insertions(+), 27 deletions(-) diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index da5ccc7710b..1f0f3c3a510 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -98266,7 +98266,7 @@ pixel_x = -3; pixel_y = 2 }, -/obj/item/broom, +/obj/item/pushbroom, /turf/open/floor/plating{ icon_state = "platingdmg2" }, diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 100d0ca6987..06969e9a678 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -77104,7 +77104,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint/engineering) "vGs" = ( -/obj/item/broom, +/obj/item/pushbroom, /obj/structure/closet{ name = "janitorial supplies" }, diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 4be245d06b8..c0d3557f63d 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -78,7 +78,7 @@ GLOBAL_LIST_INIT(common_loot, list( //common: basic items /obj/item/geiger_counter = 1, /obj/item/analyzer = 1, /obj/item/mop = 1, - /obj/item/broom = 1, + /obj/item/pushbroom = 1, /obj/item/reagent_containers/glass/bucket = 1, /obj/item/toy/crayon/spraycan = 1, ) = 1, diff --git a/code/game/objects/items/broom.dm b/code/game/objects/items/broom.dm index c9aa2e24407..188b649c31a 100644 --- a/code/game/objects/items/broom.dm +++ b/code/game/objects/items/broom.dm @@ -1,5 +1,5 @@ -/obj/item/broom - name = "broom" +/obj/item/pushbroom + name = "push broom" desc = "This is my BROOMSTICK! It can be used manually or braced with two hands to sweep items as you move. It has a telescopic handle for compact storage." icon = 'icons/obj/janitor.dmi' icon_state = "broom0" @@ -13,58 +13,63 @@ attack_verb = list("swept", "brushed off", "bludgeoned", "whacked") resistance_flags = FLAMMABLE -/obj/item/broom/Initialize() +/obj/item/pushbroom/Initialize() . = ..() RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) -/obj/item/broom/ComponentInitialize() +/obj/item/pushbroom/ComponentInitialize() . = ..() AddComponent(/datum/component/two_handed, force_unwielded=8, force_wielded=12, icon_wielded="broom1") -/obj/item/broom/update_icon_state() +/obj/item/pushbroom/update_icon_state() icon_state = "broom0" /// triggered on wield of two handed item -/obj/item/broom/proc/on_wield(obj/item/source, mob/user) +/obj/item/pushbroom/proc/on_wield(obj/item/source, mob/user) to_chat(user, "You brace the [src] against the ground in a firm sweeping stance.") RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/sweep) /// triggered on unwield of two handed item -/obj/item/broom/proc/on_unwield(obj/item/source, mob/user) +/obj/item/pushbroom/proc/on_unwield(obj/item/source, mob/user) UnregisterSignal(user, COMSIG_MOVABLE_MOVED) -/obj/item/broom/afterattack(atom/A, mob/user, proximity) +/obj/item/pushbroom/afterattack(atom/A, mob/user, proximity) . = ..() if(!proximity) return sweep(user, A, FALSE) -/obj/item/broom/proc/sweep(mob/user, atom/A, moving = TRUE) +/obj/item/pushbroom/proc/sweep(mob/user, atom/A, moving = TRUE) var/turf/target if (!moving) if (isturf(A)) target = A else - if (isturf(A.loc)) - target = A.loc - else - return + target = A.loc else target = user.loc if (locate(/obj/structure/table) in target.contents) return var/i = 0 + var/turf/target_turf = get_step(target, user.dir) + var/obj/machinery/disposal/bin/target_bin = locate(/obj/machinery/disposal/bin) in target_turf.contents for(var/obj/item/garbage in target.contents) if(!garbage.anchored) - garbage.Move(get_step(target, user.dir), user.dir) - i++ - if(i >= 20) + if (target_bin) + garbage.forceMove(target_bin) + else + garbage.Move(target_turf, user.dir) + i++ + if(i > 19) break - if(i >= 1) + if(i > 0) + if (target_bin) + target_bin.update_icon() + to_chat(user, "You sweep the pile of garbage into [target_bin].") playsound(loc, 'sound/weapons/thudswoosh.ogg', 30, TRUE, -1) -/obj/item/broom/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) //bless you whoever fixes this copypasta +/obj/item/pushbroom/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) //bless you whoever fixes this copypasta J.put_in_cart(src, user) J.mybroom=src J.update_icon() diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index b3f9b849ed6..3918eb4f71a 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -539,7 +539,7 @@ /obj/item/melee/flyswatter, /obj/item/assembly/mousetrap, /obj/item/paint/paint_remover, - /obj/item/broom + /obj/item/pushbroom )) /obj/item/storage/belt/janitor/full/PopulateContents() diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 3cf14a7fb3e..adeeec5affe 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -9,7 +9,7 @@ var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite var/obj/item/storage/bag/trash/mybag var/obj/item/mop/mymop - var/obj/item/broom/mybroom + var/obj/item/pushbroom/mybroom var/obj/item/reagent_containers/spray/cleaner/myspray var/obj/item/lightreplacer/myreplacer var/signs = 0 @@ -51,9 +51,9 @@ m.janicart_insert(user, src) else to_chat(user, fail_msg) - else if(istype(I, /obj/item/broom)) + else if(istype(I, /obj/item/pushbroom)) if(!mybroom) - var/obj/item/broom/b=I + var/obj/item/pushbroom/b=I b.janicart_insert(user,src) else to_chat(user, fail_msg) diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 583c470a9a2..c7a2b723c50 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1467,7 +1467,7 @@ /obj/item/reagent_containers/glass/bucket, /obj/item/reagent_containers/glass/bucket, /obj/item/mop, - /obj/item/broom, + /obj/item/pushbroom, /obj/item/clothing/suit/caution, /obj/item/clothing/suit/caution, /obj/item/clothing/suit/caution, diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index b7fdc5b0d87..21d77fc8d99 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -20,6 +20,15 @@ category = list("initial","Tools","Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_SERVICE +/datum/design/broom + name="Push Broom" + id="pushbroom" + build_type = AUTOLATHE | PROTOLATHE + materials = list(/datum/material/iron = 2000) + build_path = /obj/item/pushbroom + category = list("initial","Tools","Tool Designs") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + /datum/design/crowbar name = "Pocket Crowbar" id = "crowbar" diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index 362ea6b5b28..1fc45d053a2 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -284,7 +284,7 @@ /obj/item/clothing/under/rank/civilian/janitor/skirt = 2, /obj/item/clothing/gloves/color/black = 2, /obj/item/clothing/head/soft/purple = 2, - /obj/item/broom = 2, + /obj/item/pushbroom = 2, /obj/item/paint/paint_remover = 2, /obj/item/melee/flyswatter = 2, /obj/item/flashlight = 2, From 05f5f3a59c8f6d3eedb6f58d40babe0043dce805 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 5 Mar 2020 04:57:24 -0800 Subject: [PATCH 32/54] Automatic changelog generation for PR #49433 [ci skip] --- html/changelogs/AutoChangeLog-pr-49433.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49433.yml diff --git a/html/changelogs/AutoChangeLog-pr-49433.yml b/html/changelogs/AutoChangeLog-pr-49433.yml new file mode 100644 index 00000000000..3bfaed5316e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49433.yml @@ -0,0 +1,5 @@ +author: "bobbahbrown" +delete-after: True +changes: + - rscadd: "Nanotrasen has recently retrofitted all disposal bins with built-in vacuum units, allowing brooms to sweep garbage into them!" + - rscadd: "Push brooms can now be manufactured in the service protolathe and any autolathe." From b71440040881b670e7994f3db5bae61eceece2b9 Mon Sep 17 00:00:00 2001 From: Fikou Date: Thu, 5 Mar 2020 14:13:25 +0100 Subject: [PATCH 33/54] pwease no merge confwict --- icons/obj/lavaland/artefacts.dmi | Bin 27124 -> 27180 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/lavaland/artefacts.dmi b/icons/obj/lavaland/artefacts.dmi index 8e542c953c6553c13d25d7a916a93eef5c691f7f..06b749403daf9767fd8e755686ddb26e4b45f75f 100644 GIT binary patch delta 5968 zcmaJ_XH-+$);*y&AxiIE`bFWY^o~j|f`AACQ6e3s3*^v2dJzyo;R=fMjv!!Ss0s*z zG${e3NDm+-5Xd`R|Ge?OF~0mr&e(fpuesKoYwdmZ?_pT^cUU#cE%3eNbP%!3+Duv^ z`M$d%Du!a>Wmp(T-Z^Z8yvTG+|HaD^%G;?f&i}Z4$)b(^2lI?px{mpSFH%t1BVhcE zi0_xb$P-sasj!2lFP@K!R6aG}i=(-xc|rZzO@H@^k0|l1%~QdbYf_zA6=lcOi#TLV zjg0b9UhW}^@UmMKxlsw;LDhP$y6>CB1h$hmevhu$?d?zWjV`ublH=9epc1y{n8xAw z>$tCjAX<8Q#)XK*{-Qv2`bV9YO*Edha=*c`{r?V_C=thivE3o$sOU$*p8sNnVs0>6uf6ek|g< z`r`9~p*i+F6UF~CZQjlVWW74R8xT4gSN#tL9DV<3Ea*H4c7N|Rn!m<%Q#7Q0KfzJ{ zqjPL#z$gbH+DRB&`PY0Bd_idC1OUUwqlbF4Wvx79HPR5);xapBjZ*c2|J3(X{iqzA zj~)_2yS8X0u6b?ElLke`kq$S~NQ3sSJJbS89je&uz{-juTzVLI#?iPs?4{ z1C(!lD6pBord&?Eg~KH$u(vAwR26YYkmj9~9~GP?x$wJXM1VyA#l3Ed5eD@%1P8N) zJW&VbXlUAxXC_2n*1XbgvcTT;zmv&$C%Z3M!@R%nO!IW?oIfvEIf@$8MQt|@7o$4} zmGrgIDWj;-k!kPa56|(z3o}W>o)1&$(#hd*Q3CK4uHNCiq7zFqbm^Sf4vr7pE8{{5 zk-oe`j6goKbx%rT@_X{R{~bk3teOOEp${)NfQPol)dPH&%sgtguL8Bn%`O{An6)W9 zPoe4IQ=7)m$t9^F;ui|+@K1>^DDr!%^#1ojcJgg8@2TdjFEvo`u*8xkKTCe|p@0$b zF8Heou{ye0x+ps@`*`KbflnpM&hxi|fqx7&(dp(B{#p^e5;74QEwyn?&9Auz_w2n0 zt>n-HOU{FrGN}EyTv26aZcjw)3EIW<_Z`l9PBP8D3v|jK{GxfMl^Q>ZANSZBAl1u= ze}!-jwtbs=S0qVQ3eZM8e{V{86W-Ap4U(k_#0Ak)3TVQ2*>uSVZJZWfUb#NOj}TNR zd^SNT5^D`37REAZ(hVATl`c{X)hPpmxL4S>b_-&VK~)&S9Pp$*yawaVNNLgjHQxO* zhDZJoOmM%W@S$6b*m@0Mu@1|;rb}mh!0tG4s?}qHYB>3QoUe9TMDDGOA;*BZVVgIO z8+UG~DJ7pO%L4#sFPjGPMN{QB)sH>GGG=tr%;)5eZjmUze;E)U5swdwaU|NIPqNMQ zeW>%Eu7Nb{s`hhx2m1F87#`?Jd)_Q19nM!R=c<3?-Q759*zbPt^wADIdV1(zw3;0% z_}k|k(>A;6%=4I#x=FEK-2pZb-9%s1h`1a6a1QA)IFwJbQ+$9%PoYWa4ZTMplU2k11HW0K0+D_k24sRrsfmD1u-Pu`d>QoOVt;}H22kK3f8vs!p7V*5L+W0irk6Mf{Ee8GmAyM0V5_mg1V;99zZ6g zAs;M*iy9p7%ah%+?M(9`pHy1bB%JYTa%yoRVG^-^)xGPZ7^?SZYAx}!rfVq4AbRUP z=xwwA#|Tn~1hs$wiADKLDm!I!+21McPoJ#Y{Ozuqdh5%lkH?c zi&+ijiXF|K3h~sHMGS$of65_C-I?J`HUoTe zYCiMuDMXZ$zj@|y_)_2>3XQ<7$7y%ba^!^NI`5^Qv;<+$#G_*^LH%|}!?iz2+(0|C zSxciIG_da7m72ZnU!CzUa}D_JMA*_;Cf>bKw?dww<4<;9pyu@85Rv@TKed;3g8~;y zl3bgd{zTt!q6O5}?wWhVR=#qxtbqMNn2FeTx=b4(utX=}_0$AT0baJ!JCwepS){yV zlzXUyla-Xzva-r9+A=vn!oq?{p(A44akTHqMAC(&Fkhd}{48KmAc1Rq#kn~rM@l4s;oiF>IWFu!NlQW=EirDnv( zGV)@l18_;&v5cQU(*9(voeyLS5?7ElTZn@%n@Cm%Gqbe2{V&g#%N5a?+TN$t*ycM~ zw^8-qtvSbVJeg@brj1%8&g12Il&@|Ck2iY!Tx8IEbSN>G!lZ%5r8rztSR5!G61~d7 zP(9%ehyzG^iIjhn2UV-m{&tgKxAauvrmET;vK53C6!@M;@4UU4GI^qF-Ka5$Mf1+$ zD17e_I>lGsdrWrW{3ksQ*XstHS=4}8@YrK|%?r(2(gUbv!t2kb4=_yIqg(ctom&UT zj&&1n&uL0jR9z#>TvU3^S8JS=OX~mWy;o4K^S#mx~Xp zn__kNg4Z0&k#t*Vp8N6$et3u<$5=s3T;}4N&%|#jc!znpx?-cp>!8Y~<-GLTkJP${_WQ~O3ZsLU$*~t>r0l=6 zHz{}YHW!i;GWV>ktO`p?Bo_VkL-{LCd|<~}Tr;~fEv^*55}Gyo`iwK%Pp#{EcMVvl z;)Psz9Z+_9ef`ur`@i_*C{h&M5?jaIFi_*7-%j&;%=gL=wRmD=Wc04G(zv<89Ct$o zw6YqjPsq#^V66f}4bFMt%-h+e-PzT$n}fDFUv2}w z3UTXkMnJsrj+uLdBv(}bUn$*8DqYuK&;$3$Q!EtM!2yZ6Tg;zLBC0FOIGgFIFL~>V zO@&PQmp>&0HNUUBh~7E1Xcr!N%209g_?Cr*h)ams-ECHB_ZxA_;c2>M_~sU7?VncX z=Zy=-U3II9%{~jL45&5prNQfA1JLpZ60_z>&-kM!Nr91--9BXYRj|-DD<@C2s~lAe z{y!G1z^?-zQpRu~*mrKkRc`y!7yXYT_ve)j3<$R~R$g!$C*#c~Wv>)C$3OFwrT=Je zB7B{#0^9T25(w)&ing|_VSROLi(c~~qJg$t>6tPGq$4VIe5lvd8YkwlqN==Ti*uy( zn3y7fpyTV13xd8rwC#vXo5spj{k{ z^0e~iS^J^hRPNJ)#-^ntw?Dainww8tJ(6wRf3XR5Eni6TT8o`n00Bt)E25@v6)8e?HNvYbZTlK0k-%?&z z;s?rj_Wk1Z3-6D)&u&NwS%M!zb9h~44N-ilLo1HyvdpX z3_XU4=meD&TK|w^;tF@5Z6&2aEnEAp5&ODS{H03@6rc$Zx`h&7xg+Wqo{i?SweM~2 zh$PkxtJ@sHG;}EkPwxjCioUJSkLCv~LV{&n-P}ZvGx-j3=}M+ID5+Ev9Wfl&4Lh&# zP{n9{6E)M0e0&YO7UP_~Y^h#dLzyNC2YzElC1XRssxGK_085)P3%hIjfw%q6D*8C# z()EMGds)^C(6G+|+l*)c`RA&N{PX;%@MHaNqih80BP|JlMzE+TKN>f{7s}z0&(nGK z>*wc}ep2^nO7_+KqFeNUwn_>FMfzd}{)ee}6bR>!I4DyuoVCT7y)o+lYk>a*Gb{t- z0kz@5m(yb7@hz(SSR6A3GYbc3MsT*l>d%O;XvtGmJ*p?GIidYT|Jq-R6Z`rz8uzKp zTgPvE_Ec4<^CkZrWb2>W7n_V;H8D~z8-)@Py(&Asq5`sDbm03wJY?l6;;Y88*ix6JhYQ<#<5B7i7-OH0U3_hY0M_QsrCmJDVzIsiL1 zozPi%N&3j~H}GpQtmR{{uxEueiUQDLZ#O@o6+}0l27Z0196Q9W|BdaOy1)>nXK<|@ z2erkIfzq~kuXkPaUjcynot}=SMHQGt=;?wXIM{aq{~n^EE5WQ zq-Yq z#RaN@uSMFw)&%TPt(wc_mv=Vn935ZUXg*@hnxNl28d(Vd#C;ws6B_ow1RHskag((rD_3-9oLrKmUEWN(aXS!59jpSA_a ztb|7R`)ZWa7`%CE`0_r7*a6y7mX%`(vs4`$(WTvuzvV6O>a( z)^>ChBzm9<$TYYeYOF2FK0Zemi^-k;K0GX(i&(L7D5-WGFkjb+TfVF!M^-lj0M(gO zv~Ay_;QZH3v%|5XHop+wVy%&1jH50=eaSns9R>deNCR*X$P+A}2wR6KNbkaT>w6tK zT9V_&3Q8!U+;k5^9oe~#lP!UAV{OvxNfS%BhDObz>{H^}SXK92d+eo1NtSMt?~G1Tlgh{dtT zN_}7eJBUUa2zy#{5|l<(nV#Rj5Y?}6R(EIbI7IMCw4Lt!SiS@d0y97XiTdM5UREYD z2n=g3!Ds=2MyYOoT(&Pqpw&dtw|gDZw;6er-*PMY8;-H_=pwvX=4P8rS;@j&G(`?u zBO|c`k|UcXacYuQ^ZDQn1kmA4!ohx3uEVu>m! zD_>|}Yzu@4{VEwd9oNG#o0J;FgI_sC*;F08(1UOH2lTp1tv27rRLnS>seOQAJ5l;r z$&N@B34@My@jUV1-%3i7Yc4)@GDHrj`-q46d?Ptuxtt+D@Do*0)-$Y-m+nYK*n)C# z0f=v}k0r7ZDztJLPM6=jqUQmnm+mUDNW47X1)TBao5GYcusoMme6@52zT>uL!p5d_ zC#g+h&T7@r0idCZ^u36e*7-$N=b2s8sBMM5R&?Yp3__?3G}oR|ixTB&->o=%At#lz z?zx&Pal8~*QYxocVKr}Ql_%5ze&G!l7iG53UL7PYU|)T>8ax5bhcuR96q#JGqy(abF@Jv-1U(+SF? zFTb#|xp{lTkY=ZM+3Q)w1B%NBsTQzG>l(74prD@KUS`SE+FH4h5BCDrZQXq;s{=|bR+huj^=t#Y3=FNwEfuW=#DUJLA>imJ&EOnVq z^>YX0aZ^!G+Uzsy9CL67_T;FSs&8`;YinK#wo%+I$`%JuT!JO^c^kX0-Sw1{_ir#h z*(QWwjowj}ky|5$Gq_VShM?4NOwc#v(VDX@YJAz&-U<7gIP{)W>2+! zvvYip7aU3Fd6V~!-NnuAS_)hIt_sW z3llelUsA$t(m%a2P4&4gmqz+!wEXBdb@U5D!^hM7)ynyU=8E_u zTA}GwqDb5!Z4~e6U(aM*x=+yGX|ELzEVsNhPh+kjvB&fj^+=IUOD>`+s=x`wYdpHw zr-qwuUV)+|=j=t|wabq)b8?=}%-H|hd&0p$b+-+C!U}b`8XoQ;yMHZue&4oI|UGX&6_QLTi(-WU4QIv^XH@X~?xBd-`Ob*N{R= zlZ4|G`x3{DptZeuV)OENpl`_4eP?I7%s8Yw1JXzopA%{QkB)ZnHa{7CJY!H T`g-35fIfP<#yXW+4iWzW;aaUO delta 5912 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 From f44e6fca0e051579e4a53b2db419d828a929e83c Mon Sep 17 00:00:00 2001 From: Fikou Date: Thu, 5 Mar 2020 14:15:56 +0100 Subject: [PATCH 34/54] FUCK MERGE CONFLICTS --- icons/obj/lavaland/artefacts.dmi | Bin 26261 -> 27176 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/lavaland/artefacts.dmi b/icons/obj/lavaland/artefacts.dmi index e0aa1183cf84b36ea3cb4c28da9b97efde585bb4..292bc9c54934a929f3bfd738ff9fb631a3995b2e 100644 GIT binary patch delta 6503 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

@rhPVA~5hs1Qj5#SkVX_rTu6B)`qrfo@R9`>d z+4#<#JAHk938AeI_soXOF#L&JDzB11<4F=go2oD_R{p_VRkOT2x^#(}VQtjw={ear zaog&4difROqDpZU_nIX9!v_W{c|Xk`W<}|#rZ{Q{5j;8{_#NT8IM+<<>>9$m0pjgP zw86e*6N=_GcKWXVO;aAgje=_KhY0LVanrrfHL)(QoeSya#(4Aq>HxlSBQHPS?k5q6 zNL&H^^*wz>o~wufU9AeD#O=82sSK|LN@DaVF()_Z5_Cn#SunM&RC)d-DWQ;cX$}!` zFsZOj+TqLlc5qFLSc(+|=GZ6oIDN9{nV`O6oG)!$@F;dKwYCmCv>e;JKc9Vn!pTsj0@Zp?( zTa~a|6oZq&2Niha^m&ngus9}+jg9-*%O+QyyAQUv)9TI4Df*XxHvRygRmg;j6dA!P zQ7F4-_#jJQjRV9@AY|<5njc1yAolf>oat(W%kC0WT_+BEkv$xzsAyuouFQ!al~2|+ zbYR2ir<81xb#-;n-fypKL`6$zQWvloe#Za|1DU%(76<{0Cc-d8muk%H_%*k-*9uR# z6C@DriHcRXl@sghXd&ss>MI=w{%LvOAu#pZjPVp+G-pl+d4;q(PH0ZZlY_Xdudizj zh#k@7h!oMOUYo~=*~F4nddBF%qjRr?k3<;Azv!2`gr&^BZ>Et|6++nsMPB;Qo26@= zRd|z}NwfT!cUnGVlDLcVnC$L-cj($M!HawelYP~45y_V?`YE8+9GsMVW8bm%J78@k zT$eH2XyvV)8vg@ULM-!CEA32jmBl-!3%xSM1ZiOgC1huYP8H29DV>Knhn-DXw&$xA zJ^nnk?Rkc;eALyFO?XqFKdr3BRaU?k{*J;MSmGz$m;Idi-pd<*`qgcpMLo-_C(@WX zlV)^el~T@QHT%cT!|5{Uz1q>wj=(VU$=Ml~hzLc?4FUQfm*Ht44krC+l0VDL1FF6w z7GFkRAx_qAT6z1gT0N5bHGSXAx`_gZq3b|CxCv+T?KA}5-8;VH*Vdg~%a0OW;uzG~ z6XU0hzT*hjPK9<5_j&0wDtq6w3{Vo#YsP;+GlPlPB~IBD%0zFG3p*tNZ8%UO*8_QK zZ#tU;ZV3tscJ)Q4jSgSv-;tAJgttMYZxbJCYH zP4OfE#hhVpfuK!6df0`v`dYI@|CG{Im+1SxM$3@olo`2F(pdg7$M;YOP2Bjt(2+w% zZlQvT5)GBgDO~3%q9>`ok;B%qV z(l{fB-Fj;VD!iDn;Cag{aYGy)z@3Ov0c3@@gttU=RXMc{TzSa^>YB@B5V{5MesC!4 zynIZxCv+r!Uy{_Tjq3HmEBx}*^PpAJp1TO1TbT>E=1R`Y9Qdcz|1%jD~(#-Sm0w7A^&xGVwdiucc7)2hKHq|_4UHPwEIY+b? z_8>S_*yGO>&NvmDZd91Ru4FjJk>g{}iOp2hHnAd*PNe|D+1gox(<$PZ-!J{aOs# zS*clFO4@;n0kycSQe2(G9ZtJT+S16bGpD*vmkTNo%kz?wVCw=Q%5Q z%alujpz5DJ3;#J{!5R+Ks}% zN|W2VR-c-huAmQBYtS!~zj2RKiMN&uTcO=_iKuOEjA+WP{On>fb(jxdSf)w6GYfNs zxhA&{72?V!EA+h!d4@k)hpSkr^k(uU^>1@}xTxG8f{*5ewnA~U6kkID+;5HU)ih$p zguCHNmx2ZYxw2Y2zxWTpcrjvRKyS(vzIrGmBvg$V>oqVp7l^KUdP|q<*VsfcMM1GX z3o!v56S*$u&D5I(4?yB#q%1j34(hNfi`8tcM9X#379+#OxFgzTYpot3hG=h3FWz+a z!LDi1XK}ZlA#m{@0Ik)`md)CRumI}H=)6yQ9omcEIfPbr2Xms$lAd|gzl czVZ*iH|xl7xbeIb_h<{!dZ?#f`2ZUFKb Date: Thu, 5 Mar 2020 21:28:54 +0800 Subject: [PATCH 35/54] RCD constructing effect unclickable (#49709) --- code/game/objects/effects/temporary_visuals/miscellaneous.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index f9f9c24f664..a49355e9a74 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -461,6 +461,7 @@ icon_state = "" layer = ABOVE_ALL_MOB_LAYER anchored = TRUE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT var/status = 0 var/delay = 0 From 1e130fb3a5a916db839a18b97ba17517ab566f5a Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 5 Mar 2020 05:28:58 -0800 Subject: [PATCH 36/54] Automatic changelog generation for PR #49709 [ci skip] --- html/changelogs/AutoChangeLog-pr-49709.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49709.yml diff --git a/html/changelogs/AutoChangeLog-pr-49709.yml b/html/changelogs/AutoChangeLog-pr-49709.yml new file mode 100644 index 00000000000..84050d16d3b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49709.yml @@ -0,0 +1,4 @@ +author: "Dennok" +delete-after: True +changes: + - tweak: "Now RCD constructing effect unclickable." From abad5db9692f225764d2e5a27f823af2a58d5287 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 5 Mar 2020 05:29:56 -0800 Subject: [PATCH 37/54] Automatic changelog generation for PR #49557 [ci skip] --- html/changelogs/AutoChangeLog-pr-49557.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49557.yml diff --git a/html/changelogs/AutoChangeLog-pr-49557.yml b/html/changelogs/AutoChangeLog-pr-49557.yml new file mode 100644 index 00000000000..af3e11d73da --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49557.yml @@ -0,0 +1,6 @@ +author: "Fikou" +delete-after: True +changes: + - rscadd: "hivelord stands are replaced with new mining ones, they spin!" + - bugfix: "fixed being able to change your stand name/color on every reconnect" + - imagedel: "removed most of the old holopara/guardian spirit sprites except for 2 example ones since they aren't used anymore" From 50058b9a1f592e94933dc9a44e2885d8e94b304a Mon Sep 17 00:00:00 2001 From: spookydonut Date: Thu, 5 Mar 2020 21:33:29 +0800 Subject: [PATCH 38/54] Adds the label component; Small tweaks to the hand labeler (#49700) * Adds the label component * switches to using RegisterWithParent / UnregisterFromParent * Adds docs. Change Destroy() to qdel(src) --- code/datums/components/label.dm | 69 +++++++++++++++++++++++++++ code/modules/paperwork/handlabeler.dm | 9 ++-- tgstation.dme | 1 + 3 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 code/datums/components/label.dm diff --git a/code/datums/components/label.dm b/code/datums/components/label.dm new file mode 100644 index 00000000000..5c94adecd19 --- /dev/null +++ b/code/datums/components/label.dm @@ -0,0 +1,69 @@ +/** + The label component. + + This component is used to manage labels applied by the hand labeler. + + Atoms can only have one instance of this component, and therefore only one label at a time. + This is to avoid having names like "Backpack (label1) (label2) (label3)". This is annoying and abnoxious to read. + + When a player clicks the atom with a hand labeler to apply a label, this component gets applied to it. + If the labeler is off, the component will be removed from it, and the label will be removed from its name. + */ +/datum/component/label + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + /// The name of the label the player is applying to the parent. + var/label_name + +/datum/component/label/Initialize(_label_name) + if(!isatom(parent)) + return COMPONENT_INCOMPATIBLE + + label_name = _label_name + + // Add the label to the name of the object in the format of: "Item name (label)" + var/atom/owner = parent + owner.name += " ([label_name])" + +/datum/component/label/RegisterWithParent() + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/RemoveLabel) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/Examine) + +/datum/component/label/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_PARENT_ATTACKBY, COMSIG_PARENT_EXAMINE)) + +/** + This proc will trigger when any object is used to attack the parent. + + If the attacking object is not a hand labeler, it will return. + If the attacking object is a hand labeler it will restore the name of the parent to what it was before this component was added to it, and the component will be deleted. + + Arguments: + * source: The parent. + * attacker: The object that is hitting the parent. + * user: The mob who is wielding the attacking object. +*/ +/datum/component/label/proc/RemoveLabel(datum/source, obj/item/attacker, mob/user) + // If the attacking object is not a hand labeler or its mode is 1 (has a label ready to apply), return. + // The hand labeler should be off (mode is 0), in order to remove a label. + var/obj/item/hand_labeler/labeler = attacker + if(!istype(labeler) || labeler.mode) + return + + var/atom/owner = source // Source will be the owner / parent of this component. + owner.name = replacetext(owner.name, "([label_name])", "") // Remove the label text from the parent's name, wherever it may be. + owner.name = trim(owner.name) // Shave off any white space from the beginning or end of the parent's name. + playsound(owner, 'sound/items/poster_ripped.ogg', 20, TRUE) + to_chat(user, "You remove the label from [owner].") + qdel(src) // Remove the component from the object. + +/** + This proc will trigger when someone examines the parent. + It will attach the text found in the body of the proc to the `examine_list` and display it to the player examining the parent. + + Arguments: + * source: The parent. + * user: The mob exmaining the parent. + * examine_list: The current list of text getting passed from the parent's normal examine() proc. +*/ +/datum/component/label/proc/Examine(datum/source, mob/user, list/examine_list) + examine_list += "It has a label with some words written on it. Use a hand labeler to remove it." diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm index d22cd747ca7..10def176c53 100644 --- a/code/modules/paperwork/handlabeler.dm +++ b/code/modules/paperwork/handlabeler.dm @@ -1,6 +1,6 @@ /obj/item/hand_labeler name = "hand labeler" - desc = "A combined label printer and applicator in a portable device, designed to be easy to operate and use." + desc = "A combined label printer, applicator, and remover, all in a single portable device. Designed to be easy to operate and use." icon = 'icons/obj/bureaucracy.dmi' icon_state = "labeler0" item_state = "flight" @@ -55,9 +55,10 @@ to_chat(user, "You can't label creatures!") // use a collar return - user.visible_message("[user] labels [A] as [label].", \ - "You label [A] as [label].") - A.name = "[A.name] ([label])" + user.visible_message("[user] labels [A] with \"[label]\".", \ + "You label [A] with \"[label]\".") + A.AddComponent(/datum/component/label, label) + playsound(A, 'sound/items/handling/component_pickup.ogg', 20, TRUE) labels_left-- diff --git a/tgstation.dme b/tgstation.dme index 6e9591d82c4..be256b5e849 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -401,6 +401,7 @@ #include "code\datums\components\jousting.dm" #include "code\datums\components\knockback.dm" #include "code\datums\components\knockoff.dm" +#include "code\datums\components\label.dm" #include "code\datums\components\lifesteal.dm" #include "code\datums\components\lockon_aiming.dm" #include "code\datums\components\magnetic_catch.dm" From eb2e73588ad29039aa0f550843352e70e7c566d7 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 5 Mar 2020 05:33:33 -0800 Subject: [PATCH 39/54] Automatic changelog generation for PR #49700 [ci skip] --- html/changelogs/AutoChangeLog-pr-49700.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49700.yml diff --git a/html/changelogs/AutoChangeLog-pr-49700.yml b/html/changelogs/AutoChangeLog-pr-49700.yml new file mode 100644 index 00000000000..7221af36b65 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49700.yml @@ -0,0 +1,8 @@ +author: "SteelSlayer" +delete-after: True +changes: + - code_imp: "Adds the label component, which gets added to objects you label with the hand labeler. It is used to keep track of the label that was applied to it can be removed later on." + - soundadd: "Adds a sound for labeling an object with the hand labeler" + - soundadd: "Adds a sound for removing a label from an object with the hand labeler" + - tweak: "Limits the amount of labels an object can have to one." + - tweak: "You can now remove labels from objects, by hitting it with the hand labeler, while it's off." From 9e409de6649682cef5a1edaafd98a8c419e64584 Mon Sep 17 00:00:00 2001 From: spookydonut Date: Thu, 5 Mar 2020 21:34:56 +0800 Subject: [PATCH 40/54] >2 hand support for simple animal (#49675) --- .../mob/living/simple_animal/simple_animal.dm | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index ac06c131aa6..329af982d56 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -616,18 +616,12 @@ /mob/living/simple_animal/update_inv_hands() if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) - var/obj/item/l_hand = get_item_for_held_index(1) - var/obj/item/r_hand = get_item_for_held_index(2) - if(r_hand) - r_hand.layer = ABOVE_HUD_LAYER - r_hand.plane = ABOVE_HUD_PLANE - r_hand.screen_loc = ui_hand_position(get_held_index_of_item(r_hand)) - client.screen |= r_hand - if(l_hand) - l_hand.layer = ABOVE_HUD_LAYER - l_hand.plane = ABOVE_HUD_PLANE - l_hand.screen_loc = ui_hand_position(get_held_index_of_item(l_hand)) - client.screen |= l_hand + for(var/obj/item/I in held_items) + var/index = get_held_index_of_item(I) + I.layer = ABOVE_HUD_LAYER + I.plane = ABOVE_HUD_PLANE + I.screen_loc = ui_hand_position(index) + client.screen |= I //ANIMAL RIDING From 1f63a168381eb78fec74cd34b50fda334c04e914 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 5 Mar 2020 05:35:00 -0800 Subject: [PATCH 41/54] Automatic changelog generation for PR #49675 [ci skip] --- html/changelogs/AutoChangeLog-pr-49675.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49675.yml diff --git a/html/changelogs/AutoChangeLog-pr-49675.yml b/html/changelogs/AutoChangeLog-pr-49675.yml new file mode 100644 index 00000000000..cc2dcdc91a1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49675.yml @@ -0,0 +1,4 @@ +author: "4dplanner" +delete-after: True +changes: + - bugfix: "dextrous simple animal hud works with > 2 hands" From 106b4ba6727c78086265bc7ba049bc53709f0c0e Mon Sep 17 00:00:00 2001 From: spookydonut Date: Thu, 5 Mar 2020 21:38:40 +0800 Subject: [PATCH 42/54] book console fix (#49696) * book console fix * proper console for randomruins --- .../SpaceRuins/intactemptyship.dmm | 2 +- .../SpaceRuins/listeningstation.dmm | 2 +- _maps/map_files/BoxStation/BoxStation.dmm | 4 +-- .../map_files/Deltastation/DeltaStation2.dmm | 20 ++++++------- _maps/map_files/Donutstation/Donutstation.dmm | 4 +-- _maps/map_files/KiloStation/KiloStation.dmm | 6 ++-- _maps/map_files/MetaStation/MetaStation.dmm | 4 +-- _maps/map_files/Mining/Lavaland.dmm | 2 +- _maps/map_files/PubbyStation/PubbyStation.dmm | 4 +-- _maps/map_files/generic/CentCom.dmm | 2 +- .../emergency_imfedupwiththisworld.dmm | 2 +- .../circuitboards/computer_circuitboards.dm | 4 +-- code/modules/library/lib_items.dm | 2 +- code/modules/library/lib_machines.dm | 29 ++++++++++++------- 14 files changed, 47 insertions(+), 40 deletions(-) diff --git a/_maps/RandomRuins/SpaceRuins/intactemptyship.dmm b/_maps/RandomRuins/SpaceRuins/intactemptyship.dmm index 9bb394663ad..d41de462c97 100644 --- a/_maps/RandomRuins/SpaceRuins/intactemptyship.dmm +++ b/_maps/RandomRuins/SpaceRuins/intactemptyship.dmm @@ -73,7 +73,7 @@ /area/ruin/space/has_grav/powered/authorship) "o" = ( /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /turf/open/floor/mineral/titanium/purple, /area/ruin/space/has_grav/powered/authorship) "p" = ( diff --git a/_maps/RandomRuins/SpaceRuins/listeningstation.dmm b/_maps/RandomRuins/SpaceRuins/listeningstation.dmm index 27e69a18d86..1e7ca9f9848 100644 --- a/_maps/RandomRuins/SpaceRuins/listeningstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/listeningstation.dmm @@ -24,7 +24,7 @@ pixel_y = 24 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/listeningstation) "af" = ( diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 9712d8a9eb4..909aae3b51f 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -302,7 +302,7 @@ /turf/open/floor/plasteel/cafeteria, /area/security/prison) "aaM" = ( -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/structure/table, /obj/machinery/newscaster{ pixel_x = -32 @@ -17731,7 +17731,7 @@ /area/library) "aTd" = ( /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/machinery/light_switch{ pixel_y = 28 }, diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 1f0f3c3a510..70684d07872 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -17539,7 +17539,7 @@ /area/security/prison) "aMe" = ( /obj/structure/table, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/structure/cable, /turf/open/floor/plating, /area/security/prison) @@ -64428,7 +64428,7 @@ /area/library) "cpz" = ( /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/machinery/newscaster{ pixel_x = 32 }, @@ -113600,6 +113600,14 @@ }, /turf/open/floor/plasteel, /area/maintenance/port) +"kzm" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) "kDh" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/tile/neutral{ @@ -113615,14 +113623,6 @@ /obj/structure/displaycase/forsale, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar) -"kzm" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plasteel/white, -/area/medical/medbay/central) "kEN" = ( /obj/effect/decal/cleanable/dirt, /turf/closed/wall, diff --git a/_maps/map_files/Donutstation/Donutstation.dmm b/_maps/map_files/Donutstation/Donutstation.dmm index 3e0e24d6194..e6c78510236 100644 --- a/_maps/map_files/Donutstation/Donutstation.dmm +++ b/_maps/map_files/Donutstation/Donutstation.dmm @@ -16357,7 +16357,7 @@ /area/library) "aLD" = ( /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /turf/open/floor/carpet, /area/library) "aLE" = ( @@ -19541,7 +19541,7 @@ /area/maintenance/disposal/incinerator) "aSY" = ( /obj/structure/table, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/security/prison/rec) diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index aea38b4705f..b9a2222b395 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -48855,7 +48855,7 @@ dir = 1 }, /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement{ +/obj/machinery/computer/bookmanagement{ pixel_y = 5 }, /obj/machinery/light{ @@ -58121,7 +58121,7 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/locker) "bJz" = ( -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/structure/table, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/red, @@ -87942,7 +87942,7 @@ /area/engine/engineering) "cEr" = ( /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement{ +/obj/machinery/computer/bookmanagement{ pixel_y = 5 }, /obj/effect/turf_decal/tile/neutral, diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 06969e9a678..c7f7d627adb 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -481,7 +481,7 @@ /area/security/prison) "abl" = ( /obj/structure/table, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/security/prison) @@ -64517,7 +64517,7 @@ /area/hallway/primary/central) "cVe" = ( /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/structure/noticeboard{ desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; dir = 8; diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index faac3a6a421..38f7525c92e 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -106,7 +106,7 @@ /area/mine/laborcamp) "au" = ( /obj/structure/table, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/mine/laborcamp) diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index b5ee1ff531b..55a98ad4f2a 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -1626,7 +1626,7 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/AIsatextAS) "afn" = ( -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /obj/structure/table, /obj/machinery/newscaster{ pixel_x = -32 @@ -44929,7 +44929,7 @@ /area/library/lounge) "clp" = ( /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /turf/open/floor/plasteel/dark, /area/library) "cls" = ( diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 80d299181dd..0663bebcd7c 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -11959,7 +11959,7 @@ /area/centcom/holding) "Bs" = ( /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /turf/open/floor/wood, /area/centcom/holding) "Bu" = ( diff --git a/_maps/shuttles/emergency_imfedupwiththisworld.dmm b/_maps/shuttles/emergency_imfedupwiththisworld.dmm index 59fa477058e..27f3f1b198c 100644 --- a/_maps/shuttles/emergency_imfedupwiththisworld.dmm +++ b/_maps/shuttles/emergency_imfedupwiththisworld.dmm @@ -163,7 +163,7 @@ /area/shuttle/escape) "A" = ( /obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/machinery/computer/bookmanagement, /turf/open/floor/wood, /area/shuttle/escape) "B" = ( diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index bc0b228790e..40721defdb4 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -197,13 +197,13 @@ /obj/item/circuitboard/computer/libraryconsole/attackby(obj/item/I, mob/user, params) if(I.tool_behaviour == TOOL_SCREWDRIVER) - if(build_path == /obj/machinery/computer/libraryconsole/bookmanagement) + if(build_path == /obj/machinery/computer/bookmanagement) name = "Library Visitor Console (Computer Board)" build_path = /obj/machinery/computer/libraryconsole to_chat(user, "Defaulting access protocols.") else name = "Book Inventory Management Console (Computer Board)" - build_path = /obj/machinery/computer/libraryconsole/bookmanagement + build_path = /obj/machinery/computer/bookmanagement to_chat(user, "Access protocols successfully updated.") else return ..() diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index ffe88fd4699..71e21669200 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -315,7 +315,7 @@ throw_speed = 3 throw_range = 5 w_class = WEIGHT_CLASS_TINY - var/obj/machinery/computer/libraryconsole/bookmanagement/computer //Associated computer - Modes 1 to 3 use this + var/obj/machinery/computer/bookmanagement/computer //Associated computer - Modes 1 to 3 use this var/obj/item/book/book //Currently scanned book var/mode = 0 //0 - Scan only, 1 - Scan and Set Buffer, 2 - Scan and Attempt to Check In, 3 - Scan and Attempt to Add to Inventory diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 28a0da4407c..c658c906fd8 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -162,14 +162,21 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums // TODO: Make this an actual /obj/machinery/computer that can be crafted from circuit boards and such // It is August 22nd, 2012... This TODO has already been here for months.. I wonder how long it'll last before someone does something about it. // It's December 25th, 2014, and this is STILL here, and it's STILL relevant. Kill me -/obj/machinery/computer/libraryconsole/bookmanagement +/obj/machinery/computer/bookmanagement name = "book inventory management console" desc = "Librarian's command station." - screenstate = 0 // 0 - Main Menu, 1 - Inventory, 2 - Checked Out, 3 - Check Out a Book verb_say = "beeps" verb_ask = "beeps" verb_exclaim = "beeps" pass_flags = PASSTABLE + + icon_state = "oldcomp" + icon_screen = "library" + icon_keyboard = null + circuit = /obj/item/circuitboard/computer/libraryconsole + + var/screenstate = 0 // 0 - Main Menu, 1 - Inventory, 2 - Checked Out, 3 - Check Out a Book + var/arcanecheckout = 0 var/buffer_book var/buffer_mob @@ -182,7 +189,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums var/page = 1 //current page of the external archives var/cooldown = 0 -/obj/machinery/computer/libraryconsole/bookmanagement/proc/build_library_menu() +/obj/machinery/computer/bookmanagement/proc/build_library_menu() if(libcomp_menu) return load_library_db_to_cache() @@ -198,13 +205,13 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums libcomp_menu[page] = "" libcomp_menu[page] += "[C.author][C.title][C.category]\[Order\]\n" -/obj/machinery/computer/libraryconsole/bookmanagement/Initialize() +/obj/machinery/computer/bookmanagement/Initialize() . = ..() if(circuit) circuit.name = "Book Inventory Management Console (Machine Board)" - circuit.build_path = /obj/machinery/computer/libraryconsole/bookmanagement + circuit.build_path = /obj/machinery/computer/bookmanagement -/obj/machinery/computer/libraryconsole/bookmanagement/ui_interact(mob/user) +/obj/machinery/computer/bookmanagement/ui_interact(mob/user) . = ..() var/dat = "" // switch(screenstate) @@ -316,17 +323,17 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) popup.open() -/obj/machinery/computer/libraryconsole/bookmanagement/proc/findscanner(viewrange) +/obj/machinery/computer/bookmanagement/proc/findscanner(viewrange) for(var/obj/machinery/libraryscanner/S in range(viewrange, get_turf(src))) return S return null -/obj/machinery/computer/libraryconsole/bookmanagement/proc/print_forbidden_lore(mob/user) +/obj/machinery/computer/bookmanagement/proc/print_forbidden_lore(mob/user) new /obj/item/melee/cultblade/dagger(get_turf(src)) to_chat(user, "Your sanity barely endures the seconds spent in the vault's browsing window. The only thing to remind you of this when you stop browsing is a sinister dagger sitting on the desk. You don't even remember where it came from...") user.visible_message("[user] stares at the blank screen for a few moments, [user.p_their()] expression frozen in fear. When [user.p_they()] finally awaken[user.p_s()] from it, [user.p_they()] look[user.p_s()] a lot older.", 2) -/obj/machinery/computer/libraryconsole/bookmanagement/attackby(obj/item/W, mob/user, params) +/obj/machinery/computer/bookmanagement/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/barcodescanner)) var/obj/item/barcodescanner/scanner = W scanner.computer = src @@ -335,11 +342,11 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums else return ..() -/obj/machinery/computer/libraryconsole/bookmanagement/emag_act(mob/user) +/obj/machinery/computer/bookmanagement/emag_act(mob/user) if(density && !(obj_flags & EMAGGED)) obj_flags |= EMAGGED -/obj/machinery/computer/libraryconsole/bookmanagement/Topic(href, href_list) +/obj/machinery/computer/bookmanagement/Topic(href, href_list) if(..()) usr << browse(null, "window=library") onclose(usr, "library") From 0f8c6ab50314fe60b5c8c544f3a450777c316f7e Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 5 Mar 2020 05:38:45 -0800 Subject: [PATCH 43/54] Automatic changelog generation for PR #49696 [ci skip] --- html/changelogs/AutoChangeLog-pr-49696.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49696.yml diff --git a/html/changelogs/AutoChangeLog-pr-49696.yml b/html/changelogs/AutoChangeLog-pr-49696.yml new file mode 100644 index 00000000000..3bd7d00c5fe --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49696.yml @@ -0,0 +1,4 @@ +author: "Luduk" +delete-after: True +changes: + - bugfix: "Bookmanagement console shows the correct amount of popups(precisely one)" From e877d7ca0a31102288e47c43c751df0db4a00f4f Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Thu, 5 Mar 2020 10:18:07 -0500 Subject: [PATCH 44/54] Allows adjusting jumpsuits through the strip panel (#49710) * adjust jumpsuit through strip menu * robot torso fix --- code/modules/mob/living/carbon/human/human.dm | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 7771c380d27..9d093d22ba5 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -167,9 +167,15 @@ if(ITEM_SLOT_ICLOTHING in obscured) dat += "Uniform:Obscured" else - dat += "Uniform:[(w_uniform && !(w_uniform.item_flags & ABSTRACT)) ? w_uniform : "Empty"]" + dat += "Uniform:[(w_uniform && !(w_uniform.item_flags & ABSTRACT)) ? w_uniform : "Empty"]" + if(w_uniform) + var/obj/item/clothing/under/U = w_uniform + if (U.can_adjust) + dat += " Adjust" + dat += "" - if((w_uniform == null && !(dna && dna.species.nojumpsuit)) || (ITEM_SLOT_ICLOTHING in obscured)) + var/obj/item/bodypart/O = get_bodypart(BODY_ZONE_CHEST) + if((w_uniform == null && !(dna && dna.species.nojumpsuit) && !(O && O.status == BODYPART_ROBOTIC)) || (ITEM_SLOT_ICLOTHING in obscured)) dat += " ↳Pockets:" dat += " ↳ID:" dat += " ↳Belt:" @@ -254,6 +260,16 @@ // Display a warning if the user mocks up to_chat(src, "You feel your [pocket_side] pocket being fumbled with!") + if(href_list["toggle_uniform"] && usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY)) + var/obj/item/clothing/under/U = get_item_by_slot(ITEM_SLOT_ICLOTHING) + to_chat(src, "[usr.name] is trying to adjust your [U].") + if(do_mob(usr, src, U.strip_delay/2)) + to_chat(src, "[usr.name] successfully adjusted your [U].") + U.toggle_jumpsuit_adjust() + update_inv_w_uniform() + update_body() + + ///////HUDs/////// if(href_list["hud"]) if(!ishuman(usr)) From 51cf06d023bec1830fd09da9fb5fe31adbdcabdf Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 5 Mar 2020 07:18:12 -0800 Subject: [PATCH 45/54] Automatic changelog generation for PR #49710 [ci skip] --- html/changelogs/AutoChangeLog-pr-49710.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49710.yml diff --git a/html/changelogs/AutoChangeLog-pr-49710.yml b/html/changelogs/AutoChangeLog-pr-49710.yml new file mode 100644 index 00000000000..2d6c5726776 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49710.yml @@ -0,0 +1,5 @@ +author: "Mickyan" +delete-after: True +changes: + - tweak: "You can now use the strip menu to adjust the jumpsuit style of other people" + - bugfix: "Humans with robot torsos can have their belt, ID, pockets slots correctly accessed through the strip menu" From c70266e759ae387aee9e3ac4f1230755a8b44914 Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Thu, 5 Mar 2020 10:19:35 -0500 Subject: [PATCH 46/54] Make Initialize shouldcallparent (#49693) --- code/__HELPERS/unsorted.dm | 1 + code/game/atoms.dm | 1 + code/game/turfs/open/space/space.dm | 6 ++++++ code/game/turfs/turf.dm | 6 ++++++ code/modules/mob/dead/dead.dm | 1 + 5 files changed, 15 insertions(+) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 70a24287f3a..60c05c9897e 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1274,6 +1274,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) var/ready_to_die = FALSE /mob/dview/Initialize() //Properly prevents this mob from gaining huds or joining any global lists + SHOULD_CALL_PARENT(FALSE) return INITIALIZE_HINT_NORMAL /mob/dview/Destroy(force = FALSE) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 5982c5eb586..0b82cb8b09b 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -141,6 +141,7 @@ * * [/turf/open/space/Initialize] */ /atom/proc/Initialize(mapload, ...) + SHOULD_CALL_PARENT(TRUE) if(flags_1 & INITIALIZED_1) stack_trace("Warning: [src]([type]) initialized multiple times!") flags_1 |= INITIALIZED_1 diff --git a/code/game/turfs/open/space/space.dm b/code/game/turfs/open/space/space.dm index 8b7df53e482..f03fdd545f8 100644 --- a/code/game/turfs/open/space/space.dm +++ b/code/game/turfs/open/space/space.dm @@ -23,7 +23,13 @@ //This is used to optimize the map loader return +/** + * Space Initialize + * + * Doesn't call parent, see [/atom/proc/Initialize] + */ /turf/open/space/Initialize() + SHOULD_CALL_PARENT(FALSE) icon_state = SPACE_ICON_STATE air = space_gas vis_contents.Cut() //removes inherited overlays diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index aed84fa24e6..b391b9dee84 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -41,7 +41,13 @@ return FALSE . = ..() +/** + * Turf Initialize + * + * Doesn't call parent, see [/atom/proc/Initialize] + */ /turf/Initialize(mapload) + SHOULD_CALL_PARENT(FALSE) if(flags_1 & INITIALIZED_1) stack_trace("Warning: [src]([type]) initialized multiple times!") flags_1 |= INITIALIZED_1 diff --git a/code/modules/mob/dead/dead.dm b/code/modules/mob/dead/dead.dm index 61366a12d77..570392f2929 100644 --- a/code/modules/mob/dead/dead.dm +++ b/code/modules/mob/dead/dead.dm @@ -8,6 +8,7 @@ INITIALIZE_IMMEDIATE(/mob/dead) throwforce = 0 /mob/dead/Initialize() + SHOULD_CALL_PARENT(FALSE) if(flags_1 & INITIALIZED_1) stack_trace("Warning: [src]([type]) initialized multiple times!") flags_1 |= INITIALIZED_1 From 5622112514448ec69cbd8e0645c06ff17182035f Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Thu, 5 Mar 2020 10:20:35 -0500 Subject: [PATCH 47/54] makes setDir shouldcallparent (#49692) --- code/game/atoms.dm | 1 + code/game/objects/items/cardboard_cutouts.dm | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 0b82cb8b09b..e6133408a7d 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -795,6 +795,7 @@ * Not recommended to use, listen for the [COMSIG_ATOM_DIR_CHANGE] signal instead (sent by this proc) */ /atom/proc/setDir(newdir) + SHOULD_CALL_PARENT(TRUE) SEND_SIGNAL(src, COMSIG_ATOM_DIR_CHANGE, dir, newdir) dir = newdir diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm index f3f8a4a4220..020c60b99bf 100644 --- a/code/game/objects/items/cardboard_cutouts.dm +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -181,7 +181,8 @@ return 1 /obj/item/cardboard_cutout/setDir(newdir) - dir = SOUTH + newdir = SOUTH + return ..() /obj/item/cardboard_cutout/adaptive //Purchased by Syndicate agents, these cutouts are indistinguishable from normal cutouts but aren't discolored when their appearance is changed deceptive = TRUE From 33458640dc212dc0e2deabc5bfc6f2feb84b942b Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Thu, 5 Mar 2020 10:22:19 -0500 Subject: [PATCH 48/54] Add lints for "new" override prevention feature (#49672) * Add lints for "new" override prevention feature * bEsPoKe * i'm an idiot * arg index --- code/__DEFINES/dcs/signals.dm | 2 ++ code/__DEFINES/spaceman_dmm.dm | 4 +++ code/controllers/subsystem.dm | 1 + code/datums/elements/tool_flash.dm | 33 +++++++++++++++++++ code/game/objects/items.dm | 11 +++++-- code/game/objects/items/tools/weldingtool.dm | 18 +--------- code/modules/events/_event.dm | 1 + .../projectiles/guns/energy/special.dm | 21 +----------- .../research/nanites/nanite_programs.dm | 2 +- tgstation.dme | 1 + 10 files changed, 53 insertions(+), 41 deletions(-) create mode 100644 code/datums/elements/tool_flash.dm diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index d5976fd8870..e3b66881cae 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -277,6 +277,8 @@ #define COMPONENT_BLOCK_SHARPEN_BLOCKED 2 #define COMPONENT_BLOCK_SHARPEN_ALREADY 4 #define COMPONENT_BLOCK_SHARPEN_MAXED 8 +#define COMSIG_TOOL_IN_USE "tool_in_use" ///from base of [/obj/item/proc/tool_check_callback]: (mob/living/user) +#define COMSIG_TOOL_START_USE "tool_start_use" ///from base of [/obj/item/proc/tool_start_check]: (mob/living/user) // /obj/item signals for economy #define COMSIG_ITEM_SOLD "item_sold" //called when an item is sold by the exports subsystem diff --git a/code/__DEFINES/spaceman_dmm.dm b/code/__DEFINES/spaceman_dmm.dm index b9c0544bc10..4d9c0993fb1 100644 --- a/code/__DEFINES/spaceman_dmm.dm +++ b/code/__DEFINES/spaceman_dmm.dm @@ -6,10 +6,14 @@ #define RETURN_TYPE(X) set SpacemanDMM_return_type = X #define SHOULD_CALL_PARENT(X) set SpacemanDMM_should_call_parent = X #define UNLINT(X) SpacemanDMM_unlint(X) + #define SHOULD_NOT_OVERRIDE(X) set SpacemanDMM_should_not_override = X + #define VAR_FINAL var/SpacemanDMM_final #else #define RETURN_TYPE(X) #define SHOULD_CALL_PARENT(X) #define UNLINT(X) X + #define SHOULD_NOT_OVERRIDE(X) + #define VAR_FINAL var #endif /world/proc/enable_debugger() diff --git a/code/controllers/subsystem.dm b/code/controllers/subsystem.dm index 24390c59235..5cf2407002c 100644 --- a/code/controllers/subsystem.dm +++ b/code/controllers/subsystem.dm @@ -46,6 +46,7 @@ //This is used so the mc knows when the subsystem sleeps. do not override. /datum/controller/subsystem/proc/ignite(resumed = 0) + SHOULD_NOT_OVERRIDE(TRUE) set waitfor = 0 . = SS_SLEEPING fire(resumed) diff --git a/code/datums/elements/tool_flash.dm b/code/datums/elements/tool_flash.dm new file mode 100644 index 00000000000..622fe51c12e --- /dev/null +++ b/code/datums/elements/tool_flash.dm @@ -0,0 +1,33 @@ +/** + * Tool flash bespoke element + * + * Flashes the user when using this tool + */ +/datum/element/tool_flash + element_flags = ELEMENT_BESPOKE + id_arg_index = 2 + /// Strength of the flash + var/flash_strength + +/datum/element/tool_flash/Attach(datum/target, flash_strength) + . = ..() + if(!isitem(target)) + return ELEMENT_INCOMPATIBLE + + src.flash_strength = flash_strength + + RegisterSignal(target, COMSIG_TOOL_IN_USE, .proc/prob_flash) + RegisterSignal(target, COMSIG_TOOL_START_USE, .proc/flash) + +/datum/element/tool_flash/Detach(datum/source, force) + . = ..() + UnregisterSignal(source, list(COMSIG_TOOL_IN_USE, COMSIG_TOOL_START_USE)) + +/datum/element/tool_flash/proc/prob_flash(datum/source, mob/living/user) + if(prob(90)) + return + flash(source, user) + +/datum/element/tool_flash/proc/flash(datum/source, mob/living/user) + if(user && get_dist(get_turf(source), get_turf(user)) <= 1) + user.flash_act(min(flash_strength,1)) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 6ae21403d9c..1f561c3706f 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -816,7 +816,9 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb // Called before use_tool if there is a delay, or by use_tool if there isn't. // Only ever used by welding tools and stacks, so it's not added on any other use_tool checks. /obj/item/proc/tool_start_check(mob/living/user, amount=0) - return tool_use_check(user, amount) + . = tool_use_check(user, amount) + if(.) + SEND_SIGNAL(src, COMSIG_TOOL_START_USE, user) // A check called by tool_start_check once, and by use_tool on every tick of delay. /obj/item/proc/tool_use_check(mob/living/user, amount) @@ -837,9 +839,12 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb playsound(target, played_sound, volume, TRUE) -// Used in a callback that is passed by use_tool into do_after call. Do not override, do not call manually. +/// Used in a callback that is passed by use_tool into do_after call. Do not override, do not call manually. /obj/item/proc/tool_check_callback(mob/living/user, amount, datum/callback/extra_checks) - return tool_use_check(user, amount) && (!extra_checks || extra_checks.Invoke()) + SHOULD_NOT_OVERRIDE(TRUE) + . = tool_use_check(user, amount) && (!extra_checks || extra_checks.Invoke()) + if(.) + SEND_SIGNAL(src, COMSIG_TOOL_IN_USE, user) // Returns a numeric value for sorting items used as parts in machines, so they can be replaced by the rped /obj/item/proc/get_part_rating() diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 62b49d8d887..684b84623a4 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -30,7 +30,6 @@ var/change_icons = 1 var/can_off_process = 0 var/light_intensity = 2 //how powerful the emitted light is when used. - var/progress_flash_divisor = 10 var/burned_fuel_for = 0 //when fuel was last removed heat = 3800 tool_behaviour = TOOL_WELDER @@ -45,6 +44,7 @@ /obj/item/weldingtool/ComponentInitialize() . = ..() AddElement(/datum/element/update_icon_updates_onmob) + AddElement(/datum/element/tool_flash, light_intensity) /obj/item/weldingtool/update_icon_state() if(welding) @@ -245,22 +245,6 @@ /obj/item/weldingtool/proc/isOn() return welding -// When welding is about to start, run a normal tool_use_check, then flash a mob if it succeeds. -/obj/item/weldingtool/tool_start_check(mob/living/user, amount=0) - . = tool_use_check(user, amount) - if(. && user && get_dist(get_turf(src), get_turf(user)) <= 1) - user.flash_act(light_intensity) - -// Flash the user during welding progress -/obj/item/weldingtool/tool_check_callback(mob/living/user, amount, datum/callback/extra_checks) - . = ..() - if(. && user && get_dist(get_turf(src), get_turf(user)) <= 1) - if (progress_flash_divisor == 0) - user.flash_act(min(light_intensity,1)) - progress_flash_divisor = initial(progress_flash_divisor) - else - progress_flash_divisor-- - // If welding tool ran out of fuel during a construction task, construction fails. /obj/item/weldingtool/tool_use_check(mob/living/user, amount) if(!isOn() || !check_fuel()) diff --git a/code/modules/events/_event.dm b/code/modules/events/_event.dm index f76f0e50675..d1578a216d3 100644 --- a/code/modules/events/_event.dm +++ b/code/modules/events/_event.dm @@ -166,6 +166,7 @@ //Do not override this proc, instead use the appropiate procs. //This proc will handle the calls to the appropiate procs. /datum/round_event/process() + SHOULD_NOT_OVERRIDE(TRUE) if(!processing) return diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index d8d45e093c8..8fd73a90cc1 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -133,14 +133,13 @@ usesound = list('sound/items/welder.ogg', 'sound/items/welder2.ogg') tool_behaviour = TOOL_WELDER toolspeed = 0.7 //plasmacutters can be used as welders, and are faster than standard welders - var/progress_flash_divisor = 10 //copypasta is best pasta - var/light_intensity = 1 var/charge_weld = 25 //amount of charge used up to start action (multiplied by amount) and per progress_flash_divisor ticks of welding /obj/item/gun/energy/plasmacutter/ComponentInitialize() . = ..() AddComponent(/datum/component/butchering, 25, 105, 0, 'sound/weapons/plasma_cutter.ogg') AddElement(/datum/element/update_icon_blocker) + AddElement(/datum/element/tool_flash, 1) /obj/item/gun/energy/plasmacutter/examine(mob/user) . = ..() @@ -163,13 +162,6 @@ else ..() -// Tool procs, in case plasma cutter is used as welder -// Can we start welding? -/obj/item/gun/energy/plasmacutter/tool_start_check(mob/living/user, amount) - . = tool_use_check(user, amount) - if(. && user) - user.flash_act(light_intensity) - // Can we weld? Plasma cutter does not use charge continuously. // Amount cannot be defaulted to 1: most of the code specifies 0 in the call. /obj/item/gun/energy/plasmacutter/tool_use_check(mob/living/user, amount) @@ -188,17 +180,6 @@ /obj/item/gun/energy/plasmacutter/use(amount) return (!QDELETED(cell) && cell.use(amount ? amount * charge_weld : charge_weld)) -// This only gets called by use_tool(delay > 0) -// It's also supposed to not get overridden in the first place. -/obj/item/gun/energy/plasmacutter/tool_check_callback(mob/living/user, amount, datum/callback/extra_checks) - . = ..() //return tool_use_check(user, amount) && (!extra_checks || extra_checks.Invoke()) - if(. && user) - if (progress_flash_divisor == 0) - user.flash_act(min(light_intensity,1)) - progress_flash_divisor = initial(progress_flash_divisor) - else - progress_flash_divisor-- - /obj/item/gun/energy/plasmacutter/use_tool(atom/target, mob/living/user, delay, amount=1, volume=0, datum/callback/extra_checks) if(amount) . = ..() diff --git a/code/modules/research/nanites/nanite_programs.dm b/code/modules/research/nanites/nanite_programs.dm index 50ff6f4a846..d480ec0a146 100644 --- a/code/modules/research/nanites/nanite_programs.dm +++ b/code/modules/research/nanites/nanite_programs.dm @@ -48,7 +48,7 @@ //Extra settings ///Don't ever override this or I will come to your house and stand menacingly behind a bush - var/list/extra_settings = list() + VAR_FINAL/list/extra_settings = list() //Rules //Rules that automatically manage if the program's active without requiring separate sensor programs diff --git a/tgstation.dme b/tgstation.dme index be256b5e849..b12a58a2755 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -534,6 +534,7 @@ #include "code\datums\elements\selfknockback.dm" #include "code\datums\elements\snail_crawl.dm" #include "code\datums\elements\squish.dm" +#include "code\datums\elements\tool_flash.dm" #include "code\datums\elements\update_icon_blocker.dm" #include "code\datums\elements\update_icon_updates_onmob.dm" #include "code\datums\elements\waddling.dm" From d0870a95ac1ec662b5913a89924755c3082d6140 Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Thu, 5 Mar 2020 10:25:24 -0500 Subject: [PATCH 49/54] Makes Crossed and Moved should call parent (#49671) --- code/game/atoms_movable.dm | 3 +++ code/game/machinery/scan_gate.dm | 5 ++++- code/game/objects/effects/alien_acid.dm | 1 + code/game/objects/effects/anomalies.dm | 2 ++ code/game/objects/effects/mines.dm | 1 + code/game/objects/effects/proximity.dm | 1 + code/game/objects/items/toys.dm | 1 + code/game/objects/structures/tables_racks.dm | 2 +- code/game/objects/structures/traps.dm | 1 + code/modules/assembly/holder.dm | 1 + code/modules/assembly/infrared.dm | 1 + code/modules/awaymissions/capture_the_flag.dm | 1 + code/modules/awaymissions/mission_code/wildwest.dm | 1 + code/modules/events/spacevine.dm | 1 + code/modules/fields/turf_objects.dm | 2 ++ code/modules/flufftext/Hallucination.dm | 4 ++++ code/modules/hydroponics/grown/towercap.dm | 1 + code/modules/hydroponics/hydroitemdefines.dm | 1 + code/modules/mob/living/carbon/alien/special/facehugger.dm | 2 +- .../mob/living/simple_animal/guardian/types/ranged.dm | 1 + code/modules/mob/living/simple_animal/hostile/cockroach.dm | 1 + .../mob/living/simple_animal/hostile/retaliate/frog.dm | 1 + .../mob/living/simple_animal/hostile/venus_human_trap.dm | 1 + code/modules/power/singularity/containment_field.dm | 1 + .../power/singularity/particle_accelerator/particle.dm | 1 + code/modules/ruins/objects_and_mobs/necropolis_gate.dm | 1 + code/modules/shuttle/special.dm | 2 +- code/modules/spells/spell_types/spacetime_distortion.dm | 1 + 28 files changed, 38 insertions(+), 4 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 6ff6f320e2d..264145022fd 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -384,6 +384,7 @@ //Called after a successful Move(). By this point, we've already moved /atom/movable/proc/Moved(atom/OldLoc, Dir, Forced = FALSE) + SHOULD_CALL_PARENT(TRUE) SEND_SIGNAL(src, COMSIG_MOVABLE_MOVED, OldLoc, Dir, Forced) if (!inertia_moving) inertia_next_move = world.time + inertia_move_delay @@ -426,6 +427,8 @@ //oldloc = old location on atom, inserted when forceMove is called and ONLY when forceMove is called! /atom/movable/Crossed(atom/movable/AM, oldloc) + SHOULD_CALL_PARENT(TRUE) + . = ..() SEND_SIGNAL(src, COMSIG_MOVABLE_CROSSED, AM) /atom/movable/Uncross(atom/movable/AM, atom/newloc) diff --git a/code/game/machinery/scan_gate.dm b/code/game/machinery/scan_gate.dm index fb3880b90b6..8eaff2478d4 100644 --- a/code/game/machinery/scan_gate.dm +++ b/code/game/machinery/scan_gate.dm @@ -51,7 +51,10 @@ . += "The control panel is unlocked. Swipe an ID to lock it." /obj/machinery/scanner_gate/Crossed(atom/movable/AM) - ..() + . = ..() + auto_scan(AM) + +/obj/machinery/scanner_gate/proc/auto_scan(atom/movable/AM) if(!(machine_stat & (BROKEN|NOPOWER)) && isliving(AM)) perform_scan(AM) diff --git a/code/game/objects/effects/alien_acid.dm b/code/game/objects/effects/alien_acid.dm index 5dcbc9ea952..16bc321b211 100644 --- a/code/game/objects/effects/alien_acid.dm +++ b/code/game/objects/effects/alien_acid.dm @@ -53,6 +53,7 @@ return 0 /obj/effect/acid/Crossed(AM as mob|obj) + . = ..() if(isliving(AM)) var/mob/living/L = AM if(L.movement_type & FLYING) diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index 78b8179799f..e6f7584a887 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -107,6 +107,7 @@ O.throw_at(target, 5, 10) /obj/effect/anomaly/grav/Crossed(atom/movable/AM) + . = ..() gravShock(AM) /obj/effect/anomaly/grav/Bump(atom/A) @@ -154,6 +155,7 @@ mobShock(M) /obj/effect/anomaly/flux/Crossed(atom/movable/AM) + . = ..() mobShock(AM) /obj/effect/anomaly/flux/Bump(atom/A) diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 90131c59343..c2a6194cca6 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -11,6 +11,7 @@ to_chat(victim, "*click*") /obj/effect/mine/Crossed(AM as mob|obj) + . = ..() if(isturf(loc)) if(ismob(AM)) var/mob/MM = AM diff --git a/code/game/objects/effects/proximity.dm b/code/game/objects/effects/proximity.dm index dbd9867d6da..677e2c3b256 100644 --- a/code/game/objects/effects/proximity.dm +++ b/code/game/objects/effects/proximity.dm @@ -112,4 +112,5 @@ /obj/effect/abstract/proximity_checker/Crossed(atom/movable/AM) set waitfor = FALSE + . = ..() monitor.hasprox_receiver.HasProximity(AM) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 03760ad70dc..09030f10ea9 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -452,6 +452,7 @@ pop_burst() /obj/item/toy/snappop/Crossed(H as mob|obj) + . = ..() if(ishuman(H) || issilicon(H)) //i guess carp and shit shouldn't set them off var/mob/living/carbon/M = H if(issilicon(H) || M.m_intent == MOVE_INTENT_RUN) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 4207dfc413f..39f0a1d4b5e 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -237,13 +237,13 @@ UnregisterSignal(source, COMSIG_MOVABLE_MOVED) /obj/structure/table/rolling/Moved(atom/OldLoc, Dir) + . = ..() for(var/mob/M in OldLoc.contents)//Kidnap everyone on top M.forceMove(loc) for(var/x in attached_items) var/atom/movable/AM = x if(!AM.Move(loc)) RemoveItemFromTable(AM, AM.loc) - return TRUE /* * Glass tables diff --git a/code/game/objects/structures/traps.dm b/code/game/objects/structures/traps.dm index f3013cda82a..f68a17063df 100644 --- a/code/game/objects/structures/traps.dm +++ b/code/game/objects/structures/traps.dm @@ -61,6 +61,7 @@ animate(src, alpha = initial(alpha), time = time_between_triggers) /obj/structure/trap/Crossed(atom/movable/AM) + . = ..() if(last_trigger + time_between_triggers > world.time) return // Don't want the traps triggered by sparks, ghosts or projectiles. diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index eb31d9faf27..34d193bc198 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -67,6 +67,7 @@ master.update_icon() /obj/item/assembly_holder/Crossed(atom/movable/AM as mob|obj) + . = ..() if(a_left) a_left.Crossed(AM) if(a_right) diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 8099d18fb93..23de27399b5 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -228,6 +228,7 @@ var/obj/item/assembly/infra/master /obj/effect/beam/i_beam/Crossed(atom/movable/AM as mob|obj) + . = ..() if(istype(AM, /obj/effect/beam)) return if (isitem(AM)) diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index 2d205394955..6d33ad62e63 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -613,6 +613,7 @@ QDEL_IN(src, AMMO_DROP_LIFETIME) /obj/effect/ctf/ammo/Crossed(atom/movable/AM) + . = ..() reload(AM) /obj/effect/ctf/ammo/Bump(atom/A) diff --git a/code/modules/awaymissions/mission_code/wildwest.dm b/code/modules/awaymissions/mission_code/wildwest.dm index 1aa70547441..6679125ad6e 100644 --- a/code/modules/awaymissions/mission_code/wildwest.dm +++ b/code/modules/awaymissions/mission_code/wildwest.dm @@ -127,6 +127,7 @@ var/triggered = 0 /obj/effect/meatgrinder/Crossed(atom/movable/AM) + . = ..() Bumped(AM) /obj/effect/meatgrinder/Bumped(atom/movable/AM) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 4231eb71952..f6135348ba7 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -351,6 +351,7 @@ playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE) /obj/structure/spacevine/Crossed(atom/movable/AM) + . = ..() if(!isliving(AM)) return for(var/datum/spacevine_mutation/SM in mutations) diff --git a/code/modules/fields/turf_objects.dm b/code/modules/fields/turf_objects.dm index 4d3a4cf4b70..f8d139a45dd 100644 --- a/code/modules/fields/turf_objects.dm +++ b/code/modules/fields/turf_objects.dm @@ -29,6 +29,7 @@ return parent.field_turf_canpass(AM, src, target) /obj/effect/abstract/proximity_checker/advanced/field_turf/Crossed(atom/movable/AM) + . = ..() if(parent) return parent.field_turf_crossed(AM, src) return TRUE @@ -53,6 +54,7 @@ return parent.field_edge_canpass(AM, src, target) /obj/effect/abstract/proximity_checker/advanced/field_edge/Crossed(atom/movable/AM) + . = ..() if(parent) return parent.field_edge_crossed(AM, src) return TRUE diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index bbfcdc96b1a..ebf752b8088 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -134,6 +134,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( Show() /obj/effect/hallucination/simple/Moved(atom/OldLoc, Dir) + . = ..() Show() /obj/effect/hallucination/simple/Destroy() @@ -1082,6 +1083,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( target.client.images += image /obj/effect/hallucination/danger/lava/Crossed(atom/movable/AM) + . = ..() if(AM == target) target.adjustStaminaLoss(20) new /datum/hallucination/fire(target) @@ -1095,6 +1097,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( target.client.images += image /obj/effect/hallucination/danger/chasm/Crossed(atom/movable/AM) + . = ..() if(AM == target) if(istype(target, /obj/effect/dummy/phased_mob)) return @@ -1124,6 +1127,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( target.client.images += image /obj/effect/hallucination/danger/anomaly/Crossed(atom/movable/AM) + . = ..() if(AM == target) new /datum/hallucination/shock(target) diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index a85b7ba05e3..d5e6a33ff2e 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -246,6 +246,7 @@ StartBurning() /obj/structure/bonfire/Crossed(atom/movable/AM) + . = ..() if(burning & !grill) Burn() diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 4853843213a..691c7cc5a9d 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -76,6 +76,7 @@ resistance_flags = FLAMMABLE /obj/item/cultivator/rake/Crossed(atom/movable/AM) + . = ..() if(!ishuman(AM)) return var/mob/living/carbon/human/H = AM diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index eb9133697c4..53b5afe1df4 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -89,8 +89,8 @@ Attach(M) /obj/item/clothing/mask/facehugger/Crossed(atom/target) + . = ..() HasProximity(target) - return /obj/item/clothing/mask/facehugger/on_found(mob/finder) if(stat == CONSCIOUS) diff --git a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm index 034943b0cc3..17018e55266 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm @@ -112,6 +112,7 @@ /obj/effect/snare/Crossed(AM as mob|obj) + . = ..() if(isliving(AM) && spawner && spawner.summoner && AM != spawner && !spawner.hasmatchingsummoner(AM)) to_chat(spawner.summoner, "[AM] has crossed surveillance snare, [name].") var/list/guardians = spawner.summoner.hasparasites() diff --git a/code/modules/mob/living/simple_animal/hostile/cockroach.dm b/code/modules/mob/living/simple_animal/hostile/cockroach.dm index f55fa50b2b5..cc57f2534cf 100644 --- a/code/modules/mob/living/simple_animal/hostile/cockroach.dm +++ b/code/modules/mob/living/simple_animal/hostile/cockroach.dm @@ -62,6 +62,7 @@ ..() /mob/living/simple_animal/hostile/cockroach/Crossed(var/atom/movable/AM) + . = ..() if(ismob(AM)) if(isliving(AM)) var/mob/living/A = AM diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm index 8f9a9ad597e..a2bea19e534 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm @@ -42,6 +42,7 @@ butcher_results = list(/obj/item/reagent_containers/food/snacks/nugget = 5) /mob/living/simple_animal/hostile/retaliate/frog/Crossed(AM as mob|obj) + . = ..() if(!stat && isliving(AM)) var/mob/living/L = AM if(L.mob_size > MOB_SIZE_TINY) diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm index 393690cfcf7..9e5be8dcb68 100644 --- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm +++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm @@ -38,6 +38,7 @@ /obj/effect/ebeam/vine/Crossed(atom/movable/AM) + . = ..() if(isliving(AM)) var/mob/living/L = AM if(!("vines" in L.faction)) diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index 5900286f860..71c899b7198 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -65,6 +65,7 @@ return ..() /obj/machinery/field/containment/Crossed(atom/movable/AM) + . = ..() if(isliving(AM)) shock(AM) diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm index 57f4a77fc2c..050d31b37c2 100644 --- a/code/modules/power/singularity/particle_accelerator/particle.dm +++ b/code/modules/power/singularity/particle_accelerator/particle.dm @@ -44,6 +44,7 @@ movement_range = 0 /obj/effect/accelerated_particle/Crossed(atom/A) + . = ..() if(isliving(A)) toxmob(A) diff --git a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm index ef8a53ea4c5..82e34607e02 100644 --- a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm +++ b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm @@ -264,6 +264,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate) return /obj/structure/stone_tile/Crossed(atom/movable/AM) + . = ..() if(falling || fallen) return var/turf/T = get_turf(src) diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm index 90ac6ac5d54..11c438b622d 100644 --- a/code/modules/shuttle/special.dm +++ b/code/modules/shuttle/special.dm @@ -233,7 +233,7 @@ if(!isliving(mover)) //No stowaways return FALSE -/obj/machinery/scanner_gate/luxury_shuttle/Crossed(atom/movable/AM) +/obj/machinery/scanner_gate/luxury_shuttle/auto_scan(atom/movable/AM) return /obj/machinery/scanner_gate/luxury_shuttle/attackby(obj/item/W, mob/user, params) diff --git a/code/modules/spells/spell_types/spacetime_distortion.dm b/code/modules/spells/spell_types/spacetime_distortion.dm index aaa9c2fc8ef..2c3254b8daf 100644 --- a/code/modules/spells/spell_types/spacetime_distortion.dm +++ b/code/modules/spells/spell_types/spacetime_distortion.dm @@ -102,6 +102,7 @@ busy = FALSE /obj/effect/cross_action/spacetime_dist/Crossed(atom/movable/AM) + . = ..() if(!busy) walk_link(AM) From 3858f04fdad6e558e439bec5110198393c2080fd Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Thu, 5 Mar 2020 11:35:19 -0500 Subject: [PATCH 50/54] Adds better clarification for anomaly core types in Phazon construction (#49713) * Adds better clarification for anomaly core types in Phazon construction. * This sucks less now --- code/game/mecha/mecha_construction_paths.dm | 2 +- code/game/mecha/mecha_parts.dm | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 44a5cc69c74..55b0fc19233 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -1054,7 +1054,7 @@ "key" = /obj/item/assembly/signaler/anomaly/bluespace, "action" = ITEM_DELETE, "back_key" = TOOL_WELDER, - "desc" = "Anomaly core socket is open.", + "desc" = "Bluespace anomaly core socket is open.", "icon_state" = "phazon24" ) ) diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index 7b617a3dd01..74b3cf9b67f 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -232,6 +232,11 @@ name = "\improper Phazon chassis" construct_type = /datum/component/construction/unordered/mecha_chassis/phazon +/obj/item/mecha_parts/chassis/phazon/attackby(obj/item/I, mob/user, params) + . = ..() + if(istype(I, /obj/item/assembly/signaler/anomaly) && !istype(I, /obj/item/assembly/signaler/anomaly/bluespace)) + to_chat(user, "The anomaly core socket only accepts bluespace anomaly cores!") + /obj/item/mecha_parts/part/phazon_torso name="\improper Phazon torso" desc="A Phazon torso part. The socket for the bluespace core that powers the exosuit's unique phase drives is located in the middle." From 0e412402c0b152c2d174e1d8ce874105c188fac3 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 5 Mar 2020 08:35:23 -0800 Subject: [PATCH 51/54] Automatic changelog generation for PR #49713 [ci skip] --- html/changelogs/AutoChangeLog-pr-49713.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49713.yml diff --git a/html/changelogs/AutoChangeLog-pr-49713.yml b/html/changelogs/AutoChangeLog-pr-49713.yml new file mode 100644 index 00000000000..ed0a9497106 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49713.yml @@ -0,0 +1,4 @@ +author: "TheVekter" +delete-after: True +changes: + - tweak: "Made it more apparent when someone is using the wrong item to finish the Phazon mech's construction." From 718074ce55ce107e88f8f734f9e9d3b52bfb6347 Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Thu, 5 Mar 2020 11:54:04 -0500 Subject: [PATCH 52/54] Build SpacemanDMM from source (#49712) * Build SpacemanDMM from source * oops * Fix new unreachables/dumb code * ooops cache conflict * bugfix * oops * lint * ninjanomnom held me down and forced me to delete this --- .travis.yml | 7 ++++++- code/__DEFINES/spaceman_dmm.dm | 12 ++++++++++++ code/controllers/subsystem/mapping.dm | 1 + code/datums/diseases/gastrolisis.dm | 2 +- code/datums/http.dm | 2 +- code/game/atoms.dm | 3 +++ code/game/atoms_movable.dm | 1 + code/game/machinery/doors/firedoor.dm | 2 +- code/game/objects/effects/portals.dm | 1 - .../abductor/equipment/abduction_gear.dm | 2 +- code/modules/mapping/reader.dm | 1 + code/modules/mob/inventory.dm | 1 + .../carbon/human/species_types/snail.dm | 2 +- dependencies.sh | 3 +++ tools/travis/build_spaceman_dmm.sh | 19 +++++++++++++++++++ tools/travis/install_spaceman_dmm.sh | 8 -------- 16 files changed, 52 insertions(+), 15 deletions(-) create mode 100755 tools/travis/build_spaceman_dmm.sh delete mode 100755 tools/travis/install_spaceman_dmm.sh diff --git a/.travis.yml b/.travis.yml index 880562ca659..2d03fe999d5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,9 +17,14 @@ matrix: - python3-pip - python3-setuptools - pcregrep + - rustc + - cargo + cache: + directories: + - $HOME/SpacemanDMM install: - tools/travis/install_build_tools.sh - - tools/travis/install_spaceman_dmm.sh dreamchecker + - tools/travis/build_spaceman_dmm.sh dreamchecker script: - tools/travis/check_filedirs.sh tgstation.dme - tools/travis/check_changelogs.sh diff --git a/code/__DEFINES/spaceman_dmm.dm b/code/__DEFINES/spaceman_dmm.dm index 4d9c0993fb1..3d4207c5c97 100644 --- a/code/__DEFINES/spaceman_dmm.dm +++ b/code/__DEFINES/spaceman_dmm.dm @@ -7,13 +7,25 @@ #define SHOULD_CALL_PARENT(X) set SpacemanDMM_should_call_parent = X #define UNLINT(X) SpacemanDMM_unlint(X) #define SHOULD_NOT_OVERRIDE(X) set SpacemanDMM_should_not_override = X + #define SHOULD_NOT_SLEEP(X) set SpacemanDMM_should_not_sleep = X + #define SHOULD_BE_PURE(X) set SpacemanDMM_should_be_pure = X + #define PRIVATE_PROC(X) set SpacemanDMM_private_proc = X + #define PROTECTED_PROC(X) set SpacemanDMM_protected_proc = X #define VAR_FINAL var/SpacemanDMM_final + #define VAR_PRIVATE var/SpacemanDMM_private + #define VAR_PROTECTED var/SpacemanDMM_protected #else #define RETURN_TYPE(X) #define SHOULD_CALL_PARENT(X) #define UNLINT(X) X #define SHOULD_NOT_OVERRIDE(X) + #define SHOULD_NOT_SLEEP(X) + #define SHOULD_BE_PURE(X) + #define PRIVATE_PROC(X) + #define PROTECTED_PROC(X) #define VAR_FINAL var + #define VAR_PRIVATE var + #define VAR_PROTECTED var #endif /world/proc/enable_debugger() diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 271e9e5a20b..2ab53766a6a 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -523,6 +523,7 @@ GLOBAL_LIST_EMPTY(the_station_areas) //DO NOT CALL THIS PROC DIRECTLY, CALL wipe_reservations(). /datum/controller/subsystem/mapping/proc/do_wipe_turf_reservations() + PRIVATE_PROC(TRUE) UNTIL(initialized) //This proc is for AFTER init, before init turf reservations won't even exist and using this will likely break things. for(var/i in turf_reservations) var/datum/turf_reservation/TR = i diff --git a/code/datums/diseases/gastrolisis.dm b/code/datums/diseases/gastrolisis.dm index 96efd38d5bc..119ccc0c60e 100644 --- a/code/datums/diseases/gastrolisis.dm +++ b/code/datums/diseases/gastrolisis.dm @@ -82,5 +82,5 @@ var/obj/item/storage/backpack/bag = H.get_item_by_slot(ITEM_SLOT_BACK) if(istype(bag, /obj/item/storage/backpack/snail)) bag.emptyStorage() - H.doUnEquip(bag, TRUE, no_move = TRUE) + H.temporarilyRemoveItemFromInventory(bag, TRUE) qdel(bag) diff --git a/code/datums/http.dm b/code/datums/http.dm index 58eb815acbf..8cac03d2bd0 100644 --- a/code/datums/http.dm +++ b/code/datums/http.dm @@ -30,7 +30,7 @@ id = rustg_http_request_async(method, url, body, headers) if (isnull(text2num(id))) - CRASH("Proc error: [id]") + stack_trace("Proc error: [id]") _raw_response = "Proc error: [id]" else in_progress = TRUE diff --git a/code/game/atoms.dm b/code/game/atoms.dm index e6133408a7d..52b02101ee0 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -141,6 +141,7 @@ * * [/turf/open/space/Initialize] */ /atom/proc/Initialize(mapload, ...) + SHOULD_NOT_SLEEP(TRUE) SHOULD_CALL_PARENT(TRUE) if(flags_1 & INITIALIZED_1) stack_trace("Warning: [src]([type]) initialized multiple times!") @@ -223,6 +224,7 @@ ///Can the mover object pass this atom, while heading for the target turf /atom/proc/CanPass(atom/movable/mover, turf/target) SHOULD_CALL_PARENT(TRUE) + SHOULD_BE_PURE(TRUE) if(mover.movement_type & UNSTOPPABLE) return TRUE . = CanAllowThrough(mover, target) @@ -233,6 +235,7 @@ /// Returns true or false to allow the mover to move through src /atom/proc/CanAllowThrough(atom/movable/mover, turf/target) SHOULD_CALL_PARENT(TRUE) + SHOULD_BE_PURE(TRUE) return !density /** diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 264145022fd..2f217a3f26c 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -702,6 +702,7 @@ /// Returns true or false to allow src to move through the blocker, mover has final say /atom/movable/proc/CanPassThrough(atom/blocker, turf/target, blocker_opinion) SHOULD_CALL_PARENT(TRUE) + SHOULD_BE_PURE(TRUE) return blocker_opinion /// called when this atom is removed from a storage item, which is passed on as S. The loc variable is already set to the new destination before this is called. diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index addce4d0be1..4ec92526c42 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -466,7 +466,7 @@ constructionStep = CONSTRUCTION_GUTTED update_icon() return TRUE - else if(RCD_DECONSTRUCT) + if(RCD_DECONSTRUCT) to_chat(user, "You deconstruct [src].") qdel(src) return TRUE diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index 03b78b3080f..c3b30d5eae9 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -229,7 +229,6 @@ var/obj/projectile/P = M P.ignore_source_check = TRUE return TRUE - return FALSE // try to search for a new one if something was var edited etc set_linked() . = ..() diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index 7a0d5de0972..d48abe9c611 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -518,7 +518,7 @@ Congratulations! You are now trained for invasive xenobiology research!"} toggle_on(user) if(iscyborg(target)) - if(BATON_STUN) + if(mode == BATON_STUN) ..() return FALSE diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm index e7d7fd4898d..cecd61091bf 100644 --- a/code/modules/mapping/reader.dm +++ b/code/modules/mapping/reader.dm @@ -138,6 +138,7 @@ // Do not call except via load() above. /datum/parsed_map/proc/_load_impl(x_offset = 1, y_offset = 1, z_offset = world.maxz + 1, cropMap = FALSE, no_changeturf = FALSE, x_lower = -INFINITY, x_upper = INFINITY, y_lower = -INFINITY, y_upper = INFINITY, placeOnTop = FALSE) + PRIVATE_PROC(TRUE) var/list/areaCache = list() var/list/modelCache = build_cache(no_changeturf) var/space_key = modelCache[SPACE_KEY] diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 96b80844205..84f2723165c 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -294,6 +294,7 @@ /mob/proc/doUnEquip(obj/item/I, force, newloc, no_move, invdrop = TRUE, silent = FALSE) //Force overrides TRAIT_NODROP for things like wizarditis and admin undress. //Use no_move if the item is just gonna be immediately moved afterward //Invdrop is used to prevent stuff in pockets dropping. only set to false if it's going to immediately be replaced + PROTECTED_PROC(TRUE) if(!I) //If there's nothing to drop, the drop is automatically succesfull. If(unEquip) should generally be used to check for TRAIT_NODROP. return TRUE diff --git a/code/modules/mob/living/carbon/human/species_types/snail.dm b/code/modules/mob/living/carbon/human/species_types/snail.dm index 9296e9ee58b..375ba7be6dc 100644 --- a/code/modules/mob/living/carbon/human/species_types/snail.dm +++ b/code/modules/mob/living/carbon/human/species_types/snail.dm @@ -41,7 +41,7 @@ var/obj/item/storage/backpack/bag = C.get_item_by_slot(ITEM_SLOT_BACK) if(istype(bag, /obj/item/storage/backpack/snail)) bag.emptyStorage() - C.doUnEquip(bag, TRUE, no_move = TRUE) + C.temporarilyRemoveItemFromInventory(bag, TRUE) qdel(bag) /obj/item/storage/backpack/snail diff --git a/dependencies.sh b/dependencies.sh index be5a3204285..947120ac571 100755 --- a/dependencies.sh +++ b/dependencies.sh @@ -24,3 +24,6 @@ export PHP_VERSION=5.6 # SpacemanDMM git tag export SPACEMAN_DMM_VERSION=suite-1.3 + +# SpacemanDMM commit hash +export SPACEMAN_DMM_COMMIT_HASH=3cd3c402af04e6deedc9149caf5c5b0dfd44ad3b diff --git a/tools/travis/build_spaceman_dmm.sh b/tools/travis/build_spaceman_dmm.sh new file mode 100755 index 00000000000..d63aeac2cc8 --- /dev/null +++ b/tools/travis/build_spaceman_dmm.sh @@ -0,0 +1,19 @@ +#!/bin/bash +set -euo pipefail + +source dependencies.sh + +cd $HOME/SpacemanDMM + +if [ ! -d .git ] +then + git init + git remote add origin https://github.com/SpaceManiac/SpacemanDMM.git +fi + +git fetch origin --depth=1 $SPACEMAN_DMM_COMMIT_HASH +git reset --hard FETCH_HEAD + +cargo build --release --bin $1 +cp target/release/$1 ~ +~/$1 --version diff --git a/tools/travis/install_spaceman_dmm.sh b/tools/travis/install_spaceman_dmm.sh deleted file mode 100755 index 39464193f88..00000000000 --- a/tools/travis/install_spaceman_dmm.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -set -euo pipefail - -source dependencies.sh - -wget -O ~/$1 "https://github.com/SpaceManiac/SpacemanDMM/releases/download/$SPACEMAN_DMM_VERSION/$1" -chmod +x ~/$1 -~/$1 --version From 18d59b81b77830468aee259036ccf05ccd746c21 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 5 Mar 2020 12:44:47 -0800 Subject: [PATCH 53/54] Automatic changelog generation for PR #49728 [ci skip] --- html/changelogs/AutoChangeLog-pr-49728.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49728.yml diff --git a/html/changelogs/AutoChangeLog-pr-49728.yml b/html/changelogs/AutoChangeLog-pr-49728.yml new file mode 100644 index 00000000000..00c894ffee7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49728.yml @@ -0,0 +1,4 @@ +author: "Mickyan" +delete-after: True +changes: + - bugfix: "Fixed Pubbystation private art exhibit overpressurizing" From c2f620947ee072295a5ebc91edc058eaff7ac3bb Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 5 Mar 2020 12:48:37 -0800 Subject: [PATCH 54/54] Automatic changelog generation for PR #49717 [ci skip] --- html/changelogs/AutoChangeLog-pr-49717.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49717.yml diff --git a/html/changelogs/AutoChangeLog-pr-49717.yml b/html/changelogs/AutoChangeLog-pr-49717.yml new file mode 100644 index 00000000000..d210ca9abba --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49717.yml @@ -0,0 +1,4 @@ +author: "qustinnus" +delete-after: True +changes: + - bugfix: "you can actually make the hygienebot now"